CircleCI から GitHub Actions への移行

Posted on

このブログは Jekyll を使った静的サイトです。ホスティングは S3 の Static Website Hosting と CloudFront のよくある組み合わせです。

これまでブログのリリースに CircleCI を使っていましたが、使い慣れた GitHub Actions に移行したのでやったことをメモしておきます。

移行手順

次のような流れで移行しました。

  1. .circleci/config.yml の処理を .github/workflows/*.yml に書き直す
  2. feature ブランチのみワークフローが動くように branches を設定する
  3. デプロイに必要な API key などをリポジトリの Secrets に登録する
  4. GitHub に feature ブランチを push して検証する

一発では通らないと思うので、うまくいくまで修正して push を繰り返します。ワークフローが完成したら CircleCI の設定を解除します。

  1. CircleCI に登録している API key などを削除する (Project Settings > Environment Variables)
  2. CircleCI のジョブを止める (Project Settings > Overview > Stop Building)
  3. .circleci/config.yml を削除する

これで CircleCI のジョブが走らなくなりました。

最後に branches の設定を feature ブランチから default ブランチに変更すれば完了です。やっていることがシンプルだったので 1 時間ほどで移行できました。

Jekyll 用のワークフロー

参考までに、このブログで使っているワークフローを載せておきます。

name: Build and Deploy

on:
  push:
    branches:
      - master

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - uses: ruby/setup-ruby@v1
      with:
        bundler-cache: true
    - name: Build
      run: bundle exec jekyll build
    - name: Deploy to S3
      run: ./deploy.sh ${{ secrets.S3_BUCKET_NAME }}
      env:
        AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
        AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
        AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}

deploy.sh のスクリプトでは S3 へのアップロードを実行しているだけです。