Gitlab CI запускает разные тесты параллельно - PullRequest
0 голосов
/ 01 марта 2019

У меня есть проект, который должен запускать интеграционные тесты в разных средах (Postgres, Oracle и т. Д.)

Для этого я создал разные задачи, в которых я устанавливаю переменные среды по-разному в зависимости от БД, например:

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 или мои задачи равны, когда я запускаю всетестовое задание?

Как правильно выполнять интеграционные тесты параллельно?

...