Cybozu Productivity News

#2 - 2022.04.28

GitHub Actions で一部のジョブだけ Re-run できるようになりました

共有担当: @miyajan

  • GitHub Actions で、ジョブ単位で再実行したり、失敗したジョブのみ再実行したりできるようになりました
  • これまでは全ジョブをまとめて再実行するしかなかったので、大規模なワークフローで E2E テストのような不安定なジョブが含まれると、再実行時に余計なジョブを動かす時間やコストが厳しいという問題がありました
  • 参考

GitHub において Tag の保護ができるようになりました

共有担当: @korosuke613

GitHub において Tag を保護できる Tag protection rules を設定できるようになりました。まだベータ機能です。

パターン(ワイルドカード可)にマッチするタグは作成・削除に制限がかかります。作成は Maintain、Admin ロールの保持者のみ。削除は Admin ロールの保持者のみできます。

Go などの Git tag が強い意味を持つようなリポジトリにおいて効果が発揮できそうです。しかし、タグ付けの部分も CI で自動化しているようなケースではあまり活用できないかもしれません1

CircleCI の OIDC 対応

共有担当: @miyajan

マルチアーキテクチャ対応イメージのビルドをどうにか早くしたかった

共有担当: @gkzvoice

  • マルチアーキテクチャ対応イメージのビルドの方法とCI環境での高速化の検証記事です。
  • docker manifestdocker buildx どちらもあまりよくわかっていなかったですが、ARM環境下でコンテナを扱うケースは増えるだろうと考え、取り上げました。
  • 個人的には、コマンドやビルドの並列実行とコンテナ化を推し進めることで、コンテナ実行環境のCPUアーキテクチャを意識するようになったというのがおもしろいなーと。マルチアーキテクチャなコンテナ環境が一層求められるようになるのか?注目したいですね。

Docker Compose V2で変わったdocker-compose.ymlの書き方

共有担当: @ganta0087

  • Docker Compose v2はv1の記法の後方互換性を保ちつつ、新たにCompose Specificationに準拠した記法が使えるようになりました。
  • Docker ComposeはCompose Specificationのリファレンス実装となっており、他にはNerdctlなどで実装されています。
  • Composeファイルの名前はcompose.{yaml,yml}が追加され、探索順はそちらが優先されるようになっていたり、versionプロパティの記述が不要となっていたりします。
  • こちらの記事では紹介されていないのですが、Profilesが便利だと思いました。

Terraform AWS Provider 4.9.0 (April 07, 2022)リリース

共有担当: @gkzvoice

AWS Lambda が単体でHTTPSエンドポイントを持てるようになりました

共有担当: @ganta0087

Playwright & Vite ではじめる脱レガシー向け軽量 Visual Regression Test

共有担当: @korosuke613

テストフレームワークの Playwright と TypeScript のビルドツールである Vite を使って軽量な Visual Regression Test (VRT) を行うというノウハウ記事です。VRT の説明や Playwright での始め方、Vite との組合せ方などが載っています。

僕もこの記事を参考に自身のホームページに VRT 導入してみました2。プルリクエスト時に、CI で main ブランチとトピックブランチそれぞれでビルド&サーブし、見た目上の差分が無いかを確認します。主に Renovate などを用いた依存関係更新に利用する想定です。時たま不安定になったり、CI 上で比較するには工夫が必要だったりと大変でした。見た目が変わらないことを保証できるのがやはり良く、今では Renovate が作成するプルリクエストを安心して automerge できるようになったのが嬉しいですね。

Introducing Real World Testing with Cypress

共有担当: @akihisa1210

その他の注目ネタ


We are hiring

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

Footnotes

  1. 強い権限を持ったユーザの Personal Access Token を使うなどすれば良いけど、あんまり強い権限のトークンを出したくなかったり、Actions の場合は GITHUB_TOKEN を使いたかったりしますよね。

  2. 詳しくはこの差分CIvisual-regression-testing ワークフローを参照。Vite の導入は型周りでのエラーが頻発して導入を諦めました...