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


Posted on Sun, Sep 22, 2019
Tags githubactions, 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 することをよく実施すると思いますが、標準出力に流れすぎるせいなのか、あるいはコンテナに負荷がかかるせいか、実行しても止まらず、またログも見られない状態になります。

Share with


See Also