【その他メモ】
・CI→コードの変更を頻繁にコードベースへ統合し正しく動作するか繰り返し検証
・CD→いつでも安全にリリースできる状態を保ちソフトウェアを繰り返し改善
CD⊃CI
・ワークフローファイル→YMLで記述
runでシェルコマンド、usesでActionを呼び出し、withでパラメータ指定
・コンテキスト→実行時の情報やジョブの実行結果などを保持するオブジェクト
・Variables→varsコンテキストからアクセス
・Secrets→secrestコンテキストからアクセス
・ステップ間でデータは引き継がれない
⇒GITHUB_OUTPUT環境変数経由で渡す
・デフォルトブランチ→通常はmain。出発点かつ終着点。
・静的解析→actionlintなどで実施
・不要な警告は抑止。途中導入なら増やさないようにする
・マトリックス→1つのジョブ定義で複数ジョブ実行1つのジョブでエラーが発生すると並列ジョブも止まる。
⇒fail-fast:falseで回避可能
・Enviromentsで環境ごとに異なるデータを管理
・ワークフロー内で生成したファイル(アーティファクト)はアップロードしブラウザやワークフローからダウンロード可能
・ブランチプロテクションルールでブランチを保護
・コードオーナーを指定する
・シークレットスキャンを使用する
・Dependabotで依存関係管理
⇒Secretsは別途登録が必要なため要注意
・コマンドからリリースを作成しアセットのアップロードが可能。
--generate-noteでリリースノート自動生成
・自動生成リリースノートの内容はプルリクエストに基づく。設定はrelease.ymlへ記述。
・ルールセットでブランチやGitタグを保護
・クラウド連携は基本OpenID Connectで行い静的クレデンシャルは使わないようにする
⇒OIDC Trust + Cloud Rolesで実現
・テストしずらいアクション=設計がイマイチ
・最初から入力パラメータを増やして柔軟性を高めすぎない
・後回しにせず早めに取り組む→シフトレフト
・ソフトウェアデリバリーパフォーマンスの指標
変更リードタイム、デプロイ頻度、変更失敗率、デプロイ失敗時の回復時間
・スピードが速い組織ほど品質も高く遅いと品質も低い
・バージョン管理しているファイルのみで実行環境をゼロから再構築できるか
・自動テストは既知の問題への検証。
⇒未知の問題へ取り組む探索的テストと両方やる
・Testing in Production
・DB変更はマイグレーションスクリプト経由で実行
・コンウェイの法則→アーキテクチャ設計は組織設計に従属する