CI: move grafana-build into pkg/build (#105640)
* move grafana-build into pkg/build
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
"""
|
||||
Utilities / functions for working with dagger pipelines
|
||||
"""
|
||||
|
||||
def with_dagger_install(commands = [], dagger_version = ""):
|
||||
return [
|
||||
"wget -qO- https://github.com/dagger/dagger/releases/download/{}/dagger_{}_linux_amd64.tar.gz | tar zx -C /bin".format(dagger_version, dagger_version),
|
||||
"apk add docker",
|
||||
] + commands
|
||||
+15
-16
@@ -1,9 +1,11 @@
|
||||
"""
|
||||
rgm uses 'github.com/grafana/grafana-build' to build Grafana on the following events:
|
||||
* A merge to main
|
||||
* A tag that begins with a 'v'
|
||||
'rgm' pipelines are pipelines that use dagger (located in 'pkg/build/daggerbuild')
|
||||
"""
|
||||
|
||||
load(
|
||||
"scripts/drone/dagger.star",
|
||||
"with_dagger_install",
|
||||
)
|
||||
load(
|
||||
"scripts/drone/events/release.star",
|
||||
"verify_release_pipeline",
|
||||
@@ -33,7 +35,7 @@ load(
|
||||
)
|
||||
load(
|
||||
"scripts/drone/variables.star",
|
||||
"golang_version",
|
||||
"dagger_version",
|
||||
)
|
||||
load(
|
||||
"scripts/drone/vault.star",
|
||||
@@ -132,19 +134,18 @@ def rgm_run(name, script):
|
||||
Drone step.
|
||||
"""
|
||||
env = {
|
||||
"GO_VERSION": golang_version,
|
||||
"ALPINE_BASE": images["alpine"],
|
||||
"UBUNTU_BASE": images["ubuntu"],
|
||||
}
|
||||
rgm_run_step = {
|
||||
"name": name,
|
||||
"image": "grafana/grafana-build:main",
|
||||
"image": images["go"],
|
||||
"pull": "always",
|
||||
"commands": [
|
||||
"commands": with_dagger_install([
|
||||
"export GRAFANA_DIR=$$(pwd)",
|
||||
"export GITHUB_TOKEN=$(cat /github-app/token)",
|
||||
"cd /src && ./scripts/{}".format(script),
|
||||
],
|
||||
"./pkg/build/daggerbuild/scripts/{}".format(script),
|
||||
], dagger_version),
|
||||
"environment": rgm_env_secrets(env),
|
||||
# The docker socket is a requirement for running dagger programs
|
||||
# In the future we should find a way to use dagger without mounting the docker socket.
|
||||
@@ -328,7 +329,6 @@ def rgm_promotion_pipeline():
|
||||
}
|
||||
|
||||
env = {
|
||||
"GO_VERSION": golang_version,
|
||||
"ALPINE_BASE": images["alpine"],
|
||||
"UBUNTU_BASE": images["ubuntu"],
|
||||
}
|
||||
@@ -342,18 +342,17 @@ def rgm_promotion_pipeline():
|
||||
# * UPLOAD_TO = Google Cloud Storage URL to upload the built artifacts to. (ex: gs://some-bucket/path)
|
||||
build_step = {
|
||||
"name": "rgm-build",
|
||||
"image": "grafana/grafana-build:main",
|
||||
"image": images["go"],
|
||||
"pull": "always",
|
||||
"commands": [
|
||||
"commands": with_dagger_install([
|
||||
"export GITHUB_TOKEN=$(cat /github-app/token)",
|
||||
"dagger run --silent /src/grafana-build artifacts " +
|
||||
"dagger run --silent ./pkg/build/cmd artifacts " +
|
||||
"-a $${ARTIFACTS} " +
|
||||
"--grafana-ref=$${GRAFANA_REF} " +
|
||||
"--enterprise-ref=$${ENTERPRISE_REF} " +
|
||||
"--grafana-repo=$${GRAFANA_REPO} " +
|
||||
"--version=$${VERSION} " +
|
||||
"--go-version={}".format(golang_version),
|
||||
],
|
||||
"--version=$${VERSION}",
|
||||
], dagger_version),
|
||||
"environment": rgm_env_secrets(env),
|
||||
# The docker socket is a requirement for running dagger programs
|
||||
# In the future we should find a way to use dagger without mounting the docker socket.
|
||||
|
||||
@@ -3,13 +3,17 @@ Individual steps that use 'grafana-build' to replace existing individual steps.
|
||||
These aren't used in releases.
|
||||
"""
|
||||
|
||||
load(
|
||||
"scripts/drone/dagger.star",
|
||||
"with_dagger_install",
|
||||
)
|
||||
load(
|
||||
"scripts/drone/utils/images.star",
|
||||
"images",
|
||||
)
|
||||
load(
|
||||
"scripts/drone/variables.star",
|
||||
"golang_version",
|
||||
"dagger_version",
|
||||
)
|
||||
load(
|
||||
"scripts/drone/vault.star",
|
||||
@@ -18,7 +22,7 @@ load(
|
||||
)
|
||||
|
||||
def artifacts_cmd(artifacts = []):
|
||||
cmd = "/src/grafana-build artifacts "
|
||||
cmd = "go run ./pkg/build/cmd artifacts "
|
||||
|
||||
for artifact in artifacts:
|
||||
cmd += "-a {} ".format(artifact)
|
||||
@@ -40,18 +44,17 @@ def rgm_artifacts_step(
|
||||
|
||||
return {
|
||||
"name": name,
|
||||
"image": "grafana/grafana-build:main",
|
||||
"image": images["go"],
|
||||
"pull": "always",
|
||||
"depends_on": depends_on,
|
||||
"environment": {
|
||||
"_EXPERIMENTAL_DAGGER_CLOUD_TOKEN": from_secret(rgm_dagger_token),
|
||||
},
|
||||
"commands": [
|
||||
"commands": with_dagger_install([
|
||||
"docker run --privileged --rm tonistiigi/binfmt:qemu-v7.0.0-28 --version",
|
||||
"docker run --privileged --rm tonistiigi/binfmt:qemu-v7.0.0-28 --uninstall 'qemu-*'",
|
||||
"docker run --privileged --rm tonistiigi/binfmt:qemu-v7.0.0-28 --install all",
|
||||
cmd +
|
||||
"--go-version={} ".format(golang_version) +
|
||||
"--yarn-cache=$$YARN_CACHE_FOLDER " +
|
||||
"--build-id=$$DRONE_BUILD_NUMBER " +
|
||||
"--ubuntu-base={} ".format(ubuntu) +
|
||||
@@ -61,7 +64,7 @@ def rgm_artifacts_step(
|
||||
"--verify='{}' ".format(verify) +
|
||||
"--grafana-dir=$$PWD > {}".format(file),
|
||||
"find ./dist -name '*docker*.tar.gz' -type f | xargs -n1 docker load -i",
|
||||
],
|
||||
], dagger_version),
|
||||
"volumes": [{"name": "docker", "path": "/var/run/docker.sock"}],
|
||||
}
|
||||
|
||||
@@ -74,16 +77,16 @@ def rgm_build_backend_step(artifacts = ["backend:grafana:linux/amd64", "backend:
|
||||
def rgm_build_docker_step(ubuntu, alpine, depends_on = ["yarn-install"], file = "docker.txt", tag_format = "{{ .version }}-{{ .arch }}", ubuntu_tag_format = "{{ .version }}-ubuntu-{{ .arch }}"):
|
||||
return {
|
||||
"name": "rgm-build-docker",
|
||||
"image": "grafana/grafana-build:main",
|
||||
"image": images["go"],
|
||||
"pull": "always",
|
||||
"environment": {
|
||||
"_EXPERIMENTAL_DAGGER_CLOUD_TOKEN": from_secret(rgm_dagger_token),
|
||||
},
|
||||
"commands": [
|
||||
"commands": with_dagger_install([
|
||||
"docker run --privileged --rm tonistiigi/binfmt:qemu-v7.0.0-28 --version",
|
||||
"docker run --privileged --rm tonistiigi/binfmt:qemu-v7.0.0-28 --uninstall 'qemu-*'",
|
||||
"docker run --privileged --rm tonistiigi/binfmt:qemu-v7.0.0-28 --install all",
|
||||
"/src/grafana-build artifacts " +
|
||||
"go run ./pkg/build/cmd artifacts " +
|
||||
"-a docker:grafana:linux/amd64 " +
|
||||
"-a docker:grafana:linux/amd64:ubuntu " +
|
||||
"-a docker:grafana:linux/arm64 " +
|
||||
@@ -92,14 +95,13 @@ def rgm_build_docker_step(ubuntu, alpine, depends_on = ["yarn-install"], file =
|
||||
"-a docker:grafana:linux/arm/v7:ubuntu " +
|
||||
"--yarn-cache=$$YARN_CACHE_FOLDER " +
|
||||
"--build-id=$$DRONE_BUILD_NUMBER " +
|
||||
"--go-version={} ".format(golang_version) +
|
||||
"--ubuntu-base={} ".format(ubuntu) +
|
||||
"--alpine-base={} ".format(alpine) +
|
||||
"--tag-format='{}' ".format(tag_format) +
|
||||
"--grafana-dir=$$PWD " +
|
||||
"--ubuntu-tag-format='{}' > {}".format(ubuntu_tag_format, file),
|
||||
"find ./dist -name '*docker*.tar.gz' -type f | xargs -n1 docker load -i",
|
||||
],
|
||||
], dagger_version),
|
||||
"volumes": [{"name": "docker", "path": "/var/run/docker.sock"}],
|
||||
"depends_on": depends_on,
|
||||
}
|
||||
|
||||
@@ -7,3 +7,4 @@ golang_version = "1.24.3"
|
||||
|
||||
# nodejs_version should match what's in ".nvmrc", but without the v prefix.
|
||||
nodejs_version = "22.11.0"
|
||||
dagger_version = "v0.18.8"
|
||||
|
||||
Reference in New Issue
Block a user