Skip to content

chore: GitHub Actions SHA Pinning#12

Merged
kinoppyd merged 2 commits into
mainfrom
security/sha-pinning-gha
Jun 10, 2026
Merged

chore: GitHub Actions SHA Pinning#12
kinoppyd merged 2 commits into
mainfrom
security/sha-pinning-gha

Conversation

@devin-ai-integration

@devin-ai-integration devin-ai-integration Bot commented May 27, 2026

Copy link
Copy Markdown
Contributor

■ やりたいこと

GitHub Actionsをターゲットにしたサプライチェーン攻撃への対策として、GitHub Actions内で呼び出している「外部のアクション」や「共通ワークフロー」のバージョン指定を、安全なコミットSHA(40文字のハッシュ値)に固定する対応を行います。

■ 本PRで実施した内容

  • GitHub Actions呼び出しのSHA固定(ハッシュ化)
  • 既存のワークフローファイル(.github/workflows/*.yml)をスキャンし、未固定のActionをpinactを用いてセキュアなSHAハッシュ値に固定(ピン留め)しました。

■ 各開発チームの皆様へのお願い(レビュー・マージについて)

順次作成されるPRの内容をご確認の上、なるべく早期のマージにご協力をお願いいたします。

  • SHAハッシュ値の細かな検証は不要です
    • 自動生成されたSHAハッシュ値が正しいかどうかの細かな整合性検証は不要です。自動ツール(pinact)による機械的な置換ですので、差分に不審な点(意図しないファイルの変更など)がなければ、そのままマージをお願いいたします。

Co-Authored-By: Yudai SUZUKI <yudai.suzuki@smarthr.co.jp>
@devin-ai-integration

Copy link
Copy Markdown
Contributor Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR that start with 'DevinAI' or '@devin'.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

@kinoppyd kinoppyd changed the title GitHub Actions SHA Pinning chore: GitHub Actions SHA Pinning Jun 9, 2026
プロンプト:
1.「GitHub Actions で、以下のようなエラーを出して失敗しました。textlint-rubyのインストールは出来ています。原因を推察してください。」(Error: textlint-ruby is not running / src/rubyToAST.ts:27、yarn test の "when target is text" で失敗)
2.「ローカルでは失敗しないのですが、何が違うのでしょう?」
3.「修正を提案してください」
4.「推奨で修正してください。」

原因:
clientBuilder.shutdown() が client.enqueueShutdown() を await せず投げっぱなしにし、
singleton の client 参照のクリア(client = undefined)が kill 完了後の .then まで遅延していた。
そのため次の lint の get() が kill されかけ/kill 済みの Client を使い回し、
available() が _process.killed === true を見て false を返して
die(new Error('textlint-ruby is not running')) に到達していた。
ローカル(Node22/Ruby3.4.7+PRISM/12コア)では後始末が速くレース窓が開かず、
CI(Node14/aptのruby/2〜4コア/コールド)では窓が開いて flaky に失敗していた。

修正内容(推奨案 = 主修正+ハードニング):
- shutdown(): client をローカル変数に退避し、client = undefined を同期で実行してから
  enqueueShutdown() を呼ぶ。これにより直後の get() は必ず新しい Client を生成し、
  死にかけた Client を使い回さない。
- get(): client が未生成、または _process.killed / _process.exitCode !== null
  (プロセス自滅・終了済み)の場合は新しい Client を生成し、突然死にも頑健にする。

ローカルで yarn test を実行し 8 件すべて成功することを確認。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@kinoppyd

Copy link
Copy Markdown
Member

テストのつくりがコンディションレースを起こすようになっていたらしく、CI環境でflakyに壊れていたみたいです(Claude曰く)。
そのため、修正を入れました(Claudeが)。

@kinoppyd kinoppyd left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CI壊れてたんでついでに直しました

@kinoppyd kinoppyd merged commit 132d8a5 into main Jun 10, 2026
2 checks passed
@kinoppyd kinoppyd deleted the security/sha-pinning-gha branch June 10, 2026 04:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant