Security Alerts に怒られる前になんとかしたい!
やりたいこと
Node.js であればnpm audit fix
で行える依存ライブラリの更新のような保守作業…。
日頃意識していないとなかなか手につかないので自動で Pull Request 作成までできるようにしたい。
欲を言えば、Approve や Merge も自動でやってほしい。(今回はやらない)
Github Actions
11月13日ごろに正式リリースとなる Github Actions のβ版を試してみました。
なぜ Github Actions なのか
Github Marketplace で公開されているツールを使って Workflow が組めるので、他の CI/CD サービスよりも Github の操作がしやすいのではと思いました。
実装
今回は Create Pull Request を使って PR作成までを自動化することにしました。
Github Actions は Push や Create Pull Request がトリガーできる他、スケジュール起動ができるので今回はそれを使ってみます。
(Security Alerts で発火できるようにならないですかねー)
Push トリガーや、Pull Request トリガーはそのブランチ上で Workflow が実行されますが、 スケジュール起動の場合は master ブランチ上でのみ動作します。Workflow も master ブランチ上に置いてあるものが読み込まれます。
こんな感じで Workflow を用意し、master ブランチに展開します。
スケジュール設定はなんとなくで週一としました。
Create Pull Request は Github のアクセストークンを使うので、リポジトリの "Settings" -> "Secrets" から予め登録しておきます。
name: Create Security Fix Pull Request
on:
schedule:
- cron: '0 3 * * 3' # 毎週水曜日の正午に実行 ( 12+JST = 3+UTC )
jobs:
patch:
runs-on: ubuntu-latest
steps:
- uses: actions/setup-node@v1 # Node.js 環境の構築
with:
node-version: '10.x'
- uses: actions/checkout@master # リポジトリを読み込み
- run: npm install -g npm
- run: npm -v
- run: npm audit fix
- name: Create Pull Request # ブランチを作成して PullRequest を作成
id: cpr
uses: peter-evans/create-pull-request@v1.7.0
with:
title: Security Update into master.
labels: Auto PR
branch: securityFix #作成されるブランチは securityFix-xxxxxxx
token: ${{ secrets.GITHUB }}
動作確認
PR が作成されています。(Approve、Merge は手動です)
感想
今回は Pull Request 作成まででしたが、Auto Approve や Merge pull requests を組み合わせればリリース作業も完全に自動化できそうです。