作問時のCI環境をTravis CIからGitHub Actionsに移行する方法

競技プログラミングのコンテストを作る際に、作問補助ツールであるRimeを使います。これまではPush時にTravis CIでテストが回るようにしていたのですが、GitHub Actionsに移行してみました。設定を共有します。

Travis CIの例

かつてはTravis CIを使っていました。.travis.ymlの設定を下記に示します。

language: python
cache: bundler
python:
- "3.7"
addons:
  apt:
    sources:
      - pypy
    packages:
      - mono-devel
      - pypy3
install:
- pip install -r requirements.txt
script:
- rime test

GitHub Actionsの例

.github/workflows/rime.ymlに書き換えると下記のようになります。

name: Rime

on: [push]

jobs:
  rime_test:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v1
    - name: Set up Python 3.7
      uses: actions/setup-python@v1
      with:
        python-version: 3.7
    - name: Cache requirements
      uses: actions/cache@v1
      with:
        path: ~/.cache/pip
        key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
        restore-keys: |
          ${{ runner.os }}-pip-
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements.txt
    - name: Test with Rime
      run: |
        rime test

Travis CIと比べると、各属性が明確になったように感じます。設定内容は下記で説明されています。

GitHub Actions のコンテキストおよび式の構文 - GitHub ヘルプ

比較

  • GitHub Actionsの良い点
  • Travis CIの良い点
    • Travis CIの方が処理速度が高速です。
      • 何による差なのかは確認していませんが、Travis CIで6m程度かかっていた処理が、GitHub Actionsでは6.5m程度かかるようになっています。

関連記事

Rime関連で他にも記事を書いているので、必要に応じて見てみてください。

matsu7874.hatenablog.com

matsu7874.hatenablog.com