Cybozu Productivity News

#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 アクションで指定できる Node.js のバージョンは v12 のみでした(node12)が、一昨年末から Node.js v16 も指定できるようになりました(node16)12
    • もとより Node.js v12 自体は 2022 年 4 月にサポートが終了しています
  • JavaScript アクションを開発している方でまだ node12 を指定している方は node16 でも動くようにアクションを更新しましょう

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)
  • OIDC を使って provenance に当たる情報を Sigstore のサーバに送り、返ってくる署名の証明書をパッケージと一緒にレジストリに送るという仕組みらしいです
  • GitHub Actions が対応しているということで、サンプルのワークフローが載っています
    • おそらく OIDC 対応してる CI/CD サービスなら対応できると思うのですが、現状 GitHub Actions 以外はどこまで対応してそうなのかは分かりませんでした
      • 誰か調べてほしい
  • 方法としては OIDC を使えるようにして npm publish--provenance をつけるだけでできるので、割と簡単です
  • 実際に試してみました
  • パッケージのページには次の情報が載ります
    • ビルドサマリーのページへのリンク (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 が流出しても永続的に見られるわけではないです
  • これまで業務で画像とか貼りづらかった問題が解消されて、とてもよいですね!

Generate an SBOM from the dependency graph

共有担当: @defaultcf

  • GitHub で SPDX 2.3 に準拠した SBOM(Software bill of materials)をエクスポートできるようになりました。
  • 利用方法
  • 昨今のサプライチェーン攻撃に対応したり、ライセンスを確認したりするのに便利そうです。

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.セキュリティスキャン
  • 価格は個人向けは無料となっており、AWSアカウントを持っていなくても使えるので導入ハードルは低く、AIコーディング支援のお試しに丁度良いですね。
  • 試してみたZennがあるので、よければ見てください
  • 以下の記事も参考になります

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 されませんでした

We are hiring

サイボウズの開発者の生産性を上げる「生産性向上チーム」とは!?

Footnotes

  1. JavaScript Actionsをnode16で動かすようにする - Kengo's blog

  2. Actions can now run in a Node.js 16 runtime | GitHub Changelog