* Add verify-starlark build action that returns an error for starlark files with lint Relies on `buildifier` tool. Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Add verify_starlark_step to PR pipeline Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Manually fetch buildifier in curl_image until a new build_image is created Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Format with buildifier Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Remove all unused variables retaining one unused function Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Use snake_case for variable Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Replace deprecated dictionary concatenation with .update() method Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Start adding docstrings for all modules and functions Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Prefer os.WriteFile as ioutil.WriteFile has been deprecated since go 1.16 Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Attempt to document the behavior of the init_enterprise_step Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Document test_backend pipeline Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Document enterprise_downstream_step Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Document the pipeline utility function Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Document publish_images_step Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Document publish_images_steps Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Document enterprise2_pipelines function Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Add tags table for Starlark files. Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Document test_frontend Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Document windows function Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Add docstrings to verifystarlark functions Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Refactor error handling to be more clear and document complex behavior Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Split errors into execution errors and verification errors Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Document all other library functions Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Add local variables to TAGS Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Add blank line between all Args and Returns sections Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Fix new linting errors Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Lint new Starlark files Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Correct buildifier binary mv Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Document the need to set nofile ulimit to at least 2048 Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Update build-container to include buildifier Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Ensure buildifier binary is executable Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Fix valid content test Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Simply return execution error Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Only check files rather than fixing them Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Use updated build-container with executable buildifier Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Test that context cancellation stops execution Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Simplify error handling Return execution errors that short circuit WalkDir rather than separately tracking that error. Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Remove fetching of buildifier binary now that it is in the build-container Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Use build image in verify-starlark step Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Use semver tag The image is the same but uses a semver tag to make it clearer that this is a forward upgrade from the old version. Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Use node 18 image with buildifier Signed-off-by: Jack Baldry <jack.baldry@grafana.com> --------- Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
170 lines
5.0 KiB
Python
170 lines
5.0 KiB
Python
"""This module contains the comprehensive build pipeline."""
|
|
|
|
load(
|
|
"scripts/drone/steps/lib.star",
|
|
"build_backend_step",
|
|
"build_docker_images_step",
|
|
"build_frontend_package_step",
|
|
"build_frontend_step",
|
|
"build_plugins_step",
|
|
"build_storybook_step",
|
|
"cloud_plugins_e2e_tests_step",
|
|
"compile_build_cmd",
|
|
"copy_packages_for_docker_step",
|
|
"download_grabpl_step",
|
|
"e2e_tests_artifacts",
|
|
"e2e_tests_step",
|
|
"enterprise_downstream_step",
|
|
"frontend_metrics_step",
|
|
"grafana_server_step",
|
|
"identify_runner_step",
|
|
"package_step",
|
|
"publish_images_step",
|
|
"release_canary_npm_packages_step",
|
|
"store_storybook_step",
|
|
"test_a11y_frontend_step",
|
|
"trigger_oss",
|
|
"trigger_test_release",
|
|
"upload_cdn_step",
|
|
"upload_packages_step",
|
|
"verify_gen_cue_step",
|
|
"verify_gen_jsonnet_step",
|
|
"wire_install_step",
|
|
"yarn_install_step",
|
|
)
|
|
load(
|
|
"scripts/drone/utils/utils.star",
|
|
"pipeline",
|
|
)
|
|
|
|
# @unused
|
|
def build_e2e(trigger, ver_mode):
|
|
"""Perform e2e building, testing, and publishing."
|
|
|
|
Args:
|
|
trigger: controls which events can trigger the pipeline execution.
|
|
ver_mode: used in the naming of the pipeline.
|
|
|
|
Returns:
|
|
Drone pipeline.
|
|
"""
|
|
edition = "oss"
|
|
environment = {"EDITION": edition}
|
|
init_steps = [
|
|
identify_runner_step(),
|
|
download_grabpl_step(),
|
|
compile_build_cmd(),
|
|
verify_gen_cue_step(),
|
|
verify_gen_jsonnet_step(),
|
|
wire_install_step(),
|
|
yarn_install_step(),
|
|
]
|
|
|
|
build_steps = []
|
|
variants = None
|
|
|
|
if ver_mode == "pr":
|
|
build_steps.extend(
|
|
[
|
|
trigger_test_release(),
|
|
enterprise_downstream_step(ver_mode = ver_mode),
|
|
],
|
|
)
|
|
|
|
variants = [
|
|
"linux-amd64",
|
|
"linux-amd64-musl",
|
|
"darwin-amd64",
|
|
"windows-amd64",
|
|
]
|
|
|
|
build_steps.extend(
|
|
[
|
|
build_backend_step(edition = edition, ver_mode = ver_mode),
|
|
build_frontend_step(edition = edition, ver_mode = ver_mode),
|
|
build_frontend_package_step(edition = edition, ver_mode = ver_mode),
|
|
build_plugins_step(edition = edition, ver_mode = ver_mode),
|
|
package_step(edition = edition, variants = variants, ver_mode = ver_mode),
|
|
grafana_server_step(edition = edition),
|
|
e2e_tests_step("dashboards-suite"),
|
|
e2e_tests_step("smoke-tests-suite"),
|
|
e2e_tests_step("panels-suite"),
|
|
e2e_tests_step("various-suite"),
|
|
cloud_plugins_e2e_tests_step(
|
|
"cloud-plugins-suite",
|
|
cloud = "azure",
|
|
trigger = trigger_oss,
|
|
),
|
|
e2e_tests_artifacts(),
|
|
build_storybook_step(ver_mode = ver_mode),
|
|
copy_packages_for_docker_step(),
|
|
test_a11y_frontend_step(ver_mode = ver_mode),
|
|
],
|
|
)
|
|
|
|
if ver_mode == "main":
|
|
build_steps.extend(
|
|
[
|
|
store_storybook_step(trigger = trigger_oss, ver_mode = ver_mode),
|
|
frontend_metrics_step(trigger = trigger_oss),
|
|
build_docker_images_step(
|
|
edition = edition,
|
|
publish = False,
|
|
),
|
|
build_docker_images_step(
|
|
edition = edition,
|
|
publish = False,
|
|
ubuntu = True,
|
|
),
|
|
publish_images_step(
|
|
docker_repo = "grafana",
|
|
edition = edition,
|
|
mode = "",
|
|
trigger = trigger_oss,
|
|
ver_mode = ver_mode,
|
|
),
|
|
publish_images_step(
|
|
docker_repo = "grafana-oss",
|
|
edition = edition,
|
|
mode = "",
|
|
trigger = trigger_oss,
|
|
ver_mode = ver_mode,
|
|
),
|
|
release_canary_npm_packages_step(trigger = trigger_oss),
|
|
upload_packages_step(
|
|
edition = edition,
|
|
trigger = trigger_oss,
|
|
ver_mode = ver_mode,
|
|
),
|
|
upload_cdn_step(
|
|
edition = edition,
|
|
trigger = trigger_oss,
|
|
ver_mode = ver_mode,
|
|
),
|
|
],
|
|
)
|
|
elif ver_mode == "pr":
|
|
build_steps.extend(
|
|
[
|
|
build_docker_images_step(
|
|
archs = [
|
|
"amd64",
|
|
],
|
|
edition = edition,
|
|
),
|
|
],
|
|
)
|
|
|
|
publish_suffix = ""
|
|
if ver_mode == "main":
|
|
publish_suffix = "-publish"
|
|
|
|
return pipeline(
|
|
name = "{}-build-e2e{}".format(ver_mode, publish_suffix),
|
|
edition = "oss",
|
|
environment = environment,
|
|
services = [],
|
|
steps = init_steps + build_steps,
|
|
trigger = trigger,
|
|
)
|