kakakakakku blog

Weekly Tech Blog: Keep on Learning!

CI/CD Litmus Test: CI/CD レベルを測定しよう!

AWS が公開しているサイト「CI/CD Litmus Test」を使うと簡単に「CI/CD スコア」「CI/CD レベル」を測定できる❗️開発チームで実施しながらレベルを上げるにはどうしたら良いかをディスカッションすると効果的に使えそう \( 'ω')/

litmus.devops.aws.dev

流れとしては CI/CD の設計に関する「計20種類」の質問(Yes or No)にポチポチと答えていくと以下の結果が出る📊

CI/CD score CI/CD level
9.5 or above Fully CI/CD
8–9 Mostly CI/CD
5–7 Neutral
Below 5 Not CI/CD

GET STARTED を押す

質問に Yes or No で答える

今取り組んでる CI/CD をイメージしながら答えたら Mostly CI/CD だった!

質問一覧

最終的なスコアを2で割ると「CI/CD スコア」になる💡

  • Yes なら+1点
    • Do our repositories each have exactly one main branch that is used to deploy to environments?
    • Do we commit code to the main branch frequently and avoid having long-running feature branches?
    • Does our pipeline have a single point of entry? In other words, does our pipeline pull the code from each repository exactly one time?
    • Do we have more than one deployment environment?
    • When the pipeline is not running, are our upper and lower environments generally in sync?
    • Do we run tests on code before deploying?
    • Do we run tests on an environment before promoting to the next environment?
    • Does our pipeline do a full rollback and exit after a failure?
    • Does our pipeline restart from the first step when recovering from a failure?
    • Do we follow the same process to fix bugs in production that we do to release features to production?
    • Do we use some form of infrastructure as code (IaC) templates to deploy code?
  • No なら+1点
    • Do we ever deploy directly into a deployment environment from branches other than the main branch?
    • Do we ever deploy directly from any branch to an upper or production environment?
    • Do we often find bugs in upper environments that were not present in lower environments?
    • Do we ever bypass lower environments during a deployment?
    • Do we wait until a scheduled release time to deploy to production?
    • Do we regularly make updates in the production environment's console?
    • Are there any manual deployment steps that must be done in the production environment's console in order to complete deployment?
    • Does more than one person have write access to the production environment?
    • Do more than five people have write access to the production environment?

最初はどういう意味だろうと思ったけど lower environments は "開発環境" や "ステージング環境" 相当・upper environments は "本番環境" 相当と考えると良さそう?とは言え明確に production environment と書かれてる質問もあるんだけども💨

The CI/CD litmus test: Is your pipeline fully CI/CD?

「CI/CD Litmus Test」は2023年8月に公開された AWS Prescriptive Guidance(AWS 規範ガイダンス)の The CI/CD litmus test: Is your pipeline fully CI/CD? に紐付いていて,質問一覧やスコア表なども載っている❗️質問の意図を理解するためにも使える.

この The CI/CD litmus test: Is your pipeline fully CI/CD? の内容も非常に良くて,CI/CD のメリット・CI/CD のベストプラクティス・Gitflow アプローチと Trunk-Based アプローチの差など,CI/CD のトピックが深く解説されていてあわせて読むと良いかとー👌

docs.aws.amazon.com

以上❗️便利サイトの紹介でした〜 \( 'ω')/