[v9.4.x] CI: Move release integration pipeline to standalone promotion pipeline (#65787) (#65800)

CI: Move release integration pipeline to standalone promotion pipeline (#65787)

(cherry picked from commit e9aef20eb4)
This commit is contained in:
Horst Gutmann
2023-04-03 14:08:05 +03:00
committed by GitHub
parent 8500eb1c18
commit bf3f1368a7
3 changed files with 395 additions and 327 deletions
+103 -17
View File
@@ -195,6 +195,12 @@ def oss_pipelines(ver_mode = ver_mode, trigger = release_trigger):
mysql_integration_tests_step(),
]
# We don't need to run integration tests at release time since they have
# been run multiple times before:
if ver_mode in ("release"):
integration_test_steps = []
volumes = []
windows_pipeline = pipeline(
name = "{}-oss-windows".format(ver_mode),
edition = "oss",
@@ -202,11 +208,9 @@ def oss_pipelines(ver_mode = ver_mode, trigger = release_trigger):
steps = get_windows_steps(edition = "oss", ver_mode = ver_mode),
platform = "windows",
depends_on = [
# 'oss-build-e2e-publish-{}'.format(ver_mode),
"{}-oss-build-e2e-publish".format(ver_mode),
"{}-oss-test-frontend".format(ver_mode),
"{}-oss-test-backend".format(ver_mode),
"{}-oss-integration-tests".format(ver_mode),
],
environment = environment,
)
@@ -223,7 +227,10 @@ def oss_pipelines(ver_mode = ver_mode, trigger = release_trigger):
),
test_frontend(trigger, ver_mode),
test_backend(trigger, ver_mode),
pipeline(
]
if ver_mode not in ("release"):
pipelines.append(pipeline(
name = "{}-oss-integration-tests".format(ver_mode),
edition = "oss",
trigger = trigger,
@@ -238,9 +245,9 @@ def oss_pipelines(ver_mode = ver_mode, trigger = release_trigger):
integration_test_steps,
environment = environment,
volumes = volumes,
),
windows_pipeline,
]
))
pipelines.append(windows_pipeline)
return pipelines
@@ -337,8 +344,16 @@ def enterprise_pipelines(ver_mode = ver_mode, trigger = release_trigger):
integration_test_steps = [
postgres_integration_tests_step(),
mysql_integration_tests_step(),
redis_integration_tests_step(),
memcached_integration_tests_step(),
]
# We don't need to run integration tests at release time since they have
# been run multiple times before:
if ver_mode in ("release"):
integration_test_steps = []
volumes = []
windows_pipeline = pipeline(
name = "{}-enterprise-windows".format(ver_mode),
edition = "enterprise",
@@ -346,11 +361,9 @@ def enterprise_pipelines(ver_mode = ver_mode, trigger = release_trigger):
steps = get_windows_steps(edition = "enterprise", ver_mode = ver_mode),
platform = "windows",
depends_on = [
# 'enterprise-build-e2e-publish-{}'.format(ver_mode),
"{}-enterprise-build-e2e-publish".format(ver_mode),
"{}-enterprise-test-frontend".format(ver_mode),
"{}-enterprise-test-backend".format(ver_mode),
"{}-enterprise-integration-tests".format(ver_mode),
],
environment = environment,
)
@@ -367,7 +380,10 @@ def enterprise_pipelines(ver_mode = ver_mode, trigger = release_trigger):
),
test_frontend_enterprise(trigger, ver_mode, committish = committish),
test_backend_enterprise(trigger, ver_mode, committish = committish),
pipeline(
]
if ver_mode not in ("release"):
pipelines.append(pipeline(
name = "{}-enterprise-integration-tests".format(ver_mode),
edition = "enterprise",
trigger = trigger,
@@ -390,16 +406,12 @@ def enterprise_pipelines(ver_mode = ver_mode, trigger = release_trigger):
[
wire_install_step(),
] +
integration_test_steps +
[
redis_integration_tests_step(),
memcached_integration_tests_step(),
],
integration_test_steps,
environment = environment,
volumes = volumes,
),
windows_pipeline,
]
))
pipelines.append(windows_pipeline)
return pipelines
@@ -654,3 +666,77 @@ def artifacts_page_pipeline():
environment = {"EDITION": "enterprise"},
),
]
def integration_test_pipelines():
"""
Trigger integration tests on release builds
These pipelines should be triggered when we have a release that does a lot of
cherry-picking and we still want to have all the integration tests run on that
particular build.
Returns:
List of Drone pipelines (one for enterprise and one for oss integration tests)
"""
trigger = {
"event": ["promote"],
"target": "integration-tests",
}
pipelines = []
volumes = integration_test_services_volumes()
oss_integration_test_steps = [
postgres_integration_tests_step(),
mysql_integration_tests_step(),
]
enterprise_integration_test_steps = oss_integration_test_steps + [
redis_integration_tests_step(),
memcached_integration_tests_step(),
]
source = "${DRONE_TAG}"
pipelines.append(pipeline(
name = "integration-tests-oss",
edition = "oss",
trigger = trigger,
services = integration_test_services(edition = "oss"),
steps = [
download_grabpl_step(),
identify_runner_step(),
verify_gen_cue_step(),
verify_gen_jsonnet_step(),
wire_install_step(),
] +
oss_integration_test_steps,
environment = {"EDITION": "oss"},
volumes = volumes,
))
pipelines.append(pipeline(
name = "integration-tests-enterprise",
edition = "enterprise",
trigger = trigger,
services = integration_test_services(edition = "enterprise"),
steps = [
download_grabpl_step(),
identify_runner_step(),
clone_enterprise_step(committish = source),
init_enterprise_step(ver_mode),
] +
with_deps(
[
verify_gen_cue_step(),
verify_gen_jsonnet_step(),
],
[
"init-enterprise",
],
) +
[
wire_install_step(),
] +
enterprise_integration_test_steps,
environment = {"EDITION": "enterprise"},
volumes = volumes,
))
return pipelines