#9 - 2023.05.24
GitHub Appsトークン解体新書:GitHub ActionsからPATを駆逐する技術
共有担当: @ganta0087
- GitHub APIを使った自動化を行う際にPAT(Personal Access Token)ではなく、GitHub Appを使ったIAT(Installation Access Token)を使うことをオススメする内容です。
- GitHub Appの設定からIATの生成までを詳しく解説しています。
- 関連
GitHub Actions: All Actions will run on Node16 instead of Node12 | GitHub Changelog
共有担当: @korosuke613
- 以前より告知されていた通り、GitHub Actions において、5/18 より GitHub Actions で動作する全ての JavaScript アクションは Node.js v16 で動作するようになります
- 5/18 以降は
node12
を指定しても Node.js v16 で動作するようになります - JavaScript アクションを開発している方でまだ
node12
を指定している方はnode16
でも動くようにアクションを更新しましょう- そういや Node.js 16 は 2023 年 9 月にサポート終了予定ですが、まだ
node18
は出ていませんね
- そういや Node.js 16 は 2023 年 9 月にサポート終了予定ですが、まだ
Introducing Repository Rules Public Beta | GitHub Changelog
共有担当: @korosuke613
- GitHub においてブランチ保護を今後置き換えそうな機能、Repository Rules が public beta になりました
- branch protection rules や protected tags よりも柔軟に、そして強力に保護をかけることが可能です。また、GitHub Enterprise Cloud の顧客であれば Organization 全体でルールを適用できます
- また、従来の branch protection rules でできたような設定の他に、コミット名やブランチ名にも制限をかけることができるため、conventional commit を強制するなんてことも可能です
- ただし GHEC のみ
- 実際に使ってみてどんな感じだったかをスクラップに書いています。どんな感じか興味ある方は読んでみてください
- 特に嬉しいのはやっぱり GHEC 契約者ですかね
- ブランチやタグの保護を Organization で共通化できるのは嬉しいです
- ルールをいきなり適用するのではなく、現状ルールに違反しているアクションがあるかどうかなどをチェックできる Evaluate モードがあるのが組織向けでいいですね
- 活用していきたいです
npm provenance public beta | GitHub Changelog
共有担当: @korosuke613
- npm registry において、npm パッケージがどこで何をソースに作られたかを意味する provenance を付与した状態で npm registry にパッケージを公開できるようになりました(public beta)
- provenance 自体は起源とか由来っていう意味らしいですが、個人的には出自とか血統証明書って考える方がしっくりきました
- OIDC を使って provenance に当たる情報を Sigstore のサーバに送り、返ってくる署名の証明書をパッケージと一緒にレジストリに送るという仕組みらしいです
- GitHub Actions が対応しているということで、サンプルのワークフローが載っています
- おそらく OIDC 対応してる CI/CD サービスなら対応できると思うのですが、現状 GitHub Actions 以外はどこまで対応してそうなのかは分かりませんでした
- 誰か調べてほしい
- おそらく OIDC 対応してる CI/CD サービスなら対応できると思うのですが、現状 GitHub Actions 以外はどこまで対応してそうなのかは分かりませんでした
- 方法としては OIDC を使えるようにして
npm publish
に--provenance
をつけるだけでできるので、割と簡単です - 実際に試してみました
- リポジトリ: korosuke613/demo-release-please-for-npm
- npm: demo-release-please-for-npm
- 行った変更
- ci: describe provenance in npm:
--provenance
の付与 - ci: fix release permissions: ワークフローの
permissions.id-token
でwrite
を指定し忘れたので修正 - ci: fix release provenance:
package.json
のrepository.url
にリポジトリ url を指定する必要があったので修正
- ci: describe provenance in npm:
- パッケージのページには次の情報が載ります
- ビルドサマリーのページへのリンク (
View build summary
) - ビルド時のコミットへのリンク (
Source Commit
) - ビルドに使ったワークフローファイルへのリンク (
Build File
) - rekor という Sigstore の情報を見るサイト(?)(
Public Ledger
)
- ビルドサマリーのページへのリンク (
- 簡単に血統証明書を残すことができるので、とりあえず設定してみても良いかと思います。気になる人は試してみてください
More secure private attachments | GitHub Changelog
共有担当: @miyajan
- これまで、GitHub の private (internal) リポジトリでは、issue や PR などに添付された画像や動画は、URL を知っていれば認証なしでアクセス可能でした
- これからは、private リポジトリに添付された画像や動画を閲覧するにはログインが必要になります
- 過去の画像にこの変更は適用されないので注意
- 認証の仕組みは GitHub のサービス本体とは少し違うので注意
- ためしに private リポジトリで添付画像を含むページを開くと、添付画像の URL(
private-user-images.githubusercontent.com
ドメイン)は、jwt
パラメータが含まれることが確認できます - この
jwt
パラメータが認証情報として使われます - つまり、
jwt
パラメータを含む URL を共有してしまうと、誰でも見られるので注意 - ただし、JWT の有効期限は 5 分なので、URL が流出しても永続的に見られるわけではないです
- ためしに private リポジトリで添付画像を含むページを開くと、添付画像の URL(
- これまで業務で画像とか貼りづらかった問題が解消されて、とてもよいですね!
Generate an SBOM from the dependency graph
共有担当: @defaultcf
- GitHub で SPDX 2.3 に準拠した SBOM(Software bill of materials)をエクスポートできるようになりました。
- 利用方法
- Dependency graph のページからダウンロードできます。
- gh CLI の拡張として gh-sbom が使えます。
- GitHub Action として advanced-security/sbom-generator-action が使えます。
- REST API のエンドポイント repos/OWNER/REPO/dependency-graph/sbom で SBOM をダウンロードできます。
- 昨今のサプライチェーン攻撃に対応したり、ライセンスを確認したりするのに便利そうです。
Updates to the repository dependency graph view
共有担当: @defaultcf
- Dependency Graph がアップデートされました。
- パッケージ名で検索できるようになりました。
- ライセンスが表示されるようになりました。
- Dependabot による脆弱性検出結果が分かりやすく表示されるようになり、またプルリクに飛ぶことができるようになりました。
GitHub Actions: The setup-go Action now enables caching by default
共有担当: @defaultcf
- actions/setup-go で v4 がリリースされ、キャッシュがデフォルトで有効になりました。
- デフォルトで有効なので、意図的にキャッシュしたくない場合は明示的に
cahce: false
を指定する必要があります。
- デフォルトで有効なので、意図的にキャッシュしたくない場合は明示的に
- 依存関係が100MBを超えるリポジトリでは、ビルド時間が20~40%削減できたそうです。
- actions/cache などでキャッシュする必要が無くなり、ジョブをよりシンプルに書けるようになったのは嬉しいですね。
CTOの視点から見たAzure OpenAI ServiceとOpenAIのChatGPT APIの深堀り比較 - Qiita の紹介
共有担当: @naotama
- OpenAI社とAzureが提供する OpenAI Service に関する比較記事です。社内利用個人的目線で、
- 基本性能(安定性/可用性/動作速度/モデル精度) Azure > OpenAI
- セキュリティ/プライバシー Azure > OpenAI
- 料金 Azure = OpenAI
- リリース速度/利用開始方法 Azure < OpenAI
- 組み込み方法/サポート体制 Azure = OpenAI ( プロダクト組み込み時はサポートがあって Azure の方が良さそう )
- ChatGPT/OpenAI APIを社内利用する関連で、 Chatbot-ui で ChatGPT を社内利用できるようにしました というものがあります。OpenAI API 規約に基づいて、社内利用し易くしようという取り組みです。生産性をあげるツールとして社内で利用したい...という際に、どの OpenAI Service を利用するかを含めて、検討してみると良いと思います。
個人で無料で使用できる Amazon CodeWhisperer が一般公開されました
共有担当: @takamin55
- Amazon CodeWhispererがGAになりました
- AWSが提供するAIコーディング支援サービスです
- 大きく3つの機能があります
- 1.コード生成
- 関数名から処理コードを提案、コメントから処理コードを提案、既存の関数からユニットテストを提案などを行える
- サポート言語(精度高め): Java,Python,JavaScript,TypeScript,C#
- その他言語:Ruby,Go,PHP,C++,C,Shell,Scala,Rust,Kotlin,SQL
- 2.生成したコードのリファレンス提供
- 3.セキュリティスキャン
- 1.コード生成
- 大きく3つの機能があります
- 価格は個人向けは無料となっており、AWSアカウントを持っていなくても使えるので導入ハードルは低く、AIコーディング支援のお試しに丁度良いですね。
- 試してみたZennがあるので、よければ見てください
- 以下の記事も参考になります
- Amazon CodeWhisperer でアプリケーションをより速く構築する10の方法
- 「コードからコメントを生成する(docs)」という逆の使い方もあって面白い
- Amazon CodeWhisperer でアプリケーションをより速く構築する10の方法
Export your sponsorable dependencies and sponsor many in one checkout
共有担当: @r4mimu
- GitHub においてスポンサー対象を探しやすくなりました
- 具体的には、Sponsors Explore ページにアクセスすると、自分が依存しがちなスポンサーとなるユーザーが表示されます
- また、自身が所属する Organization ごとに表示したり、npm, pipといったエコシステムを絞って検索することもできます
- こういった機能をGitHubが公式で提供してくれると、開発者に還元され、コミュニティの発展にもつながるので素晴らしいですね
Secret scanning’s push protection is available on public repositories, for free
共有担当: @r4mimu
- Secret scanning において、Push protection がすべての無料パブリックリポジトリで利用可能になりました
- Secret scanning とはリモートリポジトリ内にシークレットがあるかどうか検知する機能です
- push protection は Secret scanning の機能の1つで、リポジトリへの push 時にコミット内にシークレットが入っている場合、push が失敗します
- 組織単位でも設定できるのも地味に嬉しい点です
- 余談ですが、検証のために ダミーの aws secret key を push してみましたが、protection されませんでした