🫠

Productivity Weekly (2022-09-14号)

2022/09/23に公開

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

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

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

news 📺

GitHub Actions: Use the GITHUB_TOKEN with workflow_dispatch and repository_dispatch | GitHub Changelog

https://github.blog/changelog/2022-09-08-github-actions-use-github_token-with-workflow_dispatch-and-repository_dispatch/

GitHub Actions において、ジョブ内でデフォルトに発行されるシークレット GITHUB_TOKEN を使って workflow_dispatch イベントと repository_dispatch イベントのワークフローをトリガーできるようになりました。

これまでは誤ってワークフローの無限トリガーを引き起こすのを防ぐために GITHUB_TOKEN で別ワークフローをトリガーしないようになっていたが、それが緩和されたこととなります。

これにより、ワークフローから別ワークフローをトリガーするときに Personal Access Token を生成するなどの必要がなくなって、便利になりました。

注意したいのが、あくまで workflow_dispatch イベントと repository_dispatch イベントをトリガーする場合だけ GITHUB_TOKEN が利用できるという点です。例えば GITHUB_TOKEN を使ってプルリクエストを作成した場合、従来通り pushpull_request イベントのワークフローはトリガーされません。

個人的には GITHUB_TOKEN を利用して作ったプルリクエストでワークフローを動かしたいので、先日やったようにネストの数に制限を掛けて無限ループを防止してほしいところですが、それでもこの緩和は嬉しいですね。活用したいです。


ちなみに自分自身を呼び出すワークフローを書いたら無限ループしました

know-how 🎓

AtlantisでTerraformのドリフト検出 - クラウドワークス エンジニアブログ

https://engineer.crowdworks.jp/entry/terraform-drift-check-on-atlantis

terraform apply を自動で行うツールである Atlantis で Terraform のドリフト検出を行う話です。ここで言うドリフトとは、Terraform コードと実リソースの状態に差異が発生した状態を指しているようです。

これまでは CodeBuild でドリフト検出をしていたが、ログの確認が面倒、GitHub のパーソナルアクセストークンを廃止できない、権限を Atlantis 以外にも置かないといけないなどが課題としてあったようです。Atlantis にはドリフト検出機能はないですが、plan/apply のフェーズの処理を差し替えるカスタムワークフローの機能があるので、それを利用してドリフト検出を行うようにしてるとのことです。

記事では、ドリフト検出の仕組み・課題、Atlantis の説明(カスタムワークフロー含む)、Atlantis でドリフト検出する方法の解説などが書かれています。

Atlantis と GitHub Actions をうまい具合に使ってドリフト検出してて面白いです。ただ、毎月ドリフト検出を専用のプルリクエストを作るのはちょっと重い感じもするので、やはり Atlantis 側で機能を作ってくれると嬉しい気がしますね。

Googleでもやっている障害対応訓練の「Wheel of Misfortune」をやってみた。 - MonotaRO Tech Blog

https://tech-blog.monotaro.com/entry/2022/09/06/090000

モノは触らずに机上でやる障害対応訓練の Wheel of Minforture をやってみたという記事です。

Wheel of Minforture は Google もおこなっている障害対応訓練手法であり、過去の障害事例をもとに TRPG のように障害解決をしていくというものです。

モノタロウさんでは、運用担当者が社歴の長いベテランエンジニアとなっているため、運用担当者を増やしづらく、担当者に負荷が高まっているという背景から、障害対応マニュアルの整備や訓練の定期的な実施を行うこととしたそうです。しかし、訓練環境を準備することが難しかったことから Wheel of Minforture を行なったとのことです。

記事では、背景、Wheel of Minsforture の説明、実施時の様子、やってみた結果(メリット等)などが載っています。

Wheel of Minsforture、実際に障害を起こして訓練するのと比べて低いコストで実施できるのは良さそうだなと思いました(ゲームマスター(?)の腕が問われそうではありますが)。障害対応をしている方は参考になる記事だと思います。

tool 🔨

GitHubのリリースノート自動生成機能からCHANGELOG.mdを生成する | おそらくはそれさえも平凡な日々

https://songmu.jp/riji/entry/2022-09-08-gh2changelog.html

GitHub にはリリースノートを自動生成する機能がありますが、それを利用して keep a changelog 形式に近い CHANGELOG.md を出力するツール gh2changelog を作ったという記事です。

GitHub はリリースノート自動生成機能で作成される Markdown を生成する API を公開しているそうです。全く知りませんでした。なかなか便利ですね。

僕は CHANGELOG.md あった方がいい派なので、こういうツールの存在はありがたいですね。GitHub のリリースノート自動生成機能がサポートするカスタマイズを利用できるのも嬉しいです。

リリース用のpull requestを自動作成し、マージされたら自動でタグを打つtagpr | おそらくはそれさえも平凡な日々

https://songmu.jp/riji/entry/2022-09-05-tagpr.html

リリース用のプルリクエストの自動作成とマージ後に自動でタグを打ち Releases を作るツール tagpr を作ったという記事です。

自動作成されるプルリクエストには CHANGELOG.md の更新、バージョンが記述されたファイルの更新(action.yml や version.go など)、が含まれています。また、Description にはどのコミットが含まれるかの記述もあります。バージョンが記述されたファイルの自動更新もしてくれるのは嬉しいですね。

リリース作業は色々やらなきゃいけないことが多く、何かを忘れてしまって失敗したり、自動化の環境を作るのがめんどかったりするので、こういうツールがあるとリリース作業が楽になりそうでいいですね。

koneta 🍘

Productivity Weekly で出たネタを全て紹介したいけど紹介する体力が持たなかったネタを一言程度で書くコーナーです。

あとがき

なんかやけに記事が多い週でした。気づけば Weekly も 90 回を超えてましたね。すごい。

サイボウズの生産性向上チームでは社内エンジニアの開発生産性を上げるための活動を行なっています。そんな生産性向上チームが気になる方は下のリンクをクリック!
https://note.com/cybozu_dev/n/n1c1b44bf72f6

omake 🃏: Publication はじめました

今週のおまけです。


https://zenn.dev/p/cybozu_ept

Zenn の Publication 機能がクローズドベータで始まりました。(パブリケーション機能をクローズドβでリリースします | What's New in Zenn

この度クローズドベータに入れたので、早速「サイボウズ 生産性向上チーム💪 (cybozu_ept)」という Publication を作成してもらいました。

実は僕が(だいたい)毎週書いているこの Productivity Weekly ってサイボウズ株式会社の開発本部の生産性向上チームが外向けに発信するために始めたやつなんですよね。

というわけでこれからは Productivity Weekly に cybozu_ept publication を設定していきます。
実はこの記事のてっぺんにもバナーが付いてたと思います。

Publication、なかなか良い機能だと思います。応援したいです。

GitHubで編集を提案
サイボウズ 生産性向上チーム 💪

Discussion