はじめに
CI/CD 機能が付いて新しくなった GitHub Actions が使えるようになったので、Travis でビルド/デプロイしていたブログを Actions に移行してみました。
GitHub Actions のベータプログラムには下記サイトから応募できます。 https://github.com/features/actions
前提
今まで利用していた Travis の設定ファイルはこちら。
notifications:
email: false
sudo: false
dist: trusty
language: go
env:
- HUGO_VERSION=0.51
go:
- "1.10"
install: true
before_script:
- wget https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_${HUGO_VERSION}_Linux-64bit.deb
- sudo dpkg -i hugo_${HUGO_VERSION}_Linux-64bit.deb
script:
- git submodule update --init
- hugo -v
deploy:
provider: pages
local-dir: public
skip-cleanup: true
github-token: $GITHUB_TOKEN
keep-history: true
on:
branch: master
Hugo のインストールとビルドを行い、pages
の provider を使ってgh-pages
ブランチにデプロイしています。(Go と Hugo のバージョンが古いですね…むしろ Go はいらないんじゃないような…)
移行
GitHub Actions の作成
Actions を使いたいリポジトリのタブの部分に Actions
というメニューが生えているため、そこをクリックします。
まだ Actions が設定されていない場合は、Workflow のサンプルがいくつか表示されています。
自分は何も分からなかったので右上の Set up a workflow yourself
のボタンを選択しました。
すると、 .github/workflows/main.yml
というファイルにサンプルのワークフローの定義ファイルを作成する画面に移ります。CircleCI の設定ファイルによく似てますね。
右ペインに簡単な説明が書かれているのでそれを見たり、ドキュメントを見たりしながら編集していきます。
完成品 (main.yml)
とりあえず動くものが出来ました。
name: Deploy Pages
on:
push:
branches:
- master
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Build and Deploy
uses: JamesIves/github-pages-deploy-action@master
env:
ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }}
BRANCH: gh-pages
FOLDER: public
HUGO_VERSION: 0.57.2
BUILD_SCRIPT: |
wget https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_${HUGO_VERSION}_Linux-64bit.deb
dpkg -i hugo_${HUGO_VERSION}_Linux-64bit.deb
git submodule update --init
hugo -v
Build and Deploy
というステップで、JamesIves/github-pages-deploy-actionという他の人の作った GitHub Pages をデプロイする Actions を使っています。CircleCI で言うところの Orb でしょうか(あまり知らない)。
Secrets
env: ACCESS_TOKEN:
のところで secrets.ACCESS_TOKEN
と言う変数を使っていますが、これはリポジトリの Settings メニューから設定できる変数を使っているようです。
Settings > Secrets > Add a new secretを選択し、変数名とその値を入れると Actions の定義ファイル(main.yml
)でその変数を使えるようになります。
詳しくは公式ドキュメントを。
微妙な点
このステップの BUILD_SCRIPT
のところで Hugo でのビルドを行っているのですが、ここで Hugo のインストールまでここでやっているのがちょっと微妙です。別のステップを作って、その中で Hugo のインストールを行ってみたりしたのですが、hugo
コマンドが見つからないと言うエラーとなり、別のステップでの変更は持ち込めないようでした。
なんかやり方あるのかな?
動作確認
コミットを契機にビルドが開始される設定となっているので、.github/workflows/main.yml
をコミットすると、Actions が開始されます。結果は Actions タブから確認できます。ビルドログも見れます。
おわりに
深くは使ってないので判断はできませんが、GitHub だけで完結できるのは楽ですね。
今年の初めぐらいにTravis が Idera に買収されたり、Travis のエンジニアが解雇されたりと Travis 周りはキナ臭い話が多く、それを機に CircleCI に移行するプロジェクトも多かったと思いましたが、そこでビッグウェーブに乗らずに移行しなかったために難なく GitHub Actions に移れてよかったです。果報は寝て待てですね(動きが遅かっただけ)。