【发布时间】:2021-07-22 03:39:09
【问题描述】:
我正在尝试使用 github 操作自动化 CI/CD 管道。我有一个 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
我想要的是当推送到 master 或针对 master 创建 PR 时,应该触发工作流。我知道这里有一个测试 python 应用程序的标准模板:https://docs.github.com/en/actions/guides/building-and-testing-python#testing-your-code 但我想通过我自己的 Makefile 来完成。当我运行它时,我得到了这个错误:
每个步骤都必须定义一个uses 或run 键
这方面的任何线索都会有所帮助。谢谢
【问题讨论】:
-
最简单的解决方法 - dockerize 整个过程,然后只在 CI (GitHub Actions) 端使用 docker 命令。如果你 dockerize,它可以在任何 CI 之间进行互操作,你不需要针对特定环境进行调整。这通常是所有问题的最佳实践,例如 smth 在 CI 环境中不起作用。
-
是的,我确实会 dockerize 它 make build 最终会运行测试并构建 docker
-
我认为@taledor 的评论很有趣。我不喜欢我无法使用 GH 操作在本地构建的事实,并且能够为我的构建使用 Dockerfile 而不是 GH .yaml 用于操作,这似乎是一个胜利。
标签: continuous-integration github-actions