【发布时间】:2021-06-24 23:46:40
【问题描述】:
我使用 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"
【问题讨论】:
-
你能展示一个需要这个的示例工作流吗?这可能可以通过使用矩阵或条件步骤来解决
-
@smac89 我已经编辑过了。
-
在两个单独的实例上并行运行时导致它失败的测试的性质是什么?还有
confToSwitch包含什么样的值,它对测试有什么帮助? -
它将使用令牌登录到服务并向该服务发送消息。它测试是否有自用户发送的那些消息,如果它使用相同的令牌并行登录多次则有问题。
-
您是否考虑过使用矩阵配置?您可以使用
tokens作为矩阵的一部分,当作业运行时,所有令牌将用于不同的作业。
标签: github concurrency continuous-integration github-actions