Gitlab CI并行运行不同的测试

时间:2019-03-01 13:54:42

标签: gradle gitlab gitlab-ci

我有一个项目,需要在不同的环境(Postgres,Oracle等)中运行集成测试

为此,我创建了不同的任务,其中我根据db设置了不同的环境变量,例如:

task postgresqlIntegrationTest(type: Test, group: "Verification", description: "Runs integration tests on postgresql.") {
    dependsOn compileTestJava
    mustRunAfter test

    environment "env", "postgresql"

      useJUnitPlatform {
        filter {
            includeTestsMatching "*IT"
        }
    }
}

哪个工作没问题。

现在,我想并行运行当前在.gitlab-ci.yml文件中配置的那些任务,如下所示:

image: docker

variables:
  BUILD_ID: "job# $CI_JOB_ID"
  GIT_COMMIT: $CI_COMMIT_SHA
  GIT_BRANCH: $CI_COMMIT_REF_NAME

stages:
  - test

test:unit:
  stage: test
  script:
    - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY
    - ls -la
    - git status
    - git config --global user.name "Git Lab"
    - ./gradlew test --stacktrace --info

test:h2:
  stage: test
  script:
    - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY
    - ls -la
    - git status
    - git config --global user.name "Git Lab"
    - ./gradlew h2IntegrationTest--stacktrace --info

test:postgres:
  stage: test
  script:
    - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY
    - ls -la
    - git status
    - git config --global user.name "Git Lab"
    - ./gradlew postgresqlIntegrationTest --stacktrace --info

test:oracle:
  stage: test
  script:
    - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY
    - ls -la
    - git status
    - git config --global user.name "Git Lab"
    - ./gradlew oracleIntegrationTest --stacktrace --info

但是,这导致步骤“ testClasses”,“ compileTestJava”,“ classes”等对于每个并行任务都运行,这似乎很浪费。有什么办法可以执行之前的那些基础任务,然后在“测试”阶段使用它们?

我仍然需要运行gradlew build还是运行所有测试时任务相等?

使集成测试并行的正确方法是什么?

0 个答案:

没有答案