🌺

Productivity Weekly (2021-09-22号)

2021/09/27に公開

こんにちは。サイボウズ株式会社 生産性向上チームの平木場です。

僕たち生産性向上チームは毎週水曜日に Productivity Weekly という「1 週間の間に発見された開発者の生産性向上に関するネタを共有する会」を社内で開催しています。
本記事はその時のネタをまとめたものです。

今回が第 44 回目です。過去の記事はこちら

news 📺

GitHub Actions: Ephemeral self-hosted runners & new webhooks for auto-scaling | GitHub Changelog

https://github.blog/changelog/2021-09-20-github-actions-ephemeral-self-hosted-runners-new-webhooks-for-auto-scaling/

GitHub Actions において、ランナーを使い捨てにする --ephemeral オプションの追加と、新しい Webhook workflow_job が追加されたお知らせです。--ephemeral については先週の記事で取り上げました(なお、GitHub Enterprise Server はまだ対応されていません)。

workflow_job はワークフローのジョブの状態ごとに飛んでくる Webhook で、ジョブの状態やランナーラベル(runs-on キーの情報)、発生したリポジトリなどが含まれています。

これまでセルフホストランナーをオートスケールために check_run という Webhook を活用する方法がありましたが、セルフホストランナーかどうかの区別が難しかったため、使い勝手が悪かったです(例えば GitHub-hosted ランナーを使うジョブに対してもセルフホストランナーを起動させてしまうといった問題がありました)。

--ephemeral オプションと workflow_jobWebhook が登場したことで、オートスケールするクリーンな環境のセルフホストランナーの構築がしやすくなりました[1]。セルフホストランナー利用がますます便利になりましたね。早く Enterprise Server でも使えるようになってほしいです。

GitHub Actions: Experience refresh for the management of self-hosted runners | GitHub Changelog

https://github.blog/changelog/2021-09-20-github-actions-experience-refresh-for-the-management-of-self-hosted-runners/

GitHub Actions において、セルフホストランナー管理画面が更新され、ランナーグループの管理やランナーの状態の確認が容易になりました。

また、どのランナーがどのジョブを実行中かも確認できるようになりました。今まで良い方法がなかったので、特にそれが嬉しいかもしれません。


こんなふうにランナーが実行中のジョブがわかる

Quickly copy the contents of a file to the clipboard | GitHub Changelog

https://github.blog/changelog/2021-09-20-quickly-copy-the-contents-of-a-file-to-the-clipboard/

GitHub の WebUI 上でファイルの中身を簡単にクリップボードへコピーできるようになりました。今までは手動で選択してコピーするか、Raw を開いて全選択してコピーするなどをしていてちょっと面倒でした。これからは UI 上のボタンを押すだけでクリップボードにファイルの中身をコピーできます。

細かいですが地味に嬉しい変更ですね。

AWS federation comes to GitHub Actions | Aidan Steele’s blog (usually about AWS)

https://awsteele.com/blog/2021/09/15/aws-federation-comes-to-github-actions.html

GitHub Actions において、ジョブ実行ごとに OpenID Connect[2] のトークンを付与する仕組みが追加されていました。

これによって、AWS などで OIDC Identity Provider を登録して IAM ロールを許可することで、一時トークンで AWS アカウントへアクセスできるようになるので、クレデンシャルを直接 GitHub に登録しなくてよくなります(クレデンシャルの登録が無くなるのでサプライチェーン攻撃等でクレデンシャルが漏れる心配を無くせる)。

とても嬉しいのですが、まだ正式に使えるようになったわけではありません(GitHub Roadmap には追加されています。)ので、業務での利用はもうちょっと待った方が良さそうです。

know-how 🎓

SmartHR UI のリリース作業を GitHub Actions で自動化した話 - SmartHR Tech Blog

https://tech.smarthr.jp/entry/2021/09/17/170237

GitHub へのリリース作業(タグ付け、npm publish)を GitHub Actions で自動化した事例の話です。これまではリリースに必要な作業(7 工程)を手作業で行っており、ミスや作業漏れが発生する懸念があったため、自動化したいとなったようです。

この記事では、これまでのリリース作業、自動化方法、実際のワークフロー、自動化した結果が書かれています。リリース内容の事前確認のために dry run した結果を載せた Issue を作成するワークフローと、実際にリリースするワークフローの二段構えとなっており、作成された Issue に承認ラベルを付与することでリリースされるという流れになっています。

リリース前の確認に Issue を、承認にラベルを利用している点が珍しいなと思いました。権限をそこまで絞らなくてもいいなら仕組みを手軽に作れそうでいいですね。(プルリクエストを利用する方法と比較してどうかも探究してみたいですね)

Docker Desktop 無しで Docker を使う with lima on Mac - cangoxina

https://korosuke613.hatenablog.com/entry/2021/09/18/docker-on-lima

Docker Desktop を使わずに macOS 上で Docker を使う方法を紹介した記事です。実現方法として以前紹介した lima を使っています。

この記事では Docker 環境の構築方法、使いやすくする設定、どこまでできるか色々調査した結果が載せられています。

初期設定はいくつか必要ですが、記事を見た感じは割と Docker Desktop の代替として使えそうな感じがしますね。Docker Desktop の代替方法はこれからも色々出てくると思います。探究していきたいですね。

tool 🔨

google-github-actions/auth: GitHub Action for authenticating to Google Cloud with GitHub Actions OIDC tokens and Workload Identity Federation.

https://github.com/google-github-actions/auth

上で紹介した GitHub Actions で OIDC トークンが使えるようになった件に関するアクションです。

google-github-actions/auth は Actions 上の OIDC トークンを Google Cloud のアクセストークンに交換するアクションです。これにより GitHub 側に GCP のアクセストークンを保存しなくてよくなります。

このアクションの良いところは Google 謹製であるところです。AWS でも似たようなアクションがすでにありますが、公式ではまだ提供されていません。こういった認証を肩代わりするツールの導入は慎重に行う必要があると思うのですが、GCP を作っている Google が開発しているため、他の 3rd Party ツールに比べて信頼しやすいです。

他のクラウドサービスでも今後公式からアクションを提供してほしいですね。GitHub 側が OIDC に正式対応したら使っていきたいです。

koneta 🍘

Productivity Weekly で出たネタを全て紹介したいけど体力が持たない、または、そんなに言うことがなかったネタを一言程度で書くコーナーです。

あとがき

今週は GitHub Actions の話題がとにかく多かったですね。セルフホストランナー周りの機能拡張は特に嬉しいです。

そうこうしているうちに連休が終わってしまいました...僕は主にガンプラを作っていました。

https://twitter.com/Shitimi_613/status/1442325118194110467?s=20

生産性向上チームでは毎週こういったネタを共有する会を行っています。そんな生産性向上チームが気になる方は下のリンクをクリック!
https://blog.cybozu.io/entry/2020/08/31/080000

脚注
  1. というかできるようになりました。ランナーの使い捨てがほぼ不可能だったので... ↩︎

  2. OpenID Connect の詳細について正しく説明できる自信がないので詳しくはググってもらうのが早いです。こことかわかりやすかったです。-> 一番分かりやすい OpenID Connect の説明 - Qiita ↩︎

GitHubで編集を提案

Discussion