Ope*_*era 15 github python-3.x github-actions
我有一个工作流程,在其中一个步骤中,如果命令以退出代码 1(失败)结束,我想运行下一个命令/作业(修复导致上一个命令失败的问题),但我不希望这样退出代码 1 影响工作流结果状态。
在这种情况下,如果我的退出代码为 1,即使我解决了问题,结果状态也将为failure,但我希望结果状态为success如果第二个命令解决了问题。
这可能吗?
这是我的workflow.yml:
\
name: autoblack
on: [pull_request, push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Set up Python 3.8
uses: actions/setup-python@v2.2.2
with:
python-version: 3.8
- name: Install Black
run: pip3 install git+git://github.com/psf/black
- name: Run black --check .
run: black --check .
reformat:
runs-on: ubuntu-latest
needs: [build]
if: always() && (needs.build.result == 'failure')
steps:
- uses: actions/checkout@v2.3.4
- name: Set up Python 3.8
uses: actions/setup-python@v2.2.2
with:
python-version: 3.8
- name: Install Black
run: pip3 install git+git://github.com/psf/black
- name: If needed, commit black changes to the pull request
env:
NEEDS_CONTEXT: ${{ toJSON(needs) }}
run: |
black --fast .
git config --global user.name 'autoblack'
git config --global user.email 'signorrayan@users.noreply.github.com'
git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/$GITHUB_REPOSITORY
git checkout $GITHUB_HEAD_REF
echo "$NEEDS_CONTEXT"
git commit -am "fixup: Format Python code with Black"
git push
echo "$NEEDS_CONTEXT"
Run Code Online (Sandbox Code Playgroud)
build如果带有命令的作业run: black --check .的退出代码为 1,我想运行该作业reformat来解决问题并将其推送到存储库。第二个工作工作正常,但最终结果标签是失败!
Sco*_*eke 11
continue-on-error的属性(step也可用于作业)可用于防止步骤失败时作业失败。
然后steps上下文包含steps.<step_id>.outcome可在表达式中使用的 a 来确定先前步骤是否失败。例如,在下面的工作流程中,当 commitlint 命令失败时,我有一个步骤将失败,但它使用 continue-on-error 来允许工作流程继续:
- name: commitlint
id: commitlint
continue-on-error: true
run: |
npx commitlint --from ${{ github.event.pull_request.base.sha }} --to ${{ github.event.pull_request.head.sha }} --verbose
Run Code Online (Sandbox Code Playgroud)
然后,接下来的两个步骤将根据 commitlint 步骤的成功/失败结果应用或删除标签:
- name: label when commitlint fails
if: ${{ steps.commitlint.outcome == 'failure' }}
uses: andymckay/labeler@1.0.4
with:
add-labels: "commit-message-rule-violation"
- name: label removal when commitlint succeeds
if: ${{ steps.commitlint.outcome == 'success' }}
uses: andymckay/labeler@1.0.4
with:
remove-labels: "commit-message-rule-violation"
Run Code Online (Sandbox Code Playgroud)
无论 commitlint 步骤是否由于 原因而失败,工作流程最终都会成功continue-on-error: true。
完整的工作流程在这里
| 归档时间: |
|
| 查看次数: |
13505 次 |
| 最近记录: |