2023-01-30 09:27:11 +00:00
"""
This module returns the pipeline used for integration tests.
"""
2023-09-12 10:19:06 -05:00
load(
"scripts/drone/services/services.star",
"integration_test_services",
"integration_test_services_volumes",
)
2022-07-20 16:43:19 +03:00
load(
2023-01-30 09:27:11 +00:00
"scripts/drone/steps/lib.star",
"compile_build_cmd",
"download_grabpl_step",
2023-02-01 10:55:49 -06:00
"enterprise_setup_step",
2023-01-30 09:27:11 +00:00
"identify_runner_step",
2023-09-12 10:19:06 -05:00
"memcached_integration_tests_steps",
"mysql_integration_tests_steps",
"postgres_integration_tests_steps",
"redis_integration_tests_steps",
2023-10-05 15:09:26 -03:00
"remote_alertmanager_integration_tests_steps",
2023-01-30 09:27:11 +00:00
"verify_gen_cue_step",
"verify_gen_jsonnet_step",
"wire_install_step",
2022-07-20 16:43:19 +03:00
)
load(
2023-01-30 09:27:11 +00:00
"scripts/drone/utils/utils.star",
"pipeline",
2022-07-20 16:43:19 +03:00
)
2023-02-01 10:55:49 -06:00
def integration_tests(trigger, prefix, ver_mode = "pr"):
2023-01-30 09:27:11 +00:00
"""Generate a pipeline for integration tests.
Args:
trigger: controls which events can trigger the pipeline execution.
prefix: used in the naming of the pipeline.
2023-02-01 10:55:49 -06:00
ver_mode: defines the event / origin of this build. In this function, if it is set to pr, then it will attempt to clone grafana-enterprise. Otherwise it has no effect.
2023-01-30 09:27:11 +00:00
Returns:
Drone pipeline.
"""
environment = {"EDITION": "oss"}
2022-12-07 02:13:57 -05:00
2023-04-05 11:55:55 +03:00
services = integration_test_services()
2022-07-20 16:43:19 +03:00
volumes = integration_test_services_volumes()
2022-12-07 02:13:57 -05:00
2023-02-01 10:55:49 -06:00
init_steps = []
verify_step = verify_gen_cue_step()
verify_jsonnet_step = verify_gen_jsonnet_step()
if ver_mode == "pr":
# In pull requests, attempt to clone grafana enterprise.
init_steps.append(enterprise_setup_step())
init_steps += [
2022-07-20 16:43:19 +03:00
download_grabpl_step(),
2022-07-28 09:11:22 -05:00
compile_build_cmd(),
2022-07-20 16:43:19 +03:00
identify_runner_step(),
2023-02-01 10:55:49 -06:00
verify_step,
verify_jsonnet_step,
2022-07-20 16:43:19 +03:00
wire_install_step(),
]
2022-12-07 02:13:57 -05:00
2023-09-12 10:19:06 -05:00
# test_steps = [a, b] + [c, d] + [e, f]...
test_steps = postgres_integration_tests_steps() + \
mysql_integration_tests_steps("mysql57", "5.7") + \
mysql_integration_tests_steps("mysql80", "8.0") + \
redis_integration_tests_steps() + \
2023-10-05 15:09:26 -03:00
memcached_integration_tests_steps() + \
remote_alertmanager_integration_tests_steps()
2022-07-20 16:43:19 +03:00
return pipeline(
2023-01-30 09:27:11 +00:00
name = "{}-integration-tests".format(prefix),
trigger = trigger,
environment = environment,
services = services,
volumes = volumes,
steps = init_steps + test_steps,
2022-07-20 16:43:19 +03:00
)