【インフラ_11日目】CI/CD_1冊目
こんにちは投資ロウトです。
背景
・CI/ CDをシステムに導入していかなければならない背景があります。
ソフトウェアは壊れる
改めてびっくりしましたが、コードを一行も変えていなくてもソフトウェアは壊れるとのこと。それはソフトウェアの環境が変化するためだからとのことです。
そしてソフトウェアを安定させ続けるためには、変更し続けることが必要というお話がありました。
依存関係が上がると?
次のような活動が必要とのこと。
・新しいバージョンが出たことを知る
・何の修正があったのかを把握する
・そのコードを自身に取り込む
・リグレッションテストで、何も壊れていないか確認する
dependabotを活用する
こちらの機能は以下をしてくれるとのこと。
・新しいバージョンに自動で上げてくれる
・脆弱性が含むバージョンを上げてくれる
・脆弱性が含まれるバージョンを教えてくれる
# GitHub Actionsを自動アップデートする
package-ecosysytem: github-actions
# パッケージの配置先ディレクトリはGitHub Actionsのみ固定で「/」とのこと
directory: /
# 毎日新しいバージョンがないか見てくれる
schedule:
interval: daily
# 他にはweekly, monthlyがある
GitHub Actionsで自動マージができる
以下のコマンドで自動マージの設定ができるとのことでした。
gh pr merge <NUMBER | URL | BRANCH> --merge
また自動マージをするのは、dependabotが作成したプルリクエストのみとのことです。
# これでdependabotが作成したプルリクエストに絞って何かをする条件に絞ることが可能とのこと
if: ${{ github.actor == dependabot[bot]' }}
# GitHub Actionsでマージするには、contentsとpull-requestの書き込み権限がなければならないとのこと
permission:
contents: write
pull-request: write
またステータスチェックを行っている場合、全ワークフローのチェックが終わってから出ないと、マージが失敗するため、--autoを入れると良いとのこと
- run: gh pr merge "${GITHUB_HEAD_REF}" --merge --auto
また自動マージを許可するには、Settingタブより以下のチェックを入れないといけないとのことでした。
dependabotの補足
・Dependabotが起動したワークフローはGITHUB_TOKEN以外のSecretsへアクセスできない制約があるとのこと。
またパッチバージョン変更時のみ自動マージするような設定ができるとのこと。
dependabot/fetch-metadata@v2から値を取得し、
steps.meta.outputs.update-type == 'version-update:semver-patch'でその判定ができるとのことでした。
またメジャバージョン以外という確認も以下でチェックできるとのこと
steps.meta.outputs.update-type != 'version-update:semver-major'
と短いですが、以上で学習を区切りたいと思います。ご精読ありがとうございました。焦らずコツコツ頑張っていきたいと思います。
Discussion