Skip to content

Commit

Permalink
Merge pull request #48 from route06/use-full-changeset-hash
Browse files Browse the repository at this point in the history
Use full changeset hash for 3rd-party GitHub Actions
  • Loading branch information
masutaka authored Jun 26, 2024
2 parents c09d74f + 26496a7 commit c8efc2b
Show file tree
Hide file tree
Showing 5 changed files with 58 additions and 3 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/add_assignee_to_pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
2 changes: 1 addition & 1 deletion .github/workflows/my_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,4 @@ jobs:
timeout-minutes: 5
steps:
- uses: actions/checkout@v4
- uses: ls-lint/[email protected]
- uses: ls-lint/action@1887e6c0e7f2dfa81a2d67591f0eb7782720026f # v2.2.3
2 changes: 1 addition & 1 deletion .github/workflows/notify_slack_on_ci_failed.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# 5. サードパーティのGitHub ActionsのバージョンをFull Changeset Hashで固定する

## ステータス

- [ ] 提案中
- [x] 承認
- [ ] 否認
- [ ] 廃止
- [ ] 保留

## 背景

今後、このリポジトリでの Reusable Workflow 提供を広めるにあたり、よりセキュアで壊れづらいな Workflow を提供していきたい。

## 決定

サードパーティの GitHub Actions のバージョンを Full Changeset Hash で固定する。バージョンコメントも記載する。

```yaml
- uses: owner/[email protected]
#
- 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
1 change: 1 addition & 0 deletions docs/adr/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)

0 comments on commit c8efc2b

Please sign in to comment.