Closed1

Poetry in GitHub Actions

あおあお

Poetryを用いてちょっとしたPythonスクリプトを書いて、GitHub Actionsで動かす例。
poetryコマンドそのものとpackageの依存を解決してinstallしたそれぞれをキャッシュ化し、
リストアしているworkflow定義が見つからなかったので誰かの参考になれば

と言っても、Poetryを一通りつかったことがあり、GitHub Actionsのaction/cacheを理解していれば、
なにも特殊なことはしていない

Poetryについて

  • GitHub Actionsではubuntu-latestを用いる
  • ~/.local/bin/poetry

各jobについて必要に応じてコメントを

  • Cache poetry cache
    • このjobでのキャッシュ取得処理でhitしたかどうかを後ほど条件判定に使用するために、予めidを振っている
    • with.path, with.keyはactions/cacheにおいて、
---
env:
  PYTHON_VERSION: '3.10'
  POETRY_VERSION: '1.3.2'

name: sample_name

on:
  workflow_dispatch:

jobs:
  sample_job:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: Cache poetry cache
        id: poetry-cache
        uses: actions/cache@v3
        with:
          path: /home/runner/.local
          key: ${{ runner.os }}-python${{ env.PYTHON_VERSION }}-poetry${{ env.POETRY_VERSION }}

      - name: Set a path
        run: |
          echo "$HOME/.local/bin" >> $GITHUB_PATH
        if: steps.poetry-cache.outputs.cache-hit == 'true'

      - name: Cache packages
        id: packages-cache
        uses: actions/cache@v3
        with:
          path: /home/runner/.cache/pypoetry
          key: ${{ runner.os }}-${{ github.job }}-packages-${{ hashFiles('**/poetry.lock') }}
          restore-keys: |
            ${{ runner.os }}-${{ github.job }}-packages-
      - name: Setup Python ${{ env.PYTHON_VERSION }}
        uses: actions/setup-python@v4
        with:
          python-version: ${{ env.PYTHON_VERSION }}

      - name: Install poetry
        run: |
          curl -sSL https://install.python-poetry.org | python3 - --version ${{ env.POETRY_VERSION }}
          echo "$HOME/.local/bin" >> $GITHUB_PATH
        if: steps.poetry-cache.outputs.cache-hit != 'true'

      - name: Resolve Dependencies
        run: |
          poetry install
        if: steps.packages-cache.outputs.cache-hit != 'true'

      - name: Run script by Poetry
        run: |
          poetry run python path/to.py
このスクラップは2023/09/30にクローズされました