はじめに
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に移れてよかったです。果報は寝て待てですね(動きが遅かっただけ)。