yumemi-inc / flutter-mobile-project-template

MIT License
33 stars 6 forks source link

[Bug]: テンプレート機能を使用した際の Action 失敗不具合を修正する #190

Closed Kotaro666-dev closed 4 months ago

Kotaro666-dev commented 4 months ago

概要

close: #157

テンプレート機能を使用した際に実行される Post Cleanup Copilot Settings が以下のログとともに失敗します。

Can't find 'action.yml', 'action.yaml' or 'Dockerfile' under '/home/runner/work/template-test/template-test/.github/actions/cleanup-copilot-settings'. Did you forget to run actions/checkout before running your local action?

本不具合と類似した issue のワークアラウンド対応を参考にして、Cleanup Copilot Settings の最後に checkout を実行してテンプレートプロジェクトのリポジトリにチェックアウトを実行して参照先を正す方法を試してみたいです。

[!NOTE] 本修正対応は現環境での動作確認を行うことができません。 本 PR がメインにマージされた後、本テンプレートプロジェクトからリポジトリ作成した際の GitHub Action の結果を確認する必要があります。

レビュー観点

レビューレベル

レビュー優先度

画像 / 動画

Before After Design

UI 上の変更はありません。

動作確認手順

現環境での動作確認を行うことができません。 本 PR がメインにマージされた後、本テンプレートプロジェクトからリポジトリ作成した際の GitHub Action の結果を確認する必要があります。

備考

本 PR がメインにマージされた後、本テンプレートプロジェクトからリポジトリ作成した際の GitHub Action の結果を確認する必要があります。

上記の対応を行って本問題が修正されていない場合には、revert する PR を作成し、別の対応方針を検討する必要があります。

github-actions[bot] commented 4 months ago

Visit the preview URL for this PR (updated for commit 2b09fcf):

https://flutter-mobile-project-template-catalog--pr190-bugfix-r47cvkct.web.app

(expires Tue, 07 May 2024 06:24:13 GMT)

🔥 via Firebase Hosting GitHub Action 🌎

Sign: 9ea56735a63d07a7cfe62eb204b0528284c37c23

github-actions[bot] commented 4 months ago

Ready for review :rocket:

Yamasaki-pan961 commented 4 months ago

@Kotaro666-dev 解決法を見つけました。 template-cleanup.yamlのPushの後にチェックアウトすることで解決します。

以下で正しく動作していることを確認しました。 https://github.com/Yamasaki-pan961/fix-157/actions/runs/8888140854/job/24404497921

      # https://github.com/ad-m/github-push-action
      - name: Push changes
        uses: ad-m/github-push-action@d91a481090679876dfc4178fef17f286781251df # v0.8.0
        with:
          branch: main
          github_token: ${{ secrets.GITHUB_TOKEN }}

      - name: Check out the original repository
        # https://github.com/actions/checkout
        uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1

失敗する原因(予想)

まず、ワークフローに記述していないが実行されるPost Cleanupは、ワークフローの実行中に行われた変更をクリーンアップするためにあるそうです。

Push changesステップのあとにチェックアウトせずにPost Cleanupが実行されると、最初のFetch sourcesのステップでのチェックアウト状態のまま、Pushにより変更されたリモートブランチでクリーンアップするためエラーになる、と予想しました。 (Post Cleanupの詳細な動作を把握していないため、正確な予想ではないと思います)

AIの回答

もちろんです。GitHub ActionsのPost Cleanup jobは、ワークフローが終了した後に実行されるジョブで、主に以下の2つの目的があります: 1. **リポジトリのクリーンアップ**:ワークフローの実行中に行われた変更を元に戻すために使用されます。例えば、`actions/checkout@v2`アクションが完了したときには、gitの設定をクリーンアップするためのコマンドが実行されます。 2. **ワークスペースのクリーンアップ**:特に自己ホスト型のランナーを使用している場合、ワークフローの終了後にワークスペース内のファイルが削除されないことがあります。そのため、特別なGitHub Action(例:`TooMuch4U/runner-post-cleanup@v2.1`)を使用して、ジョブの終了時にランナーのワークスペース内のすべてのファイルを削除することが推奨されます。 これらのクリーンアップ作業は、次回のワークフロー実行時に影響を与えないようにするために重要です。具体的な動作は使用しているアクションやランナーの種類によりますが、基本的にはワークフローの実行後にリポジトリやワークスペースをクリーンな状態に戻すためのものです。[1][2]。これにより、各ワークフローは互いに独立して、予期しない副作用なく実行できます。[1][2]。この機能は、特に頻繁にワークフローを実行するCI/CDパイプラインで有用です。[1][2]。[1][2]。

Kotaro666-dev commented 4 months ago

@Yamasaki-pan961

再レビュー依頼

対応コミット

https://github.com/yumemi-inc/flutter-mobile-project-template/pull/190/commits/a598e3b37ac37ab4913eeef1aee15e88c709a15c

動作確認結果

こちらのコメントに記載してくれたやり方を真似てローカル環境で実行してみた結果、問題が解消していることを確認しました。

https://github.com/Kotaro666-dev/test-issue-157/actions/runs/8889252546/job/24407337302

※上記の検証リポジトリとフォークリポジトリは本 PR マージ後に削除します

Kotaro666-dev commented 4 months ago

レビューありがとうございました! マージします。