💨

compare_linkerを使ってみる

に公開

なぜやってみたのか?

弊社のアプリケーション(Rails)において、GithubActionにおいてcircleci-bundle-update-prを使ってbundle updateのプルリクを使っていたんですが、突然エラーになるようになってしまいました。。。。
弊社のメンバーがissueを書いているのですが、「GithubActions経由での利用は公式にはサポートしていない」とのことだったので、中で使っているcompare_linkerを切り出して使えないかと思ったのが発端です。

compare_linker

masterのGemfile.lockと対象プルリクのGemfile.lockの差分を比較していい感じに差分をプルリクのコメントに追加してくれるツールです。
https://github.com/masutaka/compare_linker

サンプルコード

まあほぼ、README通りです。

Gemfile

# frozen_string_literal: true

source "https://rubygems.org"

# gem "rails"
gem 'compare_linker'

test.rb

require 'compare_linker'

ENV['OCTOKIT_ACCESS_TOKEN'] = '{{ token }}'

compare_linker = CompareLinker.new('{{ organization }}/{{ repository }}', '{{ 比較対象のプルリク番号 }}')
compare_linker.formatter = CompareLinker::Formatter::Markdown.new
comment = compare_linker.make_compare_links.to_a.join("\n")
p comment
compare_linker.add_comment('{{ organization }}/{{ repository }}', '{{ 比較対象のプルリク番号 }}', comment)

※tokenは検証なのでPersonal access tokenを利用しました。GithubAppsのtokenとかでも良いかと思います。

実行方法

まあ、書くまででもないですが。。。。
コードを特定のディレクトリ配置後に以下を実行しています。

$ bundle 
$ ruby test.rb

※環境によって若干実行方法は変わるかと思います。

実行結果

こんな感じで差分をいい感じに出してくれます。

Todo

実際にGithubActionsのCIに取り込んでみようかと思います。
プルリクの番号を拾ってCI内で直接スクリプトを叩くようにすればいいかな?

DGBTテックブログ

Discussion