我将github操作用于集成测试。
问题在于,测试不应在具有相同配置的同时在多个实例上运行(测试将失败)。
但是,它可以与配置1一起运行一次,并与配置2并行运行一次。
如this blog post所述,无法确保工作流不会并行运行。
有什么方法可以交替切换配置1和配置2?
在这种情况下,具有相同配置的工作流工作流不太可能并行运行(如果需要,我可以添加更多配置)。
例如,这可以通过全局且可写(对于工作流程)变量来完成,该变量交替为1或2,然后工作流程选择该配置。
示例工作流程(应切换秘密confToSwitch
)
name: test
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: "load configuration"
run: echo "configuration=$conf" >> ./conf
env:
conf: ${{ secrets.confToSwitch }}
- name: "integration tests"
run: "mvn -B integration-test"
答案 0 :(得分:1)
您可以尝试通过以下方式进行matrix
配置:
name: test
on: [push]
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
token: [token1, token2, etc...]
steps:
- uses: actions/checkout@v1
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: "load configuration"
run: echo "configuration=$conf" >> ./conf
env:
conf: ${{ matrix.token }}
- name: "integration tests"
run: "mvn -B integration-test"
这将创建N
个作业,其中N
是列表中的令牌数,每个带有conf: ${{ matrix.token }}
的作业将解析为当前作业的列表中的令牌。
我认为也可以将令牌存储为秘密并设置矩阵,如:
strategy:
matrix:
token: ["${{secrets.token1}}", "${{secrets.token2}}", etc...]
但是,我还没有对此进行测试。
我找到了使之起作用的技巧:
token1
,token2
等的令牌strategy:
matrix:
token: [token1, token2]
env:
token: ${{secrets[matrix.token]}}
${{env.token}}
(在表达式上下文中操作时)或$token
(在bash中)内部。环境变量仍然是秘密,因此您不会丢失任何内容。