From 66b113dd5fac15ec2fa674706a510da9adaf7e6d Mon Sep 17 00:00:00 2001 From: Takashi Masuda Date: Wed, 26 Jun 2024 12:52:52 +0900 Subject: [PATCH 1/4] Change fixed version of `ls-lint/action` to Full Changeset Hash --- .github/workflows/my_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/my_test.yml b/.github/workflows/my_test.yml index 5b4d314..93ee2c1 100644 --- a/.github/workflows/my_test.yml +++ b/.github/workflows/my_test.yml @@ -31,4 +31,4 @@ jobs: timeout-minutes: 5 steps: - uses: actions/checkout@v4 - - uses: ls-lint/action@v2.2.3 + - uses: ls-lint/action@1887e6c0e7f2dfa81a2d67591f0eb7782720026f # v2.2.3 From 147a4a8855e494d692f9c6109d90e72179f08a5a Mon Sep 17 00:00:00 2001 From: Takashi Masuda Date: Wed, 26 Jun 2024 12:54:25 +0900 Subject: [PATCH 2/4] Change fixed version of `technote-space/assign-author` to Full Changeset Hash --- .github/workflows/add_assignee_to_pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/add_assignee_to_pr.yml b/.github/workflows/add_assignee_to_pr.yml index bed9ac1..49b51dc 100644 --- a/.github/workflows/add_assignee_to_pr.yml +++ b/.github/workflows/add_assignee_to_pr.yml @@ -25,4 +25,4 @@ jobs: if: ${{ github.event.pull_request.user.type != 'Bot' && toJSON(github.event.pull_request.assignees) == '[]' }} steps: - - uses: technote-space/assign-author@v1 + - uses: technote-space/assign-author@9558557c5c4816f38bd06176fbc324ba14bb3160 # v1.6.2 From e2790fdfea291e5e817dfded07c1e3446da79d87 Mon Sep 17 00:00:00 2001 From: Takashi Masuda Date: Wed, 26 Jun 2024 12:57:41 +0900 Subject: [PATCH 3/4] Change fixed version of `tokorom/action-slack-incoming-webhook` to Full Changeset Hash --- .github/workflows/notify_slack_on_ci_failed.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/notify_slack_on_ci_failed.yml b/.github/workflows/notify_slack_on_ci_failed.yml index 03ae7b9..d8e8268 100644 --- a/.github/workflows/notify_slack_on_ci_failed.yml +++ b/.github/workflows/notify_slack_on_ci_failed.yml @@ -31,7 +31,7 @@ jobs: COMMIT_MESSAGE: ${{ github.event.head_commit.message }} run: echo "COMMIT_MESSAGE=$COMMIT_MESSAGE" | tr '\n' ' ' >> "$GITHUB_ENV" - name: Notify to slack - uses: tokorom/action-slack-incoming-webhook@main + uses: tokorom/action-slack-incoming-webhook@d57bf1eb618f3dae9509afefa70d5774ad3d42bf # v1.3.0 env: INCOMING_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} with: From 26496a77b1d504a2f78bd90273df73a79e487869 Mon Sep 17 00:00:00 2001 From: Takashi Masuda Date: Wed, 26 Jun 2024 13:45:13 +0900 Subject: [PATCH 4/4] =?UTF-8?q?ADR=20=E4=BD=9C=E6=88=90=E3=80=8C5.=20?= =?UTF-8?q?=E3=82=B5=E3=83=BC=E3=83=89=E3=83=91=E3=83=BC=E3=83=86=E3=82=A3?= =?UTF-8?q?=E3=81=AEGitHub=20Actions=E3=81=AE=E3=83=90=E3=83=BC=E3=82=B8?= =?UTF-8?q?=E3=83=A7=E3=83=B3=E3=82=92Full=20Changeset=20Hash=E3=81=A7?= =?UTF-8?q?=E5=9B=BA=E5=AE=9A=E3=81=99=E3=82=8B=E3=80=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...72\345\256\232\343\201\231\343\202\213.md" | 54 +++++++++++++++++++ docs/adr/README.md | 1 + 2 files changed, 55 insertions(+) create mode 100644 "docs/adr/005-\343\202\265\343\203\274\343\203\211\343\203\221\343\203\274\343\203\206\343\202\243\343\201\256github-actions\343\201\256\343\203\220\343\203\274\343\202\270\343\203\247\343\203\263\343\202\222full-changeset-hash\343\201\247\345\233\272\345\256\232\343\201\231\343\202\213.md" diff --git "a/docs/adr/005-\343\202\265\343\203\274\343\203\211\343\203\221\343\203\274\343\203\206\343\202\243\343\201\256github-actions\343\201\256\343\203\220\343\203\274\343\202\270\343\203\247\343\203\263\343\202\222full-changeset-hash\343\201\247\345\233\272\345\256\232\343\201\231\343\202\213.md" "b/docs/adr/005-\343\202\265\343\203\274\343\203\211\343\203\221\343\203\274\343\203\206\343\202\243\343\201\256github-actions\343\201\256\343\203\220\343\203\274\343\202\270\343\203\247\343\203\263\343\202\222full-changeset-hash\343\201\247\345\233\272\345\256\232\343\201\231\343\202\213.md" new file mode 100644 index 0000000..c3d9963 --- /dev/null +++ "b/docs/adr/005-\343\202\265\343\203\274\343\203\211\343\203\221\343\203\274\343\203\206\343\202\243\343\201\256github-actions\343\201\256\343\203\220\343\203\274\343\202\270\343\203\247\343\203\263\343\202\222full-changeset-hash\343\201\247\345\233\272\345\256\232\343\201\231\343\202\213.md" @@ -0,0 +1,54 @@ +# 5. サードパーティのGitHub ActionsのバージョンをFull Changeset Hashで固定する + +## ステータス + +- [ ] 提案中 +- [x] 承認 +- [ ] 否認 +- [ ] 廃止 +- [ ] 保留 + +## 背景 + +今後、このリポジトリでの Reusable Workflow 提供を広めるにあたり、よりセキュアで壊れづらいな Workflow を提供していきたい。 + +## 決定 + +サードパーティの GitHub Actions のバージョンを Full Changeset Hash で固定する。バージョンコメントも記載する。 + +```yaml +- uses: owner/action-name@v1.0.0 +# ↓ +- uses: owner/action-name@26968a09c0ea4f3e233fdddbafd1166051a095f6 # v1.0.0 +``` + +### サードパーティ以外の GitHub Actions はなぜ固定しないか? + +サードパーティ以外とは、例えば [actions/checkout](https://github.com/marketplace/actions/checkout) のような Verified creator のこと。 + +🔗 [Marketplaceバッジについて \- GitHub Docs](https://docs.github.com/ja/apps/github-marketplace/github-marketplace-overview/about-marketplace-badges) + +> GitHubは、アプリケーションを分析しません。 Marketplaceバッジは、パブリッシャーが上記の条件を満たしているということを確認しているだけに過ぎません。 + +Verified creator であっても、安全性が担保されているわけではない。 + +すべての GitHub Actions を Full Changeset Hash で固定すると、Dependabot version update による週次 PR 対応が増える。また、Full Changeset Hash で固定しても、安全性が完全に担保されるわけでもない。 + +そのため、今回は Verified creator でのバージョン固定は見送った。 + +## 影響 + +良い影響: + +* サードパーティの GitHub Actions で git のタグが書き換えられても影響を受けない +* `owner/action-name@main` のような壊れやすい指定を排除できる + +悪い影響: + +* サードパーティの GitHub Actions を初めて導入する時に、若干の手間がかかる + +中立的な影響: + +* Dependabot version update には影響ない[^1] + +[^1]: 例: https://github.com/route06/actions/pull/46#discussion_r1650261916 diff --git a/docs/adr/README.md b/docs/adr/README.md index 42d3ca2..7b6bf44 100644 --- a/docs/adr/README.md +++ b/docs/adr/README.md @@ -4,3 +4,4 @@ * [2. セマンティックバージョニングの採用](002-セマンティックバージョニングの採用.md) * [3. ワークフローの命名規則](003-ワークフローの命名規則.md) * [4. tagprの導入](004-tagprの導入.md) +* [5. サードパーティのgithub-actionsのバージョンをfull-changeset-hashで固定する](005-サードパーティのgithub-actionsのバージョンをfull-changeset-hashで固定する.md)