我正在尝试使用GitHub Actions进行CI测试,到目前为止,我的测试工作流程如下:
name: test
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: actions/setup-node@v1
with:
node-version: 12
- run: npm install
- name: test
run: |
npm run lint
npm test
env:
CI: true
.github / workflows / test.yml
一切正常,除了如果测试失败,我想重试test
步骤(或整个工作)一次。
基本上,您使用travis-retry
时会得到相同的行为:
script:
- npm run lint
- travis_retry npm test
或使用Gitlab CI:
test:
stage: test
retry: 1
script:
- npm run lint
- npm test
不确定是否可以采用这种方法或一种相对简单的解决方法
答案 0 :(得分:3)
对于您的特定用例,只需执行以下操作:
npm test || npm test
答案 1 :(得分:2)
我要说的是,您需要在代码级别上管理重试逻辑。意味着,实施/集成这样的机制以仅处理并再次执行失败的测试。恐怕
如果测试失败,想重试一次测试步骤(或整个作业)。
将执行所有测试,甚至可能覆盖输出,例如首次运行时的报告和日志。
根据我的经验,我使用了包装器(shell)脚本。这是可以实现的方法:
#!/usr/bin/env bash
{ # try
# your npm test command here, that saves as output - failed tests
} || { # catch
# retry failed tests
if [ -f ./rerun-failed-file ]; then
echo "============= [WARN] Rerun file found! =============="
echo "============= [WARN] Rerunning FAILED tests mode. =============="
# run npm test command that picks up the failed tests & aggregate test artifacts
fi
}
答案 2 :(得分:2)
Action Retry在我的测试中似乎效果很好
https://github.com/nick-invision/retry/
只要它们是单行代码,我就可以将其与多部分命令一起使用(例如do-this && do-that
)
答案 3 :(得分:0)
不幸的是,doesn't look like the feature exists yet。
作为一项手动工作,我不得不使用重新运行所有检查按钮来重新触发失败的工作流程,您可以在viewing a failed workflow时在右上角找到该按钮。