Conda環境の作成をGitHub Actionsでテスト

Conda環境の設定変更が及ぼすプラットフォーム毎の影響を自動で確認するようにしました。
大したことはせず、GitHub ActionsでPR時にConda環境を作成( conda env create -f <environment.yml> )して、正常終了するかを確認するだけです。

Conda環境を作成するアクション

conda-incubator/setup-miniconda でMiniconda環境を作成し、対象リポジトリ上で管理しているYAMLファイルでConda環境を作成します。

github.com

今回は以下の設定を採用しました。詳細はリンク先のREADMEを参照してください。

- uses: conda-incubator/setup-miniconda@v2
  with:
    environment-file: path/to/environment.yml # 環境設定ファイル(conda env exportしたファイル)
    auto-activate-base: false # base環境を有効化しない
    auto-update-conda: true # condaのアップデート
    use-only-tar-bz2: true # キャッシュが機能するように

ワークフローの例

異なるプラットフォームでConda環境を作成する例です。
普段開発に使用しているmacOS 10.15(Catalina)で開発用のConda環境( dev.yml )を作成し、 デプロイ先として想定するUbuntu 18.04やWindows Server 2019では本番用のConda環境( production.yml )を作成します。

name: build

on:
  push:
    branches: [ master ]
  pull_request:

jobs:
  conda-env-create-on-macos:
    runs-on: macos-10.15
    steps:
    - uses: actions/checkout@v2
    - name: Install Homebrew packages
       run: brew install <formula-1> ... <formula-N>
    - uses: conda-incubator/setup-miniconda@v2
      with:
        environment-file: path/to/dev.yml
        auto-activate-base: false
        auto-update-conda: true
        use-only-tar-bz2: true

  conda-env-create-on-linux:
    runs-on: ubuntu-18.04
    steps:
    - uses: actions/checkout@v2
    - name: Update list of packages
       run: sudo apt-get update
    - name: Install apt packages
       run: sudo apt-get install -y <package-1> ... <package-N>
    - uses: conda-incubator/setup-miniconda@v2
      with:
        environment-file: path/to/production.yml
        auto-activate-base: false
        auto-update-conda: true
        use-only-tar-bz2: true

  conda-env-create-on-windows:
    runs-on: windows-2019
    steps:
    - uses: actions/checkout@v2
    - uses: conda-incubator/setup-miniconda@v2
      with:
        environment-file: path/to/production.yml
        auto-activate-base: false
        auto-update-conda: true
        use-only-tar-bz2: true

これでPRを契機にConda環境が作成され、環境設定の不備を早期に摘出できるようになりました。

f:id:hiroki-sawano:20220325011914p:plain