ci/gha: simplify poetry setup and caching #9179
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Tests | |
on: | |
push: | |
paths-ignore: | |
- 'docs/**' | |
- '.cirrus.yml' | |
- '.github/workflows/docs.yml' | |
branches: | |
- main | |
pull_request: | |
paths-ignore: | |
- 'docs/**' | |
- '.cirrus.yml' | |
- '.github/workflows/docs.yml' | |
branches: | |
- '**' | |
concurrency: | |
group: tests-${{ github.head_ref || github.ref }} | |
cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
jobs: | |
tests: | |
name: ${{ matrix.os }} / ${{ matrix.python-version }} | |
runs-on: ${{ matrix.image }} | |
strategy: | |
matrix: | |
os: [Ubuntu, macOS, Windows] | |
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] | |
include: | |
- os: Ubuntu | |
image: ubuntu-22.04 | |
- os: Windows | |
image: windows-2022 | |
- os: macOS | |
image: macos-12 | |
fail-fast: false | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Bootstrap poetry | |
run: pipx install poetry | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
cache: poetry | |
- name: Enable long paths for git on Windows | |
if: ${{ matrix.os == 'Windows' }} | |
# Enable handling long path names (+260 char) on the Windows platform | |
# https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file#maximum-path-length-limitation | |
run: git config --system core.longpaths true | |
- name: Configure poetry | |
run: | | |
poetry config virtualenvs.in-project true | |
poetry config virtualenvs.options.no-pip true | |
poetry config virtualenvs.options.no-setuptools true | |
- name: Check lock file | |
run: poetry check --lock | |
- name: Install dependencies | |
run: poetry install --with github-actions | |
- name: Run mypy | |
run: poetry run mypy | |
- name: Run pytest | |
env: | |
POETRY_TEST_INTEGRATION_GIT_USERNAME: ${GITHUB_ACTOR} | |
POETRY_TEST_INTEGRATION_GIT_PASSWORD: ${{ secrets.GITHUB_TOKEN }} | |
run: poetry run pytest --integration -v | |
- name: Get Plugin Version (poetry-plugin-export) | |
id: poetry-plugin-export-version | |
run: | | |
echo version=$(poetry show poetry-plugin-export | grep version | cut -d : -f 2 | xargs) >> $GITHUB_OUTPUT | |
- name: Checkout Plugin Source (poetry-plugin-export) | |
uses: actions/checkout@v4 | |
with: | |
path: poetry-plugin-export | |
repository: python-poetry/poetry-plugin-export | |
ref: refs/tags/${{ steps.poetry-plugin-export-version.outputs.version }} | |
- name: Run pytest (poetry-plugin-export) | |
working-directory: ./poetry-plugin-export | |
run: poetry run -C .. pytest -v | |
- name: Check for clean working tree | |
run: | | |
git diff --exit-code --stat HEAD | |
git -C poetry-plugin-export diff --exit-code --stat HEAD |