💨
compare_linkerを使ってみる
なぜやってみたのか?
弊社のアプリケーション(Rails)において、GithubActionにおいてcircleci-bundle-update-prを使ってbundle updateのプルリクを使っていたんですが、突然エラーになるようになってしまいました。。。。
弊社のメンバーがissueを書いているのですが、「GithubActions経由での利用は公式にはサポートしていない」とのことだったので、中で使っているcompare_linkerを切り出して使えないかと思ったのが発端です。
compare_linker
masterのGemfile.lockと対象プルリクのGemfile.lockの差分を比較していい感じに差分をプルリクのコメントに追加してくれるツールです。
サンプルコード
まあほぼ、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内で直接スクリプトを叩くようにすればいいかな?
Discussion