Как запустить тесты действий github, когда файл python (.py) в любом месте проекта изменился? - PullRequest
2 голосов
/ 05 августа 2020

Как я могу использовать действие github, которое запускает pytest, когда ЛЮБОЙ python файл (файл .py) в любом месте проекта изменяется? Этот проект содержит смесь разных языков, и я хочу запускать pytest только в том случае, если файл python изменился где-то в проекте (в ЛЮБОМ каталоге на любом уровне внутри проекта).

name: Test Python Tests

on:
  push:
    paths:
      - what to put here???? 

jobs:
  build-and-run:
    steps:
    - uses: actions/checkout@v1
    - name: Update Conda environment with "requirements.yml"
      uses: matthewrmshin/conda-action@v1
      with:
        args: conda env update -f ./requirements.yml
    - name: Run "pytest" with the Conda environment
      uses: matthewrmshin/conda-action@v1
      with:
        args: pytest

Ответы [ 2 ]

2 голосов
/ 05 августа 2020
on:
 push:
  paths:
  - '**.py'

Это должно помочь, см. Шпаргалку по шаблону фильтра

0 голосов
/ 05 августа 2020

По сути, вам нужна информация git diff и считывать оттуда все измененные файлы.

Событие Pu sh GitHub Actions не включает список измененные файлы. Это означает, что вы должны всегда запускать рабочий процесс на pu sh, а затем проверять файлы, которые были изменены с помощью обычного REST API. https://docs.github.com/en/actions/reference/events-that-trigger-workflows#push

Примечание. Полезная нагрузка веб-перехватчика, доступная для GitHub Actions, не включает добавленные, удаленные и измененные атрибуты в объекте фиксации. Вы можете получить полный объект фиксации с помощью REST API. Для получения дополнительной информации см. «Получить одну фиксацию».

Вы можете использовать действие JavaScript в сочетании с клиентом OctoKit (https://github.com/actions/toolkit). Если вы используйте один из набора инструментов, он уже будет аутентифицирован.

OctoKit можно использовать для упрощения вызовов REST. См. ответ 200 по умолчанию в https://docs.github.com/en/rest/reference/repos#get -a-commit

...
  "files": [
    {
      "filename": "file1.txt",
      "additions": 10,
      "deletions": 2,
      "changes": 12,
      "status": "modified",
      "raw_url": "https://github.com/octocat/Hello-World/raw/7ca483543807a51b6079e54ac4cc392bc29ae284/file1.txt",
      "blob_url": "https://github.com/octocat/Hello-World/blob/7ca483543807a51b6079e54ac4cc392bc29ae284/file1.txt",
      "patch": "@@ -29,7 +29,7 @@\n....."
    }
  ]
...

Если поле files содержит файл .py, отмените рабочий процесс. Вы можете отменить рабочий процесс непосредственно из самого JS:

  core.setFailed(error.message);

Если ядро ​​является вашим Клиент OctoKit.

...