🐡
compare_linkerをGithubActionsに組み込んでみた。しかし。。。
前回compare_linkerを使ってみるという記事を投稿させていただきましたが、今回はこちらをCI(GithubActions)に組み込んでみました。
コード(GithubActions)
※コードの一部を抜粋しています。
name: bundle-update-pull-request
on:
schedule:
- cron: "00 22 * * 3" # JST 07:00 (Thu)
workflow_dispatch:
jobs:
create_bundle_update_pr:
runs-on: ubuntu-latest
steps:
- name: Create GitHub Apps Token
id: github_apps
uses: actions/create-github-app-token@v1
with:
app-id: ${{ secrets.APP_ID }}
private-key: ${{ secrets.PRIVATE_KEY }}
- uses: actions/checkout@v4
with:
token: ${{ steps.github_apps.outputs.token }}
- name: libgsl-dev Install
run: |
if ! dpkg -l | grep -q "libgsl-dev"; then
echo "Package not found. Installing..."
sudo dpkg -i vendor/packages/gsl_2.3-1_amd64.deb
else
echo "Package already installed. Skipping installation."
fi
- name: Set up Ruby
uses: ruby/setup-ruby@v1
- name: Set timezone to Asia/Tokyo
run: |
set -x
cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
- name: Update dependencies
run: bundle update
- name: Get current date
id: date
run: echo "::set-output name=current::$(date +'%Y-%m-%d')"
- name: Create pull request
id: cpr
uses: peter-evans/create-pull-request@v7
with:
token: ${{ steps.github_apps.outputs.token }}
commit-message: Update dependencies
title: bundle update at ${{ steps.date.outputs.current }}
branch: bundle-update-${{ steps.date.outputs.current }}
labels: |
dependencies
ruby
- name: Install dependencies
run: |
gem install compare_linker
- name: Run comparison script
env:
OCTOKIT_ACCESS_TOKEN: ${{ steps.github_apps.outputs.token }}
run: |
ruby -e "
require 'compare_linker'
compare_linker = CompareLinker.new('${{ github.repository }}', ${{ steps.cpr.outputs.pull-request-number }})
compare_linker.formatter = CompareLinker::Formatter::Markdown.new
comment = compare_linker.make_compare_links.to_a.join("\n")
compare_linker.add_comment('${{ github.repository }}', ${{ steps.cpr.outputs.pull-request-number }}, comment)
- OCTOKIT_ACCESS_TOKENはGithubAppsを使っているのでそちらのTokenを使うようにしています
- compare_linkerの取り入れ方は少々悩みましたが、直接rubyを叩く方法にしました
- 前段のcreate-pull-requestでbundle updateのプルリクを作成しているのですがそのプルリクエストに対してコメントを追記する形にしています
実行してみた
前回の記事でも紹介させていただいたissueと同じエラーになりました。。。
GithubActionsのコード上でいうとエラーが発生するのはここの処理
comment = compare_linker.make_compare_links.to_a.join("\n")
コードを追っていくと。。。
エラーの原因ですが、compare_linkerの処理において各Gemのリリースタグの情報(Comparing changes)を取りに行っているんですが、特定のGemにおいてGitHubActionsからのアクセスが拒否されているっぽい?
自分のPCからはcompare_linkerは普通に実行できたのでGithubActionsからだけ拒否されている?? 🤔
そんなことあるのかな?? 🤔
なんか不思議な現象でした。。。。
結局どうしたか
現状budle updateのプルリクで出しているcompare_linkerの情報に関してはあまり重要視していない(File Changedで事足りる)とのことだったので処理を外しました。
そのうちなおってたりするのかな?? 🤔
Discussion