CIマニアと化したtubone

最近Github Actionを触って便利さに気がついてしまったのでご紹介します。

Github Actionとは?

Github Actionとは、 built by you, run by us です。(公式より)

詰まるところGithub製のCIです。

結構簡単に使えたのでご紹介します。

Github Actionのプレビューに応募する

Github Action自体はまだプレビュー版ですので、こちらのサイトから 利用申請をする必要があります。

私は申し込みから一週間くらいで使えるようになりました。

無事利用できるようになりますと、レポジトリにActionボタンが 出てきます。

Img

Workflowを設定する

Github ActionはほかのCIと同じくYAMLファイルで定義します。

今回はPythonのPytestでテストを回します。

下記のようにPython環境の設定、のパッケージBuild、Pytestまでを設定します。

name: Python package

on: [push]

jobs:
  build:

    runs-on: ubuntu-latest
    strategy:
      max-parallel: 4
      matrix:
        python-version: [3.6, 3.7]

    steps:
    - uses: actions/checkout@v1
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v1
      with:
        python-version: ${{ matrix.python-version }}
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements.txt
    - name: Setup ebook-homebrew
      run: |
        python setup.py install
    - name: Test with pytest
      run: |
        pip install pytest
        pip install -r requirements-test.txt
        pytest --it
    - name: Lint check
      run: |
        black ebook_homebrew setup.py --check

Trigger設定

今回はpush時に動くようにしますので

name: Python package

on: [push]
jobs:
  build:

のように設定します。

Triggerについてはこちらをご確認ください。

Matrixでテスト

Matrixでテストする場合は下記のようにPythonのバージョンを複数設定します。

jobs:
  build:

    runs-on: ubuntu-latest
    strategy:
      max-parallel: 4
      matrix:
        python-version: [3.6, 3.7]

    steps:
    - uses: actions/checkout@v1    - name: Set up Python ${{ matrix.python-version }}

Stepの設定

StepはほかのCIと同じような感じで設定します。

    steps:
    - uses: actions/checkout@v1
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v1
      with:
        python-version: ${{ matrix.python-version }}
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements.txt
    - name: Setup ebook-homebrew
      run: |
        python setup.py install
    - name: Test with pytest
      run: |
        pip install pytest
        pip install -r requirements-test.txt
        pytest --it
    - name: Lint check
      run: |
        black ebook_homebrew setup.py --check

CI起動時の動き

無事PushでCIが動くと各push、PRごとにActionに結果がでます。

Img

さらに、実行ログも確認できます。

もう普通のCIですね。

Img

結論

Github Actionを使えば、めんどっちいCIサーバ連携も不要で楽々です。