2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RoborazziとGitHub Actionsを使って、PRに画像差分を出力させる時詰まったこと

Posted at

この記事で伝えたいこと

私はAndroidアプリを個人開発しています。

PRを出す時に、ターゲットブランチとソースブランチに画像差分があればスクリーンショットを出力するVRTを実現しようとしました。ワークフローの内容的はほぼコピペですが、ちょっとしたことで詰まったので記事に起こしておきます。

この記事が誰かの悩みの解消になれば幸いです。

この記事の対象者

  • VRTに興味がある人
  • VRTの導入で困っている人

問題の発生

サンプルリポジトリを参考に、以下の3つのワークフローをリポジトリに設定しました。

  • StoreScreenshot.yml
  • CompareScreenshot.yml
  • CompareScreenShotComment.yml

それでfeatureブランチからmainブランチにPRを出したところ、なぜかmainブランチのスクリーンショットの中身が空っぽになってしまっていました。

スクリーンショット 2024-12-28 15.55.25.png

当然、問答無用で全ての画像が差分として出てしまうので、VRTが機能していない状態です。

GitHub Actionsのワークフロー実行ログを確認してみると、compareScrenshotでStoreScreenShotのワークフロー(run id)を見つけられていないことがわかりました。

スクリーンショット 2024-12-29 10.41.42.png

該当のエラーログ
Run dawidd6/action-download-artifact@v3
==> Repository: Nagumo-7960/pokemon-stats-quiz
==> Artifact name: screenshot
==> Local path: ./
==> Workflow name: StoreScreenshot.yml
==> Workflow conclusion: success
==> Branch: main
==> Allow forks: true
Error: Not Found - https://docs.github.com/rest/actions/workflow-runs#list-workflow-runs-for-a-workflow

こういうエラーになることもありました。どっちにしてもワークフローが見つかっていません。

該当のエラーログ
Run dawidd6/action-download-artifact@v3
==> Repository: Nagumo-7960/pokemon-stats-quiz
==> Artifact name: screenshot
==> Local path: ./
==> Workflow name: StoreScreenshot.yml
==> Workflow conclusion: success
==> Branch: main
==> Allow forks: true
Error: no matching workflow run found with any artifacts?

調査

いくつか試しました。

別の新規プロジェクトで試してみる

どこが原因か確かめるために、別の新規プロジェクトを作って同様のワークフローを実行してみたところ、問題なく差分が出力されました。そのため、ワークフローの内容自体には問題がなく、該当のリポジトリのコードやGitHubのリポジトリの設定に問題があるのではないかと思いました。

別のGitHubのリポジトリで試してみる

リポジトリのどこで問題が発生しているのか確かめるため、該当リポジトリをコピーして、新しく作ったGitHubのリポジトリ上でワークフローを実行してみました。
ここでも問題なく差分が出力されたため、コード上には問題がなく、リポジトリの設定などに問題がありそうだということがわかりました。

ワークフローのファイル名の大文字と小文字を修正

.github/workflows/storeScreenShot.yml
↑StoreScreenShotのShotのSが大文字になっていたので、ファイル認識に問題が発生しているのかと思い、修正しました。
.github/workflows/storeScreenshot.yml

しかし、結果は変わらず。

GitHubのActionsの設定を見直す

権限が上手くいってないのではないかと思い、
GitHubのsetting -> Actions -> GeneralのWorkflow permissionを、

Read repository contents and packages permissionsから
Read and write permissions
に変えてみました。が、これも結果は変わらず

原因

過去にmainで実行されたStoreScreenShotのアーティファクトが期限切れになっており、ワークフローを参照できなくなっていたことが原因でした。

mainで一度StoreScreenshotが実行されるようにワークフローを動かした結果、無事差分が出力されるようになりました。

Gf3TYsDaIAAy75E.jpeg

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?