以下の内容はhttps://ozaki25.hatenadiary.jp/entry/2024/03/26/211429より取得しました。
業務で役立つ…かもしれない?!GitHub Actions Tips 集
matrix job
- 似てるけど微妙にパラメータが違うジョブ
- matrix jobでパラメータを差し替えながら並列実行できる
- バージョンとかOSだけ変えてまとめて動かすとか
- 複数の条件の組み合わせで動かせる
- inputにjsonを使えるのが便利
- secretsを出し分けたい場面がある
動的job実行
- Branch Protection
- PR作成時にCIが通らないとマージできないとか
- 条件にjobを指定できる
- jobをフィルタリングしたくなることがある
- pathsフィルター
- 特定のファイルが更新された時に実行させることができる
- 対象外だった時にworkflowが動かずpendingでマージがブロックされてしまう
- pathsフィルターとBranch Protectionの相性が悪い
- paths-filterを使ってworkflowは実行しつつjobをフィルターできる
- Status Check Job
- このjobをpass/failさせることでBranch Protectionを機能させる
- passの条件
- exit 0で終わる
- jobをスキップして実行されない
CI/CD のセキュリティや Developer Experience を改善するツールやプラクティス
PRコメントでCIの結果通知
- CIがこけたら原因をPRにコメントしたい
- github comment
- コメントのテンプレートも用意できるので使うと見通しがよくなる
- 古いコメントを非表示にして新しくコメントできる
- 同じような変更を複数リポジトリに入れるの大変
- 共通化されたツールをメンテすれば楽になる
- Renovateで各リポジトリに配布
GItHub Actionsのセキュリティベストプラクティス
- ベストプラクティス
- jobのpermissionsを最小限
- secretの公開範囲を最小step/job
- Actionのバージョンをfull commit hashで固定する
- ghalintでチェックできる
- ツールのバージョン固定
- ツールが汚染されてもいきなり反映されない
- コードを変更してないのにCIが壊れるようなことを防ぐ
- バージョンやタグもあるが変更されることがある
- コードコメントでバージョンを書けばRenovateも見てくれる
- バージョンはパッチまでしっかり書くと更新時の差分が見やすい
CIで使うツールの管理
- バージョン固定
- ツールの自動アップデート
- shellでやるのは面倒
- aqua
一歩先のセキュリティ
- CIを書き換えられないようにする
- 任意のコード実行を防ぐ
- 強い権限与えないといけない時特に
- pull_request_target event
- feature branchのスクリプトを実行するのは危険
古いrevisionでの実行を防ぐ
CI/CDがあたりまえの今の時代にAPIテスティングツールに求められていること
runn
runnの機能
- 1バイナリで作られてる
- さまざまなプロトコルに対応
- OpenAPI Specライクなシナリオ
- 複数のシナリオが想定されている
- プロファイルの取得
- ステップ実行できる
APIテストのモチベーション
- アプリケーションの外側からテストしたいというニーズ
- スモールテストよりコストが高い
- CIでの自動実行が前提になってる
APIテスティングツールに求められること
ChainingRequestに対応していること
- 複数リクエストで成り立つテストが求められる
- 個別に作るより実は低コスト
親和性の高いテストダブル環境
- 規模が大きくなりがち
- テストダブルをアプリの外で構築できると望ましいが難しい
- Postmanはstubサーバのサポートがある
- runnはないので自前でstubサーバ動かしてやる
テストケースにIDがあること
- テストを一意にできるIDが必要
- IDとメトリクスの連携
- 特定のものだけリトライとか
- 実行時間を特定するためにとか
- よく失敗するのを先にとか
- IDを使うと柔軟にできる
- runnは自動で動的に生成してる
- テストケース自体がある程度正しいことを確認したい
- runnでは各ランナーにAPIスキーマを設定できる
ポータビリティがある
- 開発環境とCI環境で同一の環境にしやすいこと
- 負荷試験としても活用できる
- 本番強への外形監視/計測として使える
- runnではいろんな環境で使えるようにしてる
リリース戦略を支えるCI/CDパイプライン
リリース管理のつらみ
- システムが複雑になり依存が増えると管理が複雑になる
リリース戦略の事例
- 複数バージョンが並行するプロダクト
- リリーストレイン
- リリースの日が決まっていて間に合ったものだけリリースする
- ブランチカットするタイミング
- リリース日が未定な状態でもタグをつける
- 開発環境にデプロイするタイミングでタグつける
- タグはOSSの開発スタイルに倣う
- tagpr
以上の内容はhttps://ozaki25.hatenadiary.jp/entry/2024/03/26/211429より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます
不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14