#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
- CircleCI が OpenID Connect (OIDC) をサポートし、永続的なシークレットを使わずに AWS や GCP などのクラウドプロバイダへの認証が可能になりました
- GitHub Actions では 2021/10 に同様の機能が公開されていました(参考)
- ジョブでの OpenID Connect トークンの使用 - CircleCI
- CircleCIがOpenID ConnectをサポートしたのでAWSと連携させてJWTを使用したAssumeRoleを試してみた | DevelopersIO
- CircleCI 公式 Orb の OIDC 対応
- circleci/aws-cli は収録時には OIDC 対応していませんでしたが、配信時には対応された v3.1.0 がリリースされました
- circleci/gcp-cli はまだ OIDC サポートされていないため、認証は自前でスクリプトを書く必要があります
- CircleCI Japan の Tweet によると、こちらを Vote すると Orb 側での対応の優先度が上がるかもしれません
- 一応すでに issue があります
マルチアーキテクチャ対応イメージのビルドをどうにか早くしたかった
共有担当: @gkzvoice
- マルチアーキテクチャ対応イメージのビルドの方法とCI環境での高速化の検証記事です。
docker manifest
とdocker 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 Provider 4.0で
aws_s3_bucket
リソースの仕様変更があり、それに合わない書き方はエラー判定とされていました。 - 4.9.0 ではエラー判定ではなく、WARNING判定とドリフト検知がされることとなりました。
- AWS Providerのバージョンを3.70.0から4.9に引き上げてみたときの作業ログ
- クラスメソッドさんの検証記事
- 今後のアップデートでエラー判定とする仕様に戻るか分からない以上、
aws_s3_bucket
リソースの仕様変更に追随したほうがよいとは思います。検証を重ねて仕様変更にキャッチアップしたいですね。 - 詳細はTerraform のドキュメントの以下のページが一番詳しかったです。
AWS Lambda が単体でHTTPSエンドポイントを持てるようになりました
共有担当: @ganta0087
- これまではちょっとしたWebhookのエンドポイントを作りたいときにはAPI Gatewayを併用する必要がありました。
- 設定からFunction URLを有効にすると
https://<url-id>.lambda-url.<region>.on.aws
の形式でURLが払い出されます。 - 対応している認証方式はIAMのみです。
- Webページ内から呼び出す場合はCORSの設定で許可するオリジンを指定できます。
- 費用はLambdaの呼び出し料金に含まれており、Function URLsの追加による費用はありません。
- [アップデート]LambdaがHTTPSエンドポイントから実行可能になる、AWS Lambda Function URLsの機能が追加されました! | DevelopersIO
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
- E2E テストフレームワーク Cypress を開発している Cypress 社が、チュートリアルサイト Real World Testing with Cypress を公開しました
- このサイトは、「開発者が良いテストを書くために知っておくべき情報が散らばっている」という課題を解決するために作られました。
- 4コースの学習リソース、テストが書かれたサンプルアプリケーションとその解説、アプリを作成してテストを書くチュートリアルが含まれています。
- 4コースの学習リソースにはCypress の使い方だけでなく、テストの考え方自体の学習リソースも含まれているのが特徴的です。
- また、サイト自体が OSS として公開されており、E2E テストが Cypress で書かれています。
その他の注目ネタ
- GitHub
- CircleCI
- Terraform
- その他