Выполните тесты для нескольких языковых версий в действиях GitHub в контейнере Docker - PullRequest
0 голосов
/ 25 апреля 2020

Я пытаюсь настроить действия GitHub для пакета Python. Я считаю, что самый разумный способ сделать это - то, к чему я привык из GitLab; запустить набор команд внутри docker изображения. Я хотел бы использовать матрицу для тестирования нескольких Python версий.

До сих пор я определил следующий рабочий процесс:

name: Pytest

on:
  - push
  - pull_request

jobs:
  pytest:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version:
          - 3.5
          - 3.6
          - 3.7
          - 3.8
    container: python:${{ python-version }}-alpine
    steps:
      - uses: actions/checkout@v2
      - name: Install
        run: |
          pip install poetry
          poetry install
      - name: PyTest
        run: poetry run pytest

Результат можно увидеть здесь: https://github.com/remcohaszing/pywakeonlan/actions/runs/87630190

Это показывает следующую ошибку:

Рабочий процесс недопустим. .github / workflows / pytest.yaml (строка: 17, столбец: 16): нераспознанное именованное значение: 'python -version'. Находится в позиции 1 в выражении: python -version

Как мне исправить этот рабочий процесс?

1 Ответ

1 голос
/ 25 апреля 2020

Пару пунктов, чтобы попробовать:

1) Чтобы использовать значения из матрицы, вам нужно использовать ${{ matrix.python-version }}. Для получения дополнительной информации см. Документацию для jobs.<job_id>.strategy.matrix.

2) Вам не обязательно использовать контейнеры для тестирования нескольких версий. GitHub Actions поддерживает это "из коробки", используя язык "101" * действия "setup". Например, см. Официальное действие setup- python. Вот пример того, как они это делают:

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: [ '2.x', '3.x', 'pypy2', 'pypy3' ]
    name: Python ${{ matrix.python-version }} sample
    steps:
      - uses: actions/checkout@v2
      - name: Setup python
        uses: actions/setup-python@v1
        with:
          python-version: ${{ matrix.python-version }}
          architecture: x64
      - run: python my_script.py
...