GitHub Action で dotfiles のテストを実施する


Posted on Sun, Sep 22, 2019
Tags githubaction, ci, dotfiles

GitHub Action で macOS でのテストができるのが便利すぎた

最近 beta 利用が開始した GitHub Actions ですが、CircleCI と同じような使い心地で CI を実施することができます。

ソースコードの定義ジャンプなども含めて、GitHub はどんどん便利になっていきますね。

CircleCI もコンテナ立ち上げが速くて重宝していたのですが、GitHub Action は GitHub インテグレートのため、すぐにアクセスでき、CircleCI にとってはかなりやっかいな競合となりそうです。

macOS のコンテナイメージが使える

CircleCI の場合は、Linux のイメージのコンテナが無料で利用できるのですが、macOS のイメージを利用しようとすると有料プランへの登録が必要でした。

しかし、GitHub Action の場合はなんと Windows, macOS のイメージも無料で利用できます(2019/09/22 現在)

そのため、これまでなかなかテストがしづらかった dotfiles のテストが実行できるようになりました。 (これまで dotfiles でのインストールはぶっつけ本番で、失敗したら適宜直してました…)

作成した dotfiles は go-zen-chu/simple-dotfiles: simple dotfiles for primer

support github workflow (#5) のように CI で setup スクリプトがうまく動くか確認しています。

name: CI

on: [push]

jobs:
  build:
    runs-on: macOS-latest
    steps:
    - uses: actions/checkout@v1
    - name: Run macos setup.sh
      run: |
                ./macos/setup.sh
    - name: Run tmux setup.sh
      run: |
                ./tmux/setup.sh
    - name: Run zsh setup.sh
      run: |
        # yes command causes long execution in container 
        ./zsh/setup.sh        

ここでは steps で直列実行していますが、job をわけることで、並列実行が可能です。(別々のコンテナが立ち上がりますが)

気になるところ

yes コマンドを利用するとログが見れなくなる

こういった setup スクリプトの場合は、インストールで confirmation が必要な場合があります。 そのときに yes コマンドを pipe することを良くすると思いますが、標準出力に流れすぎるせいか、コンテナに負荷をかけるせいか、実行しても止まらず、またログも見れない状態になります。