Help us understand the problem. What is going on with this article?

新しくなったGitHub ActionsでHugoブログのデプロイをしてみた

はじめに

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 というメニューが生えているため、そこをクリックします。

スクリーンショット 2019-08-31 10.01.26.png

まだActionsが設定されていない場合は、Workflowのサンプルがいくつか表示されています。
自分は何も分からなかったので右上の Set up a workflow yourself のボタンを選択しました。

スクリーンショット 2019-08-31 10.05.34.png

すると、 .github/workflows/main.yml というファイルにサンプルのワークフローの定義ファイルを作成する画面に移ります。CircleCIの設定ファイルによく似てますね。

スクリーンショット 2019-08-31 10.07.06.png

右ペインに簡単な説明が書かれているのでそれを見たり、ドキュメントを見たりしながら編集していきます。

完成品 (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)でその変数を使えるようになります。

詳しくは公式ドキュメントを。

スクリーンショット 2019-08-31 10.29.54.png

微妙な点

このステップの BUILD_SCRIPT のところでHugoでのビルドを行っているのですが、ここでHugoのインストールまでここでやっているのがちょっと微妙です。別のステップを作って、その中でHugoのインストールを行ってみたりしたのですが、hugoコマンドが見つからないと言うエラーとなり、別のステップでの変更は持ち込めないようでした。
なんかやり方あるのかな?

動作確認

コミットを契機にビルドが開始される設定となっているので、.github/workflows/main.yml をコミットすると、Actionsが開始されます。結果はActionsタブから確認できます。ビルドログも見れます。

スクリーンショット 2019-08-31 10.33.42.png

おわりに

深くは使ってないので判断はできませんが、GitHubだけで完結できるのは楽ですね。

今年の初めぐらいにTravisがIderaに買収されたり、Travisのエンジニアが解雇されたりとTravis周りはキナ臭い話が多く、それを機にCircleCIに移行するプロジェクトも多かったと思いましたが、そこでビッグウェーブに乗らずに移行しなかったために難なくGitHub Actionsに移れてよかったです。果報は寝て待てですね(動きが遅かっただけ)。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした