#continuous-integration #github-actions
Вопрос:
Я пытаюсь автоматизировать конвейер CI/CD с помощью действий github. У меня есть файл Makefile, как показано ниже:
.virtualenv:
virtualenv -p python3 .virtualenv
. .virtualenv/bin/activate;
pip install -r requirements.txt -r requirements_test.txt
clean:
find . -name __pycache__ -exec rm -rf {}
rm -rf *.egg-info
rm -rf .virtualenv/
test: .virtualenv
(. .virtualenv/bin/activate;
pycodestyle --max-line-length=79 app test;
nosetests --with-coverage --cover-tests --cover-min-percentage=80 --cover-package=app test)
build: test clean
.PHONY: test clean
Я хочу использовать действия github для автоматизации этого рабочего процесса. Я настроил свой рабочий процесс на github следующим образом:
name: python-app
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: build application
run: make build
Я хочу, чтобы, когда есть толчок к мастеру или создается PR против мастера, рабочий процесс должен быть запущен. Я знаю, что существует стандартный шаблон для тестирования приложений python, приведенный здесь: https://docs.github.com/en/actions/guides/building-and-testing-python#testing-your-code но я хочу сделать это через свой собственный файл Makefile. Когда я запускаю это, я получаю эту ошибку:
каждый шаг должен определять uses
run
ключ или
Любые зацепки в этом отношении были бы полезны. Спасибо
Комментарии:
1. Самый простой обходной путь-закрепите весь процесс, а затем используйте команду docker только на стороне CI (действия на GitHub). Если вы выполняете докеризацию, она становится совместимой между любыми CI, и вам не нужно приспосабливаться к конкретной среде. Как правило, это лучшая практика для всех проблем, таких как то, что не работает в среде CI.
2. Да, действительно, я бы докеризовал его, сделал сборку, в конечном итоге запустил бы тестирование и построил докер
3. Я думаю, что комментарий от @taledor очень интересен. Мне не нравится тот факт, что я не могу создавать локально с помощью действий GH и иметь файл Dockerfile для моей сборки, а не GH . yaml для действий, похоже, это может быть победой.
Ответ №1:
Если вы хотите выполнить файлы из текущего репозитория, вам необходимо использовать действия/проверку
Это позволит вам получить доступ к репозиторию $github_workspace
(одной из переменных среды Github) в вашем рабочем процессе.
Например, учитывая, что ваш Makefile
файл находится в корне репозитория, вы могли бы использовать что-то вроде этого:
name: python-app
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: checkout repo
uses: actions/checkout@v2
- name: build application
run: make build
Вот еще один пример рабочего процесса из личного хранилища, следуя той же логике, если вы хотите выполнить определенный сценарий для выполнения какой-либо операции.