diff --git a/.drone.yml b/.drone.yml index 3faa7430555..ea4956f5f61 100644 --- a/.drone.yml +++ b/.drone.yml @@ -539,7 +539,7 @@ steps: name: identify-runner - commands: - mkdir -p bin - - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.0.53/grabpl + - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.0.56/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl @@ -978,7 +978,7 @@ steps: name: clone-enterprise - commands: - mkdir -p bin - - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.0.53/grabpl + - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.0.56/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl @@ -1940,7 +1940,7 @@ steps: name: identify-runner - commands: - mkdir -p bin - - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.0.53/grabpl + - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.0.56/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl @@ -2476,7 +2476,7 @@ services: steps: - commands: - mkdir -p bin - - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.0.53/grabpl + - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.0.56/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl @@ -2681,7 +2681,7 @@ steps: name: identify-runner - commands: - $$ProgressPreference = "SilentlyContinue" - - Invoke-WebRequest https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.0.53/windows/grabpl.exe + - Invoke-WebRequest https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.0.56/windows/grabpl.exe -OutFile grabpl.exe image: grafana/ci-wix:0.1.1 name: windows-init @@ -3108,7 +3108,7 @@ services: steps: - commands: - mkdir -p bin - - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.0.53/grabpl + - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.0.56/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl @@ -3353,7 +3353,7 @@ steps: name: identify-runner - commands: - mkdir -p bin - - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.0.53/grabpl + - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.0.56/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl @@ -3399,9 +3399,9 @@ steps: $$debug docker push grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-armv7 # Create the grafana manifests - $$debug docker manifest create grafana/grafana:${TAG} grafana/grafana-image-tags:$${IMAGE_TAG}-amd64 grafana/grafana-image-tags:$${IMAGE_TAG}-arm64 grafana/grafana-image-tags:$${IMAGE_TAG}-armv7 + $$debug docker manifest create grafana/grafana:$${IMAGE_TAG} grafana/grafana-image-tags:$${IMAGE_TAG}-amd64 grafana/grafana-image-tags:$${IMAGE_TAG}-arm64 grafana/grafana-image-tags:$${IMAGE_TAG}-armv7 - $$debug docker manifest create grafana/grafana:${TAG}-ubuntu grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-amd64 grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-arm64 grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-armv7 + $$debug docker manifest create grafana/grafana:$${IMAGE_TAG}-ubuntu grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-amd64 grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-arm64 grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-armv7 # Push the grafana manifests $$debug docker manifest push grafana/grafana:$${IMAGE_TAG} @@ -3485,7 +3485,7 @@ steps: name: identify-runner - commands: - mkdir -p bin - - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.0.53/grabpl + - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.0.56/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl @@ -3531,9 +3531,9 @@ steps: $$debug docker push grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-armv7 # Create the grafana manifests - $$debug docker manifest create grafana/grafana:${TAG} grafana/grafana-image-tags:$${IMAGE_TAG}-amd64 grafana/grafana-image-tags:$${IMAGE_TAG}-arm64 grafana/grafana-image-tags:$${IMAGE_TAG}-armv7 + $$debug docker manifest create grafana/grafana:$${IMAGE_TAG} grafana/grafana-image-tags:$${IMAGE_TAG}-amd64 grafana/grafana-image-tags:$${IMAGE_TAG}-arm64 grafana/grafana-image-tags:$${IMAGE_TAG}-armv7 - $$debug docker manifest create grafana/grafana:${TAG}-ubuntu grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-amd64 grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-arm64 grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-armv7 + $$debug docker manifest create grafana/grafana:$${IMAGE_TAG}-ubuntu grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-amd64 grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-arm64 grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-armv7 # Push the grafana manifests $$debug docker manifest push grafana/grafana:$${IMAGE_TAG} @@ -3795,6 +3795,7 @@ platform: services: [] steps: - commands: + - export version=$(echo ${TAG} | sed -e "s/+security-/-/g") - 'echo "Step 1: Updating package lists..."' - apt-get update >/dev/null 2>&1 - 'echo "Step 2: Installing prerequisites..."' @@ -3810,7 +3811,7 @@ steps: - 'echo "Step 5: Installing Grafana..."' - for i in $(seq 1 60); do - ' if apt-get update >/dev/null 2>&1 && DEBIAN_FRONTEND=noninteractive apt-get - install -yq grafana=${TAG} >/dev/null 2>&1; then' + install -yq grafana=$version >/dev/null 2>&1; then' - ' echo "Command succeeded on attempt $i"' - ' break' - ' else' @@ -3824,10 +3825,10 @@ steps: - ' fi' - done - 'echo "Step 6: Verifying Grafana installation..."' - - 'if dpkg -s grafana | grep -q "Version: ${TAG}"; then' - - ' echo "Successfully verified Grafana version ${TAG}"' + - 'if dpkg -s grafana | grep -q "Version: $version"; then' + - ' echo "Successfully verified Grafana version $version"' - else - - ' echo "Failed to verify Grafana version ${TAG}"' + - ' echo "Failed to verify Grafana version $version"' - ' exit 1' - fi - echo "Verification complete." @@ -3855,11 +3856,12 @@ steps: sslcacert=/etc/pki/tls/certs/ca-bundle.crt ' > /etc/yum.repos.d/grafana.repo - 'echo "Step 5: Checking RPM repository..."' - - dnf list available grafana-${TAG} + - export version=$(echo "${TAG}" | sed -e "s/+security-/^security_/g") + - dnf list available grafana-$version - if [ $? -eq 0 ]; then - ' echo "Grafana package found in repository. Installing from repo..."' - for i in $(seq 1 60); do - - ' if dnf install -y --nogpgcheck grafana-${TAG} >/dev/null 2>&1; then' + - ' if dnf install -y --nogpgcheck grafana-$version >/dev/null 2>&1; then' - ' echo "Command succeeded on attempt $i"' - ' break' - ' else' @@ -3876,16 +3878,16 @@ steps: - ' rpm --import https://rpm.grafana.com/gpg.key' - ' rpm -qa gpg-pubkey* | xargs rpm -qi | grep -i grafana' - else - - ' echo "Grafana package version ${TAG} not found in repository."' + - ' echo "Grafana package version $version not found in repository."' - ' dnf repolist' - ' dnf list available grafana*' - ' exit 1' - fi - 'echo "Step 6: Verifying Grafana installation..."' - - if rpm -q grafana | grep -q "${TAG}"; then - - ' echo "Successfully verified Grafana version ${TAG}"' + - if rpm -q grafana | grep -q "$verison"; then + - ' echo "Successfully verified Grafana version $version"' - else - - ' echo "Failed to verify Grafana version ${TAG}"' + - ' echo "Failed to verify Grafana version $version"' - ' exit 1' - fi - echo "Verification complete." @@ -3972,6 +3974,7 @@ steps: from_secret: packages_service_account target_bucket: grafana-packages - commands: + - export version=$(echo ${TAG} | sed -e "s/+security-/-/g") - 'echo "Step 1: Updating package lists..."' - apt-get update >/dev/null 2>&1 - 'echo "Step 2: Installing prerequisites..."' @@ -3987,7 +3990,7 @@ steps: - 'echo "Step 5: Installing Grafana..."' - for i in $(seq 1 60); do - ' if apt-get update >/dev/null 2>&1 && DEBIAN_FRONTEND=noninteractive apt-get - install -yq grafana=${TAG} >/dev/null 2>&1; then' + install -yq grafana=$version >/dev/null 2>&1; then' - ' echo "Command succeeded on attempt $i"' - ' break' - ' else' @@ -4001,10 +4004,10 @@ steps: - ' fi' - done - 'echo "Step 6: Verifying Grafana installation..."' - - 'if dpkg -s grafana | grep -q "Version: ${TAG}"; then' - - ' echo "Successfully verified Grafana version ${TAG}"' + - 'if dpkg -s grafana | grep -q "Version: $version"; then' + - ' echo "Successfully verified Grafana version $version"' - else - - ' echo "Failed to verify Grafana version ${TAG}"' + - ' echo "Failed to verify Grafana version $version"' - ' exit 1' - fi - echo "Verification complete." @@ -4033,11 +4036,12 @@ steps: sslcacert=/etc/pki/tls/certs/ca-bundle.crt ' > /etc/yum.repos.d/grafana.repo - 'echo "Step 5: Checking RPM repository..."' - - dnf list available grafana-${TAG} + - export version=$(echo "${TAG}" | sed -e "s/+security-/^security_/g") + - dnf list available grafana-$version - if [ $? -eq 0 ]; then - ' echo "Grafana package found in repository. Installing from repo..."' - for i in $(seq 1 60); do - - ' if dnf install -y --nogpgcheck grafana-${TAG} >/dev/null 2>&1; then' + - ' if dnf install -y --nogpgcheck grafana-$version >/dev/null 2>&1; then' - ' echo "Command succeeded on attempt $i"' - ' break' - ' else' @@ -4054,16 +4058,16 @@ steps: - ' rpm --import https://rpm.grafana.com/gpg.key' - ' rpm -qa gpg-pubkey* | xargs rpm -qi | grep -i grafana' - else - - ' echo "Grafana package version ${TAG} not found in repository."' + - ' echo "Grafana package version $version not found in repository."' - ' dnf repolist' - ' dnf list available grafana*' - ' exit 1' - fi - 'echo "Step 6: Verifying Grafana installation..."' - - if rpm -q grafana | grep -q "${TAG}"; then - - ' echo "Successfully verified Grafana version ${TAG}"' + - if rpm -q grafana | grep -q "$verison"; then + - ' echo "Successfully verified Grafana version $version"' - else - - ' echo "Failed to verify Grafana version ${TAG}"' + - ' echo "Failed to verify Grafana version $version"' - ' exit 1' - fi - echo "Verification complete." @@ -4318,7 +4322,7 @@ steps: name: identify-runner - commands: - $$ProgressPreference = "SilentlyContinue" - - Invoke-WebRequest https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.0.53/windows/grabpl.exe + - Invoke-WebRequest https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.0.56/windows/grabpl.exe -OutFile grabpl.exe image: grafana/ci-wix:0.1.1 name: windows-init @@ -5118,7 +5122,7 @@ services: steps: - commands: - mkdir -p bin - - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.0.53/grabpl + - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.0.56/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl @@ -5910,6 +5914,6 @@ kind: secret name: gcr_credentials --- kind: signature -hmac: d97350bb1300fe0d39b5871ffed038e6ee03694f184c33afad61c1bcacf128c0 +hmac: 58b776458f032819ea9981e96a9cbfe6bcc66c74b407f7c54b020c7433462816 ... diff --git a/pkg/build/cmd/grafanacom.go b/pkg/build/cmd/grafanacom.go index 305aa1195e8..ab53217f7a4 100644 --- a/pkg/build/cmd/grafanacom.go +++ b/pkg/build/cmd/grafanacom.go @@ -145,6 +145,9 @@ func Builds(baseURL *url.URL, grafana, version string, packages []packaging.Buil if arch == "aarch64" { arch = "arm64" } + if arch == "x86_64" { + arch = "amd64" + } } if v.Distro == "deb" { diff --git a/pkg/build/cmd/npm.go b/pkg/build/cmd/npm.go index ba35679f57a..4660b22b636 100644 --- a/pkg/build/cmd/npm.go +++ b/pkg/build/cmd/npm.go @@ -2,6 +2,7 @@ package main import ( "fmt" + "log" "os" "strings" @@ -23,6 +24,11 @@ func NpmRetrieveAction(c *cli.Context) error { return fmt.Errorf("no tag version specified, exitting") } + if strings.Contains(tag, "security") { + log.Printf("skipping npm publish because version '%s' has 'security'", tag) + return nil + } + prereleaseBucket := strings.TrimSpace(os.Getenv("PRERELEASE_BUCKET")) if prereleaseBucket == "" { return cli.Exit("the environment variable PRERELEASE_BUCKET must be set", 1) @@ -48,6 +54,11 @@ func NpmStoreAction(c *cli.Context) error { return fmt.Errorf("no tag version specified, exiting") } + if strings.Contains(tag, "security") { + log.Printf("skipping npm publish because version '%s' has 'security'", tag) + return nil + } + prereleaseBucket := strings.TrimSpace(os.Getenv("PRERELEASE_BUCKET")) if prereleaseBucket == "" { return cli.Exit("the environment variable PRERELEASE_BUCKET must be set", 1) @@ -73,6 +84,11 @@ func NpmReleaseAction(c *cli.Context) error { return fmt.Errorf("no tag version specified, exitting") } + if strings.Contains(tag, "security") { + log.Printf("skipping npm publish because version '%s' has 'security'", tag) + return nil + } + err := npm.PublishNpmPackages(c.Context, tag) if err != nil { return err diff --git a/pkg/build/packaging/artifacts.go b/pkg/build/packaging/artifacts.go index 1dc60f18a2b..b1740b68c5f 100644 --- a/pkg/build/packaging/artifacts.go +++ b/pkg/build/packaging/artifacts.go @@ -113,6 +113,16 @@ var ARMArtifacts = []BuildArtifact{ Arch: "armv7", Ext: "tar.gz", }, + { + Distro: "linux", + Arch: "arm64", + Ext: "tar.gz", + }, + { + Distro: "linux", + Arch: "amd64", + Ext: "tar.gz", + }, } func join(a []BuildArtifact, b ...[]BuildArtifact) []BuildArtifact { diff --git a/pkg/build/versions/version.go b/pkg/build/versions/version.go index 5197559b95a..240c750bf68 100644 --- a/pkg/build/versions/version.go +++ b/pkg/build/versions/version.go @@ -13,15 +13,17 @@ import ( ) var ( - reGrafanaTag = regexp.MustCompile(`^v(\d+\.\d+\.\d+$)`) - reGrafanaTagPreview = regexp.MustCompile(`^v(\d+\.\d+\.\d+-preview)`) - reGrafanaTagCustom = regexp.MustCompile(`^v(\d+\.\d+\.\d+-\w+)`) + reGrafanaTag = regexp.MustCompile(`^v(\d+\.\d+\.\d+$)`) + reGrafanaTagPreview = regexp.MustCompile(`^v(\d+\.\d+\.\d+-preview)`) + reGrafanaTagCustom = regexp.MustCompile(`^v(\d+\.\d+\.\d+-\w+)`) + reGrafanaTagSecurity = regexp.MustCompile(`^v(\d+\.\d+\.\d+\+\w+\-\d+)`) ) const ( - Latest = "latest" - Next = "next" - Test = "test" + Latest = "latest" + Next = "next" + Test = "test" + Security = "security" ) type Version struct { @@ -152,6 +154,11 @@ func GetVersion(tag string) (*Version, error) { Version: reGrafanaTagCustom.FindStringSubmatch(tag)[1], Channel: Test, } + case reGrafanaTagSecurity.MatchString(tag): + version = Version{ + Version: reGrafanaTagSecurity.FindStringSubmatch(tag)[1], + Channel: Security, + } default: return nil, fmt.Errorf("%s not a supported Grafana version, exitting", tag) } diff --git a/scripts/drone/pipelines/publish_images.star b/scripts/drone/pipelines/publish_images.star index 9ed847a22fb..a947d05d0b4 100644 --- a/scripts/drone/pipelines/publish_images.star +++ b/scripts/drone/pipelines/publish_images.star @@ -45,12 +45,12 @@ def publish_image_public_step(): $$debug docker push grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-armv7 # Create the grafana manifests - $$debug docker manifest create grafana/grafana:${TAG} \ + $$debug docker manifest create grafana/grafana:$${IMAGE_TAG} \ grafana/grafana-image-tags:$${IMAGE_TAG}-amd64 \ grafana/grafana-image-tags:$${IMAGE_TAG}-arm64 \ grafana/grafana-image-tags:$${IMAGE_TAG}-armv7 - $$debug docker manifest create grafana/grafana:${TAG}-ubuntu \ + $$debug docker manifest create grafana/grafana:$${IMAGE_TAG}-ubuntu \ grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-amd64 \ grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-arm64 \ grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-armv7 diff --git a/scripts/drone/steps/lib.star b/scripts/drone/steps/lib.star index 6e0075fba75..864ffa1c668 100644 --- a/scripts/drone/steps/lib.star +++ b/scripts/drone/steps/lib.star @@ -1262,13 +1262,14 @@ def retry_command(command, attempts = 60, delay = 30): ] def verify_linux_DEB_packages_step(depends_on = []): - install_command = "apt-get update >/dev/null 2>&1 && DEBIAN_FRONTEND=noninteractive apt-get install -yq grafana=${TAG} >/dev/null 2>&1" + install_command = "apt-get update >/dev/null 2>&1 && DEBIAN_FRONTEND=noninteractive apt-get install -yq grafana=$version >/dev/null 2>&1" return { "name": "verify-linux-DEB-packages", "image": images["ubuntu"], "environment": {}, "commands": [ + 'export version=$(echo ${TAG} | sed -e "s/+security-/-/g")', 'echo "Step 1: Updating package lists..."', "apt-get update >/dev/null 2>&1", 'echo "Step 2: Installing prerequisites..."', @@ -1282,10 +1283,10 @@ def verify_linux_DEB_packages_step(depends_on = []): # The packages take a bit of time to propogate within the repo. This retry will check their availability within 10 minutes. ] + retry_command(install_command) + [ 'echo "Step 6: Verifying Grafana installation..."', - 'if dpkg -s grafana | grep -q "Version: ${TAG}"; then', - ' echo "Successfully verified Grafana version ${TAG}"', + 'if dpkg -s grafana | grep -q "Version: $version"; then', + ' echo "Successfully verified Grafana version $version"', "else", - ' echo "Failed to verify Grafana version ${TAG}"', + ' echo "Failed to verify Grafana version $version"', " exit 1", "fi", 'echo "Verification complete."', @@ -1306,7 +1307,7 @@ def verify_linux_RPM_packages_step(depends_on = []): "sslcacert=/etc/pki/tls/certs/ca-bundle.crt\n" ) - install_command = "dnf install -y --nogpgcheck grafana-${TAG} >/dev/null 2>&1" + install_command = "dnf install -y --nogpgcheck grafana-$version >/dev/null 2>&1" return { "name": "verify-linux-RPM-packages", @@ -1322,7 +1323,8 @@ def verify_linux_RPM_packages_step(depends_on = []): 'echo "Step 4: Configuring Grafana repository..."', "echo -e '" + repo_config + "' > /etc/yum.repos.d/grafana.repo", 'echo "Step 5: Checking RPM repository..."', - "dnf list available grafana-${TAG}", + 'export version=$(echo "${TAG}" | sed -e "s/+security-/^security_/g")', + "dnf list available grafana-$version", "if [ $? -eq 0 ]; then", ' echo "Grafana package found in repository. Installing from repo..."', ] + retry_command(install_command) + [ @@ -1330,16 +1332,16 @@ def verify_linux_RPM_packages_step(depends_on = []): " rpm --import https://rpm.grafana.com/gpg.key", " rpm -qa gpg-pubkey* | xargs rpm -qi | grep -i grafana", "else", - ' echo "Grafana package version ${TAG} not found in repository."', + ' echo "Grafana package version $version not found in repository."', " dnf repolist", " dnf list available grafana*", " exit 1", "fi", 'echo "Step 6: Verifying Grafana installation..."', - 'if rpm -q grafana | grep -q "${TAG}"; then', - ' echo "Successfully verified Grafana version ${TAG}"', + 'if rpm -q grafana | grep -q "$verison"; then', + ' echo "Successfully verified Grafana version $version"', "else", - ' echo "Failed to verify Grafana version ${TAG}"', + ' echo "Failed to verify Grafana version $version"', " exit 1", "fi", 'echo "Verification complete."', diff --git a/scripts/drone/variables.star b/scripts/drone/variables.star index 653466ec77d..0171396effb 100644 --- a/scripts/drone/variables.star +++ b/scripts/drone/variables.star @@ -2,7 +2,7 @@ global variables """ -grabpl_version = "v3.0.53" +grabpl_version = "v3.0.56" golang_version = "1.22.7" # nodejs_version should match what's in ".nvmrc", but without the v prefix.