当工作流测试失败时,如何避免推入 Github?
How it is possible to avoid a push in Github when the workflow tests fails?
我创建了工作流来在提交之前测试我的 Python 应用程序。问题是如果测试失败,无论如何都会推送提交。如果测试不成功,我如何添加条件以避免推送?
下面是工作流文件 .yml 的结构。
`名称:Python 申请
在:
推:
分支机构:[ master ]
pull_request:
分支机构:[ master ]
职位:
构建:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.8
uses: actions/setup-python@v1
with:
python-version: 3.8
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Lint with flake8
run: |
pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
pip install pytest
pytest`
Test fail screenshot
由于几个原因,您实际上无法使用 CI 系统阻止推送。
首先,您的 CI 系统需要能够访问要推送的数据,这意味着它必须位于某处的存储库中,以便可以获取。其次,CI 系统可能需要很长时间才能到达 运行,并且没有人愿意在他们的 CI 系统 运行 时闲逛并等待他们的推送成功或失败.如果您在工作日结束前推送怎么办?
你通常这样做的方式是推送到一个分支,让CI系统运行,然后合并它。如果您与多人一起工作,那么在打开或更新一个请求时使用拉取请求并将 CI 设置为 运行 是正确的做法。否则,您可以设置您的工作流程以在所有分支上运行(像这样),然后在分支通过时合并:
on: push
我创建了工作流来在提交之前测试我的 Python 应用程序。问题是如果测试失败,无论如何都会推送提交。如果测试不成功,我如何添加条件以避免推送?
下面是工作流文件 .yml 的结构。
`名称:Python 申请 在: 推: 分支机构:[ master ] pull_request: 分支机构:[ master ]
职位: 构建:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.8
uses: actions/setup-python@v1
with:
python-version: 3.8
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Lint with flake8
run: |
pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
pip install pytest
pytest`
Test fail screenshot
由于几个原因,您实际上无法使用 CI 系统阻止推送。
首先,您的 CI 系统需要能够访问要推送的数据,这意味着它必须位于某处的存储库中,以便可以获取。其次,CI 系统可能需要很长时间才能到达 运行,并且没有人愿意在他们的 CI 系统 运行 时闲逛并等待他们的推送成功或失败.如果您在工作日结束前推送怎么办?
你通常这样做的方式是推送到一个分支,让CI系统运行,然后合并它。如果您与多人一起工作,那么在打开或更新一个请求时使用拉取请求并将 CI 设置为 运行 是正确的做法。否则,您可以设置您的工作流程以在所有分支上运行(像这样),然后在分支通过时合并:
on: push