From d9f7bc1617921bb40cd54e174f80b66d00fb3e43 Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Thu, 7 Nov 2024 09:27:35 +0200 Subject: [PATCH 001/269] PKG-197 psmdb.cd: run pbm build job on Hetzner --- IaC/psmdb.cd/htz.cloud.groovy | 121 ++++++++++++++++++++++ pbm/jenkins/get-pbm-branches.groovy | 2 +- pbm/jenkins/get-pbm-branches.yml | 4 +- pbm/jenkins/percona-mongodb-backup.groovy | 34 +++--- pbm/jenkins/percona-mongodb-backup.yml | 4 +- 5 files changed, 143 insertions(+), 22 deletions(-) create mode 100644 IaC/psmdb.cd/htz.cloud.groovy diff --git a/IaC/psmdb.cd/htz.cloud.groovy b/IaC/psmdb.cd/htz.cloud.groovy new file mode 100644 index 0000000000..480033618f --- /dev/null +++ b/IaC/psmdb.cd/htz.cloud.groovy @@ -0,0 +1,121 @@ +import cloud.dnation.jenkins.plugins.hetzner.* +import cloud.dnation.jenkins.plugins.hetzner.launcher.* +import hudson.model.* +import jenkins.model.Jenkins +import java.util.logging.Logger + +def cloudName = "psmdb-htz" + +imageMap = [:] // ID TYPE NAME DESCRIPTION ARCHITECTURE IMAGE SIZE DISK SIZE CREATED DEPRECATED +imageMap['deb12-x64'] = '114690387' // 114690387 system debian-12 Debian 12 x86 - 5 GB Tue Jun 13 09:00:02 EEST 2023 - +imageMap['deb12-aarch64'] = '114690389' // 114690389 system debian-12 Debian 12 arm - 5 GB Tue Jun 13 09:00:03 EEST 2023 - +imageMap['launcher-x64'] = imageMap['deb12-x64'] + +execMap = [:] +execMap['deb'] = 1 +execMap['deb12-x64'] = execMap['deb'] +execMap['deb12-aarch64'] = execMap['deb'] +execMap['launcher-x64'] = 10 + +bootDeadlineMap =[:] +bootDeadlineMap['default'] = 3 +bootDeadlineMap['deb12-x64'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64'] = bootDeadlineMap['default'] +bootDeadlineMap['launcher-x64'] = bootDeadlineMap['default'] + +jvmOptsMap = [:] +jvmOptsMap['deb12'] = '-Xmx512m -Xms512m --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED' +jvmOptsMap['deb12-x64'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64'] = jvmOptsMap['deb12'] +jvmOptsMap['launcher-x64'] = jvmOptsMap['deb12'] + +labelMap = [:] +labelMap['deb12-x64'] = 'docker-x64 docker-deb12-x64 deb12-x64' +labelMap['deb12-aarch64'] = 'docker-aarch64 docker-deb12-aarch64 deb12-aarch64' +labelMap['launcher-x64'] = 'launcher-x64 master' + +networkMap = [:] +networkMap['percona-vpc'] = '3907773' // percona-vpc + +initMap = [:] +initMap['deb-docker'] = '''#!/bin/bash -x + set -o xtrace + export DEBIAN_FRONTEND=noninteractive + until sudo apt-get update; do + sleep 1 + echo try again + done + until sudo apt-get -y install openjdk-17-jre-headless apt-transport-https ca-certificates curl gnupg lsb-release unzip; do + sleep 1 + echo try again + done + curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg + echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null + until sudo apt-get update; do + sleep 1 + echo try again + done + until sudo apt-get -y install docker-ce docker-ce-cli containerd.io; do + sleep 1 + echo try again + done + if ! $(aws --version | grep -q 'aws-cli/2'); then + find /tmp -maxdepth 1 -name "*aws*" | xargs sudo rm -rf + until curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "/tmp/awscliv2.zip"; do + sleep 1 + echo try again + done + unzip -o /tmp/awscliv2.zip -d /tmp + cd /tmp/aws && sudo ./install + fi + sudo install -o $(id -u -n) -g $(id -g -n) -d /mnt/jenkins + sudo sysctl net.ipv4.tcp_fin_timeout=15 + sudo sysctl net.ipv4.tcp_tw_reuse=1 + sudo sysctl net.ipv6.conf.all.disable_ipv6=1 + sudo sysctl net.ipv6.conf.default.disable_ipv6=1 + sudo sysctl -w fs.inotify.max_user_watches=10000000 || true + sudo sysctl -w fs.aio-max-nr=1048576 || true + sudo sysctl -w fs.file-max=6815744 || true + echo "* soft core unlimited" | sudo tee -a /etc/security/limits.conf + sudo sed -i.bak -e 's^ExecStart=.*^ExecStart=/usr/bin/dockerd --data-root=/mnt/docker --default-ulimit nofile=900000:900000^' /lib/systemd/system/docker.service + sudo systemctl daemon-reload + sudo install -o root -g root -d /mnt/docker + sudo usermod -aG docker $(id -u -n) + sudo mkdir -p /etc/docker + echo '{"experimental": true, "ipv6": true, "fixed-cidr-v6": "fd3c:a8b0:18eb:5c06::/64"}' | sudo tee /etc/docker/daemon.json + sudo systemctl restart docker + echo "* * * * * root /usr/sbin/route add default gw 10.177.1.1 eth0" | sudo tee /etc/cron.d/fix-default-route +''' +initMap['deb12-x64'] = initMap['deb-docker'] +initMap['deb12-aarch64'] = initMap['deb-docker'] +initMap['launcher-x64'] = initMap['deb-docker'] + +def templates = [ + /* new HetznerServerTemplate("ubuntu20-cx21", "java", "name=ubuntu20-docker", "fsn1", "cx21"), */ + // tmplName tmplLabels tmplImage region server type + new HetznerServerTemplate("deb12-x64", labelMap['deb12-x64'], imageMap['deb12-x64'], "ash", "cpx51"), + new HetznerServerTemplate("deb12-aarch64", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "ash", "cax31"), + new HetznerServerTemplate("launcher-x64", labelMap['launcher-x64'], imageMap['launcher-x64'], "ash", "cpx21") +] + +templates.each { it -> + def sshConnector = new SshConnectorAsRoot("hz.jenkins-main.cd") + sshConnector.setConnectionMethod(new PublicAddressOnly()) // Replace with the desired method + it.setConnector(sshConnector) + // it.setConnector(new SshConnectorAsRoot("hz.psmdb.cd")) + def tmplName = it.name + it.setNumExecutors(execMap[tmplName]) + it.bootDeadline = bootDeadlineMap[tmplName] + it.remoteFs = "/mnt/jenkins/" + it.jvmOpts = jvmOptsMap[tmplName] + it.network = networkMap['percona-vpc'] + it.userData = initMap[tmplName] + } + +def cloud = new HetznerCloud(cloudName, "psmdb.cd.hz", "10", templates) + +def jenkins = Jenkins.get() + +jenkins.clouds.remove(jenkins.clouds.getByName(cloudName)) +jenkins.clouds.add(cloud) +jenkins.save() diff --git a/pbm/jenkins/get-pbm-branches.groovy b/pbm/jenkins/get-pbm-branches.groovy index f9b256f199..d3d723e1df 100644 --- a/pbm/jenkins/get-pbm-branches.groovy +++ b/pbm/jenkins/get-pbm-branches.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ diff --git a/pbm/jenkins/get-pbm-branches.yml b/pbm/jenkins/get-pbm-branches.yml index e6b0065d57..23a503b6b9 100644 --- a/pbm/jenkins/get-pbm-branches.yml +++ b/pbm/jenkins/get-pbm-branches.yml @@ -1,5 +1,5 @@ - job: - name: pbm-autobuild + name: hetzner-pbm-autobuild project-type: pipeline description: | Do not edit this job through the web! @@ -9,7 +9,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: pbm/jenkins/get-pbm-branches.groovy diff --git a/pbm/jenkins/percona-mongodb-backup.groovy b/pbm/jenkins/percona-mongodb-backup.groovy index 9ad4ef2c3a..1775ea214e 100644 --- a/pbm/jenkins/percona-mongodb-backup.groovy +++ b/pbm/jenkins/percona-mongodb-backup.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,7 +29,7 @@ def AWS_STASH_PATH pipeline { agent { - label 'micro-amazon' + label 'launcher-x64' } parameters { string( @@ -37,7 +37,7 @@ pipeline { description: 'URL for percona-mongodb-backup repository', name: 'GIT_REPO') string( - defaultValue: 'master', + defaultValue: 'dev', description: 'Tag/Branch for percona-mongodb-backup repository', name: 'GIT_BRANCH') string( @@ -49,7 +49,7 @@ pipeline { description: 'DEB release value', name: 'DEB_RELEASE') string( - defaultValue: '1.3.2', + defaultValue: '2.7.0', description: 'VERSION value', name: 'VERSION') string( @@ -57,7 +57,7 @@ pipeline { description: 'PBM repo name', name: 'PBM_REPO') choice( - choices: 'laboratory\ntesting\nexperimental', + choices: 'experimental\nlaboratory\ntesting\nexperimental', description: 'Repo component to push packages to', name: 'COMPONENT') } @@ -70,7 +70,7 @@ pipeline { stages { stage('Create PBM source tarball') { agent { - label 'docker' + label 'docker-x64' } steps { slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") @@ -96,7 +96,7 @@ pipeline { parallel { stage('Build PBM generic source rpm') { agent { - label 'docker' + label 'docker-x64' } steps { cleanUpWS() @@ -109,7 +109,7 @@ pipeline { } stage('Build PBM generic source deb') { agent { - label 'docker' + label 'docker-x64' } steps { cleanUpWS() @@ -126,7 +126,7 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker' + label 'docker-x64' } steps { cleanUpWS() @@ -139,7 +139,7 @@ pipeline { } stage('Oracle Linux 9') { agent { - label 'docker' + label 'docker-x64' } steps { cleanUpWS() @@ -165,7 +165,7 @@ pipeline { } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label 'docker-x64' } steps { cleanUpWS() @@ -178,7 +178,7 @@ pipeline { } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker' + label 'docker-x64' } steps { cleanUpWS() @@ -191,7 +191,7 @@ pipeline { } stage('Ubuntu Noble(24.04)') { agent { - label 'docker' + label 'docker-x64' } steps { cleanUpWS() @@ -204,7 +204,7 @@ pipeline { } stage('Debian Bullseye(11)') { agent { - label 'docker' + label 'docker-x64' } steps { cleanUpWS() @@ -217,7 +217,7 @@ pipeline { } stage('Debian Bookworm(12)') { agent { - label 'docker' + label 'docker-x64' } steps { cleanUpWS() @@ -230,7 +230,7 @@ pipeline { } stage('Oraclelinux 8 tarball') { agent { - label 'docker' + label 'docker-x64' } steps { cleanUpWS() @@ -260,7 +260,7 @@ pipeline { } post { success { - slackNotify("#releases", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") script { currentBuild.description = "Built on ${GIT_BRANCH}. Path to packages: experimental/${AWS_STASH_PATH}" } diff --git a/pbm/jenkins/percona-mongodb-backup.yml b/pbm/jenkins/percona-mongodb-backup.yml index 4403b1c4d4..533d2869c3 100644 --- a/pbm/jenkins/percona-mongodb-backup.yml +++ b/pbm/jenkins/percona-mongodb-backup.yml @@ -1,5 +1,5 @@ - job: - name: pbm-autobuild-RELEASE + name: hetzner-pbm-autobuild-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -9,7 +9,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: pbm/jenkins/percona-mongodb-backup.groovy From 902f18bcf527571862fbb37f9c0b62df1b249a19 Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Fri, 8 Nov 2024 10:14:37 +0200 Subject: [PATCH 002/269] PKG-197 psmdb.cd: update htz cloud config --- IaC/psmdb.cd/htz.cloud.groovy | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/IaC/psmdb.cd/htz.cloud.groovy b/IaC/psmdb.cd/htz.cloud.groovy index 480033618f..8e7867a37c 100644 --- a/IaC/psmdb.cd/htz.cloud.groovy +++ b/IaC/psmdb.cd/htz.cloud.groovy @@ -99,7 +99,7 @@ def templates = [ ] templates.each { it -> - def sshConnector = new SshConnectorAsRoot("hz.jenkins-main.cd") + def sshConnector = new SshConnectorAsRoot("htz.cd.key") sshConnector.setConnectionMethod(new PublicAddressOnly()) // Replace with the desired method it.setConnector(sshConnector) // it.setConnector(new SshConnectorAsRoot("hz.psmdb.cd")) @@ -112,7 +112,7 @@ templates.each { it -> it.userData = initMap[tmplName] } -def cloud = new HetznerCloud(cloudName, "psmdb.cd.hz", "10", templates) +def cloud = new HetznerCloud(cloudName, "htz.cd.token", "10", templates) def jenkins = Jenkins.get() From 63200a6e0de429999d5849a87f0fb36aaa6df940 Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Wed, 13 Nov 2024 12:41:42 +0200 Subject: [PATCH 003/269] PKG-276 psmdb.cd: adjust lables for hetzner cloud --- IaC/psmdb.cd/htz.cloud.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IaC/psmdb.cd/htz.cloud.groovy b/IaC/psmdb.cd/htz.cloud.groovy index 8e7867a37c..fa7dcc6057 100644 --- a/IaC/psmdb.cd/htz.cloud.groovy +++ b/IaC/psmdb.cd/htz.cloud.groovy @@ -32,7 +32,7 @@ jvmOptsMap['launcher-x64'] = jvmOptsMap['deb12'] labelMap = [:] labelMap['deb12-x64'] = 'docker-x64 docker-deb12-x64 deb12-x64' labelMap['deb12-aarch64'] = 'docker-aarch64 docker-deb12-aarch64 deb12-aarch64' -labelMap['launcher-x64'] = 'launcher-x64 master' +labelMap['launcher-x64'] = 'launcher-x64' networkMap = [:] networkMap['percona-vpc'] = '3907773' // percona-vpc From 481a2096bca3a8b41d867f027c973535a1a5d6a9 Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Thu, 12 Dec 2024 09:40:51 +0200 Subject: [PATCH 004/269] PKG-335 psmdb.cd: move htz infra to fsn1 zone --- IaC/psmdb.cd/{ => init.groovy.d}/htz.cloud.groovy | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) rename IaC/psmdb.cd/{ => init.groovy.d}/htz.cloud.groovy (91%) diff --git a/IaC/psmdb.cd/htz.cloud.groovy b/IaC/psmdb.cd/init.groovy.d/htz.cloud.groovy similarity index 91% rename from IaC/psmdb.cd/htz.cloud.groovy rename to IaC/psmdb.cd/init.groovy.d/htz.cloud.groovy index fa7dcc6057..679df1ba6a 100644 --- a/IaC/psmdb.cd/htz.cloud.groovy +++ b/IaC/psmdb.cd/init.groovy.d/htz.cloud.groovy @@ -35,7 +35,7 @@ labelMap['deb12-aarch64'] = 'docker-aarch64 docker-deb12-aarch64 deb12-aarch64' labelMap['launcher-x64'] = 'launcher-x64' networkMap = [:] -networkMap['percona-vpc'] = '3907773' // percona-vpc +networkMap['percona-vpc-eu'] = '10442325' // percona-vpc-eu initMap = [:] initMap['deb-docker'] = '''#!/bin/bash -x @@ -93,9 +93,9 @@ initMap['launcher-x64'] = initMap['deb-docker'] def templates = [ /* new HetznerServerTemplate("ubuntu20-cx21", "java", "name=ubuntu20-docker", "fsn1", "cx21"), */ // tmplName tmplLabels tmplImage region server type - new HetznerServerTemplate("deb12-x64", labelMap['deb12-x64'], imageMap['deb12-x64'], "ash", "cpx51"), - new HetznerServerTemplate("deb12-aarch64", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "ash", "cax31"), - new HetznerServerTemplate("launcher-x64", labelMap['launcher-x64'], imageMap['launcher-x64'], "ash", "cpx21") + new HetznerServerTemplate("deb12-x64", labelMap['deb12-x64'], imageMap['deb12-x64'], "fsn1", "cx52"), + new HetznerServerTemplate("deb12-aarch64", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "fsn1", "cax31"), + new HetznerServerTemplate("launcher-x64", labelMap['launcher-x64'], imageMap['launcher-x64'], "fsn1", "cx22") ] templates.each { it -> @@ -108,11 +108,12 @@ templates.each { it -> it.bootDeadline = bootDeadlineMap[tmplName] it.remoteFs = "/mnt/jenkins/" it.jvmOpts = jvmOptsMap[tmplName] - it.network = networkMap['percona-vpc'] + it.network = networkMap['percona-vpc-eu'] it.userData = initMap[tmplName] } -def cloud = new HetznerCloud(cloudName, "htz.cd.token", "10", templates) +// public HetznerCloud(String name, String credentialsId, String instanceCapStr, List serverTemplates) +def cloud = new HetznerCloud(cloudName, "htz.cd.token", "100", templates) def jenkins = Jenkins.get() From ede7c775f276fb74e403781aa8a31c7d9946c36f Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Thu, 12 Dec 2024 22:44:11 +0200 Subject: [PATCH 005/269] PKG-333 psmdb.cd: migrate pbm to hetzner 1. add cloud infra selector 2. combine x86_64 and arm64 arch builds --- pbm/jenkins/percona-mongodb-backup.groovy | 121 ++++++++++++++++++---- 1 file changed, 102 insertions(+), 19 deletions(-) diff --git a/pbm/jenkins/percona-mongodb-backup.groovy b/pbm/jenkins/percona-mongodb-backup.groovy index 1775ea214e..0eb4e46f32 100644 --- a/pbm/jenkins/percona-mongodb-backup.groovy +++ b/pbm/jenkins/percona-mongodb-backup.groovy @@ -29,9 +29,14 @@ def AWS_STASH_PATH pipeline { agent { - label 'launcher-x64' + label params.CLOUD == 'Hetzner' ? 'launcher-x64' : 'micro-amazon' } parameters { + choice( + defaultValue: 'Hetzner', + choices: ['Hetzner','AWS'] + description: 'Cloud infra for build' + name: 'CLOUD') string( defaultValue: 'https://github.com/percona/percona-backup-mongodb.git', description: 'URL for percona-mongodb-backup repository', @@ -49,7 +54,7 @@ pipeline { description: 'DEB release value', name: 'DEB_RELEASE') string( - defaultValue: '2.7.0', + defaultValue: '2.8.0', description: 'VERSION value', name: 'VERSION') string( @@ -70,7 +75,7 @@ pipeline { stages { stage('Create PBM source tarball') { agent { - label 'docker-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' } steps { slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") @@ -96,7 +101,7 @@ pipeline { parallel { stage('Build PBM generic source rpm') { agent { - label 'docker-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' } steps { cleanUpWS() @@ -109,7 +114,7 @@ pipeline { } stage('Build PBM generic source deb') { agent { - label 'docker-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' } steps { cleanUpWS() @@ -124,9 +129,9 @@ pipeline { } // stage stage('Build PBM RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8') { + stage('Oracle Linux 8(x86_64)') { agent { - label 'docker-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' } steps { cleanUpWS() @@ -137,9 +142,35 @@ pipeline { uploadRPMfromAWS("rpm/", AWS_STASH_PATH) } } - stage('Oracle Linux 9') { + stage('Oracle Linux 8(aarch64)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder("srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder("rpm/", AWS_STASH_PATH) + uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9(x86_64)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder("srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder("rpm/", AWS_STASH_PATH) + uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9(aarch64)') { agent { - label 'docker-x64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' } steps { cleanUpWS() @@ -150,7 +181,7 @@ pipeline { uploadRPMfromAWS("rpm/", AWS_STASH_PATH) } } - stage('Amazon Linux 2023') { + stage('Amazon Linux 2023(x86_64)') { agent { label 'docker' } @@ -163,9 +194,22 @@ pipeline { uploadRPMfromAWS("rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { + stage('Amazon Linux 2023(aarch64)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder("srpm/", AWS_STASH_PATH) + buildStage("amazonlinux:2023", "--build_rpm=1") + + pushArtifactFolder("rpm/", AWS_STASH_PATH) + uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal 20.04(x86_64)') { agent { - label 'docker-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' } steps { cleanUpWS() @@ -176,9 +220,22 @@ pipeline { uploadDEBfromAWS("deb/", AWS_STASH_PATH) } } - stage('Ubuntu Jammy(22.04)') { + stage('Ubuntu Focal 20.04(aarch64)') { agent { - label 'docker-x64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder("source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder("deb/", AWS_STASH_PATH) + uploadDEBfromAWS("deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy 22.04(x86_64)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' } steps { cleanUpWS() @@ -189,9 +246,35 @@ pipeline { uploadDEBfromAWS("deb/", AWS_STASH_PATH) } } - stage('Ubuntu Noble(24.04)') { + stage('Ubuntu Jammy 22.04(aarch64)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder("source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder("deb/", AWS_STASH_PATH) + uploadDEBfromAWS("deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble 24.04(x86_64)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder("source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder("deb/", AWS_STASH_PATH) + uploadDEBfromAWS("deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble 24.04(aarch64)') { agent { - label 'docker-x64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' } steps { cleanUpWS() @@ -204,7 +287,7 @@ pipeline { } stage('Debian Bullseye(11)') { agent { - label 'docker-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' } steps { cleanUpWS() @@ -217,7 +300,7 @@ pipeline { } stage('Debian Bookworm(12)') { agent { - label 'docker-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' } steps { cleanUpWS() @@ -230,7 +313,7 @@ pipeline { } stage('Oraclelinux 8 tarball') { agent { - label 'docker-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' } steps { cleanUpWS() From 09aac4fb43b1d141de19055aa30daf97b6ab621b Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Thu, 12 Dec 2024 22:52:51 +0200 Subject: [PATCH 006/269] PKG-333 psmdb.cd: migrate pbm to hetzner Fix typos --- pbm/jenkins/percona-mongodb-backup.groovy | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pbm/jenkins/percona-mongodb-backup.groovy b/pbm/jenkins/percona-mongodb-backup.groovy index 0eb4e46f32..3df2c27cb6 100644 --- a/pbm/jenkins/percona-mongodb-backup.groovy +++ b/pbm/jenkins/percona-mongodb-backup.groovy @@ -34,8 +34,8 @@ pipeline { parameters { choice( defaultValue: 'Hetzner', - choices: ['Hetzner','AWS'] - description: 'Cloud infra for build' + choices: ['Hetzner','AWS'], + description: 'Cloud infra for build', name: 'CLOUD') string( defaultValue: 'https://github.com/percona/percona-backup-mongodb.git', From b50ecd10bbeb0894bbc8ff698affb67dfbb3a334 Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Thu, 12 Dec 2024 23:02:28 +0200 Subject: [PATCH 007/269] Update percona-mongodb-backup.groovy --- pbm/jenkins/percona-mongodb-backup.groovy | 1 - 1 file changed, 1 deletion(-) diff --git a/pbm/jenkins/percona-mongodb-backup.groovy b/pbm/jenkins/percona-mongodb-backup.groovy index 3df2c27cb6..feefbbc938 100644 --- a/pbm/jenkins/percona-mongodb-backup.groovy +++ b/pbm/jenkins/percona-mongodb-backup.groovy @@ -33,7 +33,6 @@ pipeline { } parameters { choice( - defaultValue: 'Hetzner', choices: ['Hetzner','AWS'], description: 'Cloud infra for build', name: 'CLOUD') From 7f6f66c750ff52170a67879267056265d4c37cb9 Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Mon, 16 Dec 2024 17:31:02 +0200 Subject: [PATCH 008/269] PKG-338 psmdb.cd: fix hetzner arm64 workers --- IaC/psmdb.cd/init.groovy.d/htz.cloud.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IaC/psmdb.cd/init.groovy.d/htz.cloud.groovy b/IaC/psmdb.cd/init.groovy.d/htz.cloud.groovy index 679df1ba6a..f50d0fde81 100644 --- a/IaC/psmdb.cd/init.groovy.d/htz.cloud.groovy +++ b/IaC/psmdb.cd/init.groovy.d/htz.cloud.groovy @@ -61,7 +61,7 @@ initMap['deb-docker'] = '''#!/bin/bash -x done if ! $(aws --version | grep -q 'aws-cli/2'); then find /tmp -maxdepth 1 -name "*aws*" | xargs sudo rm -rf - until curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "/tmp/awscliv2.zip"; do + until curl "https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m).zip" -o "/tmp/awscliv2.zip"; do sleep 1 echo try again done From 71380241c649e691efa5c18ce42af8f52b7ada9f Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Mon, 16 Dec 2024 20:51:35 +0200 Subject: [PATCH 009/269] PKG-333 psmdb.cd: pbm fix build nore selector for amzn2023 --- pbm/jenkins/percona-mongodb-backup.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pbm/jenkins/percona-mongodb-backup.groovy b/pbm/jenkins/percona-mongodb-backup.groovy index feefbbc938..98a347b223 100644 --- a/pbm/jenkins/percona-mongodb-backup.groovy +++ b/pbm/jenkins/percona-mongodb-backup.groovy @@ -182,7 +182,7 @@ pipeline { } stage('Amazon Linux 2023(x86_64)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' } steps { cleanUpWS() From 6088688fa4ebe22c8027876d573bac9ec9280dee Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Mon, 16 Dec 2024 21:50:11 +0200 Subject: [PATCH 010/269] PKG-333 psmdb.cd: adjust var functs to run on Hetzner --- pbm/jenkins/percona-mongodb-backup.groovy | 38 +++++++++++------------ vars/sync2ProdAutoBuild.groovy | 5 +-- vars/uploadDEBfromAWS.groovy | 5 +-- vars/uploadRPMfromAWS.groovy | 5 +-- vars/uploadTarballfromAWS.groovy | 5 +-- 5 files changed, 31 insertions(+), 27 deletions(-) diff --git a/pbm/jenkins/percona-mongodb-backup.groovy b/pbm/jenkins/percona-mongodb-backup.groovy index 98a347b223..361a5eb115 100644 --- a/pbm/jenkins/percona-mongodb-backup.groovy +++ b/pbm/jenkins/percona-mongodb-backup.groovy @@ -93,7 +93,7 @@ pipeline { } stash includes: 'uploadPath', name: 'uploadPath' pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build PBM generic source packages') { @@ -108,7 +108,7 @@ pipeline { buildStage("oraclelinux:8", "--build_src_rpm=1") pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build PBM generic source deb') { @@ -121,7 +121,7 @@ pipeline { buildStage("ubuntu:focal", "--build_src_deb=1") pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -138,7 +138,7 @@ pipeline { buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 8(aarch64)') { @@ -151,7 +151,7 @@ pipeline { buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9(x86_64)') { @@ -164,7 +164,7 @@ pipeline { buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9(aarch64)') { @@ -177,7 +177,7 @@ pipeline { buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Amazon Linux 2023(x86_64)') { @@ -190,7 +190,7 @@ pipeline { buildStage("amazonlinux:2023", "--build_rpm=1") pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Amazon Linux 2023(aarch64)') { @@ -203,7 +203,7 @@ pipeline { buildStage("amazonlinux:2023", "--build_rpm=1") pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal 20.04(x86_64)') { @@ -216,7 +216,7 @@ pipeline { buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Focal 20.04(aarch64)') { @@ -229,7 +229,7 @@ pipeline { buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy 22.04(x86_64)') { @@ -242,7 +242,7 @@ pipeline { buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy 22.04(aarch64)') { @@ -255,7 +255,7 @@ pipeline { buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble 24.04(x86_64)') { @@ -268,7 +268,7 @@ pipeline { buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble 24.04(aarch64)') { @@ -281,7 +281,7 @@ pipeline { buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { @@ -294,7 +294,7 @@ pipeline { buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bookworm(12)') { @@ -307,7 +307,7 @@ pipeline { buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Oraclelinux 8 tarball') { @@ -320,7 +320,7 @@ pipeline { buildStage("oraclelinux:8", "--build_tarball=1") pushArtifactFolder("tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } } @@ -335,7 +335,7 @@ pipeline { stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(PBM_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PBM_REPO, COMPONENT) } } diff --git a/vars/sync2ProdAutoBuild.groovy b/vars/sync2ProdAutoBuild.groovy index e726b0db3b..62f5537065 100644 --- a/vars/sync2ProdAutoBuild.groovy +++ b/vars/sync2ProdAutoBuild.groovy @@ -1,5 +1,6 @@ -def call(String REPO_NAME, String DESTINATION) { - node('master') { +def call(String CLOUD_NAME, String REPO_NAME, String DESTINATION) { + def nodeLabel = (CLOUD_NAME == 'Hetzner') ? 'launcher-x64' : 'micro-amazon' + node(nodeLabel) { unstash 'uploadPath' def path_to_build = sh(returnStdout: true, script: "cat uploadPath").trim() diff --git a/vars/uploadDEBfromAWS.groovy b/vars/uploadDEBfromAWS.groovy index d5917e793a..921d107ab9 100644 --- a/vars/uploadDEBfromAWS.groovy +++ b/vars/uploadDEBfromAWS.groovy @@ -1,5 +1,6 @@ -def call(String FOLDER_NAME, String AWS_STASH_PATH) { - node('master') { +def call(String CLOUD_NAME, String FOLDER_NAME, String AWS_STASH_PATH) { + def nodeLabel = (CLOUD_NAME == 'Hetzner') ? 'launcher-x64' : 'micro-amazon' + node(nodeLabel) { deleteDir() popArtifactFolder(FOLDER_NAME, AWS_STASH_PATH) //unstash 'debs' diff --git a/vars/uploadRPMfromAWS.groovy b/vars/uploadRPMfromAWS.groovy index f4ace39139..91ffe97d58 100644 --- a/vars/uploadRPMfromAWS.groovy +++ b/vars/uploadRPMfromAWS.groovy @@ -1,5 +1,6 @@ -def call(String FOLDER_NAME, String AWS_STASH_PATH) { - node('master') { +def call(String CLOUD_NAME, String FOLDER_NAME, String AWS_STASH_PATH) { + def nodeLabel = (CLOUD_NAME == 'Hetzner') ? 'launcher-x64' : 'micro-amazon' + node(nodeLabel) { deleteDir() popArtifactFolder(FOLDER_NAME, AWS_STASH_PATH) unstash 'uploadPath' diff --git a/vars/uploadTarballfromAWS.groovy b/vars/uploadTarballfromAWS.groovy index 4c9d363c55..90eca28f6d 100644 --- a/vars/uploadTarballfromAWS.groovy +++ b/vars/uploadTarballfromAWS.groovy @@ -1,5 +1,6 @@ -def call(String FOLDER_NAME, String AWS_STASH_PATH, String TarballType) { - node('master') { +def call(String CLOUD_NAME, String FOLDER_NAME, String AWS_STASH_PATH, String TarballType) { + def nodeLabel = (CLOUD_NAME == 'Hetzner') ? 'launcher-x64' : 'micro-amazon' + node(nodeLabel) { deleteDir() popArtifactFolder(FOLDER_NAME, AWS_STASH_PATH) //unstash "${TarballType}.tarball" From bcd59d21976cc40ef48d6afb123b0e5d0af3efa5 Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Wed, 18 Dec 2024 20:56:59 +0200 Subject: [PATCH 011/269] PKG-344 psmdb.cd: switch between hetzner/aws s3 obj storages --- pbm/jenkins/percona-mongodb-backup.groovy | 70 +++++++++++------------ vars/popArtifactFolder.groovy | 8 ++- vars/pushArtifactFolder.groovy | 10 ++-- 3 files changed, 46 insertions(+), 42 deletions(-) diff --git a/pbm/jenkins/percona-mongodb-backup.groovy b/pbm/jenkins/percona-mongodb-backup.groovy index 361a5eb115..857e47d9f7 100644 --- a/pbm/jenkins/percona-mongodb-backup.groovy +++ b/pbm/jenkins/percona-mongodb-backup.groovy @@ -92,7 +92,7 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } @@ -104,10 +104,10 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } @@ -117,10 +117,10 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } @@ -134,10 +134,10 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } @@ -147,10 +147,10 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } @@ -160,10 +160,10 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } @@ -173,10 +173,10 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } @@ -186,10 +186,10 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("amazonlinux:2023", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } @@ -199,10 +199,10 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("amazonlinux:2023", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } @@ -212,10 +212,10 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } @@ -225,10 +225,10 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } @@ -238,10 +238,10 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } @@ -251,10 +251,10 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } @@ -264,10 +264,10 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } @@ -277,10 +277,10 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } @@ -290,10 +290,10 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } @@ -303,10 +303,10 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } @@ -316,10 +316,10 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_tarball=1") - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } diff --git a/vars/popArtifactFolder.groovy b/vars/popArtifactFolder.groovy index 67e8f899f9..bfbf6a20da 100644 --- a/vars/popArtifactFolder.groovy +++ b/vars/popArtifactFolder.groovy @@ -1,9 +1,11 @@ -def call(String FOLDER_NAME, String AWS_STASH_PATH) { - withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: 'AWS_STASH', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { +def call(String CLOUD_NAME, String FOLDER_NAME, String AWS_STASH_PATH) { + String S3_STASH = (CLOUD_NAME == 'Hetzner') ? 'HTZ_STASH' : 'AWS_STASH' + String S3_ENDPOINT = (CLOUD_NAME == 'Hetzner') ? '--endpoint-url https://fsn1.your-objectstorage.com' : '--endpoint-url https://s3.amazonaws.com' + withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: S3_STASH, secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { sh """ pwd S3_PATH=s3://percona-jenkins-artifactory/${AWS_STASH_PATH} - aws s3 cp --recursive \$S3_PATH/${FOLDER_NAME} ${FOLDER_NAME} || : + aws s3 cp --recursive \$S3_PATH/${FOLDER_NAME} ${FOLDER_NAME} ${S3_ENDPOINT} || : """ } } diff --git a/vars/pushArtifactFolder.groovy b/vars/pushArtifactFolder.groovy index b80c26f29c..7241ad110a 100644 --- a/vars/pushArtifactFolder.groovy +++ b/vars/pushArtifactFolder.groovy @@ -1,10 +1,12 @@ -def call(String FOLDER_NAME, String AWS_STASH_PATH) { - withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: 'AWS_STASH', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { +def call(String CLOUD_NAME, String FOLDER_NAME, String AWS_STASH_PATH) { + String S3_STASH = (CLOUD_NAME == 'Hetzner') ? 'HTZ_STASH' : 'AWS_STASH' + String S3_ENDPOINT = (CLOUD_NAME == 'Hetzner') ? '--endpoint-url https://fsn1.your-objectstorage.com' : '--endpoint-url https://s3.amazonaws.com' + withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: S3_STASH, secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { sh """ pwd S3_PATH=s3://percona-jenkins-artifactory/${AWS_STASH_PATH} - aws s3 ls \$S3_PATH/${FOLDER_NAME} || : - aws s3 cp --quiet --recursive ${FOLDER_NAME} \$S3_PATH/${FOLDER_NAME} || : + aws s3 ls \$S3_PATH/${FOLDER_NAME} ${S3_ENDPOINT} || : + aws s3 cp --recursive ${FOLDER_NAME} \$S3_PATH/${FOLDER_NAME} ${S3_ENDPOINT} || : """ } } From ab28ba16dc4ecf29469499f5e21f124054e7cd24 Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Wed, 18 Dec 2024 21:51:26 +0200 Subject: [PATCH 012/269] PKG-344 psmdb.cd: fix htz/aws artifacts uploads --- vars/uploadDEBfromAWS.groovy | 2 +- vars/uploadRPMfromAWS.groovy | 2 +- vars/uploadTarballfromAWS.groovy | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/vars/uploadDEBfromAWS.groovy b/vars/uploadDEBfromAWS.groovy index 921d107ab9..6c1248959e 100644 --- a/vars/uploadDEBfromAWS.groovy +++ b/vars/uploadDEBfromAWS.groovy @@ -2,7 +2,7 @@ def call(String CLOUD_NAME, String FOLDER_NAME, String AWS_STASH_PATH) { def nodeLabel = (CLOUD_NAME == 'Hetzner') ? 'launcher-x64' : 'micro-amazon' node(nodeLabel) { deleteDir() - popArtifactFolder(FOLDER_NAME, AWS_STASH_PATH) + popArtifactFolder(CLOUD_NAME, FOLDER_NAME, AWS_STASH_PATH) //unstash 'debs' unstash 'uploadPath' withCredentials([sshUserPrivateKey(credentialsId: 'repo.ci.percona.com', keyFileVariable: 'KEY_PATH', usernameVariable: 'USER')]) { diff --git a/vars/uploadRPMfromAWS.groovy b/vars/uploadRPMfromAWS.groovy index 91ffe97d58..610c987f2c 100644 --- a/vars/uploadRPMfromAWS.groovy +++ b/vars/uploadRPMfromAWS.groovy @@ -2,7 +2,7 @@ def call(String CLOUD_NAME, String FOLDER_NAME, String AWS_STASH_PATH) { def nodeLabel = (CLOUD_NAME == 'Hetzner') ? 'launcher-x64' : 'micro-amazon' node(nodeLabel) { deleteDir() - popArtifactFolder(FOLDER_NAME, AWS_STASH_PATH) + popArtifactFolder(CLOUD_NAME, FOLDER_NAME, AWS_STASH_PATH) unstash 'uploadPath' withCredentials([sshUserPrivateKey(credentialsId: 'repo.ci.percona.com', keyFileVariable: 'KEY_PATH', usernameVariable: 'USER')]) { sh """ diff --git a/vars/uploadTarballfromAWS.groovy b/vars/uploadTarballfromAWS.groovy index 90eca28f6d..f941cf26e6 100644 --- a/vars/uploadTarballfromAWS.groovy +++ b/vars/uploadTarballfromAWS.groovy @@ -2,7 +2,7 @@ def call(String CLOUD_NAME, String FOLDER_NAME, String AWS_STASH_PATH, String Ta def nodeLabel = (CLOUD_NAME == 'Hetzner') ? 'launcher-x64' : 'micro-amazon' node(nodeLabel) { deleteDir() - popArtifactFolder(FOLDER_NAME, AWS_STASH_PATH) + popArtifactFolder(CLOUD_NAME, FOLDER_NAME, AWS_STASH_PATH) //unstash "${TarballType}.tarball" unstash 'uploadPath' withCredentials([sshUserPrivateKey(credentialsId: 'repo.ci.percona.com', keyFileVariable: 'KEY_PATH', usernameVariable: 'USER')]) { From 83bfd05b0d3dcd1f6e8bc10b606dcba22a118e01 Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Mon, 13 Jan 2025 15:18:01 +0200 Subject: [PATCH 013/269] PKG-352 psmdb-80: move build to Hetzner --- .../percona-server-for-mongodb-8.0.groovy | 148 +++++++++++------- .../percona-server-for-mongodb-8.0.yml | 4 +- 2 files changed, 91 insertions(+), 61 deletions(-) diff --git a/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy index 490334a8a1..dddb3349ec 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'micro-amazon' + label params.CLOUD == 'Hetzner' ? 'launcher-x64' : 'micro-amazon' } parameters { + choice( + choices: ['Hetzner','AWS'], + description: 'Cloud infra for build', + name: 'CLOUD') string( defaultValue: 'https://github.com/percona/percona-server-mongodb.git', description: 'URL for percona-server-mongodb repository', @@ -74,7 +78,7 @@ pipeline { stages { stage('Create PSMDB source tarball') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' } steps { slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") @@ -101,7 +105,7 @@ pipeline { parallel { stage('Build PSMDB generic source rpm') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() @@ -120,7 +124,7 @@ pipeline { } stage('Build PSMDB generic source deb') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() @@ -140,9 +144,27 @@ pipeline { } // stage stage('Build PSMDB RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8') { + stage('Oracle Linux 8(x86_64)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' + } + steps { + cleanUpWS() + popArtifactFolder("srpm/", AWS_STASH_PATH) + script { + if (env.FIPSMODE == 'yes') { + buildStage("oraclelinux:8", "--build_rpm=1 --enable_fipsmode=1") + } else { + buildStage("oraclelinux:8", "--build_rpm=1") + } + } + pushArtifactFolder("rpm/", AWS_STASH_PATH) + uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 8(aarch64)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' } steps { cleanUpWS() @@ -154,14 +176,13 @@ pipeline { buildStage("oraclelinux:8", "--build_rpm=1") } } - pushArtifactFolder("rpm/", AWS_STASH_PATH) uploadRPMfromAWS("rpm/", AWS_STASH_PATH) } } - stage('Oracle Linux 9') { + stage('Oracle Linux 9(x86_64)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() @@ -173,32 +194,49 @@ pipeline { buildStage("oraclelinux:9", "--build_rpm=1") } } - pushArtifactFolder("rpm/", AWS_STASH_PATH) uploadRPMfromAWS("rpm/", AWS_STASH_PATH) } } - /* stage('Amazon Linux 2023') { + stage('Oracle Linux 9(aarch64)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { - buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") + buildStage("oraclelinux:9", "--build_rpm=1 --enable_fipsmode=1") } else { - buildStage("amazonlinux:2023", "--build_rpm=1") + buildStage("oraclelinux:9", "--build_rpm=1") } } pushArtifactFolder("rpm/", AWS_STASH_PATH) uploadRPMfromAWS("rpm/", AWS_STASH_PATH) } - }*/ - stage('Ubuntu Focal(20.04)') { + } + stage('Ubuntu Focal(20.04)(x86_64)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' + } + steps { + cleanUpWS() + popArtifactFolder("source_deb/", AWS_STASH_PATH) + script { + if (env.FIPSMODE == 'yes') { + buildStage("ubuntu:focal", "--build_deb=1 --enable_fipsmode=1") + } else { + buildStage("ubuntu:focal", "--build_deb=1") + } + } + pushArtifactFolder("deb/", AWS_STASH_PATH) + uploadDEBfromAWS("deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04)(aarch64)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' } steps { cleanUpWS() @@ -210,14 +248,31 @@ pipeline { buildStage("ubuntu:focal", "--build_deb=1") } } - pushArtifactFolder("deb/", AWS_STASH_PATH) uploadDEBfromAWS("deb/", AWS_STASH_PATH) } } - stage('Ubuntu Jammy(22.04)') { + stage('Ubuntu Jammy(22.04)(x86_64)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' + } + steps { + cleanUpWS() + popArtifactFolder("source_deb/", AWS_STASH_PATH) + script { + if (env.FIPSMODE == 'yes') { + buildStage("ubuntu:jammy", "--build_deb=1 --enable_fipsmode=1") + } else { + buildStage("ubuntu:jammy", "--build_deb=1") + } + } + pushArtifactFolder("deb/", AWS_STASH_PATH) + uploadDEBfromAWS("deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04)(aarch64)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' } steps { cleanUpWS() @@ -229,14 +284,13 @@ pipeline { buildStage("ubuntu:jammy", "--build_deb=1") } } - pushArtifactFolder("deb/", AWS_STASH_PATH) uploadDEBfromAWS("deb/", AWS_STASH_PATH) } } - stage('Ubuntu Noble(24.04)') { + stage('Ubuntu Noble(24.04)(x86_64)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() @@ -248,35 +302,31 @@ pipeline { buildStage("ubuntu:noble", "--build_deb=1") } } - pushArtifactFolder("deb/", AWS_STASH_PATH) uploadDEBfromAWS("deb/", AWS_STASH_PATH) } } -/* - stage('Debian Bullseye(11)') { + stage('Ubuntu Noble(24.04)(aarch64)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { - buildStage("debian:bullseye", "--build_deb=1 --enable_fipsmode=1") + buildStage("ubuntu:noble", "--build_deb=1 --enable_fipsmode=1") } else { - buildStage("debian:bullseye", "--build_deb=1") + buildStage("ubuntu:noble", "--build_deb=1") } } - pushArtifactFolder("deb/", AWS_STASH_PATH) uploadDEBfromAWS("deb/", AWS_STASH_PATH) } } -*/ stage('Debian Bookworm(12)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() @@ -288,14 +338,13 @@ pipeline { buildStage("debian:bookworm", "--build_deb=1") } } - pushArtifactFolder("deb/", AWS_STASH_PATH) uploadDEBfromAWS("deb/", AWS_STASH_PATH) } } stage('Oracle Linux 8 binary tarball(glibc2.28)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() @@ -313,7 +362,7 @@ pipeline { } stage('Oracle Linux 9 binary tarball(glibc2.34)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() @@ -331,7 +380,7 @@ pipeline { } stage('Ubuntu Focal(20.04) binary tarball(glibc2.31)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() @@ -349,7 +398,7 @@ pipeline { } stage('Ubuntu Jammy(22.04) binary tarball(glibc2.35)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() @@ -367,7 +416,7 @@ pipeline { } stage('Ubuntu Noble(24.04) binary tarball(glibc2.39)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() @@ -383,28 +432,9 @@ pipeline { } } } -/* - stage('Ubuntu Jammy(22.04) debug binary tarball(glibc2.35)') { - agent { - label 'docker-64gb' - } - steps { - cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) - script { - if (env.FIPSMODE == 'yes') { - buildStage("ubuntu:jammy", "--debug=1 --enable_fipsmode=1") - } else { - buildStage("ubuntu:jammy", "--debug=1") - } - pushArtifactFolder("debug/", AWS_STASH_PATH) - } - } - } -*/ stage('Debian Bookworm(12) binary tarball(glibc2.36)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() diff --git a/psmdb/jenkins/percona-server-for-mongodb-8.0.yml b/psmdb/jenkins/percona-server-for-mongodb-8.0.yml index a72222a31b..60a92cc4d0 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-8.0.yml +++ b/psmdb/jenkins/percona-server-for-mongodb-8.0.yml @@ -1,5 +1,5 @@ - job: - name: psmdb80-autobuild-RELEASE + name: hetzner-psmdb80-autobuild-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: psmdb/jenkins/percona-server-for-mongodb-8.0.groovy From 81a86bca94b8e2ec5687b449ecf4196a10dd994c Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Mon, 13 Jan 2025 23:01:58 +0200 Subject: [PATCH 014/269] PKG-412 psmdb-70: move build to Hetzner --- .../percona-server-for-mongodb-7.0.groovy | 233 +++++++++++------- .../percona-server-for-mongodb-7.0.yml | 4 +- 2 files changed, 144 insertions(+), 93 deletions(-) diff --git a/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy index 7968083597..fbebc19f07 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'micro-amazon' + label params.CLOUD == 'Hetzner' ? 'launcher-x64' : 'micro-amazon' } parameters { + choice( + choices: ['Hetzner','AWS'], + description: 'Cloud infra for build', + name: 'CLOUD') string( defaultValue: 'https://github.com/percona/percona-server-mongodb.git', description: 'URL for percona-server-mongodb repository', @@ -74,7 +78,7 @@ pipeline { stages { stage('Create PSMDB source tarball') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' } steps { slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") @@ -93,19 +97,19 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build PSMDB generic source packages') { parallel { stage('Build PSMDB generic source rpm') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("oraclelinux:8", "--build_src_rpm=1 --enable_fipsmode=1") @@ -114,17 +118,17 @@ pipeline { } } - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build PSMDB generic source deb') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("ubuntu:focal", "--build_src_deb=1 --enable_fipsmode=1") @@ -132,21 +136,21 @@ pipeline { buildStage("ubuntu:focal", "--build_src_deb=1") } } - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel } // stage stage('Build PSMDB RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8') { + stage('Oracle Linux 8(x86_64)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("oraclelinux:8", "--build_rpm=1 --enable_fipsmode=1") @@ -154,18 +158,35 @@ pipeline { buildStage("oraclelinux:8", "--build_rpm=1") } } - - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Oracle Linux 9') { + stage('Oracle Linux 8(aarch64)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + script { + if (env.FIPSMODE == 'yes') { + buildStage("oraclelinux:8", "--build_rpm=1 --enable_fipsmode=1") + } else { + buildStage("oraclelinux:8", "--build_rpm=1") + } + } + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9(x86_64)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("oraclelinux:9", "--build_rpm=1 --enable_fipsmode=1") @@ -173,36 +194,35 @@ pipeline { buildStage("oraclelinux:9", "--build_rpm=1") } } - - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - /* stage('Amazon Linux 2023') { + stage('Oracle Linux 9(aarch64)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { - buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") + buildStage("oraclelinux:9", "--build_rpm=1 --enable_fipsmode=1") } else { - buildStage("amazonlinux:2023", "--build_rpm=1") + buildStage("oraclelinux:9", "--build_rpm=1") } } - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } - }*/ - stage('Ubuntu Focal(20.04)') { + } + stage('Ubuntu Focal(20.04)(x86_64)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("ubuntu:focal", "--build_deb=1 --enable_fipsmode=1") @@ -210,18 +230,35 @@ pipeline { buildStage("ubuntu:focal", "--build_deb=1") } } - - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Jammy(22.04)') { + stage('Ubuntu Focal(20.04)(aarch64)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + script { + if (env.FIPSMODE == 'yes') { + buildStage("ubuntu:focal", "--build_deb=1 --enable_fipsmode=1") + } else { + buildStage("ubuntu:focal", "--build_deb=1") + } + } + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04)(x86_64)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("ubuntu:jammy", "--build_deb=1 --enable_fipsmode=1") @@ -229,18 +266,35 @@ pipeline { buildStage("ubuntu:jammy", "--build_deb=1") } } - - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Noble(24.04)') { + stage('Ubuntu Jammy(22.04)(aarch64)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + script { + if (env.FIPSMODE == 'yes') { + buildStage("ubuntu:jammy", "--build_deb=1 --enable_fipsmode=1") + } else { + buildStage("ubuntu:jammy", "--build_deb=1") + } + } + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04)(x86_64)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("ubuntu:noble", "--build_deb=1 --enable_fipsmode=1") @@ -248,37 +302,35 @@ pipeline { buildStage("ubuntu:noble", "--build_deb=1") } } - - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian Bullseye(11)') { + stage('Ubuntu Noble(24.04)(aarch64)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { - buildStage("debian:bullseye", "--build_deb=1 --enable_fipsmode=1") + buildStage("ubuntu:noble", "--build_deb=1 --enable_fipsmode=1") } else { - buildStage("debian:bullseye", "--build_deb=1") + buildStage("ubuntu:noble", "--build_deb=1") } } - - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bookworm(12)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("debian:bookworm", "--build_deb=1 --enable_fipsmode=1") @@ -286,44 +338,43 @@ pipeline { buildStage("debian:bookworm", "--build_deb=1") } } - - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Oracle Linux 8 binary tarball(glibc2.28)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("oraclelinux:8", "--build_tarball=1 --enable_fipsmode=1") } else { buildStage("oraclelinux:8", "--build_tarball=1") } - pushArtifactFolder("tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } } stage('Oracle Linux 9 binary tarball(glibc2.34)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("oraclelinux:9", "--build_tarball=1 --enable_fipsmode=1") } else { buildStage("oraclelinux:9", "--build_tarball=1") } - pushArtifactFolder("tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } } @@ -332,49 +383,49 @@ pipeline { expression { env.FIPSMODE != 'yes' } } agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_tarball=1") - pushArtifactFolder("tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } stage('Ubuntu Jammy(22.04) binary tarball(glibc2.35)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("ubuntu:jammy", "--build_tarball=1 --enable_fipsmode=1") } else { buildStage("ubuntu:jammy", "--build_tarball=1") } - pushArtifactFolder("tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } } stage('Ubuntu Noble(24.04) binary tarball(glibc2.39)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("ubuntu:noble", "--build_tarball=1 --enable_fipsmode=1") } else { buildStage("ubuntu:noble", "--build_tarball=1") } - pushArtifactFolder("tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } } @@ -387,27 +438,27 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_tarball=1") - pushArtifactFolder("tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } stage('Debian Bookworm(12) binary tarball(glibc2.36)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("debian:bookworm", "--build_tarball=1 --enable_fipsmode=1") } else { buildStage("debian:bookworm", "--build_tarball=1") } - pushArtifactFolder("tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } } diff --git a/psmdb/jenkins/percona-server-for-mongodb-7.0.yml b/psmdb/jenkins/percona-server-for-mongodb-7.0.yml index bb8bbcadb9..d8e1958974 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-7.0.yml +++ b/psmdb/jenkins/percona-server-for-mongodb-7.0.yml @@ -1,5 +1,5 @@ - job: - name: psmdb70-autobuild-RELEASE + name: hetzner-psmdb70-autobuild-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: psmdb/jenkins/percona-server-for-mongodb-7.0.groovy From f37a45fd0e83c4c1c5dccaf340e406617c52389c Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Tue, 14 Jan 2025 09:44:25 +0200 Subject: [PATCH 015/269] PKG-413 psmdb-60: move build to Hetzner --- .../percona-server-for-mongodb-6.0.groovy | 215 ++++++++++++------ .../percona-server-for-mongodb-6.0.yml | 4 +- 2 files changed, 146 insertions(+), 73 deletions(-) diff --git a/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy index 05fa4f368d..c62ea76189 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'launcher-x64' : 'micro-amazon' } parameters { + choice( + choices: ['Hetzner','AWS'], + description: 'Cloud infra for build', + name: 'CLOUD') string( defaultValue: 'https://github.com/percona/percona-server-mongodb.git', description: 'URL for percona-server-mongodb repository', @@ -73,6 +77,9 @@ pipeline { } stages { stage('Create PSMDB source tarball') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } steps { slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") cleanUpWS() @@ -90,19 +97,19 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build PSMDB generic source packages') { parallel { stage('Build PSMDB generic source rpm') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("oraclelinux:8", "--build_src_rpm=1 --enable_fipsmode=1") @@ -111,17 +118,17 @@ pipeline { } } - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build PSMDB generic source deb') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("ubuntu:focal", "--build_src_deb=1 --enable_fipsmode=1") @@ -129,22 +136,21 @@ pipeline { buildStage("ubuntu:focal", "--build_src_deb=1") } } - - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel } // stage stage('Build PSMDB RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8') { + stage('Oracle Linux 8(x86_64)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("oraclelinux:8", "--build_rpm=1 --enable_fipsmode=1") @@ -152,18 +158,35 @@ pipeline { buildStage("oraclelinux:8", "--build_rpm=1") } } - - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Oracle Linux 9') { + stage('Oracle Linux 8(aarch64)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + script { + if (env.FIPSMODE == 'yes') { + buildStage("oraclelinux:8", "--build_rpm=1 --enable_fipsmode=1") + } else { + buildStage("oraclelinux:8", "--build_rpm=1") + } + } + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9(x86_64)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("oraclelinux:9", "--build_rpm=1 --enable_fipsmode=1") @@ -171,35 +194,35 @@ pipeline { buildStage("oraclelinux:9", "--build_rpm=1") } } - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Amazon Linux 2023') { + stage('Oracle Linux 9(aarch64)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { - buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") + buildStage("oraclelinux:9", "--build_rpm=1 --enable_fipsmode=1") } else { - buildStage("amazonlinux:2023", "--build_rpm=1") + buildStage("oraclelinux:9", "--build_rpm=1") } } - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { + stage('Ubuntu Focal(20.04)(x86_64)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("ubuntu:focal", "--build_deb=1 --enable_fipsmode=1") @@ -207,18 +230,35 @@ pipeline { buildStage("ubuntu:focal", "--build_deb=1") } } - - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Jammy(22.04)') { + stage('Ubuntu Focal(20.04)(aarch64)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + script { + if (env.FIPSMODE == 'yes') { + buildStage("ubuntu:focal", "--build_deb=1 --enable_fipsmode=1") + } else { + buildStage("ubuntu:focal", "--build_deb=1") + } + } + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04)(x86_64)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("ubuntu:jammy", "--build_deb=1 --enable_fipsmode=1") @@ -226,18 +266,35 @@ pipeline { buildStage("ubuntu:jammy", "--build_deb=1") } } - - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Noble(24.04)') { + stage('Ubuntu Jammy(22.04)(aarch64)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + script { + if (env.FIPSMODE == 'yes') { + buildStage("ubuntu:jammy", "--build_deb=1 --enable_fipsmode=1") + } else { + buildStage("ubuntu:jammy", "--build_deb=1") + } + } + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04)(x86_64)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("ubuntu:noble", "--build_deb=1 --enable_fipsmode=1") @@ -245,9 +302,26 @@ pipeline { buildStage("ubuntu:noble", "--build_deb=1") } } - - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04)(aarch64)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + script { + if (env.FIPSMODE == 'yes') { + buildStage("ubuntu:noble", "--build_deb=1 --enable_fipsmode=1") + } else { + buildStage("ubuntu:noble", "--build_deb=1") + } + } + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { @@ -264,44 +338,43 @@ pipeline { buildStage("debian:bullseye", "--build_deb=1") } } - pushArtifactFolder("deb/", AWS_STASH_PATH) uploadDEBfromAWS("deb/", AWS_STASH_PATH) } } - stage('Centos 8 binary tarball(glibc2.28)') { + stage('Oracle Linux 8 binary tarball(glibc2.28)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("oraclelinux:8", "--build_tarball=1 --enable_fipsmode=1") } else { buildStage("oraclelinux:8", "--build_tarball=1") } - pushArtifactFolder("tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } } stage('Oracle Linux 9 binary tarball(glibc2.34)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("oraclelinux:9", "--build_tarball=1 --enable_fipsmode=1") } else { buildStage("oraclelinux:9", "--build_tarball=1") } - pushArtifactFolder("tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } } @@ -310,14 +383,14 @@ pipeline { expression { env.FIPSMODE != 'yes' } } agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_tarball=1") - pushArtifactFolder("tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } stage('Debian Bullseye(11) binary tarball(glibc2.31)') { @@ -337,37 +410,37 @@ pipeline { } stage('Ubuntu Jammy(22.04) binary tarball(glibc2.35)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("ubuntu:jammy", "--build_tarball=1 --enable_fipsmode=1") } else { buildStage("ubuntu:jammy", "--build_tarball=1") } - pushArtifactFolder("tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } } stage('Ubuntu Noble(24.04) binary tarball(glibc2.39)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("ubuntu:noble", "--build_tarball=1 --enable_fipsmode=1") } else { buildStage("ubuntu:noble", "--build_tarball=1") } - pushArtifactFolder("tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } } diff --git a/psmdb/jenkins/percona-server-for-mongodb-6.0.yml b/psmdb/jenkins/percona-server-for-mongodb-6.0.yml index 043bffb44e..f0e2742c76 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-6.0.yml +++ b/psmdb/jenkins/percona-server-for-mongodb-6.0.yml @@ -1,5 +1,5 @@ - job: - name: psmdb60-autobuild-RELEASE + name: hetzner-psmdb60-autobuild-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: psmdb/jenkins/percona-server-for-mongodb-6.0.groovy From c757033ebeba2e517fa941c7007b42631275aa28 Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Tue, 14 Jan 2025 15:37:01 +0200 Subject: [PATCH 016/269] PKG-413 psmdb-60: move get_branches to hetzner --- psmdb/jenkins/get-psmdb-branches-6.0.groovy | 23 +++++++++++++-------- psmdb/jenkins/get-psmdb-branches-6.0.yml | 4 ++-- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/psmdb/jenkins/get-psmdb-branches-6.0.groovy b/psmdb/jenkins/get-psmdb-branches-6.0.groovy index 365bf6e30a..79926434cd 100644 --- a/psmdb/jenkins/get-psmdb-branches-6.0.groovy +++ b/psmdb/jenkins/get-psmdb-branches-6.0.groovy @@ -1,13 +1,17 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'launcher-x64' : 'micro-amazon' } parameters { + choice( + choices: ['Hetzner','AWS'], + description: 'Cloud infra for build', + name: 'CLOUD') string( defaultValue: 'https://github.com/percona/percona-server-mongodb.git', description: 'URL for percona-server-for-mongodb repository', @@ -22,10 +26,12 @@ pipeline { stages { stage('Get release branches') { steps { - withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: 'AWS_STASH', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { + String S3_STASH = (params.CLOUD == 'Hetzner') ? 'HTZ_STASH' : 'AWS_STASH' + String S3_ENDPOINT = (params.CLOUD == 'Hetzner') ? '--endpoint-url https://fsn1.your-objectstorage.com' : '--endpoint-url https://s3.amazonaws.com' + withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: S3_STASH, secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { sh """ EC=0 - aws s3 ls s3://percona-jenkins-artifactory/percona-server-mongodb/branch_commit_id_60.properties || EC=\$? + aws s3 ls s3://percona-jenkins-artifactory/percona-server-mongodb/branch_commit_id_60.properties ${S3_ENDPOINT} || EC=\$? if [ \${EC} = 1 ]; then LATEST_RELEASE_BRANCH=\$(git -c 'versionsort.suffix=-' ls-remote --heads --sort='v:refname' ${GIT_REPO} release-6.0\\* | tail -1) @@ -38,10 +44,10 @@ pipeline { echo "COMMIT_ID=\${COMMIT_ID}" >> branch_commit_id_60.properties echo "MONGO_TOOLS_TAG=\${MONGO_TOOLS_TAG}" >> branch_commit_id_60.properties - aws s3 cp branch_commit_id_60.properties s3://percona-jenkins-artifactory/percona-server-mongodb/ + aws s3 cp branch_commit_id_60.properties s3://percona-jenkins-artifactory/percona-server-mongodb/ ${S3_ENDPOINT} echo "START_NEW_BUILD=NO" > startBuild else - aws s3 cp s3://percona-jenkins-artifactory/percona-server-mongodb/branch_commit_id_60.properties . + aws s3 cp s3://percona-jenkins-artifactory/percona-server-mongodb/branch_commit_id_60.properties . ${S3_ENDPOINT} source branch_commit_id_60.properties LATEST_RELEASE_BRANCH=\$(git -c 'versionsort.suffix=-' ls-remote --heads --sort='v:refname' ${GIT_REPO} release-6.0\\* | tail -1) @@ -59,7 +65,7 @@ pipeline { echo "BRANCH_NAME=\${LATEST_BRANCH_NAME}" > branch_commit_id_60.properties echo "COMMIT_ID=\${LATEST_COMMIT_ID}" >> branch_commit_id_60.properties echo "MONGO_TOOLS_TAG=\${MONGO_TOOLS_TAG}" >> branch_commit_id_60.properties - aws s3 cp branch_commit_id_60.properties s3://percona-jenkins-artifactory/percona-server-mongodb/ + aws s3 cp branch_commit_id_60.properties s3://percona-jenkins-artifactory/percona-server-mongodb/ ${S3_ENDPOINT} fi """ } @@ -86,8 +92,7 @@ pipeline { """ } slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: new changes for branch ${BRANCH_NAME}[commit id: ${COMMIT_ID}] were detected, build will be started soon") - build job: 'psmdb60-autobuild-RELEASE', parameters: [string(name: 'GIT_BRANCH', value: BRANCH_NAME), string(name: 'PSMDB_VERSION', value: VERSION), string(name: 'PSMDB_RELEASE', value: RELEASE), string(name: 'MONGO_TOOLS_TAG', value: MONGO_TOOLS_TAG), string(name: 'COMPONENT', value: 'testing')] - build job: 'psmdb60-aarch64-build', parameters: [string(name: 'GIT_BRANCH', value: BRANCH_NAME), string(name: 'PSMDB_VERSION', value: VERSION), string(name: 'PSMDB_RELEASE', value: RELEASE), string(name: 'MONGO_TOOLS_TAG', value: MONGO_TOOLS_TAG), string(name: 'COMPONENT', value: 'testing')] + build job: 'hetzner-psmdb60-autobuild-RELEASE', parameters: [string(name: 'CLOUD', value: CLOUD), string(name: 'GIT_BRANCH', value: BRANCH_NAME), string(name: 'PSMDB_VERSION', value: VERSION), string(name: 'PSMDB_RELEASE', value: RELEASE), string(name: 'MONGO_TOOLS_TAG', value: MONGO_TOOLS_TAG), string(name: 'COMPONENT', value: 'testing')] build job: 'psmdb-multijob-testing', propagate: false, wait: false, parameters: [string(name: 'PSMDB_VERSION', value: VERSION), string(name: 'PSMDB_RELEASE', value: RELEASE)] } } diff --git a/psmdb/jenkins/get-psmdb-branches-6.0.yml b/psmdb/jenkins/get-psmdb-branches-6.0.yml index b08d9537da..0f2b467683 100644 --- a/psmdb/jenkins/get-psmdb-branches-6.0.yml +++ b/psmdb/jenkins/get-psmdb-branches-6.0.yml @@ -1,5 +1,5 @@ - job: - name: psmdb60-autobuild + name: hetzner-psmdb60-autobuild project-type: pipeline description: | Do not edit this job through the web! @@ -9,7 +9,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: psmdb/jenkins/get-psmdb-branches-6.0.groovy From 44e76d3ee3294d52150df5beb95c8193673cf163 Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Tue, 14 Jan 2025 16:19:57 +0200 Subject: [PATCH 017/269] PKG-413 psmdb-60: re-add amzn2023 build steps --- .../percona-server-for-mongodb-6.0.groovy | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy index c62ea76189..b6c6ae1319 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy @@ -216,6 +216,42 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Amazon Linux 2023(x86_64)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + script { + if (env.FIPSMODE == 'yes') { + buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") + } else { + buildStage("amazonlinux:2023", "--build_rpm=1") + } + } + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Amazon Linux 2023(aarch64)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + script { + if (env.FIPSMODE == 'yes') { + buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") + } else { + buildStage("amazonlinux:2023", "--build_rpm=1") + } + } + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Focal(20.04)(x86_64)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' From d81b24c8b1d699ec31327671b4efc414bec89f7d Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Tue, 14 Jan 2025 16:31:10 +0200 Subject: [PATCH 018/269] PKG-413 psmdb-60: fix new vars definitions --- psmdb/jenkins/get-psmdb-branches-6.0.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/psmdb/jenkins/get-psmdb-branches-6.0.groovy b/psmdb/jenkins/get-psmdb-branches-6.0.groovy index 79926434cd..8fcbd6ba17 100644 --- a/psmdb/jenkins/get-psmdb-branches-6.0.groovy +++ b/psmdb/jenkins/get-psmdb-branches-6.0.groovy @@ -26,6 +26,7 @@ pipeline { stages { stage('Get release branches') { steps { + script { String S3_STASH = (params.CLOUD == 'Hetzner') ? 'HTZ_STASH' : 'AWS_STASH' String S3_ENDPOINT = (params.CLOUD == 'Hetzner') ? '--endpoint-url https://fsn1.your-objectstorage.com' : '--endpoint-url https://s3.amazonaws.com' withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: S3_STASH, secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { @@ -69,7 +70,6 @@ pipeline { fi """ } - script { START_NEW_BUILD = sh(returnStdout: true, script: "source startBuild; echo \${START_NEW_BUILD}").trim() BRANCH_NAME = sh(returnStdout: true, script: "source branch_commit_id_60.properties; echo \${BRANCH_NAME}").trim() COMMIT_ID = sh(returnStdout: true, script: "source branch_commit_id_60.properties; echo \${COMMIT_ID}").trim() From df1140a0669dcd2bff4fdeb231d55919498ef741 Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Mon, 20 Jan 2025 17:40:00 +0200 Subject: [PATCH 019/269] PKG-413 psmdb-60: fix Deb11 Hetzner builds --- .../percona-server-for-mongodb-6.0.groovy | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy index b6c6ae1319..be780789b0 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy @@ -362,11 +362,11 @@ pipeline { } stage('Debian Bullseye(11)') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("debian:bullseye", "--build_deb=1 --enable_fipsmode=1") @@ -374,8 +374,8 @@ pipeline { buildStage("debian:bullseye", "--build_deb=1") } } - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Oracle Linux 8 binary tarball(glibc2.28)') { @@ -434,14 +434,14 @@ pipeline { expression { env.FIPSMODE != 'yes' } } agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_tarball=1") - pushArtifactFolder("tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } stage('Ubuntu Jammy(22.04) binary tarball(glibc2.35)') { From c188091bf2d94c75ab02ec52ee33c3ce013f1140 Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Tue, 21 Jan 2025 23:13:59 +0200 Subject: [PATCH 020/269] PKG-413 psmdb-60: adjust supplementary functions to work with Hetzner --- psmdb/jenkins/percona-server-for-mongodb-6.0.groovy | 8 ++++---- vars/sync2PrivateProdAutoBuild.groovy | 5 +++-- vars/uploadTarballToDownloadsTesting.groovy | 5 +++-- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy index be780789b0..69a4208e85 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy @@ -494,9 +494,9 @@ pipeline { script { if (env.FIPSMODE == 'yes') { // Replace by a new procedure when it's ready - sync2PrivateProdAutoBuild(PSMDB_REPO+"-pro", COMPONENT) + sync2PrivateProdAutoBuild(params.CLOUD, PSMDB_REPO+"-pro", COMPONENT) } else { - sync2ProdAutoBuild(PSMDB_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PSMDB_REPO, COMPONENT) } } } @@ -506,7 +506,7 @@ pipeline { script { if (env.FIPSMODE == 'yes') { try { - uploadTarballToDownloadsTesting("psmdb-gated", "${PSMDB_VERSION}") + uploadTarballToDownloadsTesting(params.CLOUD, "psmdb-gated", "${PSMDB_VERSION}") } catch (err) { echo "Caught: ${err}" @@ -514,7 +514,7 @@ pipeline { } } else { try { - uploadTarballToDownloadsTesting("psmdb", "${PSMDB_VERSION}") + uploadTarballToDownloadsTesting(params.CLOUD, "psmdb", "${PSMDB_VERSION}") } catch (err) { echo "Caught: ${err}" diff --git a/vars/sync2PrivateProdAutoBuild.groovy b/vars/sync2PrivateProdAutoBuild.groovy index 9c676d0a84..82aba5bae5 100644 --- a/vars/sync2PrivateProdAutoBuild.groovy +++ b/vars/sync2PrivateProdAutoBuild.groovy @@ -1,5 +1,6 @@ -def call(String REPO_NAME, String DESTINATION) { - node('master') { +def call(String CLOUD_NAME, String REPO_NAME, String DESTINATION) { + def nodeLabel = (CLOUD_NAME == 'Hetzner') ? 'launcher-x64' : 'micro-amazon' + node(nodeLabel) { unstash 'uploadPath' def path_to_build = sh(returnStdout: true, script: "cat uploadPath").trim() diff --git a/vars/uploadTarballToDownloadsTesting.groovy b/vars/uploadTarballToDownloadsTesting.groovy index f31b52deae..1f28d55d2c 100644 --- a/vars/uploadTarballToDownloadsTesting.groovy +++ b/vars/uploadTarballToDownloadsTesting.groovy @@ -1,5 +1,6 @@ -def call(String PRODUCT_NAME, String PRODUCT_VERSION) { - node('master') { +def call(String CLOUD_NAME, String PRODUCT_NAME, String PRODUCT_VERSION) { + def nodeLabel = (CLOUD_NAME == 'Hetzner') ? 'launcher-x64' : 'master' + node(nodeLabel) { deleteDir() unstash 'uploadPath' def path_to_build = sh(returnStdout: true, script: "cat uploadPath").trim() From 571151df70aab432d1cea2a81542c6aff83c164a Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Wed, 22 Jan 2025 09:48:52 +0200 Subject: [PATCH 021/269] PKG-429 psmdb.cd: fix s3 upload to Hetzner --- IaC/psmdb.cd/init.groovy.d/htz.cloud.groovy | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/IaC/psmdb.cd/init.groovy.d/htz.cloud.groovy b/IaC/psmdb.cd/init.groovy.d/htz.cloud.groovy index f50d0fde81..f164209349 100644 --- a/IaC/psmdb.cd/init.groovy.d/htz.cloud.groovy +++ b/IaC/psmdb.cd/init.groovy.d/htz.cloud.groovy @@ -40,12 +40,17 @@ networkMap['percona-vpc-eu'] = '10442325' // percona-vpc-eu initMap = [:] initMap['deb-docker'] = '''#!/bin/bash -x set -o xtrace + sudo fallocate -l 32G /swapfile + sudo chmod 600 /swapfile + sudo mkswap /swapfile + sudo swapon /swapfile + export DEBIAN_FRONTEND=noninteractive until sudo apt-get update; do sleep 1 echo try again done - until sudo apt-get -y install openjdk-17-jre-headless apt-transport-https ca-certificates curl gnupg lsb-release unzip; do + until sudo apt-get -y install openjdk-17-jre-headless apt-transport-https ca-certificates curl gnupg lsb-release unzip git; do sleep 1 echo try again done @@ -61,7 +66,7 @@ initMap['deb-docker'] = '''#!/bin/bash -x done if ! $(aws --version | grep -q 'aws-cli/2'); then find /tmp -maxdepth 1 -name "*aws*" | xargs sudo rm -rf - until curl "https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m).zip" -o "/tmp/awscliv2.zip"; do + until curl "https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m)-2.22.35.zip" -o "/tmp/awscliv2.zip"; do sleep 1 echo try again done @@ -93,9 +98,9 @@ initMap['launcher-x64'] = initMap['deb-docker'] def templates = [ /* new HetznerServerTemplate("ubuntu20-cx21", "java", "name=ubuntu20-docker", "fsn1", "cx21"), */ // tmplName tmplLabels tmplImage region server type - new HetznerServerTemplate("deb12-x64", labelMap['deb12-x64'], imageMap['deb12-x64'], "fsn1", "cx52"), - new HetznerServerTemplate("deb12-aarch64", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "fsn1", "cax31"), - new HetznerServerTemplate("launcher-x64", labelMap['launcher-x64'], imageMap['launcher-x64'], "fsn1", "cx22") + new HetznerServerTemplate("deb12-x64", labelMap['deb12-x64'], imageMap['deb12-x64'], "fsn1", "cpx51"), + new HetznerServerTemplate("deb12-aarch64", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "fsn1", "cax41"), + new HetznerServerTemplate("launcher-x64", labelMap['launcher-x64'], imageMap['launcher-x64'], "fsn1", "cpx21") ] templates.each { it -> From 529c0e891428038d00bfd1b235b673f8054c2036 Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Mon, 27 Jan 2025 16:43:21 +0200 Subject: [PATCH 022/269] PKG-434 psmdb-60: fix_dbd_pkgs_issue 1. move upload packages and tarballs from S3 into a separate step 2. add amazonlinux2023 binary tarball build step 3. add "PRO" label to the build description, if it is PRO build --- .../percona-server-for-mongodb-6.0.groovy | 56 ++++++++++++------- 1 file changed, 36 insertions(+), 20 deletions(-) diff --git a/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy index 69a4208e85..d22ac83c6d 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy @@ -159,7 +159,6 @@ pipeline { } } pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) - uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 8(aarch64)') { @@ -177,7 +176,6 @@ pipeline { } } pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) - uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9(x86_64)') { @@ -195,7 +193,6 @@ pipeline { } } pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) - uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9(aarch64)') { @@ -213,7 +210,6 @@ pipeline { } } pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) - uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Amazon Linux 2023(x86_64)') { @@ -231,7 +227,6 @@ pipeline { } } pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) - uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Amazon Linux 2023(aarch64)') { @@ -249,7 +244,6 @@ pipeline { } } pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) - uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)(x86_64)') { @@ -267,7 +261,6 @@ pipeline { } } pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)(aarch64)') { @@ -285,7 +278,6 @@ pipeline { } } pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)(x86_64)') { @@ -303,7 +295,6 @@ pipeline { } } pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)(aarch64)') { @@ -321,7 +312,6 @@ pipeline { } } pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)(x86_64)') { @@ -339,7 +329,6 @@ pipeline { } } pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)(aarch64)') { @@ -357,7 +346,6 @@ pipeline { } } pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { @@ -375,7 +363,6 @@ pipeline { } } pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Oracle Linux 8 binary tarball(glibc2.28)') { @@ -392,7 +379,6 @@ pipeline { buildStage("oraclelinux:8", "--build_tarball=1") } pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) - uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } } @@ -410,7 +396,23 @@ pipeline { buildStage("oraclelinux:9", "--build_tarball=1") } pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) - uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') + } + } + } + stage('Amazon Linux 2023 binary tarball(glibc2.34)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + script { + if (env.FIPSMODE == 'yes') { + buildStage("amazonlinux:2023", "--build_tarball=1 --enable_fipsmode=1") + } else { + buildStage("amazonlinux:2023", "--build_tarball=1") + } + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -426,7 +428,6 @@ pipeline { popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_tarball=1") pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) - uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } stage('Debian Bullseye(11) binary tarball(glibc2.31)') { @@ -441,7 +442,6 @@ pipeline { popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_tarball=1") pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) - uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } stage('Ubuntu Jammy(22.04) binary tarball(glibc2.35)') { @@ -458,7 +458,6 @@ pipeline { buildStage("ubuntu:jammy", "--build_tarball=1") } pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) - uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } } @@ -476,12 +475,25 @@ pipeline { buildStage("ubuntu:noble", "--build_tarball=1") } pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) - uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } } } } + + stage('Upload packages and tarballs from S3') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' + } + steps { + cleanUpWS() + + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') + } + } + stage('Sign packages') { steps { signRPM() @@ -530,7 +542,11 @@ pipeline { success { slackNotify("#releases", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") script { - currentBuild.description = "Built on ${GIT_BRANCH}. Path to packages: experimental/${AWS_STASH_PATH}" + if (env.FIPSMODE == 'yes') { + currentBuild.description = "!!! PRO Built on ${GIT_BRANCH}. Path to packages: experimental/${AWS_STASH_PATH}" + } else { + currentBuild.description = "Built on ${GIT_BRANCH}. Path to packages: experimental/${AWS_STASH_PATH}" + } } deleteDir() } From 3072cc313299035356dc1dcad1aba98c72f481d2 Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Tue, 28 Jan 2025 11:38:01 +0200 Subject: [PATCH 023/269] PKG-444 psmdb.cd: add workers from all EU data centers: nbg1, hel1, fsn1 --- IaC/psmdb.cd/init.groovy.d/htz.cloud.groovy | 56 ++++++++++++++------- 1 file changed, 38 insertions(+), 18 deletions(-) diff --git a/IaC/psmdb.cd/init.groovy.d/htz.cloud.groovy b/IaC/psmdb.cd/init.groovy.d/htz.cloud.groovy index f164209349..c25d29808c 100644 --- a/IaC/psmdb.cd/init.groovy.d/htz.cloud.groovy +++ b/IaC/psmdb.cd/init.groovy.d/htz.cloud.groovy @@ -12,22 +12,34 @@ imageMap['deb12-aarch64'] = '114690389' // 114690389 system debian-12 imageMap['launcher-x64'] = imageMap['deb12-x64'] execMap = [:] -execMap['deb'] = 1 -execMap['deb12-x64'] = execMap['deb'] -execMap['deb12-aarch64'] = execMap['deb'] -execMap['launcher-x64'] = 10 +execMap['deb'] = 1 +execMap['deb12-x64-nbg1'] = execMap['deb'] +execMap['deb12-x64-hel1'] = execMap['deb'] +execMap['deb12-x64-fsn1'] = execMap['deb'] +execMap['deb12-aarch64-nbg1'] = execMap['deb'] +execMap['deb12-aarch64-hel1'] = execMap['deb'] +execMap['deb12-aarch64-fsn1'] = execMap['deb'] +execMap['launcher-x64-fsn1'] = 10 bootDeadlineMap =[:] -bootDeadlineMap['default'] = 3 -bootDeadlineMap['deb12-x64'] = bootDeadlineMap['default'] -bootDeadlineMap['deb12-aarch64'] = bootDeadlineMap['default'] -bootDeadlineMap['launcher-x64'] = bootDeadlineMap['default'] +bootDeadlineMap['default'] = 3 +bootDeadlineMap['deb12-x64-nbg1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-hel1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-fsn1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-nbg1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-hel1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-fsn1'] = bootDeadlineMap['default'] +bootDeadlineMap['launcher-x64-fsn1'] = bootDeadlineMap['default'] jvmOptsMap = [:] jvmOptsMap['deb12'] = '-Xmx512m -Xms512m --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED' -jvmOptsMap['deb12-x64'] = jvmOptsMap['deb12'] -jvmOptsMap['deb12-aarch64'] = jvmOptsMap['deb12'] -jvmOptsMap['launcher-x64'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-nbg1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-hel1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-fsn1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-nbg1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-hel1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-fsn1'] = jvmOptsMap['deb12'] +jvmOptsMap['launcher-x64-fsn1'] = jvmOptsMap['deb12'] labelMap = [:] labelMap['deb12-x64'] = 'docker-x64 docker-deb12-x64 deb12-x64' @@ -91,16 +103,24 @@ initMap['deb-docker'] = '''#!/bin/bash -x sudo systemctl restart docker echo "* * * * * root /usr/sbin/route add default gw 10.177.1.1 eth0" | sudo tee /etc/cron.d/fix-default-route ''' -initMap['deb12-x64'] = initMap['deb-docker'] -initMap['deb12-aarch64'] = initMap['deb-docker'] -initMap['launcher-x64'] = initMap['deb-docker'] +initMap['deb12-x64-nbg1'] = initMap['deb-docker'] +initMap['deb12-x64-hel1'] = initMap['deb-docker'] +initMap['deb12-x64-fsn1'] = initMap['deb-docker'] +initMap['deb12-aarch64-nbg1'] = initMap['deb-docker'] +initMap['deb12-aarch64-hel1'] = initMap['deb-docker'] +initMap['deb12-aarch64-fsn1'] = initMap['deb-docker'] +initMap['launcher-x64-fsn1'] = initMap['deb-docker'] def templates = [ /* new HetznerServerTemplate("ubuntu20-cx21", "java", "name=ubuntu20-docker", "fsn1", "cx21"), */ - // tmplName tmplLabels tmplImage region server type - new HetznerServerTemplate("deb12-x64", labelMap['deb12-x64'], imageMap['deb12-x64'], "fsn1", "cpx51"), - new HetznerServerTemplate("deb12-aarch64", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "fsn1", "cax41"), - new HetznerServerTemplate("launcher-x64", labelMap['launcher-x64'], imageMap['launcher-x64'], "fsn1", "cpx21") + // tmplName tmplLabels tmplImage region server type + new HetznerServerTemplate("deb12-x64-nbg1", labelMap['deb12-x64'], imageMap['deb12-x64'], "nbg1", "cpx51"), + new HetznerServerTemplate("deb12-aarch64-nbg1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "nbg1", "cax41"), + new HetznerServerTemplate("deb12-x64-hel1", labelMap['deb12-x64'], imageMap['deb12-x64'], "hel1", "cpx51"), + new HetznerServerTemplate("deb12-aarch64-hel1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "hel1", "cax41"), + new HetznerServerTemplate("deb12-x64-fsn1", labelMap['deb12-x64'], imageMap['deb12-x64'], "fsn1", "cpx51"), + new HetznerServerTemplate("deb12-aarch64-fsn1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "fsn1", "cax41"), + new HetznerServerTemplate("launcher-x64-fsn1", labelMap['launcher-x64'], imageMap['launcher-x64'], "fsn1", "cpx21") ] templates.each { it -> From 4a04436ce31eb235d25956470c2d86dce783383f Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Tue, 28 Jan 2025 20:21:10 +0200 Subject: [PATCH 024/269] PKG-413 psmdb-60: fix test folder creation / add debug ls output --- psmdb/jenkins/percona-server-for-mongodb-6.0.groovy | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy index d22ac83c6d..1cf04aa783 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy @@ -6,7 +6,9 @@ library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ void buildStage(String DOCKER_OS, String STAGE_PARAM) { sh """ set -o xtrace - mkdir test + ls -laR ./ + rm -rf test/* + mkdir -p test wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/percona-packaging/scripts/psmdb_builder.sh -O psmdb_builder.sh pwd -P ls -laR From a378c6598dadec76ca89187f03cb6f23d9a38d11 Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Fri, 31 Jan 2025 16:10:33 +0200 Subject: [PATCH 025/269] PKG-412 psmdb-70: adjust PSMDB-70 build job to work with Hetzner --- psmdb/jenkins/get-psmdb-branches-7.0.groovy | 25 +++--- psmdb/jenkins/get-psmdb-branches-7.0.yml | 4 +- .../percona-server-for-mongodb-7.0.groovy | 86 +++++++++++++++---- 3 files changed, 84 insertions(+), 31 deletions(-) diff --git a/psmdb/jenkins/get-psmdb-branches-7.0.groovy b/psmdb/jenkins/get-psmdb-branches-7.0.groovy index 5896399b45..01b48bba67 100644 --- a/psmdb/jenkins/get-psmdb-branches-7.0.groovy +++ b/psmdb/jenkins/get-psmdb-branches-7.0.groovy @@ -1,13 +1,17 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'launcher-x64' : 'micro-amazon' } parameters { + choice( + choices: ['Hetzner','AWS'], + description: 'Cloud infra for build', + name: 'CLOUD') string( defaultValue: 'https://github.com/percona/percona-server-mongodb.git', description: 'URL for percona-server-for-mongodb repository', @@ -22,10 +26,13 @@ pipeline { stages { stage('Get release branches') { steps { - withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: 'AWS_STASH', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { + script { + String S3_STASH = (params.CLOUD == 'Hetzner') ? 'HTZ_STASH' : 'AWS_STASH' + String S3_ENDPOINT = (params.CLOUD == 'Hetzner') ? '--endpoint-url https://fsn1.your-objectstorage.com' : '--endpoint-url https://s3.amazonaws.com' + withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: S3_STASH, secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { sh """ EC=0 - aws s3 ls s3://percona-jenkins-artifactory/percona-server-mongodb/branch_commit_id_70.properties || EC=\$? + aws s3 ls s3://percona-jenkins-artifactory/percona-server-mongodb/branch_commit_id_70.properties ${S3_ENDPOINT} || EC=\$? if [ \${EC} = 1 ]; then LATEST_RELEASE_BRANCH=\$(git -c 'versionsort.suffix=-' ls-remote --heads --sort='v:refname' ${GIT_REPO} release-7.0\\* | tail -1) @@ -38,10 +45,10 @@ pipeline { echo "COMMIT_ID=\${COMMIT_ID}" >> branch_commit_id_70.properties echo "MONGO_TOOLS_TAG=\${MONGO_TOOLS_TAG}" >> branch_commit_id_70.properties - aws s3 cp branch_commit_id_70.properties s3://percona-jenkins-artifactory/percona-server-mongodb/ + aws s3 cp branch_commit_id_70.properties s3://percona-jenkins-artifactory/percona-server-mongodb/ ${S3_ENDPOINT} echo "START_NEW_BUILD=NO" > startBuild else - aws s3 cp s3://percona-jenkins-artifactory/percona-server-mongodb/branch_commit_id_70.properties . + aws s3 cp s3://percona-jenkins-artifactory/percona-server-mongodb/branch_commit_id_70.properties . ${S3_ENDPOINT} source branch_commit_id_70.properties LATEST_RELEASE_BRANCH=\$(git -c 'versionsort.suffix=-' ls-remote --heads --sort='v:refname' ${GIT_REPO} release-7.0\\* | tail -1) @@ -59,11 +66,10 @@ pipeline { echo "BRANCH_NAME=\${LATEST_BRANCH_NAME}" > branch_commit_id_70.properties echo "COMMIT_ID=\${LATEST_COMMIT_ID}" >> branch_commit_id_70.properties echo "MONGO_TOOLS_TAG=\${MONGO_TOOLS_TAG}" >> branch_commit_id_70.properties - aws s3 cp branch_commit_id_70.properties s3://percona-jenkins-artifactory/percona-server-mongodb/ + aws s3 cp branch_commit_id_70.properties s3://percona-jenkins-artifactory/percona-server-mongodb/ ${S3_ENDPOINT} fi """ } - script { START_NEW_BUILD = sh(returnStdout: true, script: "source startBuild; echo \${START_NEW_BUILD}").trim() BRANCH_NAME = sh(returnStdout: true, script: "source branch_commit_id_70.properties; echo \${BRANCH_NAME}").trim() COMMIT_ID = sh(returnStdout: true, script: "source branch_commit_id_70.properties; echo \${COMMIT_ID}").trim() @@ -86,8 +92,7 @@ pipeline { """ } slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: new changes for branch ${BRANCH_NAME}[commit id: ${COMMIT_ID}] were detected, build will be started soon") - build job: 'psmdb70-autobuild-RELEASE', parameters: [string(name: 'GIT_BRANCH', value: BRANCH_NAME), string(name: 'PSMDB_VERSION', value: VERSION), string(name: 'PSMDB_RELEASE', value: RELEASE), string(name: 'MONGO_TOOLS_TAG', value: MONGO_TOOLS_TAG), string(name: 'COMPONENT', value: 'testing')] - build job: 'psmdb70-aarch64-build', parameters: [string(name: 'GIT_BRANCH', value: BRANCH_NAME), string(name: 'PSMDB_VERSION', value: VERSION), string(name: 'PSMDB_RELEASE', value: RELEASE), string(name: 'MONGO_TOOLS_TAG', value: MONGO_TOOLS_TAG), string(name: 'COMPONENT', value: 'testing')] + build job: 'hetzner-psmdb70-autobuild-RELEASE', parameters: [string(name: 'CLOUD', value: CLOUD), string(name: 'GIT_BRANCH', value: BRANCH_NAME), string(name: 'PSMDB_VERSION', value: VERSION), string(name: 'PSMDB_RELEASE', value: RELEASE), string(name: 'MONGO_TOOLS_TAG', value: MONGO_TOOLS_TAG), string(name: 'COMPONENT', value: 'testing')] build job: 'psmdb-multijob-testing', propagate: false, wait: false, parameters: [string(name: 'PSMDB_VERSION', value: VERSION), string(name: 'PSMDB_RELEASE', value: RELEASE)] } } diff --git a/psmdb/jenkins/get-psmdb-branches-7.0.yml b/psmdb/jenkins/get-psmdb-branches-7.0.yml index b903634d6a..df9c78f535 100644 --- a/psmdb/jenkins/get-psmdb-branches-7.0.yml +++ b/psmdb/jenkins/get-psmdb-branches-7.0.yml @@ -1,5 +1,5 @@ - job: - name: psmdb70-autobuild + name: hetzner-psmdb70-autobuild project-type: pipeline description: | Do not edit this job through the web! @@ -9,7 +9,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: psmdb/jenkins/get-psmdb-branches-7.0.groovy diff --git a/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy index fbebc19f07..d2e3c5ec21 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy @@ -6,7 +6,9 @@ library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ void buildStage(String DOCKER_OS, String STAGE_PARAM) { sh """ set -o xtrace - mkdir test + ls -laR ./ + rm -rf test/* + mkdir -p test wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/percona-packaging/scripts/psmdb_builder.sh -O psmdb_builder.sh pwd -P ls -laR @@ -159,7 +161,6 @@ pipeline { } } pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) - uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 8(aarch64)') { @@ -177,7 +178,6 @@ pipeline { } } pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) - uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9(x86_64)') { @@ -195,7 +195,6 @@ pipeline { } } pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) - uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9(aarch64)') { @@ -213,7 +212,40 @@ pipeline { } } pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) - uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Amazon Linux 2023(x86_64)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + script { + if (env.FIPSMODE == 'yes') { + buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") + } else { + buildStage("amazonlinux:2023", "--build_rpm=1") + } + } + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Amazon Linux 2023(aarch64)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + script { + if (env.FIPSMODE == 'yes') { + buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") + } else { + buildStage("amazonlinux:2023", "--build_rpm=1") + } + } + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)(x86_64)') { @@ -231,7 +263,6 @@ pipeline { } } pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)(aarch64)') { @@ -249,7 +280,6 @@ pipeline { } } pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)(x86_64)') { @@ -267,7 +297,6 @@ pipeline { } } pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)(aarch64)') { @@ -285,7 +314,6 @@ pipeline { } } pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)(x86_64)') { @@ -303,7 +331,6 @@ pipeline { } } pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)(aarch64)') { @@ -321,7 +348,6 @@ pipeline { } } pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bookworm(12)') { @@ -339,7 +365,6 @@ pipeline { } } pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Oracle Linux 8 binary tarball(glibc2.28)') { @@ -356,7 +381,6 @@ pipeline { buildStage("oraclelinux:8", "--build_tarball=1") } pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) - uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } } @@ -374,7 +398,23 @@ pipeline { buildStage("oraclelinux:9", "--build_tarball=1") } pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) - uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') + } + } + } + stage('Amazon Linux 2023 binary tarball(glibc2.34)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + script { + if (env.FIPSMODE == 'yes') { + buildStage("amazonlinux:2023", "--build_tarball=1 --enable_fipsmode=1") + } else { + buildStage("amazonlinux:2023", "--build_tarball=1") + } + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -390,7 +430,6 @@ pipeline { popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_tarball=1") pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) - uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } stage('Ubuntu Jammy(22.04) binary tarball(glibc2.35)') { @@ -407,7 +446,6 @@ pipeline { buildStage("ubuntu:jammy", "--build_tarball=1") } pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) - uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } } @@ -425,7 +463,6 @@ pipeline { buildStage("ubuntu:noble", "--build_tarball=1") } pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) - uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } } @@ -441,7 +478,6 @@ pipeline { popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_tarball=1") pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) - uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } stage('Debian Bookworm(12) binary tarball(glibc2.36)') { @@ -458,13 +494,25 @@ pipeline { buildStage("debian:bookworm", "--build_tarball=1") } pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) - uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } } } } + stage('Upload packages and tarballs from S3') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' + } + steps { + cleanUpWS() + + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') + } + } + stage('Sign packages') { steps { signRPM() From 0470bf0b062895904f5b78bba7e8534c2b05fd9c Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Mon, 3 Feb 2025 16:19:22 +0200 Subject: [PATCH 026/269] PKG-434 psmdb.cd: adjust cli connect/read timeouts --- vars/popArtifactFolder.groovy | 2 +- vars/pushArtifactFolder.groovy | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/vars/popArtifactFolder.groovy b/vars/popArtifactFolder.groovy index bfbf6a20da..a57a94e2ff 100644 --- a/vars/popArtifactFolder.groovy +++ b/vars/popArtifactFolder.groovy @@ -5,7 +5,7 @@ def call(String CLOUD_NAME, String FOLDER_NAME, String AWS_STASH_PATH) { sh """ pwd S3_PATH=s3://percona-jenkins-artifactory/${AWS_STASH_PATH} - aws s3 cp --recursive \$S3_PATH/${FOLDER_NAME} ${FOLDER_NAME} ${S3_ENDPOINT} || : + AWS_RETRY_MODE=standard AWS_MAX_ATTEMPTS=10 aws s3 cp --recursive \$S3_PATH/${FOLDER_NAME} ${FOLDER_NAME} ${S3_ENDPOINT} --cli-connect-timeout 60 --cli-read-timeout 120 || : """ } } diff --git a/vars/pushArtifactFolder.groovy b/vars/pushArtifactFolder.groovy index 7241ad110a..617e383c41 100644 --- a/vars/pushArtifactFolder.groovy +++ b/vars/pushArtifactFolder.groovy @@ -6,7 +6,7 @@ def call(String CLOUD_NAME, String FOLDER_NAME, String AWS_STASH_PATH) { pwd S3_PATH=s3://percona-jenkins-artifactory/${AWS_STASH_PATH} aws s3 ls \$S3_PATH/${FOLDER_NAME} ${S3_ENDPOINT} || : - aws s3 cp --recursive ${FOLDER_NAME} \$S3_PATH/${FOLDER_NAME} ${S3_ENDPOINT} || : + AWS_RETRY_MODE=standard AWS_MAX_ATTEMPTS=10 aws s3 cp --recursive ${FOLDER_NAME} \$S3_PATH/${FOLDER_NAME} ${S3_ENDPOINT} --cli-connect-timeout 60 --cli-read-timeout 120 || : """ } } From 8657a924c91ff2ea26fa44bf265d310a9473a89b Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Tue, 4 Feb 2025 06:58:25 +0200 Subject: [PATCH 027/269] PKG-412 psmdb-70: pipeline fixups --- psmdb/jenkins/percona-server-for-mongodb-7.0.groovy | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy index d2e3c5ec21..8e05d6bdbe 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy @@ -524,9 +524,9 @@ pipeline { // sync packages script { if (env.FIPSMODE == 'yes') { - sync2PrivateProdAutoBuild(PSMDB_REPO+"-pro", COMPONENT) + sync2PrivateProdAutoBuild(params.CLOUD, PSMDB_REPO+"-pro", COMPONENT) } else { - sync2ProdAutoBuild(PSMDB_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PSMDB_REPO, COMPONENT) } } } @@ -536,7 +536,7 @@ pipeline { script { if (env.FIPSMODE == 'yes') { try { - uploadTarballToDownloadsTesting("psmdb-gated", "${PSMDB_VERSION}") + uploadTarballToDownloadsTesting(params.CLOUD, "psmdb-gated", "${PSMDB_VERSION}") } catch (err) { echo "Caught: ${err}" @@ -544,7 +544,7 @@ pipeline { } } else { try { - uploadTarballToDownloadsTesting("psmdb", "${PSMDB_VERSION}") + uploadTarballToDownloadsTesting(params.CLOUD, "psmdb", "${PSMDB_VERSION}") } catch (err) { echo "Caught: ${err}" From f7e0f9f636c362acdd57ab6a8229c0afc428f5ee Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Tue, 4 Feb 2025 13:34:32 +0200 Subject: [PATCH 028/269] PKG-412 psmdb-70: re-add stage for deb bullseye --- .../percona-server-for-mongodb-7.0.groovy | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy index 8e05d6bdbe..6b2f94d7a1 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy @@ -350,7 +350,24 @@ pipeline { pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian Bookworm(12)') { + stage('Debian Bullseye(11)(x86_64)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + script { + if (env.FIPSMODE == 'yes') { + buildStage("debian:bullseye", "--build_deb=1 --enable_fipsmode=1") + } else { + buildStage("debian:bullseye", "--build_deb=1") + } + } + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bookworm(12)(x86_64)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } From b40a8ac799d11c1d3e4816a6bb83f718e8da0a7f Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Tue, 4 Feb 2025 15:30:41 +0200 Subject: [PATCH 029/269] PKG-412 psmdb-70: stage labels fixup --- psmdb/jenkins/percona-server-for-mongodb-7.0.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy index 6b2f94d7a1..875680d072 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy @@ -488,7 +488,7 @@ pipeline { expression { env.FIPSMODE != 'yes' } } agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() From 655cec97afd84b70d0eb5a7ca9e688036416c04b Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Thu, 6 Feb 2025 17:15:08 +0200 Subject: [PATCH 030/269] PKG-469 rel.cd: add Hetzner cloud configuration --- IaC/rel.cd/init.groovy.d/htz.cloud.groovy | 179 ++++++++++++++++++++++ 1 file changed, 179 insertions(+) create mode 100644 IaC/rel.cd/init.groovy.d/htz.cloud.groovy diff --git a/IaC/rel.cd/init.groovy.d/htz.cloud.groovy b/IaC/rel.cd/init.groovy.d/htz.cloud.groovy new file mode 100644 index 0000000000..754e23b0fe --- /dev/null +++ b/IaC/rel.cd/init.groovy.d/htz.cloud.groovy @@ -0,0 +1,179 @@ +import cloud.dnation.jenkins.plugins.hetzner.* +import cloud.dnation.jenkins.plugins.hetzner.launcher.* +import hudson.model.* +import jenkins.model.Jenkins +import java.util.logging.Logger + +def cloudName = "rel-htz" + +imageMap = [:] // ID TYPE NAME DESCRIPTION ARCHITECTURE IMAGE SIZE DISK SIZE CREATED DEPRECATED +imageMap['deb12-x64'] = '114690387' // 114690387 system debian-12 Debian 12 x86 - 5 GB Tue Jun 13 09:00:02 EEST 2023 - +imageMap['deb12-aarch64'] = '114690389' // 114690389 system debian-12 Debian 12 arm - 5 GB Tue Jun 13 09:00:03 EEST 2023 - +imageMap['launcher-x64'] = imageMap['deb12-x64'] + +execMap = [:] +execMap['deb'] = 1 +execMap['deb12-x64-nbg1'] = execMap['deb'] +execMap['deb12-x64-hel1'] = execMap['deb'] +execMap['deb12-x64-fsn1'] = execMap['deb'] +execMap['deb12-aarch64-nbg1'] = execMap['deb'] +execMap['deb12-aarch64-hel1'] = execMap['deb'] +execMap['deb12-aarch64-fsn1'] = execMap['deb'] +execMap['deb12-x64-nbg1-min'] = execMap['deb'] +execMap['deb12-x64-hel1-min'] = execMap['deb'] +execMap['deb12-x64-fsn1-min'] = execMap['deb'] +execMap['deb12-aarch64-nbg1-min'] = execMap['deb'] +execMap['deb12-aarch64-hel1-min'] = execMap['deb'] +execMap['deb12-aarch64-fsn1-min'] = execMap['deb'] +execMap['launcher-x64-fsn1'] = 10 + +bootDeadlineMap =[:] +bootDeadlineMap['default'] = 3 +bootDeadlineMap['deb12-x64-nbg1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-hel1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-fsn1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-nbg1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-hel1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-fsn1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-nbg1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-hel1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-fsn1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-nbg1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-hel1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-fsn1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['launcher-x64-fsn1'] = bootDeadlineMap['default'] + +jvmOptsMap = [:] +jvmOptsMap['deb12'] = '-Xmx512m -Xms512m --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED' +jvmOptsMap['deb12-x64-nbg1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-hel1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-fsn1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-nbg1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-hel1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-fsn1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-nbg1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-hel1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-fsn1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-nbg1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-hel1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-fsn1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['launcher-x64-fsn1'] = jvmOptsMap['deb12'] + +labelMap = [:] +labelMap['deb12-x64-min'] = 'docker-x64-min docker-deb12-x64-min deb12-x64-min' +labelMap['deb12-aarch64-min'] = 'docker-aarch64-min docker-deb12-aarch64-min deb12-aarch64-min' +labelMap['deb12-x64'] = 'docker-x64 docker-deb12-x64 deb12-x64' +labelMap['deb12-aarch64'] = 'docker-aarch64 docker-deb12-aarch64 deb12-aarch64' +labelMap['launcher-x64'] = 'launcher-x64' + +networkMap = [:] +networkMap['percona-vpc-eu'] = '10442325' // percona-vpc-eu + +initMap = [:] +initMap['deb-docker'] = '''#!/bin/bash -x + set -o xtrace + sudo fallocate -l 32G /swapfile + sudo chmod 600 /swapfile + sudo mkswap /swapfile + sudo swapon /swapfile + + export DEBIAN_FRONTEND=noninteractive + until sudo apt-get update; do + sleep 1 + echo try again + done + until sudo apt-get -y install openjdk-17-jre-headless apt-transport-https ca-certificates curl gnupg lsb-release unzip git; do + sleep 1 + echo try again + done + curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg + echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null + until sudo apt-get update; do + sleep 1 + echo try again + done + until sudo apt-get -y install docker-ce docker-ce-cli containerd.io; do + sleep 1 + echo try again + done + if ! $(aws --version | grep -q 'aws-cli/2'); then + find /tmp -maxdepth 1 -name "*aws*" | xargs sudo rm -rf + until curl "https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m)-2.22.35.zip" -o "/tmp/awscliv2.zip"; do + sleep 1 + echo try again + done + unzip -o /tmp/awscliv2.zip -d /tmp + cd /tmp/aws && sudo ./install + fi + sudo install -o $(id -u -n) -g $(id -g -n) -d /mnt/jenkins + sudo sysctl net.ipv4.tcp_fin_timeout=15 + sudo sysctl net.ipv4.tcp_tw_reuse=1 + sudo sysctl net.ipv6.conf.all.disable_ipv6=1 + sudo sysctl net.ipv6.conf.default.disable_ipv6=1 + sudo sysctl -w fs.inotify.max_user_watches=10000000 || true + sudo sysctl -w fs.aio-max-nr=1048576 || true + sudo sysctl -w fs.file-max=6815744 || true + echo "* soft core unlimited" | sudo tee -a /etc/security/limits.conf + sudo sed -i.bak -e 's^ExecStart=.*^ExecStart=/usr/bin/dockerd --data-root=/mnt/docker --default-ulimit nofile=900000:900000^' /lib/systemd/system/docker.service + sudo systemctl daemon-reload + sudo install -o root -g root -d /mnt/docker + sudo usermod -aG docker $(id -u -n) + sudo mkdir -p /etc/docker + echo '{"experimental": true, "ipv6": true, "fixed-cidr-v6": "fd3c:a8b0:18eb:5c06::/64"}' | sudo tee /etc/docker/daemon.json + sudo systemctl restart docker + echo "* * * * * root /usr/sbin/route add default gw 10.177.1.1 eth0" | sudo tee /etc/cron.d/fix-default-route +''' +initMap['deb12-x64-nbg1'] = initMap['deb-docker'] +initMap['deb12-x64-hel1'] = initMap['deb-docker'] +initMap['deb12-x64-fsn1'] = initMap['deb-docker'] +initMap['deb12-aarch64-nbg1'] = initMap['deb-docker'] +initMap['deb12-aarch64-hel1'] = initMap['deb-docker'] +initMap['deb12-aarch64-fsn1'] = initMap['deb-docker'] +initMap['deb12-x64-nbg1-min'] = initMap['deb-docker'] +initMap['deb12-x64-hel1-min'] = initMap['deb-docker'] +initMap['deb12-x64-fsn1-min'] = initMap['deb-docker'] +initMap['deb12-aarch64-nbg1-min'] = initMap['deb-docker'] +initMap['deb12-aarch64-hel1-min'] = initMap['deb-docker'] +initMap['deb12-aarch64-fsn1-min'] = initMap['deb-docker'] +initMap['launcher-x64-fsn1'] = initMap['deb-docker'] + +def templates = [ + /* new HetznerServerTemplate("ubuntu20-cx21", "java", "name=ubuntu20-docker", "fsn1", "cx21"), */ + // tmplName tmplLabels tmplImage region server type + new HetznerServerTemplate("deb12-x64-nbg1-min", labelMap['deb12-x64-min'], imageMap['deb12-x64'], "nbg1", "cpx41"), + new HetznerServerTemplate("deb12-aarch64-nbg1-min", labelMap['deb12-aarch64-min'], imageMap['deb12-aarch64'], "nbg1", "cax31"), + new HetznerServerTemplate("deb12-x64-hel1-min", labelMap['deb12-x64-min'], imageMap['deb12-x64'], "hel1", "cpx41"), + new HetznerServerTemplate("deb12-aarch64-hel1-min", labelMap['deb12-aarch64-min'], imageMap['deb12-aarch64'], "hel1", "cax31"), + new HetznerServerTemplate("deb12-x64-fsn1-min", labelMap['deb12-x64-min'], imageMap['deb12-x64'], "fsn1", "cpx41"), + new HetznerServerTemplate("deb12-aarch64-fsn1-min", labelMap['deb12-aarch64-min'], imageMap['deb12-aarch64'], "fsn1", "cax31"), + new HetznerServerTemplate("deb12-x64-nbg1", labelMap['deb12-x64'], imageMap['deb12-x64'], "nbg1", "cpx51"), + new HetznerServerTemplate("deb12-aarch64-nbg1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "nbg1", "cax41"), + new HetznerServerTemplate("deb12-x64-hel1", labelMap['deb12-x64'], imageMap['deb12-x64'], "hel1", "cpx51"), + new HetznerServerTemplate("deb12-aarch64-hel1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "hel1", "cax41"), + new HetznerServerTemplate("deb12-x64-fsn1", labelMap['deb12-x64'], imageMap['deb12-x64'], "fsn1", "cpx51"), + new HetznerServerTemplate("deb12-aarch64-fsn1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "fsn1", "cax41"), + new HetznerServerTemplate("launcher-x64-fsn1", labelMap['launcher-x64'], imageMap['launcher-x64'], "fsn1", "cpx21") +] + +templates.each { it -> + def sshConnector = new SshConnectorAsRoot("htz.cd.key") + sshConnector.setConnectionMethod(new PublicAddressOnly()) // Replace with the desired method + it.setConnector(sshConnector) + // it.setConnector(new SshConnectorAsRoot("hz.psmdb.cd")) + def tmplName = it.name + it.setNumExecutors(execMap[tmplName]) + it.bootDeadline = bootDeadlineMap[tmplName] + it.remoteFs = "/mnt/jenkins/" + it.jvmOpts = jvmOptsMap[tmplName] + it.network = networkMap['percona-vpc-eu'] + it.userData = initMap[tmplName] + } + +// public HetznerCloud(String name, String credentialsId, String instanceCapStr, List serverTemplates) +def cloud = new HetznerCloud(cloudName, "htz.cd.token", "100", templates) + +def jenkins = Jenkins.get() + +jenkins.clouds.remove(jenkins.clouds.getByName(cloudName)) +jenkins.clouds.add(cloud) +jenkins.save() From d2f37a8a5522f904e00c2cefb9800444fb07821f Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Fri, 7 Feb 2025 14:29:11 +0200 Subject: [PATCH 031/269] PKG-352 psmdb-80: adjust pipeline code. --- psmdb/jenkins/get-psmdb-branches-8.0.groovy | 25 ++- psmdb/jenkins/get-psmdb-branches-8.0.yml | 4 +- .../percona-server-for-mongodb-8.0.groovy | 175 +++++++++++------- 3 files changed, 128 insertions(+), 76 deletions(-) diff --git a/psmdb/jenkins/get-psmdb-branches-8.0.groovy b/psmdb/jenkins/get-psmdb-branches-8.0.groovy index 0445905748..55668f8ce5 100644 --- a/psmdb/jenkins/get-psmdb-branches-8.0.groovy +++ b/psmdb/jenkins/get-psmdb-branches-8.0.groovy @@ -1,13 +1,17 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'launcher-x64' : 'micro-amazon' } parameters { + choice( + choices: ['Hetzner','AWS'], + description: 'Cloud infra for build', + name: 'CLOUD') string( defaultValue: 'https://github.com/percona/percona-server-mongodb.git', description: 'URL for percona-server-for-mongodb repository', @@ -22,10 +26,13 @@ pipeline { stages { stage('Get release branches') { steps { - withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: 'AWS_STASH', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { + script { + String S3_STASH = (params.CLOUD == 'Hetzner') ? 'HTZ_STASH' : 'AWS_STASH' + String S3_ENDPOINT = (params.CLOUD == 'Hetzner') ? '--endpoint-url https://fsn1.your-objectstorage.com' : '--endpoint-url https://s3.amazonaws.com' + withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: S3_STASH, secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { sh """ EC=0 - aws s3 ls s3://percona-jenkins-artifactory/percona-server-mongodb/branch_commit_id_80.properties || EC=\$? + AWS_RETRY_MODE=standard AWS_MAX_ATTEMPTS=10 aws s3 ls s3://percona-jenkins-artifactory/percona-server-mongodb/branch_commit_id_80.properties ${S3_ENDPOINT} --cli-connect-timeout 60 --cli-read-timeout 120 || EC=\$? if [ \${EC} = 1 ]; then LATEST_RELEASE_BRANCH=\$(git -c 'versionsort.suffix=-' ls-remote --heads --sort='v:refname' ${GIT_REPO} release-8.0\\* | tail -1) @@ -38,10 +45,10 @@ pipeline { echo "COMMIT_ID=\${COMMIT_ID}" >> branch_commit_id_80.properties echo "MONGO_TOOLS_TAG=\${MONGO_TOOLS_TAG}" >> branch_commit_id_80.properties - aws s3 cp branch_commit_id_80.properties s3://percona-jenkins-artifactory/percona-server-mongodb/ + AWS_RETRY_MODE=standard AWS_MAX_ATTEMPTS=10 aws s3 cp branch_commit_id_80.properties s3://percona-jenkins-artifactory/percona-server-mongodb/ ${S3_ENDPOINT} --cli-connect-timeout 60 --cli-read-timeout 120 echo "START_NEW_BUILD=NO" > startBuild else - aws s3 cp s3://percona-jenkins-artifactory/percona-server-mongodb/branch_commit_id_80.properties . + AWS_RETRY_MODE=standard AWS_MAX_ATTEMPTS=10 aws s3 cp s3://percona-jenkins-artifactory/percona-server-mongodb/branch_commit_id_80.properties . ${S3_ENDPOINT} --cli-connect-timeout 60 --cli-read-timeout 120 source branch_commit_id_80.properties LATEST_RELEASE_BRANCH=\$(git -c 'versionsort.suffix=-' ls-remote --heads --sort='v:refname' ${GIT_REPO} release-8.0\\* | tail -1) @@ -59,11 +66,10 @@ pipeline { echo "BRANCH_NAME=\${LATEST_BRANCH_NAME}" > branch_commit_id_80.properties echo "COMMIT_ID=\${LATEST_COMMIT_ID}" >> branch_commit_id_80.properties echo "MONGO_TOOLS_TAG=\${MONGO_TOOLS_TAG}" >> branch_commit_id_80.properties - aws s3 cp branch_commit_id_80.properties s3://percona-jenkins-artifactory/percona-server-mongodb/ + AWS_RETRY_MODE=standard AWS_MAX_ATTEMPTS=10 aws s3 cp branch_commit_id_80.properties s3://percona-jenkins-artifactory/percona-server-mongodb/ ${S3_ENDPOINT} --cli-connect-timeout 60 --cli-read-timeout 120 fi """ } - script { START_NEW_BUILD = sh(returnStdout: true, script: "source startBuild; echo \${START_NEW_BUILD}").trim() BRANCH_NAME = sh(returnStdout: true, script: "source branch_commit_id_80.properties; echo \${BRANCH_NAME}").trim() COMMIT_ID = sh(returnStdout: true, script: "source branch_commit_id_80.properties; echo \${COMMIT_ID}").trim() @@ -86,8 +92,7 @@ pipeline { """ } slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: new changes for branch ${BRANCH_NAME}[commit id: ${COMMIT_ID}] were detected, build will be started soon") - build job: 'psmdb80-autobuild-RELEASE', parameters: [string(name: 'GIT_BRANCH', value: BRANCH_NAME), string(name: 'PSMDB_VERSION', value: VERSION), string(name: 'PSMDB_RELEASE', value: RELEASE), string(name: 'MONGO_TOOLS_TAG', value: MONGO_TOOLS_TAG), string(name: 'COMPONENT', value: 'testing')] - build job: 'psmdb80-aarch64-build', parameters: [string(name: 'GIT_BRANCH', value: BRANCH_NAME), string(name: 'PSMDB_VERSION', value: VERSION), string(name: 'PSMDB_RELEASE', value: RELEASE), string(name: 'MONGO_TOOLS_TAG', value: MONGO_TOOLS_TAG), string(name: 'COMPONENT', value: 'testing')] + build job: 'hetzner-psmdb80-autobuild-RELEASE', parameters: [string(name: 'CLOUD', value: CLOUD), string(name: 'GIT_BRANCH', value: BRANCH_NAME), string(name: 'PSMDB_VERSION', value: VERSION), string(name: 'PSMDB_RELEASE', value: RELEASE), string(name: 'MONGO_TOOLS_TAG', value: MONGO_TOOLS_TAG), string(name: 'COMPONENT', value: 'testing')] build job: 'psmdb-multijob-testing', propagate: false, wait: false, parameters: [string(name: 'PSMDB_VERSION', value: VERSION), string(name: 'PSMDB_RELEASE', value: RELEASE)] } } diff --git a/psmdb/jenkins/get-psmdb-branches-8.0.yml b/psmdb/jenkins/get-psmdb-branches-8.0.yml index 7c1ad0e1fb..e173237f61 100644 --- a/psmdb/jenkins/get-psmdb-branches-8.0.yml +++ b/psmdb/jenkins/get-psmdb-branches-8.0.yml @@ -1,5 +1,5 @@ - job: - name: psmdb80-autobuild + name: hetzner-psmdb80-autobuild project-type: pipeline description: | Do not edit this job through the web! @@ -9,7 +9,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: psmdb/jenkins/get-psmdb-branches-8.0.groovy diff --git a/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy index dddb3349ec..7f2ad41c4d 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy @@ -97,8 +97,8 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build PSMDB generic source packages') { @@ -109,7 +109,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("oraclelinux:8", "--build_src_rpm=1 --enable_fipsmode=1") @@ -118,8 +118,8 @@ pipeline { } } - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build PSMDB generic source deb') { @@ -128,7 +128,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("ubuntu:focal", "--build_src_deb=1 --enable_fipsmode=1") @@ -136,8 +136,8 @@ pipeline { buildStage("ubuntu:focal", "--build_src_deb=1") } } - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -150,7 +150,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("oraclelinux:8", "--build_rpm=1 --enable_fipsmode=1") @@ -158,8 +158,7 @@ pipeline { buildStage("oraclelinux:8", "--build_rpm=1") } } - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 8(aarch64)') { @@ -168,7 +167,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("oraclelinux:8", "--build_rpm=1 --enable_fipsmode=1") @@ -176,8 +175,7 @@ pipeline { buildStage("oraclelinux:8", "--build_rpm=1") } } - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9(x86_64)') { @@ -186,7 +184,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("oraclelinux:9", "--build_rpm=1 --enable_fipsmode=1") @@ -194,8 +192,7 @@ pipeline { buildStage("oraclelinux:9", "--build_rpm=1") } } - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9(aarch64)') { @@ -204,7 +201,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("oraclelinux:9", "--build_rpm=1 --enable_fipsmode=1") @@ -212,8 +209,41 @@ pipeline { buildStage("oraclelinux:9", "--build_rpm=1") } } - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Amazon Linux 2023(x86_64)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + script { + if (env.FIPSMODE == 'yes') { + buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") + } else { + buildStage("amazonlinux:2023", "--build_rpm=1") + } + } + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Amazon Linux 2023(aarch64)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + script { + if (env.FIPSMODE == 'yes') { + buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") + } else { + buildStage("amazonlinux:2023", "--build_rpm=1") + } + } + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)(x86_64)') { @@ -222,7 +252,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("ubuntu:focal", "--build_deb=1 --enable_fipsmode=1") @@ -230,8 +260,7 @@ pipeline { buildStage("ubuntu:focal", "--build_deb=1") } } - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)(aarch64)') { @@ -240,7 +269,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("ubuntu:focal", "--build_deb=1 --enable_fipsmode=1") @@ -248,8 +277,7 @@ pipeline { buildStage("ubuntu:focal", "--build_deb=1") } } - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)(x86_64)') { @@ -258,7 +286,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("ubuntu:jammy", "--build_deb=1 --enable_fipsmode=1") @@ -266,8 +294,7 @@ pipeline { buildStage("ubuntu:jammy", "--build_deb=1") } } - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)(aarch64)') { @@ -276,7 +303,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("ubuntu:jammy", "--build_deb=1 --enable_fipsmode=1") @@ -284,8 +311,7 @@ pipeline { buildStage("ubuntu:jammy", "--build_deb=1") } } - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)(x86_64)') { @@ -294,7 +320,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("ubuntu:noble", "--build_deb=1 --enable_fipsmode=1") @@ -302,8 +328,7 @@ pipeline { buildStage("ubuntu:noble", "--build_deb=1") } } - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)(aarch64)') { @@ -312,7 +337,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("ubuntu:noble", "--build_deb=1 --enable_fipsmode=1") @@ -320,17 +345,16 @@ pipeline { buildStage("ubuntu:noble", "--build_deb=1") } } - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian Bookworm(12)') { + stage('Debian Bookworm(12)(x86_64)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("debian:bookworm", "--build_deb=1 --enable_fipsmode=1") @@ -338,8 +362,7 @@ pipeline { buildStage("debian:bookworm", "--build_deb=1") } } - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Oracle Linux 8 binary tarball(glibc2.28)') { @@ -348,15 +371,14 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("oraclelinux:8", "--build_tarball=1 --enable_fipsmode=1") } else { buildStage("oraclelinux:8", "--build_tarball=1") } - pushArtifactFolder("tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -366,15 +388,31 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("oraclelinux:9", "--build_tarball=1 --enable_fipsmode=1") } else { buildStage("oraclelinux:9", "--build_tarball=1") } - pushArtifactFolder("tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) + } + } + } + stage('Amazon Linux 2023 binary tarball(glibc2.34)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + script { + if (env.FIPSMODE == 'yes') { + buildStage("amazonlinux:2023", "--build_tarball=1 --enable_fipsmode=1") + } else { + buildStage("amazonlinux:2023", "--build_tarball=1") + } + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -384,15 +422,14 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("ubuntu:focal", "--build_tarball=1 --enable_fipsmode=1") } else { buildStage("ubuntu:focal", "--build_tarball=1") } - pushArtifactFolder("tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -402,15 +439,14 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("ubuntu:jammy", "--build_tarball=1 --enable_fipsmode=1") } else { buildStage("ubuntu:jammy", "--build_tarball=1") } - pushArtifactFolder("tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -420,15 +456,14 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("ubuntu:noble", "--build_tarball=1 --enable_fipsmode=1") } else { buildStage("ubuntu:noble", "--build_tarball=1") } - pushArtifactFolder("tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -438,21 +473,33 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'yes') { buildStage("debian:bookworm", "--build_tarball=1 --enable_fipsmode=1") } else { buildStage("debian:bookworm", "--build_tarball=1") } - pushArtifactFolder("tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } } } + stage('Upload packages and tarballs from S3') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' + } + steps { + cleanUpWS() + + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') + } + } + stage('Sign packages') { steps { signRPM() @@ -464,9 +511,9 @@ pipeline { // sync packages script { if (env.FIPSMODE == 'yes') { - sync2PrivateProdAutoBuild(PSMDB_REPO+"-pro", COMPONENT) + sync2PrivateProdAutoBuild(params.CLOUD, PSMDB_REPO+"-pro", COMPONENT) } else { - sync2ProdAutoBuild(PSMDB_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PSMDB_REPO, COMPONENT) } } } @@ -476,7 +523,7 @@ pipeline { script { if (env.FIPSMODE == 'yes') { try { - uploadTarballToDownloadsTesting("psmdb-gated", "${PSMDB_VERSION}") + uploadTarballToDownloadsTesting(params.CLOUD, "psmdb-gated", "${PSMDB_VERSION}") } catch (err) { echo "Caught: ${err}" @@ -484,7 +531,7 @@ pipeline { } } else { try { - uploadTarballToDownloadsTesting("psmdb", "${PSMDB_VERSION}") + uploadTarballToDownloadsTesting(params.CLOUD, "psmdb", "${PSMDB_VERSION}") } catch (err) { echo "Caught: ${err}" From 2539e49c4e87a15b0ba3299a9e2bd7b80d5ba51e Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Mon, 10 Feb 2025 16:03:24 +0200 Subject: [PATCH 032/269] Update jobs to use hetzner (#3141) * Update jobs to use hetzner * Fix duplicates * Fix pg jobs * Fix names in some jobs * Fix params in mongo jobs * Fix vars * PKG-476 rel.cd: fixups for build in hetzner (#3145) --------- Co-authored-by: Oleksandr Miroshnychenko --- .../jenkins/orchestrator-packaging.groovy | 108 ++++++------ .../jenkins/orchestrator-packaging.yml | 4 +- pbm/pbm-release-test-run.groovy | 8 +- pbm/pbm-release-test-run.yml | 4 +- pdps/perl-DBD-Mysql.groovy | 108 ++++++------ pdps/perl-DBD-Mysql.yml | 4 +- pdpxc/percona-replication-manager.groovy | 116 ++++++------- pdpxc/percona-replication-manager.yml | 4 +- .../jenkins/percona-release.groovy | 40 +++-- percona-release/jenkins/percona-release.yml | 4 +- .../percona-telemetry-agent.groovy | 122 +++++++------- .../percona-telemetry-agent.yml | 4 +- ppg/etcd.groovy | 66 ++++---- ppg/etcd.yml | 4 +- ppg/haproxy.groovy | 108 ++++++------ ppg/haproxy.yml | 4 +- ppg/llvm.groovy | 24 +-- ppg/llvm.yml | 4 +- ppg/patroni.groovy | 66 ++++---- ppg/patroni.yml | 4 +- ppg/percona-postgis.groovy | 66 ++++---- ppg/percona-postgis.yml | 4 +- ppg/pg_cron.groovy | 66 ++++---- ppg/pg_cron.yml | 4 +- ppg/pg_gather.groovy | 66 ++++---- ppg/pg_gather.yml | 4 +- ppg/pg_percona_telemetry_autobuild.groovy | 50 +++--- ppg/pg_percona_telemetry_autobuild.yml | 4 +- ppg/pg_source_tarballs.groovy | 42 ++--- ppg/pg_source_tarballs.yml | 4 +- ppg/pg_stat_monitor-autobuild.groovy | 48 +++--- ppg/pg_stat_monitor-autobuild.yml | 4 +- ppg/pg_tarballs.groovy | 72 ++++---- ppg/pg_tarballs.yml | 4 +- ppg/pg_tde.groovy | 66 ++++---- ppg/pg_tde.yml | 4 +- ppg/pgaudit.groovy | 66 ++++---- ppg/pgaudit.yml | 4 +- ppg/pgaudit_set_user.groovy | 66 ++++---- ppg/pgaudit_set_user.yml | 4 +- ppg/pgbackrest.groovy | 66 ++++---- ppg/pgbackrest.yml | 4 +- ppg/pgbadger.groovy | 66 ++++---- ppg/pgbadger.yml | 4 +- ppg/pgbouncer.groovy | 66 ++++---- ppg/pgbouncer.yml | 4 +- ppg/pgpool2-build-RELEASE.yml | 4 +- ppg/pgpool2-build.groovy | 48 +++--- ppg/pgrepack.groovy | 66 ++++---- ppg/pgrepack.yml | 4 +- ppg/pgvector.groovy | 66 ++++---- ppg/pgvector.yml | 4 +- ppg/postgis_tarballs.groovy | 44 ++--- ppg/postgis_tarballs.yml | 4 +- ppg/postgresql-common.groovy | 66 ++++---- ppg/postgresql-common.yml | 4 +- ppg/postgresql_server.groovy | 66 ++++---- ppg/postgresql_server.yml | 4 +- ppg/ppg-server-ha.groovy | 66 ++++---- ppg/ppg-server-ha.yml | 4 +- ppg/ppg-server.groovy | 66 ++++---- ppg/ppg-server.yml | 4 +- ppg/ppg_release.groovy | 12 +- ppg/ppg_release.yml | 2 +- ppg/pysyncobj.groovy | 66 ++++---- ppg/pysyncobj.yml | 4 +- ppg/timescaledb.groovy | 66 ++++---- ppg/timescaledb.yml | 4 +- ppg/wal2json.groovy | 66 ++++---- ppg/wal2json.yml | 4 +- ppg/ydiff.groovy | 66 ++++---- ppg/ydiff.yml | 4 +- proxysql/proxysql.groovy | 120 +++++++------- proxysql/proxysql.yml | 4 +- ps/jenkins/jemalloc.groovy | 112 +++++++------ ps/jenkins/jemalloc.yml | 4 +- ps/jenkins/mysql-shell.groovy | 132 ++++++++------- ps/jenkins/mysql-shell.yml | 4 +- .../percona-server-for-mysql-5.7.groovy | 82 ++++----- ps/jenkins/percona-server-for-mysql-5.7.yml | 4 +- .../percona-server-for-mysql-8.0-arm.groovy | 84 +++++----- .../percona-server-for-mysql-8.0-arm.yml | 4 +- .../percona-server-for-mysql-8.0.groovy | 98 +++++------ ps/jenkins/percona-server-for-mysql-8.0.yml | 4 +- .../percona-server-for-mysql-9.0.groovy | 88 +++++----- ps/jenkins/percona-server-for-mysql-9.0.yml | 4 +- ps/jenkins/qpress.groovy | 122 +++++++------- ps/jenkins/qpress.yml | 4 +- psmdb/jenkins/percona-mongodb-mongosh.groovy | 70 ++++---- psmdb/jenkins/percona-mongodb-mongosh.yml | 4 +- .../percona-server-for-mongodb-3.6.groovy | 70 ++++---- .../percona-server-for-mongodb-3.6.yml | 4 +- .../percona-server-for-mongodb-4.0.groovy | 64 +++---- .../percona-server-for-mongodb-4.0.yml | 4 +- .../percona-server-for-mongodb-4.2.groovy | 80 ++++----- .../percona-server-for-mongodb-4.2.yml | 4 +- .../percona-server-for-mongodb-4.4.groovy | 82 ++++----- .../percona-server-for-mongodb-4.4.yml | 4 +- .../percona-server-for-mongodb-5.0.groovy | 86 +++++----- .../percona-server-for-mongodb-5.0.yml | 4 +- .../percona-server-for-mongodb-8.0.groovy | 2 +- pt/jenkins/percona-toolkit.groovy | 114 +++++++------ pt/jenkins/percona-toolkit.yml | 4 +- pxb/jenkins/pxb-24-arm.groovy | 32 ++-- pxb/jenkins/pxb-24-arm.yml | 4 +- pxb/jenkins/pxb-24.groovy | 90 +++++----- pxb/jenkins/pxb-24.yml | 4 +- pxb/jenkins/pxb-80-arm.groovy | 68 ++++---- pxb/jenkins/pxb-80-arm.yml | 4 +- pxb/jenkins/pxb-80.groovy | 156 +++++++++--------- pxb/jenkins/pxb-80.yml | 4 +- pxc/jenkins/percona-xtradb-cluster-5.7.groovy | 110 ++++++------ pxc/jenkins/percona-xtradb-cluster-5.7.yml | 4 +- pxc/jenkins/percona-xtradb-cluster-8.0.groovy | 144 ++++++++-------- pxc/jenkins/percona-xtradb-cluster-8.0.yml | 4 +- rel/jenkins/release-from-repository.groovy | 6 +- rel/jenkins/release-from-repository.yml | 4 +- sysbench/sysbench.groovy | 108 ++++++------ sysbench/sysbench.yml | 4 +- vars/signDEB.groovy | 5 +- vars/signRPM.groovy | 5 +- vars/sync2ProdPPG.groovy | 5 +- vars/sync2web.groovy | 5 +- vars/uploadPGTarballToDownloadsTesting.groovy | 5 +- vars/uploadPGTarballfromAWS.groovy | 7 +- 125 files changed, 2482 insertions(+), 2240 deletions(-) diff --git a/orchestrator/jenkins/orchestrator-packaging.groovy b/orchestrator/jenkins/orchestrator-packaging.groovy index 8b32efd635..8ba2c7e9a7 100644 --- a/orchestrator/jenkins/orchestrator-packaging.groovy +++ b/orchestrator/jenkins/orchestrator-packaging.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -30,9 +30,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/orchestrator.git', description: 'URL for orchestrator repository', @@ -89,36 +93,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build orchestrator generic source packages') { parallel { stage('Build orchestrator generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build orchestrator generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -127,184 +131,184 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 8 ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9 ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bookworm(12)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bookworm(12) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } diff --git a/orchestrator/jenkins/orchestrator-packaging.yml b/orchestrator/jenkins/orchestrator-packaging.yml index 91a009371d..50aef7d69a 100644 --- a/orchestrator/jenkins/orchestrator-packaging.yml +++ b/orchestrator/jenkins/orchestrator-packaging.yml @@ -1,5 +1,5 @@ - job: - name: orchestrator-RELEASE + name: hetzner-orchestrator-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: orchestrator/jenkins/orchestrator-packaging.groovy diff --git a/pbm/pbm-release-test-run.groovy b/pbm/pbm-release-test-run.groovy index 8a424c3733..71a5dc7da5 100644 --- a/pbm/pbm-release-test-run.groovy +++ b/pbm/pbm-release-test-run.groovy @@ -1,16 +1,20 @@ -library changelog: false, identifier: "lib@master", retriever: modernSCM([ +library changelog: false, identifier: "lib@hetzner", retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) pipeline { agent { - label 'master' + label params.CLOUD == 'Hetzner' ? 'launcher-x64' : 'master' } environment { PATH = '/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string(name: 'PBM_VERSION', defaultValue: '2.0.5', description: 'PBM Version') string(name: 'PBM_BRANCH', defaultValue: 'release-2.0.5', description: 'PBM Branch') } diff --git a/pbm/pbm-release-test-run.yml b/pbm/pbm-release-test-run.yml index aae98ef360..b369215e88 100644 --- a/pbm/pbm-release-test-run.yml +++ b/pbm/pbm-release-test-run.yml @@ -1,5 +1,5 @@ - job: - name: pbm-release-test-run + name: hetzner-pbm-release-test-run project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: pbm/pbm-release-test-run.groovy diff --git a/pdps/perl-DBD-Mysql.groovy b/pdps/perl-DBD-Mysql.groovy index 505c8ebfe3..da80d88490 100644 --- a/pdps/perl-DBD-Mysql.groovy +++ b/pdps/perl-DBD-Mysql.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/perl5-dbi/DBD-mysql.git', description: 'URL for perl-DBD-MySQL repository', @@ -88,36 +92,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build perl-DBD-MySQL generic source packages') { parallel { stage('Build perl-DBD-MySQL generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build perl-DBD-MySQL generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_source_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -126,184 +130,184 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 8 ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9 ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bookworm(12)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bookworm(12) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } diff --git a/pdps/perl-DBD-Mysql.yml b/pdps/perl-DBD-Mysql.yml index 9626d00dd4..46d1929026 100644 --- a/pdps/perl-DBD-Mysql.yml +++ b/pdps/perl-DBD-Mysql.yml @@ -1,5 +1,5 @@ - job: - name: perl-DBD-MySQL-RELEASE + name: hetzner-perl-DBD-MySQL-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: pdps/perl-DBD-Mysql.groovy diff --git a/pdpxc/percona-replication-manager.groovy b/pdpxc/percona-replication-manager.groovy index 01d298c02b..7ce283e401 100644 --- a/pdpxc/percona-replication-manager.groovy +++ b/pdpxc/percona-replication-manager.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/replication-manager.git', description: 'URL for percona-replication-manager repository', @@ -66,7 +70,7 @@ pipeline { stages { stage('Create PRM source tarball') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") @@ -85,36 +89,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build PRM generic source packages') { parallel { stage('Build PRM generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("centos:7", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build PRM generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:xenial", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -123,197 +127,197 @@ pipeline { parallel { stage('Centos 7') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("centos:7", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Centos 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("centos:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 8 ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9 ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bookworm(12)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bookworm(12) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } diff --git a/pdpxc/percona-replication-manager.yml b/pdpxc/percona-replication-manager.yml index 9af712b329..6c3911ff7c 100644 --- a/pdpxc/percona-replication-manager.yml +++ b/pdpxc/percona-replication-manager.yml @@ -1,5 +1,5 @@ - job: - name: prm-autobuild-RELEASE + name: hetzner-prm-autobuild-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: pdpxc/percona-replication-manager.groovy diff --git a/percona-release/jenkins/percona-release.groovy b/percona-release/jenkins/percona-release.groovy index 16043cbdc6..38f6fc3efd 100644 --- a/percona-release/jenkins/percona-release.groovy +++ b/percona-release/jenkins/percona-release.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -113,9 +113,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/percona-repositories.git', description: 'URL for mysql-shell packaging repository', @@ -161,15 +165,15 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build percona-release packages') { parallel { stage('RPM') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -182,15 +186,15 @@ pipeline { cp -r test/rpm . ''' - pushArtifactFolder("rpm/", AWS_STASH_PATH) - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('DEB') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -202,14 +206,14 @@ pipeline { cp -r test/deb . ''' - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } /* stage('RPM ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -221,13 +225,13 @@ pipeline { cp -r test/rpm . ''' - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('DEB ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -239,8 +243,8 @@ pipeline { cp -r test/deb . ''' - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadRPMfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } */ diff --git a/percona-release/jenkins/percona-release.yml b/percona-release/jenkins/percona-release.yml index 34a1cf2d92..61257f56e8 100644 --- a/percona-release/jenkins/percona-release.yml +++ b/percona-release/jenkins/percona-release.yml @@ -1,5 +1,5 @@ - job: - name: percona-release-RELEASE + name: hetzner-percona-release-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: percona-release/jenkins/percona-release.groovy diff --git a/percona-telemetry-agent/percona-telemetry-agent.groovy b/percona-telemetry-agent/percona-telemetry-agent.groovy index 0e4c1481bf..559a7ba0c9 100644 --- a/percona-telemetry-agent/percona-telemetry-agent.groovy +++ b/percona-telemetry-agent/percona-telemetry-agent.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'micro-amazon' + label params.CLOUD == 'Hetzner' ? 'launcher-x64' : 'micro-amazon' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/telemetry-agent.git', description: 'URL for telemetry-agent repository', @@ -66,7 +70,7 @@ pipeline { stages { stage('Create telemetry agent source tarball') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { //slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") @@ -84,36 +88,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build telemetry agent generic source packages') { parallel { stage('Build telemetry agent generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build telemetry agent generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("debian:buster", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -122,210 +126,210 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 8 ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9 ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Amazon Linux 2023') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("amazonlinux:2023", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Amazon Linux 2023 ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("amazonlinux:2023", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bookworm(12)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bookworm(12) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } diff --git a/percona-telemetry-agent/percona-telemetry-agent.yml b/percona-telemetry-agent/percona-telemetry-agent.yml index f30cbc4a58..3123fa8cf1 100644 --- a/percona-telemetry-agent/percona-telemetry-agent.yml +++ b/percona-telemetry-agent/percona-telemetry-agent.yml @@ -1,5 +1,5 @@ - job: - name: percona-telemetry-agent-RELEASE + name: hetzner-percona-telemetry-agent-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: percona-telemetry-agent/percona-telemetry-agent.groovy diff --git a/ppg/etcd.groovy b/ppg/etcd.groovy index c2a222dd64..9462465ebf 100644 --- a/ppg/etcd.groovy +++ b/ppg/etcd.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'URL for etcd repository', @@ -84,36 +88,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build etcd generic source packages') { parallel { stage('Build etcd generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build etcd generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -122,93 +126,93 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian bookworm(12)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } diff --git a/ppg/etcd.yml b/ppg/etcd.yml index 6ac3ccc49c..d867dc8b11 100644 --- a/ppg/etcd.yml +++ b/ppg/etcd.yml @@ -1,5 +1,5 @@ - job: - name: etcd-RELEASE + name: hetzner-etcd-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ppg/etcd.groovy diff --git a/ppg/haproxy.groovy b/ppg/haproxy.groovy index cc98a2b312..a252b23a44 100644 --- a/ppg/haproxy.groovy +++ b/ppg/haproxy.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/haproxy-packaging.git', description: 'URL for haproxy repository', @@ -84,36 +88,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build haproxy generic source packages') { parallel { stage('Build haproxy generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build haproxy generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -122,184 +126,184 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 8 ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9 ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bookworm(12)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bookworm(12) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } diff --git a/ppg/haproxy.yml b/ppg/haproxy.yml index db6a0de85a..2130ec0a11 100644 --- a/ppg/haproxy.yml +++ b/ppg/haproxy.yml @@ -1,5 +1,5 @@ - job: - name: haproxy-RELEASE + name: hetzner-haproxy-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ppg/haproxy.groovy diff --git a/ppg/llvm.groovy b/ppg/llvm.groovy index 724bbded75..454fc9be10 100644 --- a/ppg/llvm.groovy +++ b/ppg/llvm.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'URL for llvm repository', @@ -63,12 +67,12 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() buildStage("oraclelinux:8", "--get_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) popArtifactFolder("srpm/", AWS_STASH_PATH) sh ''' REPO_UPLOAD_PATH=$(grep "UPLOAD" test/llvm.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") @@ -83,18 +87,18 @@ pipeline { } stash includes: 'uploadPath', name: 'uploadPath' buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() buildStage("oraclelinux:9", "--get_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) popArtifactFolder("srpm/", AWS_STASH_PATH) sh ''' REPO_UPLOAD_PATH=$(grep "UPLOAD" test/llvm.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") @@ -109,8 +113,8 @@ pipeline { } stash includes: 'uploadPath', name: 'uploadPath' buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } } diff --git a/ppg/llvm.yml b/ppg/llvm.yml index 367225bf20..b01532d210 100644 --- a/ppg/llvm.yml +++ b/ppg/llvm.yml @@ -1,5 +1,5 @@ - job: - name: llvm-RELEASE + name: hetzner-llvm-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ppg/llvm.groovy diff --git a/ppg/patroni.groovy b/ppg/patroni.groovy index cc2a44385c..10be059f03 100644 --- a/ppg/patroni.groovy +++ b/ppg/patroni.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'URL for patroni repository', @@ -84,36 +88,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build PATRONI generic source packages') { parallel { stage('Build PATRONI generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build PATRONI generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -122,93 +126,93 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian bookworm(12)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } diff --git a/ppg/patroni.yml b/ppg/patroni.yml index 89c355e8b3..84fd41cf85 100644 --- a/ppg/patroni.yml +++ b/ppg/patroni.yml @@ -1,5 +1,5 @@ - job: - name: patroni-RELEASE + name: hetzner-patroni-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ppg/patroni.groovy diff --git a/ppg/percona-postgis.groovy b/ppg/percona-postgis.groovy index 97d750e3ec..52f408140f 100644 --- a/ppg/percona-postgis.groovy +++ b/ppg/percona-postgis.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -28,9 +28,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'URL for postgis packaging repository', @@ -91,36 +95,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build POSTGIS generic source packages') { parallel { stage('Build POSTGIS generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build POSTGIS generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -129,93 +133,93 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bookworm(12)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } diff --git a/ppg/percona-postgis.yml b/ppg/percona-postgis.yml index 398e3d1bdc..9e8c673c14 100644 --- a/ppg/percona-postgis.yml +++ b/ppg/percona-postgis.yml @@ -1,5 +1,5 @@ - job: - name: percona-postgis-RELEASE + name: hetzner-percona-postgis-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ppg/percona-postgis.groovy diff --git a/ppg/pg_cron.groovy b/ppg/pg_cron.groovy index ee050a9606..3945b08e6d 100644 --- a/ppg/pg_cron.groovy +++ b/ppg/pg_cron.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'URL for pg_cron repository', @@ -84,36 +88,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build pg_cron generic source packages') { parallel { stage('Build pg_cron generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build pg_cron generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -122,93 +126,93 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian bookworm(12)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } diff --git a/ppg/pg_cron.yml b/ppg/pg_cron.yml index 9b2100ee73..3082d35395 100644 --- a/ppg/pg_cron.yml +++ b/ppg/pg_cron.yml @@ -1,5 +1,5 @@ - job: - name: pg_cron-RELEASE + name: hetzner-pg_cron-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ppg/pg_cron.groovy diff --git a/ppg/pg_gather.groovy b/ppg/pg_gather.groovy index eebe5d5392..2d3f958f78 100644 --- a/ppg/pg_gather.groovy +++ b/ppg/pg_gather.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'URL for pg_gather repository', @@ -84,36 +88,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build pg_gather generic source packages') { parallel { stage('Build pg_gather generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build pg_gather generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -122,93 +126,93 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian bookworm(12)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } diff --git a/ppg/pg_gather.yml b/ppg/pg_gather.yml index 8000fc283f..f99ca8b797 100644 --- a/ppg/pg_gather.yml +++ b/ppg/pg_gather.yml @@ -1,5 +1,5 @@ - job: - name: pg_gather-RELEASE + name: hetzner-pg_gather-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ppg/pg_gather.groovy diff --git a/ppg/pg_percona_telemetry_autobuild.groovy b/ppg/pg_percona_telemetry_autobuild.groovy index 7791e6aba8..178abe178e 100644 --- a/ppg/pg_percona_telemetry_autobuild.groovy +++ b/ppg/pg_percona_telemetry_autobuild.groovy @@ -1,5 +1,5 @@ /* groovylint-disable DuplicateStringLiteral, GStringExpressionWithinString, LineLength */ -library changelog: false, identifier: "lib@master", retriever: modernSCM([ +library changelog: false, identifier: "lib@hetzner", retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) @@ -47,9 +47,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: '1.0.0', description: 'General version of the product', @@ -120,8 +124,8 @@ pipeline { } stash includes: 'uploadPath', name: 'uploadPath' stash includes: 'test/pg-percona-telemetry.properties', name: 'properties' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } //stage stage('Build percona_pg_telemetry generic source packages') { @@ -138,8 +142,8 @@ pipeline { popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Source deb') { @@ -154,8 +158,8 @@ pipeline { popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_source_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } //stage } //parallel @@ -174,8 +178,8 @@ pipeline { popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } //stage stage('OL 9') { @@ -190,8 +194,8 @@ pipeline { popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } //stage } //parallel @@ -210,8 +214,8 @@ pipeline { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } //stage stage('Ubuntu 22.04') { @@ -226,13 +230,13 @@ pipeline { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } //stage stage('Ubuntu Noble(24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { echo "====> Build percona_pg_telemetry deb on Ubuntu 24.04 PG${PG_RELEASE}" @@ -242,8 +246,8 @@ pipeline { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } //stage stage('Debian 11') { @@ -258,8 +262,8 @@ pipeline { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } //stage stage('Debian 12') { @@ -274,8 +278,8 @@ pipeline { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } //stage } //parallel diff --git a/ppg/pg_percona_telemetry_autobuild.yml b/ppg/pg_percona_telemetry_autobuild.yml index d731397664..f16cfc2893 100644 --- a/ppg/pg_percona_telemetry_autobuild.yml +++ b/ppg/pg_percona_telemetry_autobuild.yml @@ -1,5 +1,5 @@ - job: - name: pg_percona_telemetry-autobuild-RELEASE + name: hetzner-pg_percona_telemetry-autobuild-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ppg/pg_percona_telemetry_autobuild.groovy diff --git a/ppg/pg_source_tarballs.groovy b/ppg/pg_source_tarballs.groovy index bab623f6da..4ebd3aa8ed 100644 --- a/ppg/pg_source_tarballs.groovy +++ b/ppg/pg_source_tarballs.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -41,7 +41,7 @@ void uploadTarballToTestingDownloadServer(String tarballDirectory, String packag script { try { - uploadPGTarballToDownloadsTesting(tarballDirectory, packageVersion) + uploadPGTarballToDownloadsTesting(params.CLOUD, tarballDirectory, packageVersion) } catch (err) { echo "Caught: ${err}" currentBuild.result = 'UNSTABLE' @@ -59,10 +59,14 @@ def TIMESTAMP pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'URL for pg_tarballs repository', @@ -89,7 +93,7 @@ pipeline { stage('Create timestamp') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") @@ -110,7 +114,7 @@ pipeline { parallel { stage('Build source tarball for PG 17') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -128,15 +132,15 @@ pipeline { """ stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") - pushArtifactFolder("tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17) - uploadPGTarballfromAWS("tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17, "binary", "${PACKAGE_VERSION}") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } } stage('Build source tarball for PG 16') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -154,15 +158,15 @@ pipeline { """ stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") - pushArtifactFolder("tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_16) - uploadPGTarballfromAWS("tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_16, "binary", "${PACKAGE_VERSION}") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_16) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_16, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } } stage('Build source tarball for PG 15') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -180,15 +184,15 @@ pipeline { """ stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") - pushArtifactFolder("tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_15) - uploadPGTarballfromAWS("tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_15, "binary", "${PACKAGE_VERSION}") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_15) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_15, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } } stage('Build source tarball for PG 14') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -206,15 +210,15 @@ pipeline { """ stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") - pushArtifactFolder("tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_14) - uploadPGTarballfromAWS("tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_14, "binary", "${PACKAGE_VERSION}") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_14) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_14, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } } stage('Build source tarball for PG 13') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -232,8 +236,8 @@ pipeline { """ stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") - pushArtifactFolder("tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_13) - uploadPGTarballfromAWS("tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_13, "binary", "${PACKAGE_VERSION}") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_13) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_13, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } diff --git a/ppg/pg_source_tarballs.yml b/ppg/pg_source_tarballs.yml index 62c71c2e9f..738a316524 100644 --- a/ppg/pg_source_tarballs.yml +++ b/ppg/pg_source_tarballs.yml @@ -1,5 +1,5 @@ - job: - name: pg_source_tarballs-RELEASE + name: hetzner-pg_source_tarballs-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ppg/pg_source_tarballs.groovy diff --git a/ppg/pg_stat_monitor-autobuild.groovy b/ppg/pg_stat_monitor-autobuild.groovy index c64f09bce7..161c1d084d 100644 --- a/ppg/pg_stat_monitor-autobuild.groovy +++ b/ppg/pg_stat_monitor-autobuild.groovy @@ -1,5 +1,5 @@ /* groovylint-disable DuplicateStringLiteral, GStringExpressionWithinString, LineLength */ -library changelog: false, identifier: "lib@master", retriever: modernSCM([ +library changelog: false, identifier: "lib@hetzner", retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) @@ -47,9 +47,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: '1.0.0', description: 'General version of the product', @@ -120,8 +124,8 @@ pipeline { } stash includes: 'uploadPath', name: 'uploadPath' stash includes: 'test/pg-stat-monitor.properties', name: 'properties' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } //stage stage('Build pg_stat_monitor generic source packages') { @@ -138,8 +142,8 @@ pipeline { popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Source deb') { @@ -154,8 +158,8 @@ pipeline { popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_source_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } //stage } //parallel @@ -174,8 +178,8 @@ pipeline { popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } //stage stage('OL 9') { @@ -190,8 +194,8 @@ pipeline { popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } //stage } //parallel @@ -210,8 +214,8 @@ pipeline { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } //stage stage('Ubuntu 22.04') { @@ -226,8 +230,8 @@ pipeline { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } //stage stage('Ubuntu 24.04') { @@ -242,8 +246,8 @@ pipeline { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } //stage stage('Debian 11') { @@ -258,8 +262,8 @@ pipeline { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } //stage stage('Debian 12') { @@ -274,8 +278,8 @@ pipeline { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } //stage } //parallel diff --git a/ppg/pg_stat_monitor-autobuild.yml b/ppg/pg_stat_monitor-autobuild.yml index 9539125fd9..94b70bbcdc 100644 --- a/ppg/pg_stat_monitor-autobuild.yml +++ b/ppg/pg_stat_monitor-autobuild.yml @@ -1,5 +1,5 @@ - job: - name: pg_stat_monitor-autobuild-RELEASE + name: hetzner-pg_stat_monitor-autobuild-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ppg/pg_stat_monitor-autobuild.groovy diff --git a/ppg/pg_tarballs.groovy b/ppg/pg_tarballs.groovy index f4956712d4..1196cf96e6 100644 --- a/ppg/pg_tarballs.groovy +++ b/ppg/pg_tarballs.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -41,7 +41,7 @@ void uploadTarballToTestingDownloadServer(String tarballDirectory, String packag script { try { - uploadPGTarballToDownloadsTesting(tarballDirectory, packageVersion) + uploadPGTarballToDownloadsTesting(params.CLOUD, tarballDirectory, packageVersion) } catch (err) { echo "Caught: ${err}" currentBuild.result = 'UNSTABLE' @@ -59,10 +59,14 @@ def TIMESTAMP pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'URL for pg_tarballs repository', @@ -93,7 +97,7 @@ pipeline { stage('Create timestamp') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") @@ -114,7 +118,7 @@ pipeline { parallel { stage('Build pg_tarball 17 for OpenSSL 3') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -132,15 +136,15 @@ pipeline { """ stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") - pushArtifactFolder("tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17) - uploadPGTarballfromAWS("tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17, "binary", "${PACKAGE_VERSION}") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } } stage('Build pg_tarball 17 for OpenSSL 1.1') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -158,15 +162,15 @@ pipeline { """ stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION} --use_system_ssl=1") - pushArtifactFolder("tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17) - uploadPGTarballfromAWS("tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17, "binary", "${PACKAGE_VERSION}") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } } stage('Build pg_tarball 16 for OpenSSL 3') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -184,15 +188,15 @@ pipeline { """ stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") - pushArtifactFolder("tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_16) - uploadPGTarballfromAWS("tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_16, "binary", "${PACKAGE_VERSION}") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_16) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_16, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } } stage('Build pg_tarball 16 for OpenSSL 1.1') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -210,15 +214,15 @@ pipeline { """ stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION} --use_system_ssl=1") - pushArtifactFolder("tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_16) - uploadPGTarballfromAWS("tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_16, "binary", "${PACKAGE_VERSION}") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_16) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_16, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } } stage('Build pg_tarball 15 for OpenSSL 3') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -236,15 +240,15 @@ pipeline { """ stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") - pushArtifactFolder("tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_15) - uploadPGTarballfromAWS("tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_15, "binary", "${PACKAGE_VERSION}") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_15) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_15, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } } stage('Build pg_tarball 15 for OpenSSL 1.1') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -262,15 +266,15 @@ pipeline { """ stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION} --use_system_ssl=1") - pushArtifactFolder("tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_15) - uploadPGTarballfromAWS("tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_15, "binary", "${PACKAGE_VERSION}") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_15) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_15, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } } stage('Build pg_tarball 14 for OpenSSL 3') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -288,15 +292,15 @@ pipeline { """ stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") - pushArtifactFolder("tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_14) - uploadPGTarballfromAWS("tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_14, "binary", "${PACKAGE_VERSION}") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_14) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_14, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } } stage('Build pg_tarball 14 for OpenSSL 1.1') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -314,15 +318,15 @@ pipeline { """ stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION} --use_system_ssl=1") - pushArtifactFolder("tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_14) - uploadPGTarballfromAWS("tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_14, "binary", "${PACKAGE_VERSION}") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_14) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_14, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } } stage('Build pg_tarball 13 for OpenSSL 3') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -340,15 +344,15 @@ pipeline { """ stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") - pushArtifactFolder("tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_13) - uploadPGTarballfromAWS("tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_13, "binary", "${PACKAGE_VERSION}") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_13) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_13, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } } stage('Build pg_tarball 13 for OpenSSL 1.1') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -366,8 +370,8 @@ pipeline { """ stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION} --use_system_ssl=1") - pushArtifactFolder("tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_13) - uploadPGTarballfromAWS("tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_13, "binary", "${PACKAGE_VERSION}") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_13) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_13, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } diff --git a/ppg/pg_tarballs.yml b/ppg/pg_tarballs.yml index fe37a9b4da..d51295963b 100644 --- a/ppg/pg_tarballs.yml +++ b/ppg/pg_tarballs.yml @@ -1,5 +1,5 @@ - job: - name: pg_tarballs-RELEASE + name: hetzner-pg_tarballs-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ppg/pg_tarballs.groovy diff --git a/ppg/pg_tde.groovy b/ppg/pg_tde.groovy index 1d6767c32d..271e4c536b 100644 --- a/ppg/pg_tde.groovy +++ b/ppg/pg_tde.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'URL for pg_tde repository', @@ -84,36 +88,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build pg_tde generic source packages') { parallel { stage('Build pg_tde generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build pg_tde generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -122,93 +126,93 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian bookworm(12)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } diff --git a/ppg/pg_tde.yml b/ppg/pg_tde.yml index b6f72a92c9..efb9debf24 100644 --- a/ppg/pg_tde.yml +++ b/ppg/pg_tde.yml @@ -1,5 +1,5 @@ - job: - name: pg_tde-RELEASE + name: hetzner-pg_tde-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ppg/pg_tde.groovy diff --git a/ppg/pgaudit.groovy b/ppg/pgaudit.groovy index fb8c84fede..a5fdddeb8e 100644 --- a/ppg/pgaudit.groovy +++ b/ppg/pgaudit.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'URL for pg_audit repository', @@ -84,36 +88,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build PG_AUDIT generic source packages') { parallel { stage('Build PG_AUDIT generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build PG_AUDIT generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -122,93 +126,93 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian bookworm(12)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } diff --git a/ppg/pgaudit.yml b/ppg/pgaudit.yml index aef6bd3500..a2592e23f7 100644 --- a/ppg/pgaudit.yml +++ b/ppg/pgaudit.yml @@ -1,5 +1,5 @@ - job: - name: pgaudit-RELEASE + name: hetzner-pgaudit-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ppg/pgaudit.groovy diff --git a/ppg/pgaudit_set_user.groovy b/ppg/pgaudit_set_user.groovy index 5eb8855c0e..4c4d0c7f5f 100644 --- a/ppg/pgaudit_set_user.groovy +++ b/ppg/pgaudit_set_user.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'URL for pg_audit repository', @@ -84,36 +88,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build PG_AUDIT generic source packages') { parallel { stage('Build PG_AUDIT generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build PG_AUDIT generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -122,93 +126,93 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian bookworm(12)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } diff --git a/ppg/pgaudit_set_user.yml b/ppg/pgaudit_set_user.yml index 78d1efa15f..9c23675724 100644 --- a/ppg/pgaudit_set_user.yml +++ b/ppg/pgaudit_set_user.yml @@ -1,5 +1,5 @@ - job: - name: pgaudit_set_user-RELEASE + name: hetzner-pgaudit_set_user-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ppg/pgaudit_set_user.groovy \ No newline at end of file diff --git a/ppg/pgbackrest.groovy b/ppg/pgbackrest.groovy index f82f4c24ca..41fa8d440a 100644 --- a/ppg/pgbackrest.groovy +++ b/ppg/pgbackrest.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'URL for pg_BACKREST repository', @@ -84,36 +88,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build PG_BACKREST generic source packages') { parallel { stage('Build PG_BACKREST generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build PG_BACKREST generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -122,93 +126,93 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian bookworm(12)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } diff --git a/ppg/pgbackrest.yml b/ppg/pgbackrest.yml index 8178ce4242..5e3208db0d 100644 --- a/ppg/pgbackrest.yml +++ b/ppg/pgbackrest.yml @@ -1,5 +1,5 @@ - job: - name: pgbackrest-RELEASE + name: hetzner-pgbackrest-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ppg/pgbackrest.groovy \ No newline at end of file diff --git a/ppg/pgbadger.groovy b/ppg/pgbadger.groovy index 0556a563c4..a84a20eca5 100644 --- a/ppg/pgbadger.groovy +++ b/ppg/pgbadger.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'URL for pg_badger repository', @@ -84,36 +88,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build PG_badger generic source packages') { parallel { stage('Build PG_badger generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build PG_badger generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -122,93 +126,93 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian bookworm(12)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } diff --git a/ppg/pgbadger.yml b/ppg/pgbadger.yml index 15816a7e91..3a50b2916f 100644 --- a/ppg/pgbadger.yml +++ b/ppg/pgbadger.yml @@ -1,5 +1,5 @@ - job: - name: pgbadger-RELEASE + name: hetzner-pgbadger-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ppg/pgbadger.groovy \ No newline at end of file diff --git a/ppg/pgbouncer.groovy b/ppg/pgbouncer.groovy index 544dfda8fb..838c4ff617 100644 --- a/ppg/pgbouncer.groovy +++ b/ppg/pgbouncer.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'URL for pg_bouncer repository', @@ -84,36 +88,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build PG_bouncer generic source packages') { parallel { stage('Build PG_bouncer generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build PG_bouncer generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -122,93 +126,93 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian bookworm(12)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } diff --git a/ppg/pgbouncer.yml b/ppg/pgbouncer.yml index 1fc522eb90..06d128a77b 100644 --- a/ppg/pgbouncer.yml +++ b/ppg/pgbouncer.yml @@ -1,5 +1,5 @@ - job: - name: pgbouncer-RELEASE + name: hetzner-pgbouncer-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ppg/pgbouncer.groovy \ No newline at end of file diff --git a/ppg/pgpool2-build-RELEASE.yml b/ppg/pgpool2-build-RELEASE.yml index ba54061b7e..a562beb9eb 100644 --- a/ppg/pgpool2-build-RELEASE.yml +++ b/ppg/pgpool2-build-RELEASE.yml @@ -1,5 +1,5 @@ - job: - name: pgpool2-build-RELEASE + name: hetzner-pgpool2-build-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ppg/pgpool2-build.groovy diff --git a/ppg/pgpool2-build.groovy b/ppg/pgpool2-build.groovy index 2ec22a575d..ff591ffc65 100644 --- a/ppg/pgpool2-build.groovy +++ b/ppg/pgpool2-build.groovy @@ -1,5 +1,5 @@ /* groovylint-disable DuplicateStringLiteral, GStringExpressionWithinString, LineLength */ -library changelog: false, identifier: "lib@master", retriever: modernSCM([ +library changelog: false, identifier: "lib@hetzner", retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) @@ -83,9 +83,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'micro-amazon' + label params.CLOUD == 'Hetzner' ? 'launcher-x64' : 'micro-amazon' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: '4.4.2', description: 'General version of the product', @@ -162,8 +166,8 @@ pipeline { } stash includes: 'uploadPath', name: 'uploadPath' stash includes: 'test/pgpool2.properties', name: 'properties' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } //stage stage('Build pgpool2 generic source packages') { @@ -180,8 +184,8 @@ pipeline { popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Source deb') { @@ -196,8 +200,8 @@ pipeline { popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_source_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } //stage } //parallel @@ -216,8 +220,8 @@ pipeline { popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } //stage stage('OL 9') { @@ -232,8 +236,8 @@ pipeline { popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } //stage } //parallel @@ -252,8 +256,8 @@ pipeline { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } //stage stage('Ubuntu 22.04') { @@ -268,8 +272,8 @@ pipeline { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } //stage stage('Ubuntu 24.04') { @@ -284,8 +288,8 @@ pipeline { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } //stage stage('Debian 11') { @@ -300,8 +304,8 @@ pipeline { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } //stage stage('Debian 12') { @@ -316,8 +320,8 @@ pipeline { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } //stage } //parallel diff --git a/ppg/pgrepack.groovy b/ppg/pgrepack.groovy index cd24c62427..339dc67f39 100644 --- a/ppg/pgrepack.groovy +++ b/ppg/pgrepack.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'URL for pg_repack repository', @@ -84,36 +88,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build PG_REPACK generic source packages') { parallel { stage('Build PG_REPACK generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build PG_REPACK generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -122,93 +126,93 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian bookworm(12)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } diff --git a/ppg/pgrepack.yml b/ppg/pgrepack.yml index 02c9d26d7e..e7b0c3a7c2 100644 --- a/ppg/pgrepack.yml +++ b/ppg/pgrepack.yml @@ -1,5 +1,5 @@ - job: - name: pgrepack-RELEASE + name: hetzner-pgrepack-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ppg/pgrepack.groovy diff --git a/ppg/pgvector.groovy b/ppg/pgvector.groovy index 1e8251ecd2..1aca9c59fb 100644 --- a/ppg/pgvector.groovy +++ b/ppg/pgvector.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'URL for pgvector repository', @@ -84,36 +88,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build pgvector generic source packages') { parallel { stage('Build pgvector generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build pgvector generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -122,93 +126,93 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian bookworm(12)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } diff --git a/ppg/pgvector.yml b/ppg/pgvector.yml index bc31e98e3f..2779caff35 100644 --- a/ppg/pgvector.yml +++ b/ppg/pgvector.yml @@ -1,5 +1,5 @@ - job: - name: pgvector-RELEASE + name: hetzner-pgvector-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ppg/pgvector.groovy diff --git a/ppg/postgis_tarballs.groovy b/ppg/postgis_tarballs.groovy index fd0bb8ec91..9e689d94cd 100644 --- a/ppg/postgis_tarballs.groovy +++ b/ppg/postgis_tarballs.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -27,7 +27,7 @@ void uploadTarballToTestingDownloadServer(String tarballDirectory, String packag script { try { - uploadPGTarballToDownloadsTesting(tarballDirectory, packageVersion) + uploadPGTarballToDownloadsTesting(params.CLOUD, tarballDirectory, packageVersion) } catch (err) { echo "Caught: ${err}" currentBuild.result = 'UNSTABLE' @@ -40,8 +40,8 @@ void buildTarball(String platform, String architecture){ script { unstash "uploadPath-${PG_VERSION}" buildStage("${PG_VERSION}", platform, architecture) - pushArtifactFolder("postgis_output/", AWS_STASH_PATH) - uploadPGTarballfromAWS("postgis_output/", AWS_STASH_PATH, "binary", "${PG_VERSION}") + pushArtifactFolder(params.CLOUD, "postgis_output/", AWS_STASH_PATH) + uploadPGTarballfromAWS(params.CLOUD, "postgis_output/", AWS_STASH_PATH, "binary", "${PG_VERSION}") uploadTarballToTestingDownloadServer("postgis_tarballs", "${PG_VERSION}") } } @@ -56,10 +56,14 @@ def TIMESTAMP pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) //string( // defaultValue: 'https://github.com/percona/postgis-tarballs.git', // description: 'URL for postgis-tarballs repository', @@ -86,7 +90,7 @@ pipeline { stage('Create timestamp') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${PG_VERSION} - [${BUILD_URL}]") @@ -114,7 +118,7 @@ pipeline { parallel { stage('Build postgis-tarball for OL8 amd64') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -125,7 +129,7 @@ pipeline { } stage('Build postgis-tarball for OL8 arm64') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -136,7 +140,7 @@ pipeline { } stage('Build postgis-tarball for OL9 amd64') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -147,7 +151,7 @@ pipeline { } stage('Build postgis-tarball for OL9 arm64') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -158,7 +162,7 @@ pipeline { } stage('Build postgis-tarball for Ubuntu focal amd64') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -169,7 +173,7 @@ pipeline { } stage('Build postgis-tarball for Ubuntu focal arm64') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -180,7 +184,7 @@ pipeline { } stage('Build postgis-tarball for Ubuntu jammy amd64') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -191,7 +195,7 @@ pipeline { } stage('Build postgis-tarball for Ubuntu jammy arm64') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -202,7 +206,7 @@ pipeline { } stage('Build postgis-tarball for Ubuntu noble amd64') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -213,7 +217,7 @@ pipeline { } stage('Build postgis-tarball for Ubuntu noble arm64') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -224,7 +228,7 @@ pipeline { } stage('Build postgis-tarball for Debian bullseye amd64') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -235,7 +239,7 @@ pipeline { } stage('Build postgis-tarball for Debian bullseye arm64') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -246,7 +250,7 @@ pipeline { } stage('Build postgis-tarball for Debian bookworm amd64') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -257,7 +261,7 @@ pipeline { } stage('Build postgis-tarball for Debian bookworm arm64') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() diff --git a/ppg/postgis_tarballs.yml b/ppg/postgis_tarballs.yml index 970930e542..f6a0f11a60 100644 --- a/ppg/postgis_tarballs.yml +++ b/ppg/postgis_tarballs.yml @@ -1,5 +1,5 @@ - job: - name: postgis_tarballs-RELEASE + name: hetzner-postgis_tarballs-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ppg/postgis_tarballs.groovy diff --git a/ppg/postgresql-common.groovy b/ppg/postgresql-common.groovy index c25ea38265..f7334ff669 100644 --- a/ppg/postgresql-common.groovy +++ b/ppg/postgresql-common.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'URL for postgresql-common repository', @@ -84,36 +88,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build postgresql-common generic source packages') { parallel { stage('Build postgresql-common generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build postgresql-common generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -122,93 +126,93 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian bookworm(12)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } diff --git a/ppg/postgresql-common.yml b/ppg/postgresql-common.yml index f0f10482dc..f501be8a68 100644 --- a/ppg/postgresql-common.yml +++ b/ppg/postgresql-common.yml @@ -1,5 +1,5 @@ - job: - name: postgresql-common-RELEASE + name: hetzner-postgresql-common-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ppg/postgresql-common.groovy diff --git a/ppg/postgresql_server.groovy b/ppg/postgresql_server.groovy index 7430e2ff0a..39fd5429c3 100644 --- a/ppg/postgresql_server.groovy +++ b/ppg/postgresql_server.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'URL for ppg-server repository', @@ -84,36 +88,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build PPG-SERVER generic source packages') { parallel { stage('Build PPG-SERVER generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build PPG-SERVER generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -122,93 +126,93 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian bookworm(12)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } diff --git a/ppg/postgresql_server.yml b/ppg/postgresql_server.yml index 56c1629bac..af42fc261c 100644 --- a/ppg/postgresql_server.yml +++ b/ppg/postgresql_server.yml @@ -1,5 +1,5 @@ - job: - name: postgresql-server-autobuild-RELEASE + name: hetzner-postgresql-server-autobuild-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ppg/postgresql_server.groovy diff --git a/ppg/ppg-server-ha.groovy b/ppg/ppg-server-ha.groovy index e097648111..cb9c52c28a 100644 --- a/ppg/ppg-server-ha.groovy +++ b/ppg/ppg-server-ha.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'URL for ppg-server-ha repository', @@ -80,36 +84,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build PPG-SERVER_HA generic source packages') { parallel { stage('Build PPG-SERVER_HA generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build PPG-SERVER_HA generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -118,93 +122,93 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian bookworm(12)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } diff --git a/ppg/ppg-server-ha.yml b/ppg/ppg-server-ha.yml index 64e0bd6938..2d74c54f08 100644 --- a/ppg/ppg-server-ha.yml +++ b/ppg/ppg-server-ha.yml @@ -1,5 +1,5 @@ - job: - name: ppg-server-ha-autobuild-RELEASE + name: hetzner-ppg-server-ha-autobuild-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ppg/ppg-server-ha.groovy diff --git a/ppg/ppg-server.groovy b/ppg/ppg-server.groovy index 82340a9072..30f5f81bc7 100644 --- a/ppg/ppg-server.groovy +++ b/ppg/ppg-server.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'URL for ppg-server repository', @@ -80,36 +84,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build PPG-SERVER generic source packages') { parallel { stage('Build PPG-SERVER generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build PPG-SERVER generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -118,93 +122,93 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian bookworm(12)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } diff --git a/ppg/ppg-server.yml b/ppg/ppg-server.yml index 5d334a1cf2..8dbf177b84 100644 --- a/ppg/ppg-server.yml +++ b/ppg/ppg-server.yml @@ -1,5 +1,5 @@ - job: - name: ppg-server-autobuild-RELEASE + name: hetzner-ppg-server-autobuild-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ppg/ppg-server.groovy diff --git a/ppg/ppg_release.groovy b/ppg/ppg_release.groovy index 3449f0a87f..a75229ac41 100644 --- a/ppg/ppg_release.groovy +++ b/ppg/ppg_release.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@ENG-7_postgresql_rel', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -13,9 +13,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) text(name: 'PACKAGES', defaultValue: '', description: 'put all pathes to all packages') string(name: 'repo_version', defaultValue: '', description: 'Repository Version i.e ppg-15.3 or ppg-15') choice(name: 'component', choices: ['release', 'testing', 'experimental', 'laboratory'], description: 'Component') @@ -62,12 +66,12 @@ pipeline { } stage('Push to public repository') { steps { - sync2ProdPPG(repo_version, component) + sync2ProdPPG(params.CLOUD, repo_version, component) } } stage('Push to WEB') { steps { - sync2web(repo_version, component) + sync2web(params.CLOUD, repo_version, component) } } } diff --git a/ppg/ppg_release.yml b/ppg/ppg_release.yml index 246edb818a..5fcf30c4f6 100644 --- a/ppg/ppg_release.yml +++ b/ppg/ppg_release.yml @@ -1,5 +1,5 @@ - job: - name: Percona-PostgreSQL-Distribution-RELEASE + name: hetzner-Percona-PostgreSQL-Distribution-RELEASE project-type: pipeline description: | Do not edit this job through the web! diff --git a/ppg/pysyncobj.groovy b/ppg/pysyncobj.groovy index 96d434181e..7438856994 100644 --- a/ppg/pysyncobj.groovy +++ b/ppg/pysyncobj.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'URL for pysyncobj repository', @@ -84,36 +88,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build PYSYNCOBJ generic source packages') { parallel { stage('Build PYSYNCOBJ generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build PYSYNCOBJ generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -122,93 +126,93 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian bookworm(12)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } diff --git a/ppg/pysyncobj.yml b/ppg/pysyncobj.yml index ce7e345525..012934ebd0 100644 --- a/ppg/pysyncobj.yml +++ b/ppg/pysyncobj.yml @@ -1,5 +1,5 @@ - job: - name: pysyncobj-RELEASE + name: hetzner-pysyncobj-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ppg/pysyncobj.groovy diff --git a/ppg/timescaledb.groovy b/ppg/timescaledb.groovy index 6b53b41c09..e644ad11ae 100644 --- a/ppg/timescaledb.groovy +++ b/ppg/timescaledb.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'URL for timescaledb repository', @@ -84,36 +88,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build timescaledb generic source packages') { parallel { stage('Build timescaledb generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build timescaledb generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -122,93 +126,93 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian bookworm(12)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } diff --git a/ppg/timescaledb.yml b/ppg/timescaledb.yml index 22fb8cde7b..47970dff7a 100644 --- a/ppg/timescaledb.yml +++ b/ppg/timescaledb.yml @@ -1,5 +1,5 @@ - job: - name: timescaledb-RELEASE + name: hetzner-timescaledb-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ppg/timescaledb.groovy diff --git a/ppg/wal2json.groovy b/ppg/wal2json.groovy index 4367bb2fba..1a3ecac2c6 100644 --- a/ppg/wal2json.groovy +++ b/ppg/wal2json.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'URL for wal2json repository', @@ -84,36 +88,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build wal2json generic source packages') { parallel { stage('Build wal2json generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build wal2json generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -122,93 +126,93 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian bookworm(12)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } diff --git a/ppg/wal2json.yml b/ppg/wal2json.yml index c0b09523a5..c76eff220e 100644 --- a/ppg/wal2json.yml +++ b/ppg/wal2json.yml @@ -1,5 +1,5 @@ - job: - name: wal2json-RELEASE + name: hetzner-wal2json-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ppg/wal2json.groovy diff --git a/ppg/ydiff.groovy b/ppg/ydiff.groovy index 759bfa22c3..3d26728bb6 100644 --- a/ppg/ydiff.groovy +++ b/ppg/ydiff.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'URL for ydiff repository', @@ -84,36 +88,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build YDIFF generic source packages') { parallel { stage('Build YDIFF generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build YDIFF generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -122,93 +126,93 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian bookworm(12)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } diff --git a/ppg/ydiff.yml b/ppg/ydiff.yml index c32229aac9..6074e5d0e5 100644 --- a/ppg/ydiff.yml +++ b/ppg/ydiff.yml @@ -1,5 +1,5 @@ - job: - name: ydiff-RELEASE + name: hetzner-ydiff-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ppg/ydiff.groovy diff --git a/proxysql/proxysql.groovy b/proxysql/proxysql.groovy index 388bbd908a..5afb27774c 100644 --- a/proxysql/proxysql.groovy +++ b/proxysql/proxysql.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -30,9 +30,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/proxysql-packaging.git', description: 'URL for proxysql packaging repository', @@ -101,36 +105,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build PROXYSQL generic source packages') { parallel { stage('Build PROXYSQL generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("centos:7", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build PROXYSQL generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -139,210 +143,210 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 8 ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9 ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bookworm(12)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bookworm(12) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Oracle Linux 8 tarball') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_tarball=1") - pushArtifactFolder("test/tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("test/tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "test/tarball/", AWS_STASH_PATH, 'binary') } } stage('Ubuntu Focal tarball') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_tarball=1") - pushArtifactFolder("test/tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("test/tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "test/tarball/", AWS_STASH_PATH, 'binary') } } diff --git a/proxysql/proxysql.yml b/proxysql/proxysql.yml index 0db3f93ef5..15508eadaa 100644 --- a/proxysql/proxysql.yml +++ b/proxysql/proxysql.yml @@ -1,5 +1,5 @@ - job: - name: proxysql-RELEASE + name: hetzner-proxysql-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: proxysql/proxysql.groovy diff --git a/ps/jenkins/jemalloc.groovy b/ps/jenkins/jemalloc.groovy index 84386328a2..77d80f9dd4 100644 --- a/ps/jenkins/jemalloc.groovy +++ b/ps/jenkins/jemalloc.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -166,9 +166,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) /* string( defaultValue: 'https://github.com/percona-lab/jemalloc-packaging.git', @@ -226,15 +230,15 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build jemalloc packages') { parallel { stage('Oracle Linux 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -250,15 +254,15 @@ pipeline { cp -r test/rpm . ''' - pushArtifactFolder("rpm/", AWS_STASH_PATH) - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Oracle Linux 8 ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -271,15 +275,15 @@ pipeline { cp -r test/rpm . ''' - pushArtifactFolder("rpm/", AWS_STASH_PATH) - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -292,15 +296,15 @@ pipeline { cp -r test/rpm . ''' - pushArtifactFolder("rpm/", AWS_STASH_PATH) - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9 ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -313,15 +317,15 @@ pipeline { cp -r test/rpm . ''' - pushArtifactFolder("rpm/", AWS_STASH_PATH) - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal (20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -333,13 +337,13 @@ pipeline { cp -r test/deb . ''' - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Focal (20.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -351,13 +355,13 @@ pipeline { cp -r test/deb . ''' - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye (11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -369,13 +373,13 @@ pipeline { cp -r test/deb . ''' - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye (11) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -387,13 +391,13 @@ pipeline { cp -r test/deb . ''' - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy (22.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -405,13 +409,13 @@ pipeline { cp -r test/deb . ''' - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy (22.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -423,13 +427,13 @@ pipeline { cp -r test/deb . ''' - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bookworm (12)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -441,13 +445,13 @@ pipeline { cp -r test/deb . ''' - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bookworm (12) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -459,13 +463,13 @@ pipeline { cp -r test/deb . ''' - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble (24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -477,13 +481,13 @@ pipeline { cp -r test/deb . ''' - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble (24.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -495,8 +499,8 @@ pipeline { cp -r test/deb . ''' - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } diff --git a/ps/jenkins/jemalloc.yml b/ps/jenkins/jemalloc.yml index 1650207e9c..950a67f390 100644 --- a/ps/jenkins/jemalloc.yml +++ b/ps/jenkins/jemalloc.yml @@ -1,5 +1,5 @@ - job: - name: jemalloc-RELEASE + name: hetzner-jemalloc-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ps/jenkins/jemalloc.groovy diff --git a/ps/jenkins/mysql-shell.groovy b/ps/jenkins/mysql-shell.groovy index 1c827f30ee..06df3dda2d 100644 --- a/ps/jenkins/mysql-shell.groovy +++ b/ps/jenkins/mysql-shell.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -28,9 +28,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/mysql-shell-packaging.git', description: 'URL for mysql-shell packaging repository', @@ -98,36 +102,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build MYSQL-SHELL generic source packages') { parallel { stage('Build MYSQL-SHELL generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("centos:7", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build MYSQL-SHELL generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_source_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -137,86 +141,86 @@ pipeline { /* stage('Centos 7') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("centos:7", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } */ stage('Oracle Linux 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Centos 8 ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9 ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal (20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Focal (20.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { script { @@ -226,8 +230,8 @@ pipeline { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } else { echo "The step is skipped." } @@ -236,72 +240,72 @@ pipeline { } stage('Ubuntu Jammy (22.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy (22.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble (24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble (24.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye (11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye (11) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { script { @@ -311,8 +315,8 @@ pipeline { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } else { echo "The step is skipped." } @@ -321,67 +325,67 @@ pipeline { } stage('Debian Bookworm (12)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bookworm (12) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Centos 7 tarball') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("centos:7", "--build_tarball=1") - pushArtifactFolder("test/tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("test/tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "test/tarball/", AWS_STASH_PATH, 'binary') } } stage('Oracle Linux 9 tarball') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_tarball=1") - pushArtifactFolder("test/tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("test/tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "test/tarball/", AWS_STASH_PATH, 'binary') } } stage('Debian Bullseye (11) tarball') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_tarball=1") - pushArtifactFolder("test/tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("test/tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "test/tarball/", AWS_STASH_PATH, 'binary') } } } diff --git a/ps/jenkins/mysql-shell.yml b/ps/jenkins/mysql-shell.yml index 1789900126..8167530dcd 100644 --- a/ps/jenkins/mysql-shell.yml +++ b/ps/jenkins/mysql-shell.yml @@ -1,5 +1,5 @@ - job: - name: mysql-shell-8.0-RELEASE + name: hetzner-mysql-shell-8.0-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ps/jenkins/mysql-shell.groovy diff --git a/ps/jenkins/percona-server-for-mysql-5.7.groovy b/ps/jenkins/percona-server-for-mysql-5.7.groovy index e83ed7c1e3..4d8a6e2fb1 100644 --- a/ps/jenkins/percona-server-for-mysql-5.7.groovy +++ b/ps/jenkins/percona-server-for-mysql-5.7.groovy @@ -1,5 +1,5 @@ /* groovylint-disable DuplicateStringLiteral, GStringExpressionWithinString, LineLength */ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -67,9 +67,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string(defaultValue: 'https://github.com/percona/percona-server-private.git', description: 'github repository for build', name: 'GIT_REPO') string(defaultValue: 'release-5.7.44-52', description: 'Tag/Branch for percona-server repository', name: 'BRANCH') string(defaultValue: '0', description: 'PerconaFT repository', name: 'PERCONAFT_REPO') @@ -117,8 +121,8 @@ parameters { } stash includes: 'uploadPath', name: 'uploadPath' stash includes: 'test/percona-server-5.7.properties', name: 'properties' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build PS generic source packages') { @@ -134,8 +138,8 @@ parameters { popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("centos:7", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build PS generic source deb') { @@ -149,8 +153,8 @@ parameters { popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:bionic", "--build_source_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -168,7 +172,7 @@ parameters { popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("centos:7", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Centos 8') { @@ -182,7 +186,7 @@ parameters { popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("centos:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { @@ -196,7 +200,7 @@ parameters { popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Bionic(18.04)') { @@ -210,7 +214,7 @@ parameters { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:bionic", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { @@ -224,7 +228,7 @@ parameters { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { @@ -238,7 +242,7 @@ parameters { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { @@ -256,7 +260,7 @@ parameters { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } } @@ -272,7 +276,7 @@ parameters { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:buster", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { @@ -286,7 +290,7 @@ parameters { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bookworm(12)') { @@ -300,7 +304,7 @@ parameters { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Centos 7 tarball') { @@ -313,7 +317,7 @@ parameters { unstash 'properties' popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("centos:7", "--build_tarball=1 ") - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Centos 7 debug tarball') { @@ -326,7 +330,7 @@ parameters { unstash 'properties' popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("centos:7", "--debug=1 --build_tarball=1 ") - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Centos 8 tarball') { @@ -339,7 +343,7 @@ parameters { unstash 'properties' popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("centos:8", "--build_tarball=1 ") - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Centos 8 debug tarball') { @@ -352,7 +356,7 @@ parameters { unstash 'properties' popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("centos:8", "--debug=1 --build_tarball=1 ") - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Oracle Linux 9 tarball') { @@ -365,7 +369,7 @@ parameters { unstash 'properties' popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_tarball=1 ") - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Oracle Linux 9 debug tarball') { @@ -378,7 +382,7 @@ parameters { unstash 'properties' popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--debug=1 --build_tarball=1 ") - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Ubuntu Bionic tarball') { @@ -391,7 +395,7 @@ parameters { unstash 'properties' popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:bionic", "--build_tarball=1 ") - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Ubuntu Bionic debug tarball') { @@ -404,7 +408,7 @@ parameters { unstash 'properties' popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:bionic", "--debug=1 --build_tarball=1 ") - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Ubuntu Focal tarball') { @@ -417,7 +421,7 @@ parameters { unstash 'properties' popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_tarball=1 ") - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Ubuntu Focal debug tarball') { @@ -430,7 +434,7 @@ parameters { unstash 'properties' popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--debug=1 --build_tarball=1 ") - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Ubuntu Jammy tarball') { @@ -443,7 +447,7 @@ parameters { unstash 'properties' popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_tarball=1 ") - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Ubuntu Jammy debug tarball') { @@ -456,7 +460,7 @@ parameters { unstash 'properties' popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--debug=1 --build_tarball=1 ") - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Debian Buster tarball') { @@ -469,7 +473,7 @@ parameters { unstash 'properties' popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("debian:buster", "--build_tarball=1 ") - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Debian Buster debug tarball') { @@ -482,7 +486,7 @@ parameters { unstash 'properties' popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("debian:buster", "--debug=1 --build_tarball=1 ") - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Debian Bullseye tarball') { @@ -495,7 +499,7 @@ parameters { unstash 'properties' popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_tarball=1 ") - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Debian Bullseye debug tarball') { @@ -508,7 +512,7 @@ parameters { unstash 'properties' popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("debian:bullseye", "--debug=1 --build_tarball=1 ") - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Debian Bookworm tarball') { @@ -521,7 +525,7 @@ parameters { unstash 'properties' popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_tarball=1 ") - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Debian Bookworm debug tarball') { @@ -534,7 +538,7 @@ parameters { unstash 'properties' popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("debian:bookworm", "--debug=1 --build_tarball=1 ") - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -548,9 +552,9 @@ parameters { installCli("deb") unstash 'properties' - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) - uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } stage('Sign packages') { diff --git a/ps/jenkins/percona-server-for-mysql-5.7.yml b/ps/jenkins/percona-server-for-mysql-5.7.yml index 833a8546c1..4b36362e39 100644 --- a/ps/jenkins/percona-server-for-mysql-5.7.yml +++ b/ps/jenkins/percona-server-for-mysql-5.7.yml @@ -1,5 +1,5 @@ - job: - name: ps5.7-autobuild-RELEASE + name: hetzner-ps5.7-autobuild-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ps/jenkins/percona-server-for-mysql-5.7.groovy diff --git a/ps/jenkins/percona-server-for-mysql-8.0-arm.groovy b/ps/jenkins/percona-server-for-mysql-8.0-arm.groovy index fb686b0b3d..4799f1bc2b 100644 --- a/ps/jenkins/percona-server-for-mysql-8.0-arm.groovy +++ b/ps/jenkins/percona-server-for-mysql-8.0-arm.groovy @@ -1,5 +1,5 @@ /* groovylint-disable DuplicateStringLiteral, GStringExpressionWithinString, LineLength */ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -191,9 +191,13 @@ def install_mysql_shell = 'no' pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string(defaultValue: 'https://github.com/percona/percona-server.git', description: 'github repository for build', name: 'GIT_REPO') string(defaultValue: 'release-8.0.37-29', description: 'Tag/Branch for percona-server repository', name: 'BRANCH') string(defaultValue: '1', description: 'RPM version', name: 'RPM_RELEASE') @@ -254,8 +258,8 @@ parameters { } stash includes: 'uploadPath', name: 'uploadPath' stash includes: 'test/percona-server-8.0.properties', name: 'properties' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build PS generic source packages') { @@ -278,8 +282,8 @@ parameters { } } - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } */ @@ -300,8 +304,8 @@ parameters { } } - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -324,7 +328,7 @@ parameters { popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("none", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } } @@ -344,14 +348,14 @@ parameters { popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("none", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } } } stage('Centos 8 ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { script { @@ -364,7 +368,7 @@ parameters { popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("centos:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } } @@ -386,12 +390,12 @@ parameters { } } - pushArtifactFolder("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9 ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -406,13 +410,13 @@ parameters { } } - pushArtifactFolder("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } */ stage('Ubuntu Focal(20.04)') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { script { @@ -425,14 +429,14 @@ parameters { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1 --with_zenfs=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -447,12 +451,12 @@ parameters { } } - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -467,12 +471,12 @@ parameters { } } - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { script { @@ -485,14 +489,14 @@ parameters { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1 --with_zenfs=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } } } stage('Debian Bookworm(12)') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -507,7 +511,7 @@ parameters { } } - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } /* @@ -526,7 +530,7 @@ parameters { popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("none", "--build_tarball=1") - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -546,7 +550,7 @@ parameters { popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("none", "--debug=1 --build_tarball=1") - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -566,7 +570,7 @@ parameters { popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("none", "--build_tarball=1") - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -586,7 +590,7 @@ parameters { popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("none", "--debug=1 --build_tarball=1") - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -608,7 +612,7 @@ parameters { } } - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Oracle Linux 9 ZenFS tarball') { @@ -625,7 +629,7 @@ parameters { echo "The step is skipped" } else { buildStage("none", "--build_tarball=1 --with_zenfs=1") - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -647,7 +651,7 @@ parameters { } } - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04) tarball') { @@ -665,7 +669,7 @@ parameters { popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("none", "--build_tarball=1") - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -685,7 +689,7 @@ parameters { popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("none", "--debug=1 --build_tarball=1") - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -707,7 +711,7 @@ parameters { } } - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04) ZenFS tarball') { @@ -724,7 +728,7 @@ parameters { echo "The step is skipped" } else { buildStage("none", "--build_tarball=1 --with_zenfs=1") - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -746,7 +750,7 @@ parameters { } } - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } */ @@ -761,9 +765,9 @@ parameters { installCli("deb") unstash 'properties' - // uploadRPMfromAWS("rpm/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) - // uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + // uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + // uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } diff --git a/ps/jenkins/percona-server-for-mysql-8.0-arm.yml b/ps/jenkins/percona-server-for-mysql-8.0-arm.yml index c20c049292..69ee6dfff3 100644 --- a/ps/jenkins/percona-server-for-mysql-8.0-arm.yml +++ b/ps/jenkins/percona-server-for-mysql-8.0-arm.yml @@ -1,5 +1,5 @@ - job: - name: ps8.0-arm-RELEASE + name: hetzner-ps8.0-arm-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ps/jenkins/percona-server-for-mysql-8.0-arm.groovy diff --git a/ps/jenkins/percona-server-for-mysql-8.0.groovy b/ps/jenkins/percona-server-for-mysql-8.0.groovy index fe4ee6c4f9..dc16af1601 100644 --- a/ps/jenkins/percona-server-for-mysql-8.0.groovy +++ b/ps/jenkins/percona-server-for-mysql-8.0.groovy @@ -1,5 +1,5 @@ /* groovylint-disable DuplicateStringLiteral, GStringExpressionWithinString, LineLength */ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -196,9 +196,13 @@ def install_mysql_shell = 'no' pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string(defaultValue: 'https://github.com/percona/percona-server.git', description: 'github repository for build', name: 'GIT_REPO') string(defaultValue: 'release-8.0.28-19', description: 'Tag/Branch for percona-server repository', name: 'BRANCH') string(defaultValue: '1', description: 'RPM version', name: 'RPM_RELEASE') @@ -263,8 +267,8 @@ parameters { } stash includes: 'uploadPath', name: 'uploadPath' stash includes: 'test/percona-server-8.0.properties', name: 'properties' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build PS generic source packages') { @@ -286,8 +290,8 @@ parameters { } } - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build PS generic source deb') { @@ -307,8 +311,8 @@ parameters { } } - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -330,7 +334,7 @@ parameters { popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("none", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } } @@ -350,14 +354,14 @@ parameters { popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("none", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } } } stage('Centos 8 ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { script { @@ -370,7 +374,7 @@ parameters { popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("centos:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } } @@ -392,12 +396,12 @@ parameters { } } - pushArtifactFolder("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9 ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -412,12 +416,12 @@ parameters { } } - pushArtifactFolder("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } /* stage('Amazon Linux 2023') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -432,7 +436,7 @@ parameters { } } - pushArtifactFolder("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } }*/ stage('Ubuntu Focal(20.04)') { @@ -450,7 +454,7 @@ parameters { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("none", "--build_deb=1 --with_zenfs=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } } @@ -472,7 +476,7 @@ parameters { } } - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { @@ -492,7 +496,7 @@ parameters { } } - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { @@ -510,7 +514,7 @@ parameters { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("none", "--build_deb=1 --with_zenfs=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } } @@ -532,12 +536,12 @@ parameters { } } - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { script { @@ -550,14 +554,14 @@ parameters { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1 --with_zenfs=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } } } stage('Ubuntu Jammy(22.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -572,12 +576,12 @@ parameters { } } - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -592,12 +596,12 @@ parameters { } } - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { script { @@ -610,14 +614,14 @@ parameters { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1 --with_zenfs=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } } } stage('Debian Bookworm(12) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -632,7 +636,7 @@ parameters { } } - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Centos 7 binary tarball') { @@ -650,7 +654,7 @@ parameters { popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("none", "--build_tarball=1") - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -670,7 +674,7 @@ parameters { popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("none", "--debug=1 --build_tarball=1") - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -690,7 +694,7 @@ parameters { popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("none", "--build_tarball=1") - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -710,7 +714,7 @@ parameters { popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("none", "--debug=1 --build_tarball=1") - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -732,7 +736,7 @@ parameters { } } - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Oracle Linux 9 ZenFS tarball') { @@ -749,7 +753,7 @@ parameters { echo "The step is skipped" } else { buildStage("none", "--build_tarball=1 --with_zenfs=1") - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -771,7 +775,7 @@ parameters { } } - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04) tarball') { @@ -789,7 +793,7 @@ parameters { popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("none", "--build_tarball=1") - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -809,7 +813,7 @@ parameters { popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("none", "--debug=1 --build_tarball=1") - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -831,7 +835,7 @@ parameters { } } - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04) ZenFS tarball') { @@ -848,7 +852,7 @@ parameters { echo "The step is skipped" } else { buildStage("none", "--build_tarball=1 --with_zenfs=1") - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -870,7 +874,7 @@ parameters { } } - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -884,9 +888,9 @@ parameters { installCli("deb") unstash 'properties' - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) - uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } diff --git a/ps/jenkins/percona-server-for-mysql-8.0.yml b/ps/jenkins/percona-server-for-mysql-8.0.yml index d334d9a4de..49d5ad3dee 100644 --- a/ps/jenkins/percona-server-for-mysql-8.0.yml +++ b/ps/jenkins/percona-server-for-mysql-8.0.yml @@ -1,5 +1,5 @@ - job: - name: ps8.0-autobuild-RELEASE + name: hetzner-ps8.0-autobuild-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ps/jenkins/percona-server-for-mysql-8.0.groovy diff --git a/ps/jenkins/percona-server-for-mysql-9.0.groovy b/ps/jenkins/percona-server-for-mysql-9.0.groovy index 000b9fcaaf..2377d0ca52 100644 --- a/ps/jenkins/percona-server-for-mysql-9.0.groovy +++ b/ps/jenkins/percona-server-for-mysql-9.0.groovy @@ -1,5 +1,5 @@ /* groovylint-disable DuplicateStringLiteral, GStringExpressionWithinString, LineLength */ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -183,9 +183,13 @@ def install_mysql_shell = 'no' pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string(defaultValue: 'https://github.com/percona/percona-server.git', description: 'github repository for build', name: 'GIT_REPO') string(defaultValue: 'release-9.0.1-1', description: 'Tag/Branch for percona-server repository', name: 'BRANCH') string(defaultValue: '1', description: 'RPM version', name: 'RPM_RELEASE') @@ -242,8 +246,8 @@ parameters { } stash includes: 'uploadPath', name: 'uploadPath' stash includes: 'test/percona-server-9.0.properties', name: 'properties' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build PS generic source packages') { @@ -264,8 +268,8 @@ parameters { buildStage("none", "--build_src_rpm=1") } } - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build PS generic source deb') { @@ -285,8 +289,8 @@ parameters { } } - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -309,7 +313,7 @@ parameters { buildStage("none", "--build_rpm=1") if (env.EXPERIMENTALMODE == 'NO') { - pushArtifactFolder("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } } @@ -317,7 +321,7 @@ parameters { } stage('Centos 8 ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { script { @@ -330,7 +334,7 @@ parameters { popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("centos:8", "--build_rpm=1") if (env.EXPERIMENTALMODE == 'NO') { - pushArtifactFolder("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } } @@ -352,14 +356,14 @@ parameters { buildStage("none", "--build_rpm=1 --with_zenfs=1") } if (env.EXPERIMENTALMODE == 'NO') { - pushArtifactFolder("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } } } stage('Oracle Linux 9 ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -373,7 +377,7 @@ parameters { buildStage("oraclelinux:9", "--build_rpm=1") } if (env.EXPERIMENTALMODE == 'NO') { - pushArtifactFolder("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } } @@ -393,7 +397,7 @@ parameters { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("none", "--build_deb=1 --with_zenfs=1") if (env.EXPERIMENTALMODE == 'NO') { - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } } @@ -416,7 +420,7 @@ parameters { } } - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { @@ -435,7 +439,7 @@ parameters { buildStage("none", "--build_deb=1 --with_zenfs=1") } if (env.EXPERIMENTALMODE == 'NO') { - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } } @@ -455,7 +459,7 @@ parameters { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("none", "--build_deb=1 --with_zenfs=1") if (env.EXPERIMENTALMODE == 'NO') { - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } } @@ -477,14 +481,14 @@ parameters { buildStage("none", "--build_deb=1 --with_zenfs=1") } if (env.EXPERIMENTALMODE == 'NO') { - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } } } stage('Ubuntu Focal(20.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { script { @@ -497,7 +501,7 @@ parameters { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1 --with_zenfs=1") if (env.EXPERIMENTALMODE == 'NO') { - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } } @@ -505,7 +509,7 @@ parameters { } stage('Ubuntu Jammy(22.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -520,12 +524,12 @@ parameters { } } - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -539,14 +543,14 @@ parameters { buildStage("ubuntu:noble", "--build_deb=1 --with_zenfs=1") } if (env.EXPERIMENTALMODE == 'NO') { - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } } } stage('Debian Bullseye(11) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { script { @@ -560,7 +564,7 @@ parameters { buildStage("debian:bullseye", "--build_deb=1 --with_zenfs=1") if (env.EXPERIMENTALMODE == 'NO') { - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } } @@ -568,7 +572,7 @@ parameters { } stage('Debian Bookworm(12) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -583,7 +587,7 @@ parameters { } if (env.EXPERIMENTALMODE == 'NO') { - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } } @@ -603,7 +607,7 @@ parameters { popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("none", "--build_tarball=1") if (env.EXPERIMENTALMODE == 'NO') { - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -624,7 +628,7 @@ parameters { popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("none", "--debug=1 --build_tarball=1") if (env.EXPERIMENTALMODE == 'NO') { - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -646,7 +650,7 @@ parameters { buildStage("none", "--build_tarball=1") } if (env.EXPERIMENTALMODE == 'NO') { - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -666,7 +670,7 @@ parameters { } else { buildStage("none", "--build_tarball=1 --with_zenfs=1") if (env.EXPERIMENTALMODE == 'NO') { - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -688,7 +692,7 @@ parameters { buildStage("none", "--debug=1 --build_tarball=1") } if (env.EXPERIMENTALMODE == 'NO') { - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -708,7 +712,7 @@ parameters { popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("none", "--build_tarball=1") if (env.EXPERIMENTALMODE == 'NO') { - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -729,7 +733,7 @@ parameters { popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("none", "--debug=1 --build_tarball=1") if (env.EXPERIMENTALMODE == 'NO') { - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -751,7 +755,7 @@ parameters { buildStage("none", "--build_tarball=1") } if (env.EXPERIMENTALMODE == 'NO') { - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -771,7 +775,7 @@ parameters { } else { buildStage("none", "--build_tarball=1 --with_zenfs=1") if (env.EXPERIMENTALMODE == 'NO') { - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -793,7 +797,7 @@ parameters { buildStage("none", "--debug=1 --build_tarball=1") } if (env.EXPERIMENTALMODE == 'NO') { - pushArtifactFolder("tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -809,12 +813,12 @@ parameters { installCli("deb") unstash 'properties' - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) script { if (env.EXPERIMENTALMODE == 'NO') { - uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } } diff --git a/ps/jenkins/percona-server-for-mysql-9.0.yml b/ps/jenkins/percona-server-for-mysql-9.0.yml index 48674ec333..fd7f00b932 100644 --- a/ps/jenkins/percona-server-for-mysql-9.0.yml +++ b/ps/jenkins/percona-server-for-mysql-9.0.yml @@ -1,5 +1,5 @@ - job: - name: ps9.0-RELEASE + name: hetzner-ps9.0-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ps/jenkins/percona-server-for-mysql-9.0.groovy diff --git a/ps/jenkins/qpress.groovy b/ps/jenkins/qpress.groovy index 1c2b1b7a18..1658f53581 100644 --- a/ps/jenkins/qpress.groovy +++ b/ps/jenkins/qpress.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -142,9 +142,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona-lab/qpress-packaging.git', description: 'URL for qpress packaging repository', @@ -196,15 +200,15 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build qpress packages') { parallel { stage('Oracle Linux 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -217,15 +221,15 @@ pipeline { cp -r test/rpm . ''' - pushArtifactFolder("rpm/", AWS_STASH_PATH) - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Oracle Linux 8 ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -238,15 +242,15 @@ pipeline { cp -r test/rpm . ''' - pushArtifactFolder("rpm/", AWS_STASH_PATH) - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -259,15 +263,15 @@ pipeline { cp -r test/rpm . ''' - pushArtifactFolder("rpm/", AWS_STASH_PATH) - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9 ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -280,15 +284,15 @@ pipeline { cp -r test/rpm . ''' - pushArtifactFolder("rpm/", AWS_STASH_PATH) - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Amazon Linux 2023') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -301,15 +305,15 @@ pipeline { cp -r test/rpm . ''' - pushArtifactFolder("rpm/", AWS_STASH_PATH) - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal (20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -321,13 +325,13 @@ pipeline { cp -r test/deb . ''' - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Focal (20.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -339,13 +343,13 @@ pipeline { cp -r test/deb . ''' - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye (11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -357,13 +361,13 @@ pipeline { cp -r test/deb . ''' - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye (11) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -375,13 +379,13 @@ pipeline { cp -r test/deb . ''' - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy (22.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -393,13 +397,13 @@ pipeline { cp -r test/deb . ''' - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy (22.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -411,13 +415,13 @@ pipeline { cp -r test/deb . ''' - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bookworm (12)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -429,13 +433,13 @@ pipeline { cp -r test/deb . ''' - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bookworm (12) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -447,13 +451,13 @@ pipeline { cp -r test/deb . ''' - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble (24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() @@ -465,13 +469,13 @@ pipeline { cp -r test/deb . ''' - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble (24.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -483,8 +487,8 @@ pipeline { cp -r test/deb . ''' - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } diff --git a/ps/jenkins/qpress.yml b/ps/jenkins/qpress.yml index 2171795e63..a164ecf24f 100644 --- a/ps/jenkins/qpress.yml +++ b/ps/jenkins/qpress.yml @@ -1,5 +1,5 @@ - job: - name: qpress-RELEASE + name: hetzner-qpress-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ps/jenkins/qpress.groovy diff --git a/psmdb/jenkins/percona-mongodb-mongosh.groovy b/psmdb/jenkins/percona-mongodb-mongosh.groovy index 7b3069404e..42fd0e331a 100644 --- a/psmdb/jenkins/percona-mongodb-mongosh.groovy +++ b/psmdb/jenkins/percona-mongodb-mongosh.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -30,9 +30,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/mongodb-js/mongosh.git', description: 'URL for percona-mongodb-backup repository', @@ -86,129 +90,129 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build MongoDB Shell RPMs/DEBs/Binary tarballs') { parallel { stage('Oracle Linux 8') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_mongosh=1 --build_variant=rpm-x64") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_mongosh=1 --build_variant=rpm-x64") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Amazon Linux 2023') { agent { - label 'docker-64gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("amazonlinux:2023", "--build_mongosh=1 --build_variant=rpm-x64") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_mongosh=1 --build_variant=deb-x64") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_mongosh=1 --build_variant=deb-x64") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_mongosh=1 --build_variant=deb-x64") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_mongosh=1 --build_variant=deb-x64") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bookworm(12)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_mongosh=1 --build_variant=deb-x64") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Oraclelinux 8 tarball') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_mongosh=1 --build_variant=linux-x64") - pushArtifactFolder("tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } } diff --git a/psmdb/jenkins/percona-mongodb-mongosh.yml b/psmdb/jenkins/percona-mongodb-mongosh.yml index 29b08536db..97a124b76c 100644 --- a/psmdb/jenkins/percona-mongodb-mongosh.yml +++ b/psmdb/jenkins/percona-mongodb-mongosh.yml @@ -1,5 +1,5 @@ - job: - name: mongosh-autobuild-RELEASE + name: hetzner-mongosh-autobuild-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: psmdb/jenkins/percona-mongodb-mongosh.groovy diff --git a/psmdb/jenkins/percona-server-for-mongodb-3.6.groovy b/psmdb/jenkins/percona-server-for-mongodb-3.6.groovy index ef63e85f23..a47b8eb7ba 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-3.6.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-3.6.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/percona-server-mongodb.git', description: 'URL for percona-server-mongodb repository', @@ -90,36 +94,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build PSMDB generic source packages') { parallel { stage('Build PSMDB generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("centos:7", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build PSMDB generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:xenial", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -128,105 +132,105 @@ pipeline { parallel { stage('Centos 7') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("centos:7", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Centos 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("centos:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Xenial(16.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:xenial", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Stretch(9)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:stretch", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Buster(10)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:buster", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Centos 7 tarball') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("centos:7", "--build_tarball=1") - pushArtifactFolder("tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } stage('Centos 7 debug tarball') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("centos:7", "--debug=1") - pushArtifactFolder("debug/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "debug/", AWS_STASH_PATH) } } } diff --git a/psmdb/jenkins/percona-server-for-mongodb-3.6.yml b/psmdb/jenkins/percona-server-for-mongodb-3.6.yml index 68520d2e73..4d0a89e195 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-3.6.yml +++ b/psmdb/jenkins/percona-server-for-mongodb-3.6.yml @@ -1,5 +1,5 @@ - job: - name: psmdb36-autobuild-RELEASE + name: hetzner-psmdb36-autobuild-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: psmdb/jenkins/percona-server-for-mongodb-3.6.groovy diff --git a/psmdb/jenkins/percona-server-for-mongodb-4.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-4.0.groovy index 4aa3de0be0..822526d8b7 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-4.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-4.0.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/percona-server-mongodb.git', description: 'URL for percona-server-mongodb repository', @@ -86,36 +90,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build PSMDB generic source packages') { parallel { stage('Build PSMDB generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("centos:7", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build PSMDB generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:xenial", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -124,92 +128,92 @@ pipeline { parallel { stage('Centos 7') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("centos:7", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Centos 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("centos:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Buster(10)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:buster", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Centos 7 tarball') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("centos:7", "--build_tarball=1") - pushArtifactFolder("tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } stage('Centos 7 debug tarball') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("centos:7", "--debug=1") - pushArtifactFolder("debug/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "debug/", AWS_STASH_PATH) } } } diff --git a/psmdb/jenkins/percona-server-for-mongodb-4.0.yml b/psmdb/jenkins/percona-server-for-mongodb-4.0.yml index ea731cc559..57251e7b4b 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-4.0.yml +++ b/psmdb/jenkins/percona-server-for-mongodb-4.0.yml @@ -1,5 +1,5 @@ - job: - name: psmdb40-autobuild-RELEASE + name: hetzner-psmdb40-autobuild-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: psmdb/jenkins/percona-server-for-mongodb-4.0.groovy diff --git a/psmdb/jenkins/percona-server-for-mongodb-4.2.groovy b/psmdb/jenkins/percona-server-for-mongodb-4.2.groovy index efce86b7e2..e67429d901 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-4.2.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-4.2.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/percona-server-mongodb.git', description: 'URL for percona-server-mongodb repository', @@ -86,36 +90,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build PSMDB generic source packages') { parallel { stage('Build PSMDB generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("centos:7", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build PSMDB generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:xenial", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -124,130 +128,130 @@ pipeline { parallel { stage('Centos 7') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("centos:7", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Centos 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("centos:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Buster(10)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:buster", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Centos 7 tarball(glibc2.17)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("centos:7", "--build_tarball=1") - pushArtifactFolder("tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } stage('Centos 7 debug binary tarball(glibc2.17)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("centos:7", "--debug=1") - pushArtifactFolder("debug/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "debug/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04) binary tarball(glibc2.35)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_tarball=1") - pushArtifactFolder("tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } stage('Ubuntu Jammy(22.04) debug binary tarball(glibc2.35)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--debug=1") - pushArtifactFolder("debug/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "debug/", AWS_STASH_PATH) } } } diff --git a/psmdb/jenkins/percona-server-for-mongodb-4.2.yml b/psmdb/jenkins/percona-server-for-mongodb-4.2.yml index c6d928738d..7d3aa10dd6 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-4.2.yml +++ b/psmdb/jenkins/percona-server-for-mongodb-4.2.yml @@ -1,5 +1,5 @@ - job: - name: psmdb42-autobuild-RELEASE + name: hetzner-psmdb42-autobuild-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: psmdb/jenkins/percona-server-for-mongodb-4.2.groovy diff --git a/psmdb/jenkins/percona-server-for-mongodb-4.4.groovy b/psmdb/jenkins/percona-server-for-mongodb-4.4.groovy index a0d87bb204..3be21d9b09 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-4.4.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-4.4.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'micro-amazon' + label params.CLOUD == 'Hetzner' ? 'launcher-x64' : 'micro-amazon' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/percona-server-mongodb.git', description: 'URL for percona-server-mongodb repository', @@ -70,7 +74,7 @@ pipeline { stages { stage('Create PSMDB source tarball') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") @@ -89,36 +93,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build PSMDB generic source packages') { parallel { stage('Build PSMDB generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("centos:7", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build PSMDB generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("debian:buster", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -127,130 +131,130 @@ pipeline { parallel { stage('Centos 7') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("centos:7", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 8') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Buster(10)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:buster", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Centos 7 binary tarball(glibc2.17)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("centos:7", "--build_tarball=1") - pushArtifactFolder("tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } stage('Centos 7 debug binary tarball(glibc2.17)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("centos:7", "--debug=1") - pushArtifactFolder("debug/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "debug/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04) binary tarball(glibc2.35)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_tarball=1") - pushArtifactFolder("tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } stage('Ubuntu Jammy(22.04) debug binary tarball(glibc2.35)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--debug=1") - pushArtifactFolder("debug/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "debug/", AWS_STASH_PATH) } } } diff --git a/psmdb/jenkins/percona-server-for-mongodb-4.4.yml b/psmdb/jenkins/percona-server-for-mongodb-4.4.yml index 9057a22cd7..2177c434a8 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-4.4.yml +++ b/psmdb/jenkins/percona-server-for-mongodb-4.4.yml @@ -1,5 +1,5 @@ - job: - name: psmdb44-autobuild-RELEASE + name: hetzner-psmdb44-autobuild-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: psmdb/jenkins/percona-server-for-mongodb-4.4.groovy diff --git a/psmdb/jenkins/percona-server-for-mongodb-5.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-5.0.groovy index e584b3f4c3..f12609d1a0 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-5.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-5.0.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'micro-amazon' + label params.CLOUD == 'Hetzner' ? 'launcher-x64' : 'micro-amazon' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/percona-server-mongodb.git', description: 'URL for percona-server-mongodb repository', @@ -70,7 +74,7 @@ pipeline { stages { stage('Create PSMDB source tarball') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") @@ -89,36 +93,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build PSMDB generic source packages') { parallel { stage('Build PSMDB generic source rpm') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build PSMDB generic source deb') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -127,132 +131,132 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Oraclelinux 8 binary tarball(glibc2.28)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_tarball=1") - pushArtifactFolder("tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } stage('Ubuntu Focal(20.04) binary tarball(glibc2.31)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_tarball=1") - pushArtifactFolder("tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } stage('Ubuntu Jammy(22.04) binary tarball(glibc2.35)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_tarball=1") - pushArtifactFolder("tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } stage('Ubuntu Noble(24.04) binary tarball(glibc2.39)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_tarball=1") - pushArtifactFolder("tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } stage('Debian Bullseye(11) binary tarball(glibc2.31)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_tarball=1") - pushArtifactFolder("tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } } diff --git a/psmdb/jenkins/percona-server-for-mongodb-5.0.yml b/psmdb/jenkins/percona-server-for-mongodb-5.0.yml index fb9a3b3ddc..f5977e245a 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-5.0.yml +++ b/psmdb/jenkins/percona-server-for-mongodb-5.0.yml @@ -1,5 +1,5 @@ - job: - name: psmdb50-autobuild-RELEASE + name: hetzner-psmdb50-autobuild-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: psmdb/jenkins/percona-server-for-mongodb-5.0.groovy diff --git a/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy index 7f2ad41c4d..1a6e43ba36 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy @@ -566,4 +566,4 @@ pipeline { deleteDir() } } -} +} \ No newline at end of file diff --git a/pt/jenkins/percona-toolkit.groovy b/pt/jenkins/percona-toolkit.groovy index 1d474c2636..c74f18ef62 100644 --- a/pt/jenkins/percona-toolkit.groovy +++ b/pt/jenkins/percona-toolkit.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -28,9 +28,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/percona-toolkit.git', description: 'URL for percona-toolkit repository', @@ -83,36 +87,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build Percona Toolkit generic source packages') { parallel { stage('Build Percona Toolkit generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build Percona Toolkit generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -121,197 +125,197 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 8 ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9 ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bookworm(12)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bookworm(12) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Xenial(16.04) tarball') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:xenial", "--build_tarball=1") - pushArtifactFolder("test/tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("test/tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "test/tarball/", AWS_STASH_PATH, 'binary') } } diff --git a/pt/jenkins/percona-toolkit.yml b/pt/jenkins/percona-toolkit.yml index 11407be6c7..b1dcb17f49 100644 --- a/pt/jenkins/percona-toolkit.yml +++ b/pt/jenkins/percona-toolkit.yml @@ -1,5 +1,5 @@ - job: - name: percona-toolkit-RELEASE + name: hetzner-percona-toolkit-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: pt/jenkins/percona-toolkit.groovy diff --git a/pxb/jenkins/pxb-24-arm.groovy b/pxb/jenkins/pxb-24-arm.groovy index 30a83a4704..1d10e8513c 100644 --- a/pxb/jenkins/pxb-24-arm.groovy +++ b/pxb/jenkins/pxb-24-arm.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/percona-xtrabackup.git', description: 'URL for PXB git repository', @@ -61,7 +65,7 @@ pipeline { stages { stage('Create PXB source tarball') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${BRANCH} - [${BUILD_URL}]") @@ -83,8 +87,8 @@ pipeline { XB_VERSION_EXTRA = sh(returnStdout: true, script: "grep 'XB_VERSION_EXTRA' ./test/percona-xtrabackup-2.4.properties | cut -d = -f 2 | sed 's/-//g'").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } @@ -92,15 +96,15 @@ pipeline { parallel { stage('Build PXB generic source rpm') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } } //parallel @@ -110,28 +114,28 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } diff --git a/pxb/jenkins/pxb-24-arm.yml b/pxb/jenkins/pxb-24-arm.yml index ef14c24cb8..7e25a4e08d 100644 --- a/pxb/jenkins/pxb-24-arm.yml +++ b/pxb/jenkins/pxb-24-arm.yml @@ -1,5 +1,5 @@ - job: - name: percona-xtrabackup-2.4-arm-RELEASE + name: hetzner-percona-xtrabackup-2.4-arm-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: pxb/jenkins/pxb-24-arm.groovy diff --git a/pxb/jenkins/pxb-24.groovy b/pxb/jenkins/pxb-24.groovy index 153050250a..367fa548f8 100644 --- a/pxb/jenkins/pxb-24.groovy +++ b/pxb/jenkins/pxb-24.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -28,9 +28,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/percona-xtrabackup.git', description: 'URL for PXB git repository', @@ -79,36 +83,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build PXB generic source packages') { parallel { stage('Build PXB generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("centos:7", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build PXB generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_source_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -117,145 +121,145 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } /* stage('Amazon Linux 2023') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("amazonlinux:2023", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } }*/ stage('Ubuntu Bionic(18.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:bionic", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Buster(10)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:buster", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bookworm(12)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('OracleLinux 8 tarball') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_tarball=1") - pushArtifactFolder("test/tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("test/tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "test/tarball/", AWS_STASH_PATH, 'binary') } } diff --git a/pxb/jenkins/pxb-24.yml b/pxb/jenkins/pxb-24.yml index e4bb139e2f..0f277a75f1 100644 --- a/pxb/jenkins/pxb-24.yml +++ b/pxb/jenkins/pxb-24.yml @@ -1,5 +1,5 @@ - job: - name: percona-xtrabackup-2.4-RELEASE + name: hetzner-percona-xtrabackup-2.4-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: pxb/jenkins/pxb-24.groovy diff --git a/pxb/jenkins/pxb-80-arm.groovy b/pxb/jenkins/pxb-80-arm.groovy index a9da8a92d1..689ed997e9 100644 --- a/pxb/jenkins/pxb-80-arm.groovy +++ b/pxb/jenkins/pxb-80-arm.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/percona-xtrabackup.git', description: 'URL for PXB git repository', @@ -61,7 +65,7 @@ pipeline { stages { stage('Create PXB source tarball') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${BRANCH} - [${BUILD_URL}]") @@ -83,8 +87,8 @@ pipeline { XB_VERSION_EXTRA = sh(returnStdout: true, script: "grep 'XB_VERSION_EXTRA' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 | sed 's/-//g'").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } @@ -92,28 +96,28 @@ pipeline { parallel { stage('Build PXB generic source rpm') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build PXB generic source deb') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_source_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -123,93 +127,93 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bookworm(12)') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } diff --git a/pxb/jenkins/pxb-80-arm.yml b/pxb/jenkins/pxb-80-arm.yml index 552a406cf5..964bb5f4c1 100644 --- a/pxb/jenkins/pxb-80-arm.yml +++ b/pxb/jenkins/pxb-80-arm.yml @@ -1,5 +1,5 @@ - job: - name: percona-xtrabackup-8.0-arm-RELEASE + name: hetzner-percona-xtrabackup-8.0-arm-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: pxb/jenkins/pxb-80-arm.groovy diff --git a/pxb/jenkins/pxb-80.groovy b/pxb/jenkins/pxb-80.groovy index afa44d1b7e..4523e374ad 100644 --- a/pxb/jenkins/pxb-80.groovy +++ b/pxb/jenkins/pxb-80.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -141,9 +141,13 @@ def git_repo = "https://github.com/Percona-QA/package-testing.git" pipeline { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/percona-xtrabackup.git', description: 'URL for PXB git repository', @@ -196,8 +200,8 @@ pipeline { XB_VERSION_EXTRA = sh(returnStdout: true, script: "grep 'XB_VERSION_EXTRA' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 | sed 's/-//g'").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } @@ -205,7 +209,7 @@ pipeline { parallel { stage('Build PXB generic source rpm') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -218,13 +222,13 @@ pipeline { } } - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build PXB generic source deb') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -237,8 +241,8 @@ pipeline { } } - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -248,7 +252,7 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -259,15 +263,15 @@ pipeline { popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } } } stage('Oracle Linux 8 ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { script { @@ -278,15 +282,15 @@ pipeline { popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } } } stage('Oracle Linux 9') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -298,14 +302,14 @@ pipeline { buildStage("oraclelinux:9", "--build_rpm=1") } - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } } stage('Oracle Linux 9 ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { script { @@ -317,14 +321,14 @@ pipeline { buildStage("oraclelinux:9", "--build_rpm=1") } - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } } /* stage('Amazon Linux 2023') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -336,14 +340,14 @@ pipeline { buildStage("amazonlinux:2023", "--build_rpm=1") } - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } }*/ stage('Ubuntu Focal(20.04)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -354,15 +358,15 @@ pipeline { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } } stage('Ubuntu Focal(20.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { script { @@ -373,15 +377,15 @@ pipeline { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -393,14 +397,14 @@ pipeline { buildStage("ubuntu:jammy", "--build_deb=1") } - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } stage('Ubuntu Jammy(22.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { script { @@ -412,14 +416,14 @@ pipeline { buildStage("ubuntu:jammy", "--build_deb=1") } - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -431,14 +435,14 @@ pipeline { buildStage("ubuntu:noble", "--build_deb=1") } - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } stage('Ubuntu Noble(24.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { script { @@ -450,14 +454,14 @@ pipeline { buildStage("ubuntu:noble", "--build_deb=1") } - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } stage('Debian Bullseye(11)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -468,15 +472,15 @@ pipeline { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } } stage('Debian Bullseye(11) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { script { @@ -487,15 +491,15 @@ pipeline { popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } } stage('Debian Bookworm(12)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -506,14 +510,14 @@ pipeline { } else { buildStage("debian:bookworm", "--build_deb=1") } - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } stage('Debian Bookworm(12) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { script { @@ -524,14 +528,14 @@ pipeline { } else { buildStage("debian:bookworm", "--build_deb=1") } - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } stage('Oracle Linux 8 tarball') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -542,15 +546,15 @@ pipeline { popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_tarball=1") - pushArtifactFolder("test/tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("test/tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "test/tarball/", AWS_STASH_PATH, 'binary') } } } } stage('Oracle Linux 9 tarball') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -562,14 +566,14 @@ pipeline { buildStage("oraclelinux:9", "--build_tarball=1") } - pushArtifactFolder("test/tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("test/tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "test/tarball/", AWS_STASH_PATH, 'binary') } } } stage('Ubuntu Focal(20.04) tarball') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -580,15 +584,15 @@ pipeline { popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_tarball=1") - pushArtifactFolder("test/tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("test/tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "test/tarball/", AWS_STASH_PATH, 'binary') } } } } stage('Ubuntu Jammy(22.04) tarball') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -600,14 +604,14 @@ pipeline { buildStage("ubuntu:jammy", "--build_tarball=1") } - pushArtifactFolder("test/tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("test/tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "test/tarball/", AWS_STASH_PATH, 'binary') } } } stage('Ubuntu Noble(24.04) tarball') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -619,14 +623,14 @@ pipeline { buildStage("ubuntu:noble", "--build_tarball=1") } - pushArtifactFolder("test/tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("test/tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "test/tarball/", AWS_STASH_PATH, 'binary') } } } stage('Debian Bullseye(11) tarball') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -637,15 +641,15 @@ pipeline { popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_tarball=1") - pushArtifactFolder("test/tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("test/tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "test/tarball/", AWS_STASH_PATH, 'binary') } } } } stage('Debian Bookworm(12) tarball') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -657,8 +661,8 @@ pipeline { buildStage("debian:bookworm", "--build_tarball=1") } - pushArtifactFolder("test/tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("test/tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "test/tarball/", AWS_STASH_PATH, 'binary') } } } diff --git a/pxb/jenkins/pxb-80.yml b/pxb/jenkins/pxb-80.yml index 22c13fa84c..f640673947 100644 --- a/pxb/jenkins/pxb-80.yml +++ b/pxb/jenkins/pxb-80.yml @@ -1,5 +1,5 @@ - job: - name: percona-xtrabackup-8.0-RELEASE + name: hetzner-percona-xtrabackup-8.0-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: pxb/jenkins/pxb-80.groovy diff --git a/pxc/jenkins/percona-xtradb-cluster-5.7.groovy b/pxc/jenkins/percona-xtradb-cluster-5.7.groovy index 88c5e2e950..fa82fb7531 100644 --- a/pxc/jenkins/percona-xtradb-cluster-5.7.groovy +++ b/pxc/jenkins/percona-xtradb-cluster-5.7.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -49,9 +49,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/percona-xtradb-cluster-private.git', description: 'URL for percona-xtradb-cluster repository', @@ -115,15 +119,15 @@ pipeline { } stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build PXC generic source packages') { parallel { stage('Build PXC generic source rpm') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -132,13 +136,13 @@ pipeline { buildStage("centos:7", "--build_src_rpm=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build PXC generic source deb') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -147,8 +151,8 @@ pipeline { buildStage("ubuntu:xenial", "--build_source_deb=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -157,7 +161,7 @@ pipeline { parallel { stage('Centos 7') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -166,12 +170,12 @@ pipeline { buildStage("centos:7", "--build_rpm=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' - pushArtifactFolder("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Centos 8') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -180,12 +184,12 @@ pipeline { buildStage("centos:8", "--build_rpm=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' - pushArtifactFolder("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -194,12 +198,12 @@ pipeline { buildStage("oraclelinux:9", "--build_rpm=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' - pushArtifactFolder("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Bionic(18.04)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -208,12 +212,12 @@ pipeline { buildStage("ubuntu:bionic", "--build_deb=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -222,12 +226,12 @@ pipeline { buildStage("ubuntu:focal", "--build_deb=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -236,12 +240,12 @@ pipeline { buildStage("ubuntu:jammy", "--build_deb=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -250,12 +254,12 @@ pipeline { buildStage("ubuntu:noble", "--build_deb=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Buster(10)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -264,12 +268,12 @@ pipeline { buildStage("debian:buster", "--build_deb=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -278,12 +282,12 @@ pipeline { buildStage("debian:bullseye", "--build_deb=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bookworm(12)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -292,12 +296,12 @@ pipeline { buildStage("debian:bookworm", "--build_deb=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' - pushArtifactFolder("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Centos 7 tarball') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -306,13 +310,13 @@ pipeline { buildStage("centos:7", "--build_tarball=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' - pushArtifactFolder("test/tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) } } /* stage('Centos 7 debug tarball') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -321,13 +325,13 @@ pipeline { buildStage("centos:7", "--build_tarball=1 --debug=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' - pushArtifactFolder("debug/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "debug/", AWS_STASH_PATH) } } */ stage('Centos 8 tarball') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -336,12 +340,12 @@ pipeline { buildStage("centos:8", "--build_tarball=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' - pushArtifactFolder("test/tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) } } stage('Centos 9 tarball') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -350,12 +354,12 @@ pipeline { buildStage("oraclelinux:9", "--build_tarball=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' - pushArtifactFolder("test/tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) } } stage('Ubuntu Bionic (18.04) tarball') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -364,12 +368,12 @@ pipeline { buildStage("ubuntu:bionic", "--build_tarball=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' - pushArtifactFolder("test/tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) } } stage('Ubuntu Focal (20.04) tarball') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -378,12 +382,12 @@ pipeline { buildStage("ubuntu:focal", "--build_tarball=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' - pushArtifactFolder("test/tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04) tarball') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -392,12 +396,12 @@ pipeline { buildStage("ubuntu:jammy", "--build_tarball=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' - pushArtifactFolder("test/tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) } } stage('Debian Buster (10) tarball') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -406,12 +410,12 @@ pipeline { buildStage("debian:buster", "--build_tarball=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' - pushArtifactFolder("test/tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) } } stage('Debian Bullseye (11) tarball') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -420,12 +424,12 @@ pipeline { buildStage("debian:bullseye", "--build_tarball=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' - pushArtifactFolder("test/tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) } } stage('Debian Bookworm (12) tarball') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -434,7 +438,7 @@ pipeline { buildStage("debian:bookworm", "--build_tarball=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' - pushArtifactFolder("test/tarball/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) } } } @@ -448,9 +452,9 @@ pipeline { installCli("deb") unstash 'pxc-57.properties' - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) - uploadTarballfromAWS("test/tarball/", AWS_STASH_PATH, 'binary') + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "test/tarball/", AWS_STASH_PATH, 'binary') } } stage('Sign packages') { diff --git a/pxc/jenkins/percona-xtradb-cluster-5.7.yml b/pxc/jenkins/percona-xtradb-cluster-5.7.yml index 0ef9231615..e2a8c387c0 100644 --- a/pxc/jenkins/percona-xtradb-cluster-5.7.yml +++ b/pxc/jenkins/percona-xtradb-cluster-5.7.yml @@ -1,5 +1,5 @@ - job: - name: pxc57-autobuild-RELEASE + name: hetzner-pxc57-autobuild-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: pxc/jenkins/percona-xtradb-cluster-5.7.groovy diff --git a/pxc/jenkins/percona-xtradb-cluster-8.0.groovy b/pxc/jenkins/percona-xtradb-cluster-8.0.groovy index ddeec39b36..2b009ed7be 100644 --- a/pxc/jenkins/percona-xtradb-cluster-8.0.groovy +++ b/pxc/jenkins/percona-xtradb-cluster-8.0.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/percona-xtradb-cluster.git', description: 'URL for percona-xtradb-cluster repository', @@ -95,15 +99,15 @@ pipeline { } stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build PXC generic source packages') { parallel { stage('Build PXC generic source rpm') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -117,13 +121,13 @@ pipeline { } } stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build PXC generic source deb') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -137,8 +141,8 @@ pipeline { } } stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -147,7 +151,7 @@ pipeline { parallel { stage('Centos 7') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { echo "The step is skipped" @@ -158,14 +162,14 @@ pipeline { buildStage("centos:7", "--build_rpm=1") stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) */ } } stage('Centos 8') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -178,15 +182,15 @@ pipeline { buildStage("centos:8", "--build_rpm=1") stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } } } stage('Centos 8 ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { script { @@ -199,15 +203,15 @@ pipeline { buildStage("centos:8", "--build_rpm=1") stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } } } stage('Oracle Linux 9') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -221,13 +225,13 @@ pipeline { } } stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9 ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -241,13 +245,13 @@ pipeline { } } stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } /* stage('Amazon Linux 2023') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -256,13 +260,13 @@ pipeline { buildStage("amazonlinux:2023", "--build_rpm=1") stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } }*/ stage('Ubuntu Focal(20.04)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -275,15 +279,15 @@ pipeline { buildStage("ubuntu:focal", "--build_deb=1") stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } } stage('Ubuntu Focal(20.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { script { @@ -296,15 +300,15 @@ pipeline { buildStage("ubuntu:focal", "--build_deb=1") stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -319,13 +323,13 @@ pipeline { } stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -340,13 +344,13 @@ pipeline { } stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -361,13 +365,13 @@ pipeline { } stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -382,13 +386,13 @@ pipeline { } stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -401,15 +405,15 @@ pipeline { buildStage("debian:bullseye", "--build_deb=1") stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } } stage('Debian Bullseye(11) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { script { @@ -422,15 +426,15 @@ pipeline { buildStage("debian:bullseye", "--build_deb=1") stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } } stage('Debian Bookworm(12)') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -445,13 +449,13 @@ pipeline { } stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bookworm(12) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -466,13 +470,13 @@ pipeline { } stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Centos 8 tarball') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -485,15 +489,15 @@ pipeline { buildStage("centos:8", "--build_tarball=1") stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' - pushArtifactFolder("test/tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("test/tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "test/tarball/", AWS_STASH_PATH, 'binary') } } } } stage('Oracle Linux 9 tarball') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -508,13 +512,13 @@ pipeline { } stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' - pushArtifactFolder("test/tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("test/tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "test/tarball/", AWS_STASH_PATH, 'binary') } } stage('Debian Bullseye(11) tarball') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -527,15 +531,15 @@ pipeline { buildStage("debian:bullseye", "--build_tarball=1") stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' - pushArtifactFolder("test/tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("test/tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "test/tarball/", AWS_STASH_PATH, 'binary') } } } } stage('Ubuntu Jammy(22.04) tarball') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -550,8 +554,8 @@ pipeline { } stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' - pushArtifactFolder("test/tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("test/tarball/", AWS_STASH_PATH, 'binary') + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "test/tarball/", AWS_STASH_PATH, 'binary') } } } diff --git a/pxc/jenkins/percona-xtradb-cluster-8.0.yml b/pxc/jenkins/percona-xtradb-cluster-8.0.yml index 87d235dcb2..cdf5b2bdfc 100644 --- a/pxc/jenkins/percona-xtradb-cluster-8.0.yml +++ b/pxc/jenkins/percona-xtradb-cluster-8.0.yml @@ -1,5 +1,5 @@ - job: - name: pxc80-autobuild-RELEASE + name: hetzner-pxc80-autobuild-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: pxc/jenkins/percona-xtradb-cluster-8.0.groovy diff --git a/rel/jenkins/release-from-repository.groovy b/rel/jenkins/release-from-repository.groovy index b5635297f6..6707b703ec 100644 --- a/rel/jenkins/release-from-repository.groovy +++ b/rel/jenkins/release-from-repository.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -8,6 +8,10 @@ pipeline { label 'jenkins' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: '', description: 'PATH_TO_BUILD must be in form $DESTINATION/**release**/$revision', diff --git a/rel/jenkins/release-from-repository.yml b/rel/jenkins/release-from-repository.yml index 7b2b8c73f4..1041a8f0d8 100644 --- a/rel/jenkins/release-from-repository.yml +++ b/rel/jenkins/release-from-repository.yml @@ -1,5 +1,5 @@ - job: - name: RELEASE-from-repository + name: hetzner-RELEASE-from-repository project-type: pipeline description: | Do not edit this job through the web! @@ -9,7 +9,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: rel/jenkins/release-from-repository.groovy diff --git a/sysbench/sysbench.groovy b/sysbench/sysbench.groovy index 9a8114cc8a..c87ccb7383 100644 --- a/sysbench/sysbench.groovy +++ b/sysbench/sysbench.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -28,9 +28,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/akopytov/sysbench.git', description: 'URL for sysbench repository', @@ -99,36 +103,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build Sysbench generic source packages') { parallel { stage('Build Sysbench generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build Sysbench generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:bionic", "--build_source_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -137,184 +141,184 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 8 ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9 ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bookworm(12)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bookworm(12) ARM') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder("source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } diff --git a/sysbench/sysbench.yml b/sysbench/sysbench.yml index be75172fd6..1002ba764b 100644 --- a/sysbench/sysbench.yml +++ b/sysbench/sysbench.yml @@ -1,5 +1,5 @@ - job: - name: sysbench-RELEASE + name: hetzner-sysbench-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: sysbench/sysbench.groovy diff --git a/vars/signDEB.groovy b/vars/signDEB.groovy index 865cc734b2..0836f6f9ed 100644 --- a/vars/signDEB.groovy +++ b/vars/signDEB.groovy @@ -1,5 +1,6 @@ -def call() { - node('master') { +def call(String CLOUD_NAME = 'default') { + def nodeLabel = (CLOUD_NAME == 'Hetzner') ? 'launcher-x64' : 'micro-amazon' + node(nodeLabel) { unstash 'uploadPath' withCredentials([string(credentialsId: 'SIGN_PASSWORD', variable: 'SIGN_PASSWORD')]) { withCredentials([sshUserPrivateKey(credentialsId: 'repo.ci.percona.com', keyFileVariable: 'KEY_PATH', passphraseVariable: '', usernameVariable: 'USER')]) { diff --git a/vars/signRPM.groovy b/vars/signRPM.groovy index 042a9d6450..df9ce77952 100644 --- a/vars/signRPM.groovy +++ b/vars/signRPM.groovy @@ -1,5 +1,6 @@ -def call() { - node('master') { +def call(String CLOUD_NAME = 'default') { + def nodeLabel = (CLOUD_NAME == 'Hetzner') ? 'launcher-x64' : 'micro-amazon' + node(nodeLabel) { unstash 'uploadPath' withCredentials([string(credentialsId: 'SIGN_PASSWORD', variable: 'SIGN_PASSWORD')]) { withCredentials([sshUserPrivateKey(credentialsId: 'repo.ci.percona.com', keyFileVariable: 'KEY_PATH', passphraseVariable: '', usernameVariable: 'USER')]) { diff --git a/vars/sync2ProdPPG.groovy b/vars/sync2ProdPPG.groovy index 1d8f15b61a..680b7daca0 100644 --- a/vars/sync2ProdPPG.groovy +++ b/vars/sync2ProdPPG.groovy @@ -1,5 +1,6 @@ -def call(String REPO_NAME, String DESTINATION) { - node('master') { +def call(String CLOUD_NAME, String REPO_NAME, String DESTINATION) { + def nodeLabel = (CLOUD_NAME == 'Hetzner') ? 'launcher-x64' : 'micro-amazon' + node(nodeLabel) { def path_to_build = "/srv/UPLOAD/POSTGRESQL_SYNC/${repo_version}" withCredentials([string(credentialsId: 'SIGN_PASSWORD', variable: 'SIGN_PASSWORD')]) { withCredentials([sshUserPrivateKey(credentialsId: 'repo.ci.percona.com', keyFileVariable: 'KEY_PATH', passphraseVariable: '', usernameVariable: 'USER')]) { diff --git a/vars/sync2web.groovy b/vars/sync2web.groovy index 101e701dd0..866e2a44b9 100644 --- a/vars/sync2web.groovy +++ b/vars/sync2web.groovy @@ -1,5 +1,6 @@ -def call(String REPO_NAME, String DESTINATION) { - node('master') { +def call(String CLOUD_NAME, String REPO_NAME, String DESTINATION) { + def nodeLabel = (CLOUD_NAME == 'Hetzner') ? 'launcher-x64' : 'micro-amazon' + node(nodeLabel) { deleteDir() unstash 'uploadPath' def path_to_build = "/srv/UPLOAD/POSTGRESQL_SYNC/${repo_version}" diff --git a/vars/uploadPGTarballToDownloadsTesting.groovy b/vars/uploadPGTarballToDownloadsTesting.groovy index 13d4dd15a0..153d817fb9 100644 --- a/vars/uploadPGTarballToDownloadsTesting.groovy +++ b/vars/uploadPGTarballToDownloadsTesting.groovy @@ -1,5 +1,6 @@ -def call(String PRODUCT_NAME, String PRODUCT_VERSION) { - node('master') { +def call(String CLOUD_NAME, String PRODUCT_NAME, String PRODUCT_VERSION) { + def nodeLabel = (CLOUD_NAME == 'Hetzner') ? 'launcher-x64' : 'master' + node(nodeLabel) { deleteDir() unstash "uploadPath-${PRODUCT_VERSION}" def path_to_build = sh(returnStdout: true, script: "cat uploadPath-${PRODUCT_VERSION}").trim() diff --git a/vars/uploadPGTarballfromAWS.groovy b/vars/uploadPGTarballfromAWS.groovy index 2aeafbccf4..1aebf4b6fa 100644 --- a/vars/uploadPGTarballfromAWS.groovy +++ b/vars/uploadPGTarballfromAWS.groovy @@ -1,7 +1,8 @@ -def call(String FOLDER_NAME, String AWS_STASH_PATH, String TarballType, String PRODUCT_VERSION) { - node('master') { +def call(String CLOUD_NAME, String FOLDER_NAME, String AWS_STASH_PATH, String TarballType) { + def nodeLabel = (CLOUD_NAME == 'Hetzner') ? 'launcher-x64' : 'micro-amazon' + node(nodeLabel) { deleteDir() - popArtifactFolder(FOLDER_NAME, AWS_STASH_PATH) + popArtifactFolder(CLOUD_NAME, FOLDER_NAME, AWS_STASH_PATH) //unstash "${TarballType}.tarball" unstash "uploadPath-${PRODUCT_VERSION}" withCredentials([sshUserPrivateKey(credentialsId: 'repo.ci.percona.com', keyFileVariable: 'KEY_PATH', usernameVariable: 'USER')]) { From fa4553e49492ec4c744856a9a1dcde5b76a77a1d Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Mon, 10 Feb 2025 17:07:51 +0200 Subject: [PATCH 033/269] PKG-476 rel.cd: fix ppg/ydiff.groovy to work with Hetzner --- ppg/ydiff.groovy | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/ppg/ydiff.groovy b/ppg/ydiff.groovy index 3d26728bb6..543d443b50 100644 --- a/ppg/ydiff.groovy +++ b/ppg/ydiff.groovy @@ -100,7 +100,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) @@ -113,7 +113,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) @@ -130,7 +130,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -143,7 +143,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -156,7 +156,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -169,7 +169,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -182,7 +182,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -195,7 +195,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -208,7 +208,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -220,14 +220,14 @@ pipeline { stage('Sign packages') { steps { - signRPM() - signDEB() + signRPM(params.CLOUD) + signDEB(params.CLOUD) } } stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(PPG_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) } } From 4b5f30c234d9a3628e32fbeff08985f34341da73 Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Mon, 10 Feb 2025 18:28:45 +0200 Subject: [PATCH 034/269] PKG-476 rel.cd: fix uploadRPMfromAWS func --- vars/uploadRPMfromAWS.groovy | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/vars/uploadRPMfromAWS.groovy b/vars/uploadRPMfromAWS.groovy index 610c987f2c..fefa014111 100644 --- a/vars/uploadRPMfromAWS.groovy +++ b/vars/uploadRPMfromAWS.groovy @@ -64,8 +64,7 @@ def call(String CLOUD_NAME, String FOLDER_NAME, String AWS_STASH_PATH) { fi if [ `find . -name "*.noarch.rpm" | wc -l` -gt 0 ]; then - Vers=("6" "7" "8" "9" "2023") - for osVer in "\${Vers[@]}"; do + for osVer in 6 7 8 9 2023; do ssh -o StrictHostKeyChecking=no -i ${KEY_PATH} ${USER}@repo.ci.percona.com \ mkdir -p \${path_to_build}/binary/redhat/\${osVer}/\${arch} scp -o StrictHostKeyChecking=no -i ${KEY_PATH} \ From 602ffcd8f9194df74b335fc5f9d22e518388a9d2 Mon Sep 17 00:00:00 2001 From: Muhammad Aqeel Date: Tue, 11 Feb 2025 18:13:18 +0500 Subject: [PATCH 035/269] Adds PG ARM groovy and yml files to hetzner branch. (#3155) --- ppg/etcd-arm.groovy | 257 +++++++++++++++ ppg/etcd-arm.yml | 15 + ppg/haproxy-arm.groovy | 254 ++++++++++++++ ppg/haproxy-arm.yml | 14 + ppg/llvm-arm.groovy | 155 +++++++++ ppg/llvm-arm.yml | 15 + ppg/patroni-arm.groovy | 254 ++++++++++++++ ppg/patroni-arm.yml | 15 + ppg/percona-postgis-arm.groovy | 261 +++++++++++++++ ppg/percona-postgis-arm.yml | 15 + ppg/pg_cron-arm.groovy | 254 ++++++++++++++ ppg/pg_cron-arm.yml | 15 + ppg/pg_gather-arm.groovy | 254 ++++++++++++++ ppg/pg_gather-arm.yml | 15 + ppg/pg_stat_monitor-autobuild-arm.groovy | 266 +++++++++++++++ ppg/pg_stat_monitor-autobuild-arm.yml | 14 + ppg/pg_tarballs-arm.groovy | 402 +++++++++++++++++++++++ ppg/pg_tarballs-arm.yml | 15 + ppg/pg_tde-arm.groovy | 254 ++++++++++++++ ppg/pg_tde-arm.yml | 15 + ppg/pg_tde_arm_nightly.groovy | 250 ++++++++++++++ ppg/pg_tde_arm_nightly.yml | 16 + ppg/pgaudit-arm.groovy | 253 ++++++++++++++ ppg/pgaudit-arm.yml | 15 + ppg/pgaudit_set_user-arm.groovy | 253 ++++++++++++++ ppg/pgaudit_set_user-arm.yml | 14 + ppg/pgbackrest-arm.groovy | 254 ++++++++++++++ ppg/pgbackrest-arm.yml | 14 + ppg/pgbadger-arm.groovy | 254 ++++++++++++++ ppg/pgbadger-arm.yml | 14 + ppg/pgbouncer-arm.groovy | 254 ++++++++++++++ ppg/pgbouncer-arm.yml | 14 + ppg/pgpool-arm.groovy | 269 +++++++++++++++ ppg/pgpool-arm.yml | 14 + ppg/pgrepack_arm.groovy | 253 ++++++++++++++ ppg/pgrepack_arm.yml | 14 + ppg/pgvector-arm.groovy | 254 ++++++++++++++ ppg/pgvector-arm.yml | 15 + ppg/postgresql-ivee-arm.groovy | 190 +++++++++++ ppg/postgresql-ivee-arm.yml | 14 + ppg/postgresql_common_arm.groovy | 256 +++++++++++++++ ppg/postgresql_common_arm.yml | 15 + ppg/postgresql_server_arm.groovy | 253 ++++++++++++++ ppg/postgresql_server_arm.yml | 15 + ppg/ppg-docker-arm.groovy | 191 +++++++++++ ppg/ppg-docker-arm.yml | 14 + ppg/ppg-pgbackrest-docker-arm.groovy | 162 +++++++++ ppg/ppg-pgbackrest-docker-arm.yml | 14 + ppg/ppg-pgbouncer-docker-arm.groovy | 162 +++++++++ ppg/ppg-pgbouncer-docker-arm.yml | 14 + ppg/ppg-server-arm.groovy | 250 ++++++++++++++ ppg/ppg-server-arm.yml | 15 + ppg/ppg-server-ha-arm.groovy | 250 ++++++++++++++ ppg/ppg-server-ha-arm.yml | 15 + ppg/pysyncobj-arm.groovy | 254 ++++++++++++++ ppg/pysyncobj-arm.yml | 15 + ppg/timescaledb-arm.groovy | 253 ++++++++++++++ ppg/timescaledb-arm.yml | 14 + ppg/wal2json-arm.groovy | 253 ++++++++++++++ ppg/wal2json-arm.yml | 14 + ppg/ydiff-arm.groovy | 254 ++++++++++++++ ppg/ydiff-arm.yml | 15 + 62 files changed, 8085 insertions(+) create mode 100644 ppg/etcd-arm.groovy create mode 100644 ppg/etcd-arm.yml create mode 100644 ppg/haproxy-arm.groovy create mode 100644 ppg/haproxy-arm.yml create mode 100644 ppg/llvm-arm.groovy create mode 100644 ppg/llvm-arm.yml create mode 100644 ppg/patroni-arm.groovy create mode 100644 ppg/patroni-arm.yml create mode 100644 ppg/percona-postgis-arm.groovy create mode 100644 ppg/percona-postgis-arm.yml create mode 100644 ppg/pg_cron-arm.groovy create mode 100644 ppg/pg_cron-arm.yml create mode 100644 ppg/pg_gather-arm.groovy create mode 100644 ppg/pg_gather-arm.yml create mode 100644 ppg/pg_stat_monitor-autobuild-arm.groovy create mode 100644 ppg/pg_stat_monitor-autobuild-arm.yml create mode 100644 ppg/pg_tarballs-arm.groovy create mode 100644 ppg/pg_tarballs-arm.yml create mode 100644 ppg/pg_tde-arm.groovy create mode 100644 ppg/pg_tde-arm.yml create mode 100644 ppg/pg_tde_arm_nightly.groovy create mode 100644 ppg/pg_tde_arm_nightly.yml create mode 100644 ppg/pgaudit-arm.groovy create mode 100644 ppg/pgaudit-arm.yml create mode 100644 ppg/pgaudit_set_user-arm.groovy create mode 100644 ppg/pgaudit_set_user-arm.yml create mode 100644 ppg/pgbackrest-arm.groovy create mode 100644 ppg/pgbackrest-arm.yml create mode 100644 ppg/pgbadger-arm.groovy create mode 100644 ppg/pgbadger-arm.yml create mode 100644 ppg/pgbouncer-arm.groovy create mode 100644 ppg/pgbouncer-arm.yml create mode 100644 ppg/pgpool-arm.groovy create mode 100644 ppg/pgpool-arm.yml create mode 100644 ppg/pgrepack_arm.groovy create mode 100644 ppg/pgrepack_arm.yml create mode 100644 ppg/pgvector-arm.groovy create mode 100644 ppg/pgvector-arm.yml create mode 100644 ppg/postgresql-ivee-arm.groovy create mode 100644 ppg/postgresql-ivee-arm.yml create mode 100644 ppg/postgresql_common_arm.groovy create mode 100644 ppg/postgresql_common_arm.yml create mode 100644 ppg/postgresql_server_arm.groovy create mode 100644 ppg/postgresql_server_arm.yml create mode 100644 ppg/ppg-docker-arm.groovy create mode 100644 ppg/ppg-docker-arm.yml create mode 100644 ppg/ppg-pgbackrest-docker-arm.groovy create mode 100644 ppg/ppg-pgbackrest-docker-arm.yml create mode 100644 ppg/ppg-pgbouncer-docker-arm.groovy create mode 100644 ppg/ppg-pgbouncer-docker-arm.yml create mode 100644 ppg/ppg-server-arm.groovy create mode 100644 ppg/ppg-server-arm.yml create mode 100644 ppg/ppg-server-ha-arm.groovy create mode 100644 ppg/ppg-server-ha-arm.yml create mode 100644 ppg/pysyncobj-arm.groovy create mode 100644 ppg/pysyncobj-arm.yml create mode 100644 ppg/timescaledb-arm.groovy create mode 100644 ppg/timescaledb-arm.yml create mode 100644 ppg/wal2json-arm.groovy create mode 100644 ppg/wal2json-arm.yml create mode 100644 ppg/ydiff-arm.groovy create mode 100644 ppg/ydiff-arm.yml diff --git a/ppg/etcd-arm.groovy b/ppg/etcd-arm.groovy new file mode 100644 index 0000000000..48e397fd0e --- /dev/null +++ b/ppg/etcd-arm.groovy @@ -0,0 +1,257 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + sh """ + set -o xtrace + mkdir test + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/etcd/etcd_builder.sh -O builder.sh + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 + bash -x ./builder.sh --builddir=\${build_dir}/test --pg_version=${GIT_BRANCH} --etcd_version=${ETCD_VERSION} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + """ +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def AWS_STASH_PATH + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/percona/postgres-packaging.git', + description: 'URL for etcd repository', + name: 'GIT_REPO') + string( + defaultValue: '3.5.13', + description: 'etcd version', + name: 'ETCD_VERSION') + string( + defaultValue: '16.2', + description: 'Tag/Branch for etcd packaging repository', + name: 'GIT_BRANCH') + string( + defaultValue: '1', + description: 'RPM release value', + name: 'RPM_RELEASE') + string( + defaultValue: '1', + description: 'DEB release value', + name: 'DEB_RELEASE') + string( + defaultValue: 'ppg-16.2', + description: 'PPG repo name', + name: 'PPG_REPO') + choice( + choices: 'laboratory\ntesting\nexperimental', + description: 'Repo component to push packages to', + name: 'COMPONENT') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + stages { + stage('Create etcd source tarball') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") + cleanUpWS() + buildStage("oraclelinux:8", "--get_sources=1") + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/etcd.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/etcd.properties + cat uploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') + } + } + stage('Build etcd generic source packages') { + parallel { + stage('Build etcd generic source rpm') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_src_rpm=1") + + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) + } + } + stage('Build etcd generic source deb') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_src_deb=1") + + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) + } + } + } //parallel + } // stage + stage('Build etcd RPMs/DEBs/Binary tarballs') { + parallel { + stage('Oracle Linux 8') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } + } + + stage('Sign packages') { + steps { + signRPM(params.CLOUD) + signDEB(params.CLOUD) + } + } + stage('Push to public repository') { + steps { + // sync packages + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) + } + } + + } + post { + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}" + } + deleteDir() + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/ppg/etcd-arm.yml b/ppg/etcd-arm.yml new file mode 100644 index 0000000000..1afefa456a --- /dev/null +++ b/ppg/etcd-arm.yml @@ -0,0 +1,15 @@ +- job: + name: hetzner-etcd-arm-RELEASE + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/etcd-arm.groovy + diff --git a/ppg/haproxy-arm.groovy b/ppg/haproxy-arm.groovy new file mode 100644 index 0000000000..0a52ca5dd6 --- /dev/null +++ b/ppg/haproxy-arm.groovy @@ -0,0 +1,254 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + sh """ + set -o xtrace + mkdir test + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/haproxy-builder.sh -O builder.sh + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 + bash -x ./builder.sh --builddir=\${build_dir}/test --branch=${PG_BRANCH} --build_branch=${GIT_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + """ +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def AWS_STASH_PATH + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/percona/haproxy-packaging.git', + description: 'URL for haproxy repository', + name: 'GIT_REPO') + string( + defaultValue: 'v2.6.14', + description: 'Tag/Branch for haproxy repository', + name: 'PG_BRANCH') + string( + defaultValue: 'main', + description: 'Tag/Branch for haproxy packaging repository', + name: 'GIT_BRANCH') + string( + defaultValue: '1', + description: 'RPM release value', + name: 'RPM_RELEASE') + string( + defaultValue: '1', + description: 'DEB release value', + name: 'DEB_RELEASE') + string( + defaultValue: 'ppg-16.0', + description: 'PPG repo name', + name: 'PPG_REPO') + choice( + choices: 'laboratory\ntesting\nexperimental', + description: 'Repo component to push packages to', + name: 'COMPONENT') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + stages { + stage('Create haproxy source tarball') { + steps { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") + cleanUpWS() + buildStage("oraclelinux:8", "--get_sources=1") + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/haproxy.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/haproxy.properties + cat uploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') + } + } + stage('Build haproxy generic source packages') { + parallel { + stage('Build haproxy generic source rpm') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_src_rpm=1") + + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) + } + } + stage('Build haproxy generic source deb') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_src_deb=1") + + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) + } + } + } //parallel + } // stage + stage('Build haproxy RPMs/DEBs/Binary tarballs') { + parallel { + stage('Oracle Linux 8') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } + } + + stage('Sign packages') { + steps { + signRPM(params.CLOUD) + signDEB(params.CLOUD) + } + } + stage('Push to public repository') { + steps { + // sync packages + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) + } + } + + } + post { + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}" + } + deleteDir() + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/ppg/haproxy-arm.yml b/ppg/haproxy-arm.yml new file mode 100644 index 0000000000..9b50aa6372 --- /dev/null +++ b/ppg/haproxy-arm.yml @@ -0,0 +1,14 @@ +- job: + name: hetzner-haproxy-arm-RELEASE + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/haproxy-arm.groovy diff --git a/ppg/llvm-arm.groovy b/ppg/llvm-arm.groovy new file mode 100644 index 0000000000..140e9f835a --- /dev/null +++ b/ppg/llvm-arm.groovy @@ -0,0 +1,155 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + sh """ + set -o xtrace + mkdir -p test + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/llvm/llvm_builder.sh -O builder.sh + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 + bash -x ./builder.sh --builddir=\${build_dir}/test --rpm_release=${RPM_RELEASE} ${STAGE_PARAM}" + """ +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def AWS_STASH_PATH + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/percona/postgres-packaging.git', + description: 'URL for llvm repository', + name: 'GIT_REPO') + string( + defaultValue: '16.3', + description: 'Tag/Branch for postgresql packaging repository', + name: 'GIT_BRANCH') + string( + defaultValue: '1', + description: 'RPM release value', + name: 'RPM_RELEASE') + string( + defaultValue: 'ppg-16.3', + description: 'PPG repo name', + name: 'PPG_REPO') + choice( + choices: 'laboratory\ntesting\nexperimental', + description: 'Repo component to push packages to', + name: 'COMPONENT') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + stages { + stage('Build LLVM RPMs') { + parallel { + stage('Oracle Linux 8') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + buildStage("oraclelinux:8", "--get_src_rpm=1") + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/llvm.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/llvm.properties + cat uploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + buildStage("oraclelinux:8", "--build_rpm=1") + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + buildStage("oraclelinux:9", "--get_src_rpm=1") + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/llvm.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/llvm.properties + cat uploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + buildStage("oraclelinux:9", "--build_rpm=1") + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + } + } + + stage('Sign packages') { + steps { + signRPM(params.CLOUD) + } + } + stage('Push to public repository') { + steps { + // sync packages + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) + } + } + + } + post { + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}" + } + deleteDir() + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/ppg/llvm-arm.yml b/ppg/llvm-arm.yml new file mode 100644 index 0000000000..34b53e66a7 --- /dev/null +++ b/ppg/llvm-arm.yml @@ -0,0 +1,15 @@ +- job: + name: hetzner-llvm-arm-RELEASE + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/llvm-arm.groovy + diff --git a/ppg/patroni-arm.groovy b/ppg/patroni-arm.groovy new file mode 100644 index 0000000000..b2a8a23f26 --- /dev/null +++ b/ppg/patroni-arm.groovy @@ -0,0 +1,254 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + sh """ + set -o xtrace + mkdir test + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/patroni/patroni_builder.sh -O builder.sh + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 + bash -x ./builder.sh --builddir=\${build_dir}/test --branch=${PG_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + """ +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def AWS_STASH_PATH + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/percona/postgres-packaging.git', + description: 'URL for patroni repository', + name: 'GIT_REPO') + string( + defaultValue: '3.1.0', + description: 'Tag/Branch for postgresql', + name: 'PG_BRANCH') + string( + defaultValue: '16.0', + description: 'Tag/Branch for patroni repository', + name: 'GIT_BRANCH') + string( + defaultValue: '1', + description: 'RPM release value', + name: 'RPM_RELEASE') + string( + defaultValue: '1', + description: 'DEB release value', + name: 'DEB_RELEASE') + string( + defaultValue: 'ppg-16.0', + description: 'PPG repo name', + name: 'PPG_REPO') + choice( + choices: 'laboratory\ntesting\nexperimental', + description: 'Repo component to push packages to', + name: 'COMPONENT') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + stages { + stage('Create PATRONI source tarball') { + steps { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") + cleanUpWS() + buildStage("oraclelinux:8", "--get_sources=1") + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/patroni.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/patroni.properties + cat uploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') + } + } + stage('Build PATRONI generic source packages') { + parallel { + stage('Build PATRONI generic source rpm') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_src_rpm=1") + + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) + } + } + stage('Build PATRONI generic source deb') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_src_deb=1") + + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) + } + } + } //parallel + } // stage + stage('Build PATRONI RPMs/DEBs/Binary tarballs') { + parallel { + stage('Oracle Linux 8') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } + } + + stage('Sign packages') { + steps { + signRPM(params.CLOUD) + signDEB(params.CLOUD) + } + } + stage('Push to public repository') { + steps { + // sync packages + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) + } + } + + } + post { + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}" + } + deleteDir() + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/ppg/patroni-arm.yml b/ppg/patroni-arm.yml new file mode 100644 index 0000000000..f887959734 --- /dev/null +++ b/ppg/patroni-arm.yml @@ -0,0 +1,15 @@ +- job: + name: hetzner-patroni-arm-RELEASE + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/patroni-arm.groovy + diff --git a/ppg/percona-postgis-arm.groovy b/ppg/percona-postgis-arm.groovy new file mode 100644 index 0000000000..9a7fd34086 --- /dev/null +++ b/ppg/percona-postgis-arm.groovy @@ -0,0 +1,261 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + sh """ + set -o xtrace + mkdir test + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/postgis/postgis_builder.sh -O postgis_builder.sh + pwd -P + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./postgis_builder.sh --builddir=\${build_dir}/test --install_deps=1 + bash -x ./postgis_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --postgis_gitrepo=${POSTGIS_GITREPO} --postgis_branch=${POSTGIS_BRANCH} --postgis_ver=${POSTGIS_VERSION} --branch=${GIT_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + """ +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def AWS_STASH_PATH + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/percona/postgres-packaging.git', + description: 'URL for postgis packaging repository', + name: 'GIT_REPO') + string( + defaultValue: '15.4', + description: 'Tag/Branch for postgis packaging repository', + name: 'GIT_BRANCH') + string( + defaultValue: 'https://github.com/postgis/postgis.git', + description: 'URL for postgis repository', + name: 'POSTGIS_GITREPO') + string( + defaultValue: 'stable-3.3', + description: 'Tag/Branch for postgis repository', + name: 'POSTGIS_BRANCH') + string( + defaultValue: '3.3', + description: 'POSTGIS release value', + name: 'POSTGIS_VERSION') + string( + defaultValue: '1', + description: 'RPM release value', + name: 'RPM_RELEASE') + string( + defaultValue: '1', + description: 'DEB release value', + name: 'DEB_RELEASE') + string( + defaultValue: 'ppg-15.4', + description: 'POSTGIS repo name', + name: 'POSTGIS_REPO') + choice( + choices: 'laboratory\ntesting\nexperimental', + description: 'Repo component to push packages to', + name: 'COMPONENT') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + stages { + stage('Create POSTGIS source tarball') { + steps { + slackNotify("", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") + cleanUpWS() + buildStage("oraclelinux:8", "--get_sources=1") + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/percona-postgis.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/percona-postgis.properties + cat uploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') + } + } + stage('Build POSTGIS generic source packages') { + parallel { + stage('Build POSTGIS generic source rpm') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_src_rpm=1") + + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) + } + } + stage('Build POSTGIS generic source deb') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_src_deb=1") + + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) + } + } + } //parallel + } // stage + stage('Build POSTGIS RPMs/DEBs/Binary tarballs') { + parallel { + stage('Oracle Linux 8') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bookworm(12)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } + } + + stage('Sign packages') { + steps { + signRPM(params.CLOUD) + signDEB(params.CLOUD) + } + } + stage('Push to public repository') { + steps { + // sync packages + sync2ProdAutoBuild(params.CLOUD, POSTGIS_REPO, COMPONENT) + } + } + + } + post { + success { + slackNotify("", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}" + } + deleteDir() + } + failure { + slackNotify("", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/ppg/percona-postgis-arm.yml b/ppg/percona-postgis-arm.yml new file mode 100644 index 0000000000..4ea7523458 --- /dev/null +++ b/ppg/percona-postgis-arm.yml @@ -0,0 +1,15 @@ +- job: + name: hetzner-percona-postgis-arm-RELEASE + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/percona-postgis-arm.groovy + diff --git a/ppg/pg_cron-arm.groovy b/ppg/pg_cron-arm.groovy new file mode 100644 index 0000000000..c4b3de5ed6 --- /dev/null +++ b/ppg/pg_cron-arm.groovy @@ -0,0 +1,254 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + sh """ + set -o xtrace + mkdir test + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/pg_cron/pg_cron_builder.sh -O builder.sh + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 + bash -x ./builder.sh --builddir=\${build_dir}/test --branch=${PG_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + """ +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def AWS_STASH_PATH + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/percona/postgres-packaging.git', + description: 'URL for pg_cron repository', + name: 'GIT_REPO') + string( + defaultValue: '16.1', + description: 'Tag/Branch for pg_cron repository', + name: 'PG_BRANCH') + string( + defaultValue: '16.1', + description: 'Tag/Branch for pg_cron packaging repository', + name: 'GIT_BRANCH') + string( + defaultValue: '1', + description: 'RPM release value', + name: 'RPM_RELEASE') + string( + defaultValue: '1', + description: 'DEB release value', + name: 'DEB_RELEASE') + string( + defaultValue: 'ppg-16.0', + description: 'PPG repo name', + name: 'PPG_REPO') + choice( + choices: 'laboratory\ntesting\nexperimental', + description: 'Repo component to push packages to', + name: 'COMPONENT') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + stages { + stage('Create pg_cron source tarball') { + steps { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") + cleanUpWS() + buildStage("oraclelinux:8", "--get_sources=1") + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/pg_cron.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/pg_cron.properties + cat uploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') + } + } + stage('Build pg_cron generic source packages') { + parallel { + stage('Build pg_cron generic source rpm') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_src_rpm=1") + + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) + } + } + stage('Build pg_cron generic source deb') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_src_deb=1") + + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) + } + } + } //parallel + } // stage + stage('Build pg_cron RPMs/DEBs/Binary tarballs') { + parallel { + stage('Oracle Linux 8') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } + } + + stage('Sign packages') { + steps { + signRPM(params.CLOUD) + signDEB(params.CLOUD) + } + } + stage('Push to public repository') { + steps { + // sync packages + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) + } + } + + } + post { + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}" + } + deleteDir() + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/ppg/pg_cron-arm.yml b/ppg/pg_cron-arm.yml new file mode 100644 index 0000000000..e3ee342076 --- /dev/null +++ b/ppg/pg_cron-arm.yml @@ -0,0 +1,15 @@ +- job: + name: hetzner-pg_cron-arm-RELEASE + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/pg_cron-arm.groovy + diff --git a/ppg/pg_gather-arm.groovy b/ppg/pg_gather-arm.groovy new file mode 100644 index 0000000000..e59596bb74 --- /dev/null +++ b/ppg/pg_gather-arm.groovy @@ -0,0 +1,254 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + sh """ + set -o xtrace + mkdir test + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/pg_gather/pggather_builder.sh -O builder.sh + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 + bash -x ./builder.sh --builddir=\${build_dir}/test --branch=${PG_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + """ +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def AWS_STASH_PATH + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/percona/postgres-packaging.git', + description: 'URL for pg_gather repository', + name: 'GIT_REPO') + string( + defaultValue: 'ver_1.4.4', + description: 'Tag/Branch for pg_gather repository', + name: 'PG_BRANCH') + string( + defaultValue: '16.0', + description: 'Tag/Branch for pg_gather packaging repository', + name: 'GIT_BRANCH') + string( + defaultValue: '1', + description: 'RPM release value', + name: 'RPM_RELEASE') + string( + defaultValue: '1', + description: 'DEB release value', + name: 'DEB_RELEASE') + string( + defaultValue: 'ppg-16.0', + description: 'PPG repo name', + name: 'PPG_REPO') + choice( + choices: 'laboratory\ntesting\nexperimental', + description: 'Repo component to push packages to', + name: 'COMPONENT') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + stages { + stage('Create pg_gather source tarball') { + steps { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") + cleanUpWS() + buildStage("oraclelinux:8", "--get_sources=1") + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/pg_gather.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/pg_gather.properties + cat uploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') + } + } + stage('Build pg_gather generic source packages') { + parallel { + stage('Build pg_gather generic source rpm') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_src_rpm=1") + + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) + } + } + stage('Build pg_gather generic source deb') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_src_deb=1") + + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) + } + } + } //parallel + } // stage + stage('Build pg_gather RPMs/DEBs/Binary tarballs') { + parallel { + stage('Oracle Linux 8') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } + } + + stage('Sign packages') { + steps { + signRPM(params.CLOUD) + signDEB(params.CLOUD) + } + } + stage('Push to public repository') { + steps { + // sync packages + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) + } + } + + } + post { + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}" + } + deleteDir() + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/ppg/pg_gather-arm.yml b/ppg/pg_gather-arm.yml new file mode 100644 index 0000000000..db7739ea75 --- /dev/null +++ b/ppg/pg_gather-arm.yml @@ -0,0 +1,15 @@ +- job: + name: hetzner-pg_gather-arm-RELEASE + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/pg_gather-arm.groovy + diff --git a/ppg/pg_stat_monitor-autobuild-arm.groovy b/ppg/pg_stat_monitor-autobuild-arm.groovy new file mode 100644 index 0000000000..6915d244dd --- /dev/null +++ b/ppg/pg_stat_monitor-autobuild-arm.groovy @@ -0,0 +1,266 @@ +/* groovylint-disable DuplicateStringLiteral, GStringExpressionWithinString, LineLength */ +library changelog: false, identifier: "lib@hetzner", retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + sh """ + set -o xtrace + mkdir test + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/main/percona-packaging/scripts/pg_stat_monitor_builder.sh -O builder.sh + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./builder.sh --builddir=\${build_dir}/test --pg_release=\${PG_RELEASE} --ppg_repo_name=\${PPG_REPO} --install_deps=1 + bash -x ./builder.sh --builddir=\${build_dir}/test --version=\${VERSION} --branch=\${BRANCH} --repo=\${GIT_REPO} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} --pg_release=\${PG_RELEASE} --ppg_repo_name=\${PPG_REPO} ${STAGE_PARAM}" + """ +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def AWS_STASH_PATH + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: '2.0.0', + description: 'General version of the product', + name: 'VERSION' + ) + string( + defaultValue: 'https://github.com/percona/pg_stat_monitor.git', + description: 'pg_stat_monitor repo', + name: 'GIT_REPO' + ) + string( + defaultValue: 'main', + description: 'Branch for tests', + name: 'BRANCH' + ) + string( + defaultValue: '1', + description: 'rpm release number', + name: 'RPM_RELEASE' + ) + string( + defaultValue: '1', + description: 'deb release number', + name: 'DEB_RELEASE' + ) + choice( + name: 'PG_RELEASE', + description: 'PPG major version to test', + choices: ['11', '12', '13', '14', '15', '16', '17'] + ) + string( + defaultValue: 'ppg-16.1', + description: 'PPG repo name', + name: 'PPG_REPO' + ) + choice( + choices: 'laboratory\ntesting\nexperimental\nrelease', + description: 'Repo component to push packages to', + name: 'COMPONENT') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + timestamps () + } + stages { + stage('Download source from github') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${BRANCH} - [${BUILD_URL}]") + cleanUpWS() + buildStage("oraclelinux:8", "--get_sources=1") + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/pg-stat-monitor.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/pg-stat-monitor.properties + cat uploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') + } + } //stage + stage('Build pg_stat_monitor generic source packages') { + parallel { + stage('Source rpm') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_src_rpm=1") + + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) + } + } + stage('Source deb') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_source_deb=1") + + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) + } + } + } //parallel + } //stage + stage('Build pg_stat_monitor RPMs') { + parallel { + stage('Oracle Linux 8') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } //parallel + } //stage + stage('Sign packages') { + steps { + signRPM(params.CLOUD) + } + } + stage('Push to public repository') { + steps { + // sync packages + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) + } + } + } //stages + post { + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for PG${PG_RELEASE}, repo branch: ${BRANCH} - [${BUILD_URL}]") + deleteDir() + echo "Success" + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for PG${PG_RELEASE}, repo branch: ${BRANCH} - [${BUILD_URL}]") + deleteDir() + echo "Failure" + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + echo "Always" + } + } +} diff --git a/ppg/pg_stat_monitor-autobuild-arm.yml b/ppg/pg_stat_monitor-autobuild-arm.yml new file mode 100644 index 0000000000..a0ef8e1bd5 --- /dev/null +++ b/ppg/pg_stat_monitor-autobuild-arm.yml @@ -0,0 +1,14 @@ +- job: + name: hetzner-pg_stat_monitor-autobuild-arm-RELEASE + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/pg_stat_monitor-autobuild-arm.groovy diff --git a/ppg/pg_tarballs-arm.groovy b/ppg/pg_tarballs-arm.groovy new file mode 100644 index 0000000000..29adde7dbb --- /dev/null +++ b/ppg/pg_tarballs-arm.groovy @@ -0,0 +1,402 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + sh """ + set -o xtrace + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/pg_tarballs/pg_tarballs_builder.sh -O builder.sh + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./builder.sh --build_dependencies=${BUILD_DEPENDENCIES} ${STAGE_PARAM}" + """ +} + +String getPostgreSQLVersion(String BRANCH_NAME, String configureFileName) { + def packageVersion = sh(script: """ + # Download the configure file + if [[ "${BRANCH_NAME}" == *TDE* ]]; then + wget https://raw.githubusercontent.com/Percona-Lab/postgres/${BRANCH_NAME}/configure -O ${configureFileName} + else + wget https://raw.githubusercontent.com/postgres/postgres/${BRANCH_NAME}/configure -O ${configureFileName} + fi + # Read the PACKAGE_VERSION value from the configure file + packageVersion=\$(grep -r 'PACKAGE_VERSION=' ${configureFileName} | tr -dc '[. [:digit:]]') + + # Delete configure file + rm -f ${configureFileName} + + echo "\$packageVersion" + """, returnStdout: true).trim() + + return packageVersion +} + +void uploadTarballToTestingDownloadServer(String tarballDirectory, String packageVersion) { + + script { + try { + uploadPGTarballToDownloadsTesting(params.CLOUD, tarballDirectory, packageVersion) + } catch (err) { + echo "Caught: ${err}" + currentBuild.result = 'UNSTABLE' + } + } +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def TIMESTAMP + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/percona/postgres-packaging.git', + description: 'URL for pg_tarballs repository', + name: 'GIT_REPO') +/* string( + defaultValue: '16.1', + description: 'Version of PostgreSQL server', + name: 'PG_VERSION')*/ + string( + defaultValue: 'main', + description: 'Tag/Branch for pg_tarballs packaging repository', + name: 'GIT_BRANCH') + choice( + choices: '1\n0', + description: 'Build third party dependencies', + name: 'BUILD_DEPENDENCIES') + choice( + choices: 'laboratory\ntesting\nexperimental', + description: 'Repo destination to push packages to', + name: 'DESTINATION') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + stages { + + stage('Create timestamp') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") + cleanUpWS() + script { + TIMESTAMP = sh(script: 'date +%Y%m%d%H%M%S', returnStdout: true).trim() + sh """ + echo ${TIMESTAMP} > timestamp + cat timestamp + """ + TIMESTAMP = sh(returnStdout: true, script: "cat timestamp").trim() + } + stash includes: 'timestamp', name: 'timestamp' + } + } + + stage('Build pg_tarballs') { + parallel { + stage('Build pg_tarball 17 for OpenSSL 3') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + def PG_VERSION=17 + def BRANCH_NAME = "TDE_REL_17_STABLE" + def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl3") + println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" + def PRODUCT="Percona-PostgreSQL-Tarballs" + unstash 'timestamp' + AWS_STASH_PATH_17="/srv/UPLOAD/${DESTINATION}/BUILDS/${PRODUCT}/${PRODUCT}-${PACKAGE_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH_17} > uploadPath-${PACKAGE_VERSION} + cat uploadPath-${PACKAGE_VERSION} + """ + stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" + buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17, "binary", "${PACKAGE_VERSION}") + uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") + } + } + } + stage('Build pg_tarball 17 for OpenSSL 1.1') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + def PG_VERSION=17 + def BRANCH_NAME = 'TDE_REL_17_STABLE' + def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl1.1") + println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" + def PRODUCT="Percona-PostgreSQL-Tarballs" + unstash 'timestamp' + AWS_STASH_PATH_17="/srv/UPLOAD/${DESTINATION}/BUILDS/${PRODUCT}/${PRODUCT}-${PACKAGE_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH_17} > uploadPath-${PACKAGE_VERSION} + cat uploadPath-${PACKAGE_VERSION} + """ + stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" + buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION} --use_system_ssl=1") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17, "binary", "${PACKAGE_VERSION}") + uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") + } + } + } + stage('Build pg_tarball 16 for OpenSSL 3') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + def PG_VERSION=16 + def BRANCH_NAME = "REL_16_STABLE" + def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl3") + println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" + def PRODUCT="Percona-PostgreSQL-Tarballs" + unstash 'timestamp' + AWS_STASH_PATH_16="/srv/UPLOAD/${DESTINATION}/BUILDS/${PRODUCT}/${PRODUCT}-${PACKAGE_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH_16} > uploadPath-${PACKAGE_VERSION} + cat uploadPath-${PACKAGE_VERSION} + """ + stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" + buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_16) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_16, "binary", "${PACKAGE_VERSION}") + uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") + } + } + } + stage('Build pg_tarball 16 for OpenSSL 1.1') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + def PG_VERSION=16 + def BRANCH_NAME = 'REL_16_STABLE' + def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl1.1") + println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" + def PRODUCT="Percona-PostgreSQL-Tarballs" + unstash 'timestamp' + AWS_STASH_PATH_16="/srv/UPLOAD/${DESTINATION}/BUILDS/${PRODUCT}/${PRODUCT}-${PACKAGE_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH_16} > uploadPath-${PACKAGE_VERSION} + cat uploadPath-${PACKAGE_VERSION} + """ + stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" + buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION} --use_system_ssl=1") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_16) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_16, "binary", "${PACKAGE_VERSION}") + uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") + } + } + } + stage('Build pg_tarball 15 for OpenSSL 3') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + def PG_VERSION=15 + def BRANCH_NAME = 'REL_15_STABLE' + def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl3") + + def PRODUCT="Percona-PostgreSQL-Tarballs" + unstash 'timestamp' + AWS_STASH_PATH_15="/srv/UPLOAD/${DESTINATION}/BUILDS/${PRODUCT}/${PRODUCT}-${PACKAGE_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH_15} > uploadPath-${PACKAGE_VERSION} + cat uploadPath-${PACKAGE_VERSION} + """ + stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" + buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_15) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_15, "binary", "${PACKAGE_VERSION}") + uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") + } + } + } + stage('Build pg_tarball 15 for OpenSSL 1.1') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + def PG_VERSION=15 + def BRANCH_NAME = 'REL_15_STABLE' + def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl1.1") + println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" + def PRODUCT="Percona-PostgreSQL-Tarballs" + unstash 'timestamp' + AWS_STASH_PATH_15="/srv/UPLOAD/${DESTINATION}/BUILDS/${PRODUCT}/${PRODUCT}-${PACKAGE_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH_15} > uploadPath-${PACKAGE_VERSION} + cat uploadPath-${PACKAGE_VERSION} + """ + stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" + buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION} --use_system_ssl=1") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_15) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_15, "binary", "${PACKAGE_VERSION}") + uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") + } + } + } + stage('Build pg_tarball 14 for OpenSSL 3') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + def PG_VERSION=14 + def BRANCH_NAME = 'REL_14_STABLE' + def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl3") + println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" + def PRODUCT="Percona-PostgreSQL-Tarballs" + unstash 'timestamp' + AWS_STASH_PATH_14="/srv/UPLOAD/${DESTINATION}/BUILDS/${PRODUCT}/${PRODUCT}-${PACKAGE_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH_14} > uploadPath-${PACKAGE_VERSION} + cat uploadPath-${PACKAGE_VERSION} + """ + stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" + buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_14) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_14, "binary", "${PACKAGE_VERSION}") + uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") + } + } + } + stage('Build pg_tarball 14 for OpenSSL 1.1') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + def PG_VERSION=14 + def BRANCH_NAME = 'REL_14_STABLE' + def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl1.1") + println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" + def PRODUCT="Percona-PostgreSQL-Tarballs" + unstash 'timestamp' + AWS_STASH_PATH_14="/srv/UPLOAD/${DESTINATION}/BUILDS/${PRODUCT}/${PRODUCT}-${PACKAGE_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH_14} > uploadPath-${PACKAGE_VERSION} + cat uploadPath-${PACKAGE_VERSION} + """ + stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" + buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION} --use_system_ssl=1") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_14) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_14, "binary", "${PACKAGE_VERSION}") + uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") + } + } + } + stage('Build pg_tarball 13 for OpenSSL 3') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + def PG_VERSION=13 + def BRANCH_NAME = 'REL_13_STABLE' + def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl3") + println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" + def PRODUCT="Percona-PostgreSQL-Tarballs" + unstash 'timestamp' + AWS_STASH_PATH_13="/srv/UPLOAD/${DESTINATION}/BUILDS/${PRODUCT}/${PRODUCT}-${PACKAGE_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH_13} > uploadPath-${PACKAGE_VERSION} + cat uploadPath-${PACKAGE_VERSION} + """ + stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" + buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_13) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_13, "binary", "${PACKAGE_VERSION}") + uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") + } + } + } + stage('Build pg_tarball 13 for OpenSSL 1.1') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + def PG_VERSION=13 + def BRANCH_NAME = 'REL_13_STABLE' + def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl1.1") + println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" + def PRODUCT="Percona-PostgreSQL-Tarballs" + unstash 'timestamp' + AWS_STASH_PATH_13="/srv/UPLOAD/${DESTINATION}/BUILDS/${PRODUCT}/${PRODUCT}-${PACKAGE_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH_13} > uploadPath-${PACKAGE_VERSION} + cat uploadPath-${PACKAGE_VERSION} + """ + stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" + buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION} --use_system_ssl=1") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_13) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_13, "binary", "${PACKAGE_VERSION}") + uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") + } + } + } + } //parallel + } // stage + + } + post { + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}" + } + deleteDir() + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/ppg/pg_tarballs-arm.yml b/ppg/pg_tarballs-arm.yml new file mode 100644 index 0000000000..e780ee3959 --- /dev/null +++ b/ppg/pg_tarballs-arm.yml @@ -0,0 +1,15 @@ +- job: + name: hetzner-pg_tarballs-arm-RELEASE + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/pg_tarballs-arm.groovy + diff --git a/ppg/pg_tde-arm.groovy b/ppg/pg_tde-arm.groovy new file mode 100644 index 0000000000..c658721819 --- /dev/null +++ b/ppg/pg_tde-arm.groovy @@ -0,0 +1,254 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + sh """ + set -o xtrace + mkdir test + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/pg_tde/pg_tde_builder.sh -O builder.sh + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 + bash -x ./builder.sh --builddir=\${build_dir}/test --branch=${PG_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + """ +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def AWS_STASH_PATH + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/percona/postgres-packaging.git', + description: 'URL for pg_tde repository', + name: 'GIT_REPO') + string( + defaultValue: 'main', + description: 'Tag/Branch for pg_tde repository', + name: 'PG_BRANCH') + string( + defaultValue: '16.2', + description: 'Tag/Branch for pg_tde packaging repository', + name: 'GIT_BRANCH') + string( + defaultValue: '1', + description: 'RPM release value', + name: 'RPM_RELEASE') + string( + defaultValue: '1', + description: 'DEB release value', + name: 'DEB_RELEASE') + string( + defaultValue: 'ppg-16.2', + description: 'PPG repo name', + name: 'PPG_REPO') + choice( + choices: 'laboratory\ntesting\nexperimental', + description: 'Repo component to push packages to', + name: 'COMPONENT') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + stages { + stage('Create pg_tde source tarball') { + steps { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") + cleanUpWS() + buildStage("oraclelinux:8", "--get_sources=1") + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/pg_tde.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/pg_tde.properties + cat uploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') + } + } + stage('Build pg_tde generic source packages') { + parallel { + stage('Build pg_tde generic source rpm') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_src_rpm=1") + + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) + } + } + stage('Build pg_tde generic source deb') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_src_deb=1") + + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) + } + } + } //parallel + } // stage + stage('Build pg_tde RPMs/DEBs/Binary tarballs') { + parallel { + stage('Oracle Linux 8') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } + } + + stage('Sign packages') { + steps { + signRPM(params.CLOUD) + signDEB(params.CLOUD) + } + } + stage('Push to public repository') { + steps { + // sync packages + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) + } + } + + } + post { + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}" + } + deleteDir() + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/ppg/pg_tde-arm.yml b/ppg/pg_tde-arm.yml new file mode 100644 index 0000000000..0a2e655e1c --- /dev/null +++ b/ppg/pg_tde-arm.yml @@ -0,0 +1,15 @@ +- job: + name: hetzner-pg_tde-arm-RELEASE + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/pg_tde-arm.groovy + diff --git a/ppg/pg_tde_arm_nightly.groovy b/ppg/pg_tde_arm_nightly.groovy new file mode 100644 index 0000000000..620862a21a --- /dev/null +++ b/ppg/pg_tde_arm_nightly.groovy @@ -0,0 +1,250 @@ +library changelog: false, identifier: 'lib@master', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + sh """ + set -o xtrace + mkdir test + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/pg_tde/pg_tde_builder.sh -O builder.sh + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 + bash -x ./builder.sh --builddir=\${build_dir}/test --branch=${PG_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} --nightly=1 ${STAGE_PARAM}" + """ +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def AWS_STASH_PATH + +pipeline { + agent { + label 'docker' + } + parameters { + string( + defaultValue: 'https://github.com/percona/postgres-packaging.git', + description: 'URL for pg_tde repository', + name: 'GIT_REPO') + string( + defaultValue: 'main', + description: 'Tag/Branch for pg_tde repository', + name: 'PG_BRANCH') + string( + defaultValue: '17.0', + description: 'Tag/Branch for pg_tde packaging repository', + name: 'GIT_BRANCH') + string( + defaultValue: '1', + description: 'RPM release value', + name: 'RPM_RELEASE') + string( + defaultValue: '1', + description: 'DEB release value', + name: 'DEB_RELEASE') + string( + defaultValue: 'ppg-17.0', + description: 'PPG repo name', + name: 'PPG_REPO') + choice( + choices: 'experimental\nlaboratory\ntesting', + description: 'Repo component to push packages to', + name: 'COMPONENT') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + stages { + stage('Create pg_tde source tarball') { + steps { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") + cleanUpWS() + buildStage("oraclelinux:8", "--get_sources=1") + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/pg_tde.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/pg_tde.properties + cat uploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + pushArtifactFolder("source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + } + } + stage('Build pg_tde generic source packages') { + parallel { + stage('Build pg_tde generic source rpm') { + agent { + label 'docker' + } + steps { + cleanUpWS() + popArtifactFolder("source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_src_rpm=1") + + pushArtifactFolder("srpm/", AWS_STASH_PATH) + uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + } + } + stage('Build pg_tde generic source deb') { + agent { + label 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder("source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_src_deb=1") + + pushArtifactFolder("source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + } + } + } //parallel + } // stage + stage('Build pg_tde RPMs/DEBs/Binary tarballs') { + parallel { + stage('Oracle Linux 8') { + agent { + label 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder("srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder("rpm/", AWS_STASH_PATH) + uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9') { + agent { + label 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder("srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder("rpm/", AWS_STASH_PATH) + uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04)') { + agent { + label 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder("source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder("deb/", AWS_STASH_PATH) + uploadDEBfromAWS("deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04)') { + agent { + label 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder("source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder("deb/", AWS_STASH_PATH) + uploadDEBfromAWS("deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04)') { + agent { + label 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder("source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder("deb/", AWS_STASH_PATH) + uploadDEBfromAWS("deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11)') { + agent { + label 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder("source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder("deb/", AWS_STASH_PATH) + uploadDEBfromAWS("deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12)') { + agent { + label 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder("source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + + pushArtifactFolder("deb/", AWS_STASH_PATH) + uploadDEBfromAWS("deb/", AWS_STASH_PATH) + } + } + } + } + + stage('Sign packages') { + steps { + signRPM() + signDEB() + } + } + stage('Push to public repository') { + steps { + // sync packages + sync2ProdAutoBuild(PPG_REPO, COMPONENT) + } + } + + } + post { + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}" + } + deleteDir() + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/ppg/pg_tde_arm_nightly.yml b/ppg/pg_tde_arm_nightly.yml new file mode 100644 index 0000000000..5ccb8eae5c --- /dev/null +++ b/ppg/pg_tde_arm_nightly.yml @@ -0,0 +1,16 @@ +- job: + name: hetzner-pg_tde_arm-nightly + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/pg_tde_arm_nightly.groovy + triggers: + - timed: "0 0 * * *" diff --git a/ppg/pgaudit-arm.groovy b/ppg/pgaudit-arm.groovy new file mode 100644 index 0000000000..aa46eb738c --- /dev/null +++ b/ppg/pgaudit-arm.groovy @@ -0,0 +1,253 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + sh """ + set -o xtrace + mkdir test + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/pgaudit/pgaudit_builder.sh -O builder.sh + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 + bash -x ./builder.sh --builddir=\${build_dir}/test --branch=${PG_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + """ +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def AWS_STASH_PATH + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/percona/postgres-packaging.git', + description: 'URL for pg_audit repository', + name: 'GIT_REPO') + string( + defaultValue: '16.0', + description: 'Tag/Branch for pg_audit repository', + name: 'PG_BRANCH') + string( + defaultValue: '16.1', + description: 'Tag/Branch for pg_audit packaging repository', + name: 'GIT_BRANCH') + string( + defaultValue: '1', + description: 'RPM release value', + name: 'RPM_RELEASE') + string( + defaultValue: '1', + description: 'DEB release value', + name: 'DEB_RELEASE') + string( + defaultValue: 'ppg-16.1', + description: 'PPG repo name', + name: 'PPG_REPO') + choice( + choices: 'laboratory\ntesting\nexperimental', + description: 'Repo component to push packages to', + name: 'COMPONENT') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + stages { + stage('Create PG_AUDIT source tarball') { + steps { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") + cleanUpWS() + buildStage("oraclelinux:8", "--get_sources=1") + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/pgaudit.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/pgaudit.properties + cat uploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') + } + } + stage('Build PG_AUDIT generic source packages') { + parallel { + stage('Build PG_AUDIT generic source rpm') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_src_rpm=1") + + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) + } + } + stage('Build PG_AUDIT generic source deb') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_src_deb=1") + + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) + } + } + } //parallel + } // stage + stage('Build PG_AUDIT RPMs/DEBs/Binary tarballs') { + parallel { + stage('Oracle Linux 8') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } + } + + stage('Sign packages') { + steps { + signRPM(params.CLOUD) + } + } + stage('Push to public repository') { + steps { + // sync packages + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) + } + } + + } + post { + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}" + } + deleteDir() + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/ppg/pgaudit-arm.yml b/ppg/pgaudit-arm.yml new file mode 100644 index 0000000000..fd157e864d --- /dev/null +++ b/ppg/pgaudit-arm.yml @@ -0,0 +1,15 @@ +- job: + name: hetzner-pgaudit-arm-RELEASE + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/pgaudit-arm.groovy + diff --git a/ppg/pgaudit_set_user-arm.groovy b/ppg/pgaudit_set_user-arm.groovy new file mode 100644 index 0000000000..3880689cfe --- /dev/null +++ b/ppg/pgaudit_set_user-arm.groovy @@ -0,0 +1,253 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + sh """ + set -o xtrace + mkdir test + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/pgaudit_set_user/pgaudit_builder.sh -O builder.sh + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 + bash -x ./builder.sh --builddir=\${build_dir}/test --branch=${PG_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + """ +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def AWS_STASH_PATH + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/percona/postgres-packaging.git', + description: 'URL for pg_audit repository', + name: 'GIT_REPO') + string( + defaultValue: '4.0.1', + description: 'Tag/Branch for pg_audit-set-user', + name: 'PG_BRANCH') + string( + defaultValue: '16.1', + description: 'Tag/Branch for pg_audit-set-user packaging repository', + name: 'GIT_BRANCH') + string( + defaultValue: '1', + description: 'RPM release value', + name: 'RPM_RELEASE') + string( + defaultValue: '1', + description: 'DEB release value', + name: 'DEB_RELEASE') + string( + defaultValue: 'ppg-16.1', + description: 'PPG repo name', + name: 'PPG_REPO') + choice( + choices: 'laboratory\ntesting\nexperimental', + description: 'Repo component to push packages to', + name: 'COMPONENT') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + stages { + stage('Create PG_AUDIT source tarball') { + steps { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") + cleanUpWS() + buildStage("oraclelinux:8", "--get_sources=1") + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/pgaudit.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/pgaudit.properties + cat uploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') + } + } + stage('Build PG_AUDIT generic source packages') { + parallel { + stage('Build PG_AUDIT generic source rpm') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_src_rpm=1") + + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) + } + } + stage('Build PG_AUDIT generic source deb') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_src_deb=1") + + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) + } + } + } //parallel + } // stage + stage('Build PG_AUDIT RPMs/DEBs/Binary tarballs') { + parallel { + stage('Oracle Linux 8') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } + } + + stage('Sign packages') { + steps { + signRPM(params.CLOUD) + } + } + stage('Push to public repository') { + steps { + // sync packages + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) + } + } + + } + post { + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}" + } + deleteDir() + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/ppg/pgaudit_set_user-arm.yml b/ppg/pgaudit_set_user-arm.yml new file mode 100644 index 0000000000..b11b4adf86 --- /dev/null +++ b/ppg/pgaudit_set_user-arm.yml @@ -0,0 +1,14 @@ +- job: + name: hetzner-pgaudit_set_user-arm-RELEASE + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/pgaudit_set_user-arm.groovy \ No newline at end of file diff --git a/ppg/pgbackrest-arm.groovy b/ppg/pgbackrest-arm.groovy new file mode 100644 index 0000000000..3d81f2618e --- /dev/null +++ b/ppg/pgbackrest-arm.groovy @@ -0,0 +1,254 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + sh """ + set -o xtrace + mkdir test + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/pgbackrest/pgbackrest_builder.sh -O builder.sh + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 + bash -x ./builder.sh --builddir=\${build_dir}/test --branch=${PG_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + """ +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def AWS_STASH_PATH + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/percona/postgres-packaging.git', + description: 'URL for pg_BACKREST repository', + name: 'GIT_REPO') + string( + defaultValue: 'ver_1.4.4', + description: 'Tag/Branch for postgresql', + name: 'PG_BRANCH') + string( + defaultValue: '16.0', + description: 'Tag/Branch for pg_BACKREST repository', + name: 'GIT_BRANCH') + string( + defaultValue: '1', + description: 'RPM release value', + name: 'RPM_RELEASE') + string( + defaultValue: '1', + description: 'DEB release value', + name: 'DEB_RELEASE') + string( + defaultValue: 'ppg-16.0', + description: 'PPG repo name', + name: 'PPG_REPO') + choice( + choices: 'laboratory\ntesting\nexperimental', + description: 'Repo component to push packages to', + name: 'COMPONENT') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + stages { + stage('Create PG_BACKREST source tarball') { + steps { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") + cleanUpWS() + buildStage("oraclelinux:8", "--get_sources=1") + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/pgbackrest.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/pgbackrest.properties + cat uploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') + } + } + stage('Build PG_BACKREST generic source packages') { + parallel { + stage('Build PG_BACKREST generic source rpm') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_src_rpm=1") + + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) + } + } + stage('Build PG_BACKREST generic source deb') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_src_deb=1") + + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) + } + } + } //parallel + } // stage + stage('Build PG_BACKREST RPMs/DEBs/Binary tarballs') { + parallel { + stage('Oracle Linux 8') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } + } + + stage('Sign packages') { + steps { + signRPM(params.CLOUD) + signDEB(params.CLOUD) + } + } + stage('Push to public repository') { + steps { + // sync packages + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) + } + } + + } + post { + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}" + } + deleteDir() + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/ppg/pgbackrest-arm.yml b/ppg/pgbackrest-arm.yml new file mode 100644 index 0000000000..af2bf133e9 --- /dev/null +++ b/ppg/pgbackrest-arm.yml @@ -0,0 +1,14 @@ +- job: + name: hetzner-pgbackrest-arm-RELEASE + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/pgbackrest-arm.groovy diff --git a/ppg/pgbadger-arm.groovy b/ppg/pgbadger-arm.groovy new file mode 100644 index 0000000000..cf50b02357 --- /dev/null +++ b/ppg/pgbadger-arm.groovy @@ -0,0 +1,254 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + sh """ + set -o xtrace + mkdir test + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/pgbadger/pgbadger_builder.sh -O builder.sh + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 + bash -x ./builder.sh --builddir=\${build_dir}/test --branch=${PG_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + """ +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def AWS_STASH_PATH + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/percona/postgres-packaging.git', + description: 'URL for pg_badger repository', + name: 'GIT_REPO') + string( + defaultValue: 'ver_1.4.4', + description: 'Tag/Branch for postgresql', + name: 'PG_BRANCH') + string( + defaultValue: '16.0', + description: 'Tag/Branch for pg_badger repository', + name: 'GIT_BRANCH') + string( + defaultValue: '1', + description: 'RPM release value', + name: 'RPM_RELEASE') + string( + defaultValue: '1', + description: 'DEB release value', + name: 'DEB_RELEASE') + string( + defaultValue: 'ppg-16.0', + description: 'PPG repo name', + name: 'PPG_REPO') + choice( + choices: 'laboratory\ntesting\nexperimental', + description: 'Repo component to push packages to', + name: 'COMPONENT') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + stages { + stage('Create PG_badger source tarball') { + steps { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") + cleanUpWS() + buildStage("oraclelinux:8", "--get_sources=1") + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/pgbadger.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/pgbadger.properties + cat uploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') + } + } + stage('Build PG_badger generic source packages') { + parallel { + stage('Build PG_badger generic source rpm') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_src_rpm=1") + + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) + } + } + stage('Build PG_badger generic source deb') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_src_deb=1") + + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) + } + } + } //parallel + } // stage + stage('Build PG_badger RPMs/DEBs/Binary tarballs') { + parallel { + stage('Oracle Linux 8') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } + } + + stage('Sign packages') { + steps { + signRPM(params.CLOUD) + signDEB(params.CLOUD) + } + } + stage('Push to public repository') { + steps { + // sync packages + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) + } + } + + } + post { + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}" + } + deleteDir() + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/ppg/pgbadger-arm.yml b/ppg/pgbadger-arm.yml new file mode 100644 index 0000000000..22773e6dd0 --- /dev/null +++ b/ppg/pgbadger-arm.yml @@ -0,0 +1,14 @@ +- job: + name: hetzner-pgbadger-arm-RELEASE + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/pgbadger-arm.groovy diff --git a/ppg/pgbouncer-arm.groovy b/ppg/pgbouncer-arm.groovy new file mode 100644 index 0000000000..ce4f866a64 --- /dev/null +++ b/ppg/pgbouncer-arm.groovy @@ -0,0 +1,254 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + sh """ + set -o xtrace + mkdir test + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/pgbouncer/pgbouncer_builder.sh -O builder.sh + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 + bash -x ./builder.sh --builddir=\${build_dir}/test --branch=${PG_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + """ +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def AWS_STASH_PATH + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/percona/postgres-packaging.git', + description: 'URL for pg_bouncer repository', + name: 'GIT_REPO') + string( + defaultValue: 'ver_1.4.4', + description: 'Tag/Branch for postgresql', + name: 'PG_BRANCH') + string( + defaultValue: '16.0', + description: 'Tag/Branch for pg_bouncer repository', + name: 'GIT_BRANCH') + string( + defaultValue: '1', + description: 'RPM release value', + name: 'RPM_RELEASE') + string( + defaultValue: '1', + description: 'DEB release value', + name: 'DEB_RELEASE') + string( + defaultValue: 'ppg-16.0', + description: 'PPG repo name', + name: 'PPG_REPO') + choice( + choices: 'laboratory\ntesting\nexperimental', + description: 'Repo component to push packages to', + name: 'COMPONENT') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + stages { + stage('Create PG_bouncer source tarball') { + steps { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") + cleanUpWS() + buildStage("oraclelinux:8", "--get_sources=1") + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/pgbouncer.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/pgbouncer.properties + cat uploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') + } + } + stage('Build PG_bouncer generic source packages') { + parallel { + stage('Build PG_bouncer generic source rpm') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_src_rpm=1") + + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) + } + } + stage('Build PG_bouncer generic source deb') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_src_deb=1") + + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) + } + } + } //parallel + } // stage + stage('Build PG_bouncer RPMs/DEBs/Binary tarballs') { + parallel { + stage('Oracle Linux 8') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } + } + + stage('Sign packages') { + steps { + signRPM(params.CLOUD) + signDEB(params.CLOUD) + } + } + stage('Push to public repository') { + steps { + // sync packages + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) + } + } + + } + post { + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}" + } + deleteDir() + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/ppg/pgbouncer-arm.yml b/ppg/pgbouncer-arm.yml new file mode 100644 index 0000000000..4fa82e885b --- /dev/null +++ b/ppg/pgbouncer-arm.yml @@ -0,0 +1,14 @@ +- job: + name: hetzner-pgbouncer-arm-RELEASE + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/pgbouncer-arm.groovy diff --git a/ppg/pgpool-arm.groovy b/ppg/pgpool-arm.groovy new file mode 100644 index 0000000000..3282605f04 --- /dev/null +++ b/ppg/pgpool-arm.groovy @@ -0,0 +1,269 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + sh """ + set -o xtrace + mkdir test + wget \$(echo ${GIT_BUILD_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${BUILD_BRANCH}/pgpool2/pgpool2_builder.sh -O pgpool2_builder.sh + pwd -P + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./pgpool2_builder.sh --builddir=\${build_dir}/test --install_deps=1 + bash -x ./pgpool2_builder.sh --builddir=\${build_dir}/test --branch=\${BRANCH} --repo=\${GIT_REPO} --pp_branch=\${BUILD_BRANCH} --pp_repo=\${GIT_BUILD_REPO} --rpm_release=\${RPM_RELEASE} --deb_release=\${DEB_RELEASE} --pg_release=\${PG_RELEASE} $STAGE_PARAM" + """ +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def AWS_STASH_PATH + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: '4.4.2', + description: 'General version of the product', + name: 'VERSION' + ) + string( + defaultValue: 'https://git.postgresql.org/git/pgpool2.git', + description: 'pgpool2 repo', + name: 'GIT_REPO' + ) + string( + defaultValue: 'V4_4_STABLE', + description: 'Branch for pgpool2 repo', + name: 'BRANCH' + ) + string( + defaultValue: 'https://github.com/percona/postgres-packaging.git', + description: 'Build pgpool2 repo', + name: 'GIT_BUILD_REPO' + ) + string( + defaultValue: 'main', + description: 'Branch for build repo', + name: 'BUILD_BRANCH' + ) + string( + defaultValue: '1', + description: 'rpm release number', + name: 'RPM_RELEASE' + ) + string( + defaultValue: '1', + description: 'deb release number', + name: 'DEB_RELEASE' + ) + string( + defaultValue: '16.1', + description: 'PPG major version to test', + name: 'PG_RELEASE' + ) + choice( + choices: 'laboratory\ntesting\nexperimental\nrelease', + description: 'Repo component to push packages to', + name: 'COMPONENT') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + stages { + stage('Create pgpool2 source tarball') { + steps { + slackNotify("", "#00FF00", "[${JOB_NAME}]: starting build for ${BUILD_BRANCH} - [${BUILD_URL}]") + cleanUpWS() + buildStage("oraclelinux:8", "--get_sources=1") + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/pgpool2.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/pgpool2.properties + cat uploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') + } + } + stage('Build pgpool2 generic source packages') { + parallel { + stage('Build pgpool2 generic source rpm') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_src_rpm=1") + + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) + } + } + stage('Build pgpool2 generic source deb') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_source_deb=1") + + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) + } + } + } //parallel + } // stage + stage('Build pgpool2 RPMs/DEBs/Binary tarballs') { + parallel { + stage('Oracle Linux 8') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bookworm(12)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } + } + + stage('Sign packages') { + steps { + signRPM(params.CLOUD) + signDEB(params.CLOUD) + } + } + stage('Push to public repository') { + steps { + // sync packages + sync2ProdAutoBuild(params.CLOUD, "ppg-${PG_RELEASE}", COMPONENT) + } + } + + } + post { + success { + slackNotify("", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${BUILD_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${BUILD_BRANCH}" + } + deleteDir() + } + failure { + slackNotify("", "#FF0000", "[${JOB_NAME}]: build failed for ${BUILD_BRANCH} - [${BUILD_URL}]") + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/ppg/pgpool-arm.yml b/ppg/pgpool-arm.yml new file mode 100644 index 0000000000..33d386d847 --- /dev/null +++ b/ppg/pgpool-arm.yml @@ -0,0 +1,14 @@ +- job: + name: hetzner-pgpool-arm-RELEASE + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/pgpool-arm.groovy diff --git a/ppg/pgrepack_arm.groovy b/ppg/pgrepack_arm.groovy new file mode 100644 index 0000000000..b85e4851b5 --- /dev/null +++ b/ppg/pgrepack_arm.groovy @@ -0,0 +1,253 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + sh """ + set -o xtrace + mkdir test + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/pg_repack/pgrepack_builder.sh -O builder.sh + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 + bash -x ./builder.sh --builddir=\${build_dir}/test --branch=${PG_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + """ +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def AWS_STASH_PATH + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/percona/postgres-packaging.git', + description: 'URL for pg_repack repository', + name: 'GIT_REPO') + string( + defaultValue: 'ver_1.4.4', + description: 'General version of the product', + name: 'PG_BRANCH') + string( + defaultValue: '16.0', + description: 'Tag/Branch for pg_repack repository', + name: 'GIT_BRANCH') + string( + defaultValue: '1', + description: 'RPM release value', + name: 'RPM_RELEASE') + string( + defaultValue: '1', + description: 'DEB release value', + name: 'DEB_RELEASE') + string( + defaultValue: 'ppg-16.1', + description: 'PPG repo name', + name: 'PPG_REPO') + choice( + choices: 'laboratory\ntesting\nexperimental', + description: 'Repo component to push packages to', + name: 'COMPONENT') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + stages { + stage('Create PG_REPACK source tarball') { + steps { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") + cleanUpWS() + buildStage("oraclelinux:8", "--get_sources=1") + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/pg_repack.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/pg_repack.properties + cat uploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') + } + } + stage('Build PG_REPACK generic source packages') { + parallel { + stage('Build PG_REPACK generic source rpm') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_src_rpm=1") + + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) + } + } + stage('Build PG_REPACK generic source deb') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_src_deb=1") + + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) + } + } + } //parallel + } // stage + stage('Build PG_REPACK RPMs/DEBs/Binary tarballs') { + parallel { + stage('Oracle Linux 8') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } + } + + stage('Sign packages') { + steps { + signRPM(params.CLOUD) + } + } + stage('Push to public repository') { + steps { + // sync packages + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) + } + } + + } + post { + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}" + } + deleteDir() + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/ppg/pgrepack_arm.yml b/ppg/pgrepack_arm.yml new file mode 100644 index 0000000000..cad913b5f3 --- /dev/null +++ b/ppg/pgrepack_arm.yml @@ -0,0 +1,14 @@ +- job: + name: hetzner-pgrepack-arm-RELEASE + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/pgrepack_arm.groovy \ No newline at end of file diff --git a/ppg/pgvector-arm.groovy b/ppg/pgvector-arm.groovy new file mode 100644 index 0000000000..3dd6884fa4 --- /dev/null +++ b/ppg/pgvector-arm.groovy @@ -0,0 +1,254 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + sh """ + set -o xtrace + mkdir test + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/pgvector/pgvector_builder.sh -O builder.sh + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 + bash -x ./builder.sh --builddir=\${build_dir}/test --branch=${PG_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + """ +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def AWS_STASH_PATH + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/percona/postgres-packaging.git', + description: 'URL for pgvector repository', + name: 'GIT_REPO') + string( + defaultValue: 'ver_1.4.4', + description: 'Tag/Branch for pgvector repository', + name: 'PG_BRANCH') + string( + defaultValue: '16.0', + description: 'Tag/Branch for pgvector packaging repository', + name: 'GIT_BRANCH') + string( + defaultValue: '1', + description: 'RPM release value', + name: 'RPM_RELEASE') + string( + defaultValue: '1', + description: 'DEB release value', + name: 'DEB_RELEASE') + string( + defaultValue: 'ppg-16.0', + description: 'PPG repo name', + name: 'PPG_REPO') + choice( + choices: 'laboratory\ntesting\nexperimental', + description: 'Repo component to push packages to', + name: 'COMPONENT') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + stages { + stage('Create pgvector source tarball') { + steps { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") + cleanUpWS() + buildStage("oraclelinux:8", "--get_sources=1") + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/pgvector.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/pgvector.properties + cat uploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') + } + } + stage('Build pgvector generic source packages') { + parallel { + stage('Build pgvector generic source rpm') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_src_rpm=1") + + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) + } + } + stage('Build pgvector generic source deb') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_src_deb=1") + + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) + } + } + } //parallel + } // stage + stage('Build pgvector RPMs/DEBs/Binary tarballs') { + parallel { + stage('Oracle Linux 8') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } + } + + stage('Sign packages') { + steps { + signRPM(params.CLOUD) + signDEB(params.CLOUD) + } + } + stage('Push to public repository') { + steps { + // sync packages + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) + } + } + + } + post { + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}" + } + deleteDir() + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/ppg/pgvector-arm.yml b/ppg/pgvector-arm.yml new file mode 100644 index 0000000000..8de028f67f --- /dev/null +++ b/ppg/pgvector-arm.yml @@ -0,0 +1,15 @@ +- job: + name: hetzner-pgvector-arm-RELEASE + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/pgvector-arm.groovy + diff --git a/ppg/postgresql-ivee-arm.groovy b/ppg/postgresql-ivee-arm.groovy new file mode 100644 index 0000000000..9dc81ac7bc --- /dev/null +++ b/ppg/postgresql-ivee-arm.groovy @@ -0,0 +1,190 @@ +library changelog: false, identifier: "lib@master", retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) + +pipeline { + agent { + label 'docker-32gb-aarch64' + } + environment { + PATH = '/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin' + } + parameters { + choice(name: 'PPG_REPO', choices: ['testing','release','experimental'], description: 'Percona-release repo') + string(name: 'PPG_VERSION', defaultValue: '12.19-1', description: 'PPG version') + choice(name: 'TARGET_REPO', choices: ['PerconaLab','AWS_ECR','DockerHub'], description: 'Target repo for docker image, use DockerHub for release only') + choice(name: 'LATEST', choices: ['no','yes'], description: 'Tag image as latest') + } + options { + disableConcurrentBuilds() + } + stages { + stage('Set build name'){ + steps { + script { + currentBuild.displayName = "${params.PPG_REPO}-${params.PPG_VERSION}" + } + } + } + stage ('Build image') { + steps { + sh """ + MAJ_VER=\$(echo ${params.PPG_VERSION} | cut -f1 -d'-' | cut -f1 -d'.') + echo \$MAJ_VER + MIN_VER=\$(echo ${params.PPG_VERSION} | cut -f1 -d'-' | cut -f2 -d'.') + echo \$MIN_VER + git clone https://github.com/Percona-Lab/postgresql-docker-ivee + cd postgresql-docker-ivee + sed -E "s/ENV PPG_REPO (.+)/ENV PPG_REPO ${params.PPG_REPO}/" -i Dockerfile + sed -E "s/ENV PPG_MAJOR_VERSION (.+)/ENV PPG_MAJOR_VERSION \$MAJ_VER/" -i Dockerfile + sed -E "s/ENV PPG_MINOR_VERSION (.+)/ENV PPG_MINOR_VERSION \$MIN_VER/" -i Dockerfile + docker build . -t postgresql-ivee -f Dockerfile + """ + } + } + stage ('Push images to perconalab') { + when { + environment name: 'TARGET_REPO', value: 'PerconaLab' + } + steps { + withCredentials([usernamePassword(credentialsId: 'hub.docker.com', passwordVariable: 'PASS', usernameVariable: 'USER')]) { + sh """ + docker login -u '${USER}' -p '${PASS}' + MAJ_VER=\$(echo ${params.PPG_VERSION} | cut -f1 -d'-' | cut -f1 -d'.') + MIN_VER=\$(echo ${params.PPG_VERSION} | cut -f1 -d'-' | cut -f2 -d'.') + docker tag postgresql-ivee perconalab/postgresql-ivee:${params.PPG_VERSION}-arm64 + docker tag postgresql-ivee perconalab/postgresql-ivee:\$MAJ_VER.\$MIN_VER-arm64 + docker tag postgresql-ivee perconalab/postgresql-ivee:\$MAJ_VER-arm64 + docker push perconalab/postgresql-ivee:${params.PPG_VERSION}-arm64 + docker push perconalab/postgresql-ivee:\$MAJ_VER.\$MIN_VER-arm64 + docker push perconalab/postgresql-ivee:\$MAJ_VER-arm64 + + docker manifest create --amend perconalab/postgresql-ivee:${params.PPG_VERSION} \ + perconalab/postgresql-ivee:${params.PPG_VERSION}-amd64 \ + perconalab/postgresql-ivee:${params.PPG_VERSION}-arm64 + docker manifest annotate perconalab/postgresql-ivee:${params.PPG_VERSION} \ + perconalab/postgresql-ivee:${params.PPG_VERSION}-arm64 --os linux --arch arm64 --variant v8 + docker manifest annotate perconalab/postgresql-ivee:${params.PPG_VERSION} \ + perconalab/postgresql-ivee:${params.PPG_VERSION}-amd64 --os linux --arch amd64 + docker manifest inspect perconalab/postgresql-ivee:${params.PPG_VERSION} + docker manifest push perconalab/postgresql-ivee:${params.PPG_VERSION} + + docker manifest create --amend perconalab/postgresql-ivee:\$MAJ_VER.\$MIN_VER \ + perconalab/postgresql-ivee:\$MAJ_VER.\$MIN_VER-amd64 \ + perconalab/postgresql-ivee:\$MAJ_VER.\$MIN_VER-arm64 + docker manifest annotate perconalab/postgresql-ivee:\$MAJ_VER.\$MIN_VER \ + perconalab/postgresql-ivee:\$MAJ_VER.\$MIN_VER-arm64 --os linux --arch arm64 --variant v8 + docker manifest annotate perconalab/postgresql-ivee:\$MAJ_VER.\$MIN_VER \ + perconalab/postgresql-ivee:\$MAJ_VER.\$MIN_VER-amd64 --os linux --arch amd64 + docker manifest inspect perconalab/postgresql-ivee:\$MAJ_VER.\$MIN_VER + docker manifest push perconalab/postgresql-ivee:\$MAJ_VER.\$MIN_VER + + docker manifest create --amend perconalab/postgresql-ivee:\$MAJ_VER \ + perconalab/postgresql-ivee:\$MAJ_VER-amd64 \ + perconalab/postgresql-ivee:\$MAJ_VER-arm64 + docker manifest annotate perconalab/postgresql-ivee:\$MAJ_VER \ + perconalab/postgresql-ivee:\$MAJ_VER-arm64 --os linux --arch arm64 --variant v8 + docker manifest annotate perconalab/postgresql-ivee:\$MAJ_VER \ + perconalab/postgresql-ivee:\$MAJ_VER-amd64 --os linux --arch amd64 + docker manifest inspect perconalab/postgresql-ivee:\$MAJ_VER + docker manifest push perconalab/postgresql-ivee:\$MAJ_VER + + if [ ${params.LATEST} = "yes" ]; then + docker manifest create --amend perconalab/postgresql-ivee:latest \ + perconalab/postgresql-ivee:\$MAJ_VER-amd64 \ + perconalab/postgresql-ivee:\$MAJ_VER-arm64 + docker manifest annotate perconalab/postgresql-ivee:latest \ + perconalab/postgresql-ivee:\$MAJ_VER-arm64 --os linux --arch arm64 --variant v8 + docker manifest annotate perconalab/postgresql-ivee:latest \ + perconalab/postgresql-ivee:\$MAJ_VER-amd64 --os linux --arch amd64 + docker manifest inspect perconalab/postgresql-ivee:latest + docker manifest push perconalab/postgresql-ivee:latest + fi + + """ + } + } + } + stage ('Push images to percona') { + when { + environment name: 'TARGET_REPO', value: 'DockerHub' + } + steps { + withCredentials([usernamePassword(credentialsId: 'hub.docker.com', passwordVariable: 'PASS', usernameVariable: 'USER')]) { + sh """ + docker login -u '${USER}' -p '${PASS}' + MAJ_VER=\$(echo ${params.PPG_VERSION} | cut -f1 -d'-' | cut -f1 -d'.') + MIN_VER=\$(echo ${params.PPG_VERSION} | cut -f1 -d'-' | cut -f2 -d'.') + docker tag postgresql-ivee percona/postgresql-ivee:${params.PPG_VERSION}-arm64 + docker tag postgresql-ivee percona/postgresql-ivee:\$MAJ_VER.\$MIN_VER-arm64 + docker tag postgresql-ivee percona/postgresql-ivee:\$MAJ_VER-arm64 + docker push percona/postgresql-ivee:${params.PPG_VERSION}-arm64 + docker push percona/postgresql-ivee:\$MAJ_VER.\$MIN_VER-arm64 + docker push percona/postgresql-ivee:\$MAJ_VER-arm64 + + docker manifest create --amend percona/postgresql-ivee:${params.PPG_VERSION} \ + percona/postgresql-ivee:${params.PPG_VERSION}-amd64 \ + percona/postgresql-ivee:${params.PPG_VERSION}-arm64 + docker manifest annotate percona/postgresql-ivee:${params.PPG_VERSION} \ + percona/postgresql-ivee:${params.PPG_VERSION}-arm64 --os linux --arch arm64 --variant v8 + docker manifest annotate percona/postgresql-ivee:${params.PPG_VERSION} \ + percona/postgresql-ivee:${params.PPG_VERSION}-amd64 --os linux --arch amd64 + docker manifest inspect percona/postgresql-ivee:${params.PPG_VERSION} + docker manifest push percona/postgresql-ivee:${params.PPG_VERSION} + + docker manifest create --amend percona/postgresql-ivee:\$MAJ_VER.\$MIN_VER \ + percona/postgresql-ivee:\$MAJ_VER.\$MIN_VER-amd64 \ + percona/postgresql-ivee:\$MAJ_VER.\$MIN_VER-arm64 + docker manifest annotate percona/postgresql-ivee:\$MAJ_VER.\$MIN_VER \ + percona/postgresql-ivee:\$MAJ_VER.\$MIN_VER-arm64 --os linux --arch arm64 --variant v8 + docker manifest annotate percona/postgresql-ivee:\$MAJ_VER.\$MIN_VER \ + percona/postgresql-ivee:\$MAJ_VER.\$MIN_VER-amd64 --os linux --arch amd64 + docker manifest inspect percona/postgresql-ivee:\$MAJ_VER.\$MIN_VER + docker manifest push percona/postgresql-ivee:\$MAJ_VER.\$MIN_VER + + docker manifest create --amend percona/postgresql-ivee:\$MAJ_VER \ + percona/postgresql-ivee:\$MAJ_VER-amd64 \ + percona/postgresql-ivee:\$MAJ_VER-arm64 + docker manifest annotate percona/postgresql-ivee:\$MAJ_VER \ + percona/postgresql-ivee:\$MAJ_VER-arm64 --os linux --arch arm64 --variant v8 + docker manifest annotate percona/postgresql-ivee:\$MAJ_VER \ + percona/postgresql-ivee:\$MAJ_VER-amd64 --os linux --arch amd64 + docker manifest inspect percona/postgresql-ivee:\$MAJ_VER + docker manifest push percona/postgresql-ivee:\$MAJ_VER + + if [ ${params.LATEST} = "yes" ]; then + docker manifest create --amend percona/postgresql-ivee:latest \ + percona/postgresql-ivee:\$MAJ_VER-amd64 \ + percona/postgresql-ivee:\$MAJ_VER-arm64 + docker manifest annotate percona/postgresql-ivee:latest \ + percona/postgresql-ivee:\$MAJ_VER-arm64 --os linux --arch arm64 --variant v8 + docker manifest annotate percona/postgresql-ivee:latest \ + percona/postgresql-ivee:\$MAJ_VER-amd64 --os linux --arch amd64 + docker manifest inspect percona/postgresql-ivee:latest + docker manifest push percona/postgresql-ivee:latest + fi + """ + } + } + } + } + post { + always { + sh """ + sudo docker rmi -f \$(sudo docker images -q | uniq) || true + sudo rm -rf ${WORKSPACE}/* + """ + deleteDir() + } + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: Building of PPG ${PPG_VERSION} for ARM, repo ${PPG_REPO} succeed") + } + unstable { + slackNotify("#releases-ci", "#F6F930", "[${JOB_NAME}]: Building of PPG ${PPG_VERSION} fro ARM, repo ${PPG_REPO} unstable - [${BUILD_URL}testReport/]") + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: Building of PPG ${PPG_VERSION} for ARM, repo ${PPG_REPO} failed - [${BUILD_URL}]") + } + } +} diff --git a/ppg/postgresql-ivee-arm.yml b/ppg/postgresql-ivee-arm.yml new file mode 100644 index 0000000000..7e4bc1b878 --- /dev/null +++ b/ppg/postgresql-ivee-arm.yml @@ -0,0 +1,14 @@ +- job: + name: hetzner-postgresql-ivee-docker-arm + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/postgresql-ivee-arm.groovy diff --git a/ppg/postgresql_common_arm.groovy b/ppg/postgresql_common_arm.groovy new file mode 100644 index 0000000000..73431c8f5b --- /dev/null +++ b/ppg/postgresql_common_arm.groovy @@ -0,0 +1,256 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + sh """ + set -o xtrace + mkdir test + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/postgres-common/ppg-common_builder.sh -O ppg-server_builder.sh + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./ppg-server_builder.sh --builddir=\${build_dir}/test --install_deps=1 + bash -x ./ppg-server_builder.sh --builddir=\${build_dir}/test --branch=${PG_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + """ +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def AWS_STASH_PATH + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/percona/postgres-packaging.git', + description: 'URL for ppg-server repository', + name: 'GIT_REPO') + string( + defaultValue: '256', + description: 'Tag/Branch for postgresql-common', + name: 'PG_BRANCH') + string( + defaultValue: '16.1', + description: 'Tag/Branch for ppg-server repository', + name: 'GIT_BRANCH') + string( + defaultValue: '1', + description: 'RPM release value', + name: 'RPM_RELEASE') + string( + defaultValue: '1', + description: 'DEB release value', + name: 'DEB_RELEASE') + string( + defaultValue: 'ppg-16.1', + description: 'PPG repo name', + name: 'PPG_REPO') + choice( + choices: 'laboratory\ntesting\nexperimental', + description: 'Repo component to push packages to', + name: 'COMPONENT') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + stages { + stage('Create PPG_SERVER source tarball') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") + cleanUpWS() + buildStage("oraclelinux:8", "--get_sources=1") + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/percona-postgresql.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/percona-postgresql.properties + cat uploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') + } + } + stage('Build PPG-SERVER generic source packages') { + parallel { + stage('Build PPG-SERVER generic source rpm') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_src_rpm=1") + + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) + } + } + stage('Build postgresql-common generic source deb') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_src_deb=1") + + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) + } + } + } //parallel + } // stage + stage('Build PPG-SERVER RPMs/DEBs/Binary tarballs') { + parallel { + stage('Oracle Linux 8') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } + } + + stage('Sign packages') { + steps { + signRPM(params.CLOUD) + } + } + stage('Push to public repository') { + steps { + // sync packages + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) + } + } + + } + post { + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}" + } + deleteDir() + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/ppg/postgresql_common_arm.yml b/ppg/postgresql_common_arm.yml new file mode 100644 index 0000000000..703baa26e9 --- /dev/null +++ b/ppg/postgresql_common_arm.yml @@ -0,0 +1,15 @@ +- job: + name: hetzner-postgresql-common-arm-autobuild-RELEASE + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/postgresql_common_arm.groovy + diff --git a/ppg/postgresql_server_arm.groovy b/ppg/postgresql_server_arm.groovy new file mode 100644 index 0000000000..01e778196e --- /dev/null +++ b/ppg/postgresql_server_arm.groovy @@ -0,0 +1,253 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + sh """ + set -o xtrace + mkdir test + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/postgres/ppg_builder.sh -O ppg-server_builder.sh + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./ppg-server_builder.sh --builddir=\${build_dir}/test --install_deps=1 + bash -x ./ppg-server_builder.sh --builddir=\${build_dir}/test --branch=${PG_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + """ +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def AWS_STASH_PATH + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/percona/postgres-packaging.git', + description: 'URL for ppg-server repository', + name: 'GIT_REPO') + string( + defaultValue: 'REL_15_RELEASE', + description: 'Tag/Branch for postgresql', + name: 'PG_BRANCH') + string( + defaultValue: '15.3', + description: 'Tag/Branch for ppg-server repository', + name: 'GIT_BRANCH') + string( + defaultValue: '1', + description: 'RPM release value', + name: 'RPM_RELEASE') + string( + defaultValue: '1', + description: 'DEB release value', + name: 'DEB_RELEASE') + string( + defaultValue: 'ppg-15.3', + description: 'PPG repo name', + name: 'PPG_REPO') + choice( + choices: 'laboratory\ntesting\nexperimental', + description: 'Repo component to push packages to', + name: 'COMPONENT') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + stages { + stage('Create PPG_SERVER source tarball') { + steps { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") + cleanUpWS() + buildStage("oraclelinux:8", "--get_sources=1") + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/percona-postgresql.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/percona-postgresql.properties + cat uploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') + } + } + stage('Build PPG-SERVER generic source packages') { + parallel { + stage('Build PPG-SERVER generic source rpm') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_src_rpm=1") + + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) + } + } + stage('Build PPG-SERVER generic source deb') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_src_deb=1") + + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) + } + } + } //parallel + } // stage + stage('Build PPG-SERVER RPMs/DEBs/Binary tarballs') { + parallel { + stage('Oracle Linux 8') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } + } + + stage('Sign packages') { + steps { + signRPM(params.CLOUD) + } + } + stage('Push to public repository') { + steps { + // sync packages + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) + } + } + + } + post { + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}" + } + deleteDir() + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/ppg/postgresql_server_arm.yml b/ppg/postgresql_server_arm.yml new file mode 100644 index 0000000000..ff9e0e50d0 --- /dev/null +++ b/ppg/postgresql_server_arm.yml @@ -0,0 +1,15 @@ +- job: + name: hetzner-postgresql-server-arm_autobuild-RELEASE + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/postgresql_server_arm.groovy + diff --git a/ppg/ppg-docker-arm.groovy b/ppg/ppg-docker-arm.groovy new file mode 100644 index 0000000000..cba59afad3 --- /dev/null +++ b/ppg/ppg-docker-arm.groovy @@ -0,0 +1,191 @@ +library changelog: false, identifier: "lib@master", retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) + +pipeline { + agent { + label 'docker-32gb-aarch64' + } + environment { + PATH = '/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin' + } + parameters { + choice(name: 'PPG_REPO', choices: ['testing','release','experimental'], description: 'Percona-release repo') + string(name: 'PPG_VERSION', defaultValue: '12.19-1', description: 'PPG version') + choice(name: 'TARGET_REPO', choices: ['PerconaLab','AWS_ECR','DockerHub'], description: 'Target repo for docker image, use DockerHub for release only') + choice(name: 'LATEST', choices: ['no','yes'], description: 'Tag image as latest') + } + options { + disableConcurrentBuilds() + } + stages { + stage('Set build name'){ + steps { + script { + currentBuild.displayName = "${params.PPG_REPO}-${params.PPG_VERSION}" + } + } + } + stage ('Build image') { + steps { + sh """ + MAJ_VER=\$(echo ${params.PPG_VERSION} | cut -f1 -d'-' | cut -f1 -d'.') + echo \$MAJ_VER + MIN_VER=\$(echo ${params.PPG_VERSION} | cut -f1 -d'-' | cut -f2 -d'.') + echo \$MIN_VER + git clone https://github.com/percona/percona-docker + cd percona-docker/percona-distribution-postgresql-\$MAJ_VER + sed -E "s/ENV PPG_VERSION (.+)/ENV PPG_VERSION ${params.PPG_VERSION}/" -i Dockerfile.aarch64 + sed -E "s/ENV PPG_REPO (.+)/ENV PPG_REPO ${params.PPG_REPO}/" -i Dockerfile.aarch64 + sed -E "s/ENV PPG_MAJOR_VERSION (.+)/ENV PPG_MAJOR_VERSION \$MAJ_VER/" -i Dockerfile.aarch64 + sed -E "s/ENV PPG_MINOR_VERSION (.+)/ENV PPG_MINOR_VERSION \$MIN_VER/" -i Dockerfile.aarch64 + docker build . -t percona-distribution-postgresql -f Dockerfile.aarch64 + """ + } + } + stage ('Push images to perconalab') { + when { + environment name: 'TARGET_REPO', value: 'PerconaLab' + } + steps { + withCredentials([usernamePassword(credentialsId: 'hub.docker.com', passwordVariable: 'PASS', usernameVariable: 'USER')]) { + sh """ + docker login -u '${USER}' -p '${PASS}' + MAJ_VER=\$(echo ${params.PPG_VERSION} | cut -f1 -d'-' | cut -f1 -d'.') + MIN_VER=\$(echo ${params.PPG_VERSION} | cut -f1 -d'-' | cut -f2 -d'.') + docker tag percona-distribution-postgresql perconalab/percona-distribution-postgresql:${params.PPG_VERSION}-arm64 + docker tag percona-distribution-postgresql perconalab/percona-distribution-postgresql:\$MAJ_VER.\$MIN_VER-arm64 + docker tag percona-distribution-postgresql perconalab/percona-distribution-postgresql:\$MAJ_VER-arm64 + docker push perconalab/percona-distribution-postgresql:${params.PPG_VERSION}-arm64 + docker push perconalab/percona-distribution-postgresql:\$MAJ_VER.\$MIN_VER-arm64 + docker push perconalab/percona-distribution-postgresql:\$MAJ_VER-arm64 + + docker manifest create --amend perconalab/percona-distribution-postgresql:${params.PPG_VERSION} \ + perconalab/percona-distribution-postgresql:${params.PPG_VERSION}-amd64 \ + perconalab/percona-distribution-postgresql:${params.PPG_VERSION}-arm64 + docker manifest annotate perconalab/percona-distribution-postgresql:${params.PPG_VERSION} \ + perconalab/percona-distribution-postgresql:${params.PPG_VERSION}-arm64 --os linux --arch arm64 --variant v8 + docker manifest annotate perconalab/percona-distribution-postgresql:${params.PPG_VERSION} \ + perconalab/percona-distribution-postgresql:${params.PPG_VERSION}-amd64 --os linux --arch amd64 + docker manifest inspect perconalab/percona-distribution-postgresql:${params.PPG_VERSION} + docker manifest push perconalab/percona-distribution-postgresql:${params.PPG_VERSION} + + docker manifest create --amend perconalab/percona-distribution-postgresql:\$MAJ_VER.\$MIN_VER \ + perconalab/percona-distribution-postgresql:\$MAJ_VER.\$MIN_VER-amd64 \ + perconalab/percona-distribution-postgresql:\$MAJ_VER.\$MIN_VER-arm64 + docker manifest annotate perconalab/percona-distribution-postgresql:\$MAJ_VER.\$MIN_VER \ + perconalab/percona-distribution-postgresql:\$MAJ_VER.\$MIN_VER-arm64 --os linux --arch arm64 --variant v8 + docker manifest annotate perconalab/percona-distribution-postgresql:\$MAJ_VER.\$MIN_VER \ + perconalab/percona-distribution-postgresql:\$MAJ_VER.\$MIN_VER-amd64 --os linux --arch amd64 + docker manifest inspect perconalab/percona-distribution-postgresql:\$MAJ_VER.\$MIN_VER + docker manifest push perconalab/percona-distribution-postgresql:\$MAJ_VER.\$MIN_VER + + docker manifest create --amend perconalab/percona-distribution-postgresql:\$MAJ_VER \ + perconalab/percona-distribution-postgresql:\$MAJ_VER-amd64 \ + perconalab/percona-distribution-postgresql:\$MAJ_VER-arm64 + docker manifest annotate perconalab/percona-distribution-postgresql:\$MAJ_VER \ + perconalab/percona-distribution-postgresql:\$MAJ_VER-arm64 --os linux --arch arm64 --variant v8 + docker manifest annotate perconalab/percona-distribution-postgresql:\$MAJ_VER \ + perconalab/percona-distribution-postgresql:\$MAJ_VER-amd64 --os linux --arch amd64 + docker manifest inspect perconalab/percona-distribution-postgresql:\$MAJ_VER + docker manifest push perconalab/percona-distribution-postgresql:\$MAJ_VER + + if [ ${params.LATEST} = "yes" ]; then + docker manifest create --amend perconalab/percona-distribution-postgresql:latest \ + perconalab/percona-distribution-postgresql:\$MAJ_VER-amd64 \ + perconalab/percona-distribution-postgresql:\$MAJ_VER-arm64 + docker manifest annotate perconalab/percona-distribution-postgresql:latest \ + perconalab/percona-distribution-postgresql:\$MAJ_VER-arm64 --os linux --arch arm64 --variant v8 + docker manifest annotate perconalab/percona-distribution-postgresql:latest \ + perconalab/percona-distribution-postgresql:\$MAJ_VER-amd64 --os linux --arch amd64 + docker manifest inspect perconalab/percona-distribution-postgresql:latest + docker manifest push perconalab/percona-distribution-postgresql:latest + fi + + """ + } + } + } + stage ('Push images to percona') { + when { + environment name: 'TARGET_REPO', value: 'DockerHub' + } + steps { + withCredentials([usernamePassword(credentialsId: 'hub.docker.com', passwordVariable: 'PASS', usernameVariable: 'USER')]) { + sh """ + docker login -u '${USER}' -p '${PASS}' + MAJ_VER=\$(echo ${params.PPG_VERSION} | cut -f1 -d'-' | cut -f1 -d'.') + MIN_VER=\$(echo ${params.PPG_VERSION} | cut -f1 -d'-' | cut -f2 -d'.') + docker tag percona-distribution-postgresql percona/percona-distribution-postgresql:${params.PPG_VERSION}-arm64 + docker tag percona-distribution-postgresql percona/percona-distribution-postgresql:\$MAJ_VER.\$MIN_VER-arm64 + docker tag percona-distribution-postgresql percona/percona-distribution-postgresql:\$MAJ_VER-arm64 + docker push percona/percona-distribution-postgresql:${params.PPG_VERSION}-arm64 + docker push percona/percona-distribution-postgresql:\$MAJ_VER.\$MIN_VER-arm64 + docker push percona/percona-distribution-postgresql:\$MAJ_VER-arm64 + + docker manifest create --amend percona/percona-distribution-postgresql:${params.PPG_VERSION} \ + percona/percona-distribution-postgresql:${params.PPG_VERSION}-amd64 \ + percona/percona-distribution-postgresql:${params.PPG_VERSION}-arm64 + docker manifest annotate percona/percona-distribution-postgresql:${params.PPG_VERSION} \ + percona/percona-distribution-postgresql:${params.PPG_VERSION}-arm64 --os linux --arch arm64 --variant v8 + docker manifest annotate percona/percona-distribution-postgresql:${params.PPG_VERSION} \ + percona/percona-distribution-postgresql:${params.PPG_VERSION}-amd64 --os linux --arch amd64 + docker manifest inspect percona/percona-distribution-postgresql:${params.PPG_VERSION} + docker manifest push percona/percona-distribution-postgresql:${params.PPG_VERSION} + + docker manifest create --amend percona/percona-distribution-postgresql:\$MAJ_VER.\$MIN_VER \ + percona/percona-distribution-postgresql:\$MAJ_VER.\$MIN_VER-amd64 \ + percona/percona-distribution-postgresql:\$MAJ_VER.\$MIN_VER-arm64 + docker manifest annotate percona/percona-distribution-postgresql:\$MAJ_VER.\$MIN_VER \ + percona/percona-distribution-postgresql:\$MAJ_VER.\$MIN_VER-arm64 --os linux --arch arm64 --variant v8 + docker manifest annotate percona/percona-distribution-postgresql:\$MAJ_VER.\$MIN_VER \ + percona/percona-distribution-postgresql:\$MAJ_VER.\$MIN_VER-amd64 --os linux --arch amd64 + docker manifest inspect percona/percona-distribution-postgresql:\$MAJ_VER.\$MIN_VER + docker manifest push percona/percona-distribution-postgresql:\$MAJ_VER.\$MIN_VER + + docker manifest create --amend percona/percona-distribution-postgresql:\$MAJ_VER \ + percona/percona-distribution-postgresql:\$MAJ_VER-amd64 \ + percona/percona-distribution-postgresql:\$MAJ_VER-arm64 + docker manifest annotate percona/percona-distribution-postgresql:\$MAJ_VER \ + percona/percona-distribution-postgresql:\$MAJ_VER-arm64 --os linux --arch arm64 --variant v8 + docker manifest annotate percona/percona-distribution-postgresql:\$MAJ_VER \ + percona/percona-distribution-postgresql:\$MAJ_VER-amd64 --os linux --arch amd64 + docker manifest inspect percona/percona-distribution-postgresql:\$MAJ_VER + docker manifest push percona/percona-distribution-postgresql:\$MAJ_VER + + if [ ${params.LATEST} = "yes" ]; then + docker manifest create --amend percona/percona-distribution-postgresql:latest \ + percona/percona-distribution-postgresql:\$MAJ_VER-amd64 \ + percona/percona-distribution-postgresql:\$MAJ_VER-arm64 + docker manifest annotate percona/percona-distribution-postgresql:latest \ + percona/percona-distribution-postgresql:\$MAJ_VER-arm64 --os linux --arch arm64 --variant v8 + docker manifest annotate percona/percona-distribution-postgresql:latest \ + percona/percona-distribution-postgresql:\$MAJ_VER-amd64 --os linux --arch amd64 + docker manifest inspect percona/percona-distribution-postgresql:latest + docker manifest push percona/percona-distribution-postgresql:latest + fi + """ + } + } + } + } + post { + always { + sh """ + sudo docker rmi -f \$(sudo docker images -q | uniq) || true + sudo rm -rf ${WORKSPACE}/* + """ + deleteDir() + } + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: Building of PPG ${PPG_VERSION} for ARM, repo ${PPG_REPO} succeed") + } + unstable { + slackNotify("#releases-ci", "#F6F930", "[${JOB_NAME}]: Building of PPG ${PPG_VERSION} fro ARM, repo ${PPG_REPO} unstable - [${BUILD_URL}testReport/]") + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: Building of PPG ${PPG_VERSION} for ARM, repo ${PPG_REPO} failed - [${BUILD_URL}]") + } + } +} diff --git a/ppg/ppg-docker-arm.yml b/ppg/ppg-docker-arm.yml new file mode 100644 index 0000000000..d789254aba --- /dev/null +++ b/ppg/ppg-docker-arm.yml @@ -0,0 +1,14 @@ +- job: + name: hetzner-ppg-docker-arm + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/ppg-docker-arm.groovy diff --git a/ppg/ppg-pgbackrest-docker-arm.groovy b/ppg/ppg-pgbackrest-docker-arm.groovy new file mode 100644 index 0000000000..13f717e40f --- /dev/null +++ b/ppg/ppg-pgbackrest-docker-arm.groovy @@ -0,0 +1,162 @@ +library changelog: false, identifier: "lib@master", retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) + +pipeline { + agent { + label 'docker-32gb-aarch64' + } + environment { + PATH = '/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin' + } + parameters { + string(name: 'PGBACKREST_VERSION', defaultValue: '2.51-1', description: 'pgBackrest version') + choice(name: 'PPG_REPO', choices: ['testing','release','experimental'], description: 'Percona-release repo') + string(name: 'PPG_VERSION', defaultValue: '17.0', description: 'PPG version') + choice(name: 'TARGET_REPO', choices: ['PerconaLab','AWS_ECR','DockerHub'], description: 'Target repo for docker image, use DockerHub for release only') + choice(name: 'LATEST', choices: ['no','yes'], description: 'Tag image as latest') + } + options { + disableConcurrentBuilds() + } + stages { + stage('Set build name'){ + steps { + script { + currentBuild.displayName = "${params.PPG_REPO}-${params.PPG_VERSION}" + } + } + } + stage ('Build image') { + steps { + sh """ + MAJ_VER=\$(echo ${params.PGBACKREST_VERSION} | cut -f1 -d'-') + echo \$MAJ_VER + git clone https://github.com/percona/percona-docker + cd percona-docker/percona-pgbackrest + sed -E "s/ENV PG_VERSION (.+)/ENV PG_VERSION ${params.PPG_VERSION}/" -i Dockerfile + sed -E "s/ENV PPG_REPO (.+)/ENV PPG_REPO ${params.PPG_REPO}/" -i Dockerfile + docker build . -t percona-pgbackrest -f Dockerfile + """ + } + } + stage ('Push images to perconalab') { + when { + environment name: 'TARGET_REPO', value: 'PerconaLab' + } + steps { + withCredentials([usernamePassword(credentialsId: 'hub.docker.com', passwordVariable: 'PASS', usernameVariable: 'USER')]) { + sh """ + docker login -u '${USER}' -p '${PASS}' + MAJ_VER=\$(echo ${params.PGBACKREST_VERSION}) + docker tag percona-pgbackrest perconalab/percona-pgbackrest:${params.PGBACKREST_VERSION}-arm64 + docker tag percona-pgbackrest perconalab/percona-pgbackrest:\$MAJ_VER-arm64 + docker push perconalab/percona-pgbackrest:${params.PGBACKREST_VERSION}-arm64 + docker push perconalab/percona-pgbackrest:\$MAJ_VER-arm64 + + docker manifest create --amend perconalab/percona-pgbackrest:${params.PGBACKREST_VERSION} \ + perconalab/percona-pgbackrest:${params.PGBACKREST_VERSION}-amd64 \ + perconalab/percona-pgbackrest:${params.PGBACKREST_VERSION}-arm64 + docker manifest annotate perconalab/percona-pgbackrest:${params.PGBACKREST_VERSION} \ + perconalab/percona-pgbackrest:${params.PGBACKREST_VERSION}-arm64 --os linux --arch arm64 --variant v8 + docker manifest annotate perconalab/percona-pgbackrest:${params.PGBACKREST_VERSION} \ + perconalab/percona-pgbackrest:${params.PGBACKREST_VERSION}-amd64 --os linux --arch amd64 + docker manifest inspect perconalab/percona-pgbackrest:${params.PGBACKREST_VERSION} + docker manifest push perconalab/percona-pgbackrest:${params.PGBACKREST_VERSION} + + docker manifest create --amend perconalab/percona-pgbackrest:\$MAJ_VER \ + perconalab/percona-pgbackrest:\$MAJ_VER-amd64 \ + perconalab/percona-pgbackrest:\$MAJ_VER-arm64 + docker manifest annotate perconalab/percona-pgbackrest:\$MAJ_VER \ + perconalab/percona-pgbackrest:\$MAJ_VER-arm64 --os linux --arch arm64 --variant v8 + docker manifest annotate perconalab/percona-pgbackrest:\$MAJ_VER \ + perconalab/percona-pgbackrest:\$MAJ_VER-amd64 --os linux --arch amd64 + docker manifest inspect perconalab/percona-pgbackrest:\$MAJ_VER + docker manifest push perconalab/percona-pgbackrest:\$MAJ_VER + + if [ ${params.LATEST} = "yes" ]; then + docker manifest create --amend perconalab/percona-pgbackrest:latest \ + perconalab/percona-pgbackrest:\$MAJ_VER-amd64 \ + perconalab/percona-pgbackrest:\$MAJ_VER-arm64 + docker manifest annotate perconalab/percona-pgbackrest:latest \ + perconalab/percona-pgbackrest:\$MAJ_VER-arm64 --os linux --arch arm64 --variant v8 + docker manifest annotate perconalab/percona-pgbackrest:latest \ + perconalab/percona-pgbackrest:\$MAJ_VER-amd64 --os linux --arch amd64 + docker manifest inspect perconalab/percona-pgbackrest:latest + docker manifest push perconalab/percona-pgbackrest:latest + fi + + """ + } + } + } + stage ('Push images to percona') { + when { + environment name: 'TARGET_REPO', value: 'DockerHub' + } + steps { + withCredentials([usernamePassword(credentialsId: 'hub.docker.com', passwordVariable: 'PASS', usernameVariable: 'USER')]) { + sh """ + docker login -u '${USER}' -p '${PASS}' + MAJ_VER=\$(echo ${params.PGBACKREST_VERSION} | cut -f1 -d'-') + docker tag percona-pgbackrest percona/percona-pgbackrest:${params.PGBACKREST_VERSION}-arm64 + docker tag percona-pgbackrest percona/percona-pgbackrest:\$MAJ_VER-arm64 + docker push percona/percona-pgbackrest:${params.PGBACKREST_VERSION}-arm64 + docker push percona/percona-pgbackrest:\$MAJ_VER-arm64 + + docker manifest create --amend percona/percona-pgbackrest:${params.PGBACKREST_VERSION} \ + percona/percona-pgbackrest:${params.PGBACKREST_VERSION}-amd64 \ + percona/percona-pgbackrest:${params.PGBACKREST_VERSION}-arm64 + docker manifest annotate percona/percona-pgbackrest:${params.PGBACKREST_VERSION} \ + percona/percona-pgbackrest:${params.PGBACKREST_VERSION}-arm64 --os linux --arch arm64 --variant v8 + docker manifest annotate percona/percona-pgbackrest:${params.PGBACKREST_VERSION} \ + percona/percona-pgbackrest:${params.PGBACKREST_VERSION}-amd64 --os linux --arch amd64 + docker manifest inspect percona/percona-pgbackrest:${params.PGBACKREST_VERSION} + docker manifest push percona/percona-pgbackrest:${params.PGBACKREST_VERSION} + + docker manifest create --amend percona/percona-pgbackrest:\$MAJ_VER \ + percona/percona-pgbackrest:\$MAJ_VER-amd64 \ + percona/percona-pgbackrest:\$MAJ_VER-arm64 + docker manifest annotate percona/percona-pgbackrest:\$MAJ_VER \ + percona/percona-pgbackrest:\$MAJ_VER-arm64 --os linux --arch arm64 --variant v8 + docker manifest annotate percona/percona-pgbackrest:\$MAJ_VER \ + percona/percona-pgbackrest:\$MAJ_VER-amd64 --os linux --arch amd64 + docker manifest inspect percona/percona-pgbackrest:\$MAJ_VER + docker manifest push percona/percona-pgbackrest:\$MAJ_VER + + if [ ${params.LATEST} = "yes" ]; then + docker manifest create --amend percona/percona-pgbackrest:latest \ + percona/percona-pgbackrest:\$MAJ_VER-amd64 \ + percona/percona-pgbackrest:\$MAJ_VER-arm64 + docker manifest annotate percona/percona-pgbackrest:latest \ + percona/percona-pgbackrest:\$MAJ_VER-arm64 --os linux --arch arm64 --variant v8 + docker manifest annotate percona/percona-pgbackrest:latest \ + percona/percona-pgbackrest:\$MAJ_VER-amd64 --os linux --arch amd64 + docker manifest inspect percona/percona-pgbackrest:latest + docker manifest push percona/percona-pgbackrest:latest + fi + """ + } + } + } + } + post { + always { + sh """ + sudo docker rmi -f \$(sudo docker images -q | uniq) || true + sudo rm -rf ${WORKSPACE}/* + """ + deleteDir() + } + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: Building of Percona pgBackrest ${PGBACKREST_VERSION} for ARM, repo ${PPG_REPO} succeed") + } + unstable { + slackNotify("#releases-ci", "#F6F930", "[${JOB_NAME}]: Building of Percona pgBackrest ${PGBACKREST_VERSION} fro ARM, repo ${PPG_REPO} unstable - [${BUILD_URL}testReport/]") + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: Building of Percona pgBackrest ${PGBACKREST_VERSION} for ARM, repo ${PPG_REPO} failed - [${BUILD_URL}]") + } + } +} diff --git a/ppg/ppg-pgbackrest-docker-arm.yml b/ppg/ppg-pgbackrest-docker-arm.yml new file mode 100644 index 0000000000..577b1b07e2 --- /dev/null +++ b/ppg/ppg-pgbackrest-docker-arm.yml @@ -0,0 +1,14 @@ +- job: + name: hetzner-percona-pgbackrest-docker-arm + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/ppg-pgbackrest-docker-arm.groovy diff --git a/ppg/ppg-pgbouncer-docker-arm.groovy b/ppg/ppg-pgbouncer-docker-arm.groovy new file mode 100644 index 0000000000..ebf857a605 --- /dev/null +++ b/ppg/ppg-pgbouncer-docker-arm.groovy @@ -0,0 +1,162 @@ +library changelog: false, identifier: "lib@master", retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) + +pipeline { + agent { + label 'docker-32gb-aarch64' + } + environment { + PATH = '/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin' + } + parameters { + string(name: 'PGBOUNCER_VERSION', defaultValue: '1.22.1-1', description: 'pgBouncer version') + choice(name: 'PPG_REPO', choices: ['testing','release','experimental'], description: 'Percona-release repo') + string(name: 'PPG_VERSION', defaultValue: '17.0', description: 'PPG version') + choice(name: 'TARGET_REPO', choices: ['PerconaLab','AWS_ECR','DockerHub'], description: 'Target repo for docker image, use DockerHub for release only') + choice(name: 'LATEST', choices: ['no','yes'], description: 'Tag image as latest') + } + options { + disableConcurrentBuilds() + } + stages { + stage('Set build name'){ + steps { + script { + currentBuild.displayName = "${params.PPG_REPO}-${params.PPG_VERSION}" + } + } + } + stage ('Build image') { + steps { + sh """ + MAJ_VER=\$(echo ${params.PGBOUNCER_VERSION} | cut -f1 -d'-') + echo \$MAJ_VER + git clone https://github.com/percona/percona-docker + cd percona-docker/percona-pgbouncer + sed -E "s/ENV PG_VERSION (.+)/ENV PG_VERSION ${params.PPG_VERSION}/" -i Dockerfile + sed -E "s/ENV PPG_REPO (.+)/ENV PPG_REPO ${params.PPG_REPO}/" -i Dockerfile + docker build . -t percona-pgbouncer -f Dockerfile + """ + } + } + stage ('Push images to perconalab') { + when { + environment name: 'TARGET_REPO', value: 'PerconaLab' + } + steps { + withCredentials([usernamePassword(credentialsId: 'hub.docker.com', passwordVariable: 'PASS', usernameVariable: 'USER')]) { + sh """ + docker login -u '${USER}' -p '${PASS}' + MAJ_VER=\$(echo ${params.PGBOUNCER_VERSION}) + docker tag percona-pgbouncer perconalab/percona-pgbouncer:${params.PGBOUNCER_VERSION}-arm64 + docker tag percona-pgbouncer perconalab/percona-pgbouncer:\$MAJ_VER-arm64 + docker push perconalab/percona-pgbouncer:${params.PGBOUNCER_VERSION}-arm64 + docker push perconalab/percona-pgbouncer:\$MAJ_VER-arm64 + + docker manifest create --amend perconalab/percona-pgbouncer:${params.PGBOUNCER_VERSION} \ + perconalab/percona-pgbouncer:${params.PGBOUNCER_VERSION}-amd64 \ + perconalab/percona-pgbouncer:${params.PGBOUNCER_VERSION}-arm64 + docker manifest annotate perconalab/percona-pgbouncer:${params.PGBOUNCER_VERSION} \ + perconalab/percona-pgbouncer:${params.PGBOUNCER_VERSION}-arm64 --os linux --arch arm64 --variant v8 + docker manifest annotate perconalab/percona-pgbouncer:${params.PGBOUNCER_VERSION} \ + perconalab/percona-pgbouncer:${params.PGBOUNCER_VERSION}-amd64 --os linux --arch amd64 + docker manifest inspect perconalab/percona-pgbouncer:${params.PGBOUNCER_VERSION} + docker manifest push perconalab/percona-pgbouncer:${params.PGBOUNCER_VERSION} + + docker manifest create --amend perconalab/percona-pgbouncer:\$MAJ_VER \ + perconalab/percona-pgbouncer:\$MAJ_VER-amd64 \ + perconalab/percona-pgbouncer:\$MAJ_VER-arm64 + docker manifest annotate perconalab/percona-pgbouncer:\$MAJ_VER \ + perconalab/percona-pgbouncer:\$MAJ_VER-arm64 --os linux --arch arm64 --variant v8 + docker manifest annotate perconalab/percona-pgbouncer:\$MAJ_VER \ + perconalab/percona-pgbouncer:\$MAJ_VER-amd64 --os linux --arch amd64 + docker manifest inspect perconalab/percona-pgbouncer:\$MAJ_VER + docker manifest push perconalab/percona-pgbouncer:\$MAJ_VER + + if [ ${params.LATEST} = "yes" ]; then + docker manifest create --amend perconalab/percona-pgbouncer:latest \ + perconalab/percona-pgbouncer:\$MAJ_VER-amd64 \ + perconalab/percona-pgbouncer:\$MAJ_VER-arm64 + docker manifest annotate perconalab/percona-pgbouncer:latest \ + perconalab/percona-pgbouncer:\$MAJ_VER-arm64 --os linux --arch arm64 --variant v8 + docker manifest annotate perconalab/percona-pgbouncer:latest \ + perconalab/percona-pgbouncer:\$MAJ_VER-amd64 --os linux --arch amd64 + docker manifest inspect perconalab/percona-pgbouncer:latest + docker manifest push perconalab/percona-pgbouncer:latest + fi + + """ + } + } + } + stage ('Push images to percona') { + when { + environment name: 'TARGET_REPO', value: 'DockerHub' + } + steps { + withCredentials([usernamePassword(credentialsId: 'hub.docker.com', passwordVariable: 'PASS', usernameVariable: 'USER')]) { + sh """ + docker login -u '${USER}' -p '${PASS}' + MAJ_VER=\$(echo ${params.PGBOUNCER_VERSION} | cut -f1 -d'-') + docker tag percona-pgbouncer percona/percona-pgbouncer:${params.PGBOUNCER_VERSION}-arm64 + docker tag percona-pgbouncer percona/percona-pgbouncer:\$MAJ_VER-arm64 + docker push percona/percona-pgbouncer:${params.PGBOUNCER_VERSION}-arm64 + docker push percona/percona-pgbouncer:\$MAJ_VER-arm64 + + docker manifest create --amend percona/percona-pgbouncer:${params.PGBOUNCER_VERSION} \ + percona/percona-pgbouncer:${params.PGBOUNCER_VERSION}-amd64 \ + percona/percona-pgbouncer:${params.PGBOUNCER_VERSION}-arm64 + docker manifest annotate percona/percona-pgbouncer:${params.PGBOUNCER_VERSION} \ + percona/percona-pgbouncer:${params.PGBOUNCER_VERSION}-arm64 --os linux --arch arm64 --variant v8 + docker manifest annotate percona/percona-pgbouncer:${params.PGBOUNCER_VERSION} \ + percona/percona-pgbouncer:${params.PGBOUNCER_VERSION}-amd64 --os linux --arch amd64 + docker manifest inspect percona/percona-pgbouncer:${params.PGBOUNCER_VERSION} + docker manifest push percona/percona-pgbouncer:${params.PGBOUNCER_VERSION} + + docker manifest create --amend percona/percona-pgbouncer:\$MAJ_VER \ + percona/percona-pgbouncer:\$MAJ_VER-amd64 \ + percona/percona-pgbouncer:\$MAJ_VER-arm64 + docker manifest annotate percona/percona-pgbouncer:\$MAJ_VER \ + percona/percona-pgbouncer:\$MAJ_VER-arm64 --os linux --arch arm64 --variant v8 + docker manifest annotate percona/percona-pgbouncer:\$MAJ_VER \ + percona/percona-pgbouncer:\$MAJ_VER-amd64 --os linux --arch amd64 + docker manifest inspect percona/percona-pgbouncer:\$MAJ_VER + docker manifest push percona/percona-pgbouncer:\$MAJ_VER + + if [ ${params.LATEST} = "yes" ]; then + docker manifest create --amend percona/percona-pgbouncer:latest \ + percona/percona-pgbouncer:\$MAJ_VER-amd64 \ + percona/percona-pgbouncer:\$MAJ_VER-arm64 + docker manifest annotate percona/percona-pgbouncer:latest \ + percona/percona-pgbouncer:\$MAJ_VER-arm64 --os linux --arch arm64 --variant v8 + docker manifest annotate percona/percona-pgbouncer:latest \ + percona/percona-pgbouncer:\$MAJ_VER-amd64 --os linux --arch amd64 + docker manifest inspect percona/percona-pgbouncer:latest + docker manifest push percona/percona-pgbouncer:latest + fi + """ + } + } + } + } + post { + always { + sh """ + sudo docker rmi -f \$(sudo docker images -q | uniq) || true + sudo rm -rf ${WORKSPACE}/* + """ + deleteDir() + } + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: Building of Percona pgBouncer ${PGBOUNCER_VERSION} for ARM, repo ${PPG_REPO} succeed") + } + unstable { + slackNotify("#releases-ci", "#F6F930", "[${JOB_NAME}]: Building of Percona pgBouncer ${PGBOUNCER_VERSION} fro ARM, repo ${PPG_REPO} unstable - [${BUILD_URL}testReport/]") + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: Building of Percona pgBouncer ${PGBOUNCER_VERSION} for ARM, repo ${PPG_REPO} failed - [${BUILD_URL}]") + } + } +} diff --git a/ppg/ppg-pgbouncer-docker-arm.yml b/ppg/ppg-pgbouncer-docker-arm.yml new file mode 100644 index 0000000000..3e99e9246d --- /dev/null +++ b/ppg/ppg-pgbouncer-docker-arm.yml @@ -0,0 +1,14 @@ +- job: + name: hetzner-percona-pgbouncer-docker-arm + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/ppg-pgbouncer-docker-arm.groovy diff --git a/ppg/ppg-server-arm.groovy b/ppg/ppg-server-arm.groovy new file mode 100644 index 0000000000..e6d89101b5 --- /dev/null +++ b/ppg/ppg-server-arm.groovy @@ -0,0 +1,250 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + sh """ + set -o xtrace + mkdir test + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/ppg-server/ppg-server_builder.sh -O ppg-server_builder.sh + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./ppg-server_builder.sh --builddir=\${build_dir}/test --install_deps=1 + bash -x ./ppg-server_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --version=${PPG_REPO} --branch=${GIT_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + """ +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def AWS_STASH_PATH + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/percona/postgres-packaging.git', + description: 'URL for ppg-server repository', + name: 'GIT_REPO') + string( + defaultValue: '14.4', + description: 'Tag/Branch for ppg-server repository', + name: 'GIT_BRANCH') + string( + defaultValue: '1', + description: 'RPM release value', + name: 'RPM_RELEASE') + string( + defaultValue: '1', + description: 'DEB release value', + name: 'DEB_RELEASE') + string( + defaultValue: 'ppg-14.4', + description: 'PPG repo name', + name: 'PPG_REPO') + choice( + choices: 'laboratory\ntesting\nexperimental', + description: 'Repo component to push packages to', + name: 'COMPONENT') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + stages { + stage('Create PPG_SERVER source tarball') { + steps { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") + cleanUpWS() + buildStage("oraclelinux:8", "--get_sources=1") + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/ppg-server.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/ppg-server.properties + cat uploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') + } + } + stage('Build PPG-SERVER generic source packages') { + parallel { + stage('Build PPG-SERVER generic source rpm') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_src_rpm=1") + + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) + } + } + stage('Build PPG-SERVER generic source deb') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_src_deb=1") + + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) + } + } + } //parallel + } // stage + stage('Build PPG-SERVER RPMs/DEBs/Binary tarballs') { + parallel { + stage('Oracle Linux 8') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } + } + + stage('Sign packages') { + steps { + signRPM(params.CLOUD) + signDEB(params.CLOUD) + } + } + stage('Push to public repository') { + steps { + // sync packages + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) + } + } + + } + post { + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}" + } + deleteDir() + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/ppg/ppg-server-arm.yml b/ppg/ppg-server-arm.yml new file mode 100644 index 0000000000..bd4c2daa77 --- /dev/null +++ b/ppg/ppg-server-arm.yml @@ -0,0 +1,15 @@ +- job: + name: hetzner-ppg-server-arm-autobuild-RELEASE + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/ppg-server-arm.groovy + diff --git a/ppg/ppg-server-ha-arm.groovy b/ppg/ppg-server-ha-arm.groovy new file mode 100644 index 0000000000..c89ba9b6ad --- /dev/null +++ b/ppg/ppg-server-ha-arm.groovy @@ -0,0 +1,250 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + sh """ + set -o xtrace + mkdir test + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/ppg-server-ha/ppg-server-ha_builder.sh -O ppg-server-ha_builder.sh + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./ppg-server-ha_builder.sh --builddir=\${build_dir}/test --install_deps=1 + bash -x ./ppg-server-ha_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --version=${PPG_REPO} --branch=${GIT_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + """ +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def AWS_STASH_PATH + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/percona/postgres-packaging.git', + description: 'URL for ppg-server-ha repository', + name: 'GIT_REPO') + string( + defaultValue: '14.4', + description: 'Tag/Branch for ppg-server-ha repository', + name: 'GIT_BRANCH') + string( + defaultValue: '1', + description: 'RPM release value', + name: 'RPM_RELEASE') + string( + defaultValue: '1', + description: 'DEB release value', + name: 'DEB_RELEASE') + string( + defaultValue: 'ppg-14.4', + description: 'PPG repo name', + name: 'PPG_REPO') + choice( + choices: 'laboratory\ntesting\nexperimental', + description: 'Repo component to push packages to', + name: 'COMPONENT') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + stages { + stage('Create PPG_SERVER_HA source tarball') { + steps { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") + cleanUpWS() + buildStage("oraclelinux:8", "--get_sources=1") + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/ppg-server-ha.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/ppg-server-ha.properties + cat uploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') + } + } + stage('Build PPG-SERVER_HA generic source packages') { + parallel { + stage('Build PPG-SERVER_HA generic source rpm') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_src_rpm=1") + + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) + } + } + stage('Build PPG-SERVER_HA generic source deb') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_src_deb=1") + + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) + } + } + } //parallel + } // stage + stage('Build PPG-SERVER-HA RPMs/DEBs/Binary tarballs') { + parallel { + stage('Oracle Linux 8') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } + } + + stage('Sign packages') { + steps { + signRPM(params.CLOUD) + signDEB(params.CLOUD) + } + } + stage('Push to public repository') { + steps { + // sync packages + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) + } + } + + } + post { + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}" + } + deleteDir() + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/ppg/ppg-server-ha-arm.yml b/ppg/ppg-server-ha-arm.yml new file mode 100644 index 0000000000..58122159ef --- /dev/null +++ b/ppg/ppg-server-ha-arm.yml @@ -0,0 +1,15 @@ +- job: + name: hetzner-ppg-server-ha-arm-autobuild-RELEASE + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/ppg-server-ha-arm.groovy + diff --git a/ppg/pysyncobj-arm.groovy b/ppg/pysyncobj-arm.groovy new file mode 100644 index 0000000000..97ac3d2158 --- /dev/null +++ b/ppg/pysyncobj-arm.groovy @@ -0,0 +1,254 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + sh """ + set -o xtrace + mkdir test + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/pysyncobj/pysyncobj_builder.sh -O builder.sh + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 + bash -x ./builder.sh --builddir=\${build_dir}/test --branch=${PG_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + """ +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def AWS_STASH_PATH + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/percona/postgres-packaging.git', + description: 'URL for pysyncobj repository', + name: 'GIT_REPO') + string( + defaultValue: '0.3.10', + description: 'Tag/Branch for pysyncobj repository', + name: 'PG_BRANCH') + string( + defaultValue: '16.3', + description: 'Tag/Branch for postgresql packaging repository', + name: 'GIT_BRANCH') + string( + defaultValue: '1', + description: 'RPM release value', + name: 'RPM_RELEASE') + string( + defaultValue: '1', + description: 'DEB release value', + name: 'DEB_RELEASE') + string( + defaultValue: 'ppg-16.3', + description: 'PPG repo name', + name: 'PPG_REPO') + choice( + choices: 'laboratory\ntesting\nexperimental', + description: 'Repo component to push packages to', + name: 'COMPONENT') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + stages { + stage('Create PYSYNCOBJ source tarball') { + steps { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") + cleanUpWS() + buildStage("oraclelinux:8", "--get_sources=1") + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/pysyncobj.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/pysyncobj.properties + cat uploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') + } + } + stage('Build PYSYNCOBJ generic source packages') { + parallel { + stage('Build PYSYNCOBJ generic source rpm') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_src_rpm=1") + + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) + } + } + stage('Build PYSYNCOBJ generic source deb') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_src_deb=1") + + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) + } + } + } //parallel + } // stage + stage('Build PYSYNCOBJ RPMs/DEBs/Binary tarballs') { + parallel { + stage('Oracle Linux 8') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } + } + + stage('Sign packages') { + steps { + signRPM(params.CLOUD) + signDEB(params.CLOUD) + } + } + stage('Push to public repository') { + steps { + // sync packages + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) + } + } + + } + post { + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}" + } + deleteDir() + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/ppg/pysyncobj-arm.yml b/ppg/pysyncobj-arm.yml new file mode 100644 index 0000000000..20b6f7db9e --- /dev/null +++ b/ppg/pysyncobj-arm.yml @@ -0,0 +1,15 @@ +- job: + name: hetzner-pysyncobj-arm-RELEASE + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/pysyncobj-arm.groovy + diff --git a/ppg/timescaledb-arm.groovy b/ppg/timescaledb-arm.groovy new file mode 100644 index 0000000000..ab73f02fbe --- /dev/null +++ b/ppg/timescaledb-arm.groovy @@ -0,0 +1,253 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + sh """ + set -o xtrace + mkdir test + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/timescaledb/timescaledb_builder.sh -O builder.sh + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 + bash -x ./builder.sh --builddir=\${build_dir}/test --branch=${PG_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + """ +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def AWS_STASH_PATH + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/percona/postgres-packaging.git', + description: 'URL for timescaledb repository', + name: 'GIT_REPO') + string( + defaultValue: '2.15.2', + description: 'Branch/Tag of the timescaledb', + name: 'PG_BRANCH') + string( + defaultValue: '16.3', + description: 'Tag/Branch for packaging repository', + name: 'GIT_BRANCH') + string( + defaultValue: '1', + description: 'RPM release value', + name: 'RPM_RELEASE') + string( + defaultValue: '1', + description: 'DEB release value', + name: 'DEB_RELEASE') + string( + defaultValue: 'ppg-16-extras', + description: 'PPG repo name', + name: 'PPG_REPO') + choice( + choices: 'laboratory\ntesting\nexperimental', + description: 'Repo component to push packages to', + name: 'COMPONENT') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + stages { + stage('Create timescaledb source tarball') { + steps { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") + cleanUpWS() + buildStage("oraclelinux:8", "--get_sources=1") + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/timescaledb.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/timescaledb.properties + cat uploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') + } + } + stage('Build timescaledb generic source packages') { + parallel { + stage('Build timescaledb generic source rpm') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_src_rpm=1") + + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) + } + } + stage('Build timescaledb generic source deb') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_src_deb=1") + + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) + } + } + } //parallel + } // stage + stage('Build timescaledb RPMs/DEBs/Binary tarballs') { + parallel { + stage('Oracle Linux 8') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } + } + + stage('Sign packages') { + steps { + signRPM(params.CLOUD) + } + } + stage('Push to public repository') { + steps { + // sync packages + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) + } + } + + } + post { + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}" + } + deleteDir() + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/ppg/timescaledb-arm.yml b/ppg/timescaledb-arm.yml new file mode 100644 index 0000000000..52bff7a322 --- /dev/null +++ b/ppg/timescaledb-arm.yml @@ -0,0 +1,14 @@ +- job: + name: hetzner-timescaledb-arm-RELEASE + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/timescaledb-arm.groovy diff --git a/ppg/wal2json-arm.groovy b/ppg/wal2json-arm.groovy new file mode 100644 index 0000000000..f67416bf28 --- /dev/null +++ b/ppg/wal2json-arm.groovy @@ -0,0 +1,253 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + sh """ + set -o xtrace + mkdir test + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/wal2json/wal2json_builder.sh -O builder.sh + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 + bash -x ./builder.sh --builddir=\${build_dir}/test --branch=${PG_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + """ +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def AWS_STASH_PATH + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/percona/postgres-packaging.git', + description: 'URL for wal2json repository', + name: 'GIT_REPO') + string( + defaultValue: '2.5', + description: 'General version of the product', + name: 'PG_BRANCH') + string( + defaultValue: '16.1', + description: 'Tag/Branch for wal2json repository', + name: 'GIT_BRANCH') + string( + defaultValue: '1', + description: 'RPM release value', + name: 'RPM_RELEASE') + string( + defaultValue: '1', + description: 'DEB release value', + name: 'DEB_RELEASE') + string( + defaultValue: 'ppg-16.1', + description: 'PPG repo name', + name: 'PPG_REPO') + choice( + choices: 'laboratory\ntesting\nexperimental', + description: 'Repo component to push packages to', + name: 'COMPONENT') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + stages { + stage('Create WAL2JSON source tarball') { + steps { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") + cleanUpWS() + buildStage("oraclelinux:8", "--get_sources=1") + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/wal2json.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/wal2json.properties + cat uploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') + } + } + stage('Build WAL2JSON generic source packages') { + parallel { + stage('Build WAL2JSON generic source rpm') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_src_rpm=1") + + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) + } + } + stage('Build wal2json generic source deb') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_src_deb=1") + + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) + } + } + } //parallel + } // stage + stage('Build WAL2JSON RPMs/DEBs/Binary tarballs') { + parallel { + stage('Oracle Linux 8') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } + } + + stage('Sign packages') { + steps { + signRPM(params.CLOUD) + } + } + stage('Push to public repository') { + steps { + // sync packages + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) + } + } + + } + post { + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}" + } + deleteDir() + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/ppg/wal2json-arm.yml b/ppg/wal2json-arm.yml new file mode 100644 index 0000000000..3e345ed16b --- /dev/null +++ b/ppg/wal2json-arm.yml @@ -0,0 +1,14 @@ +- job: + name: hetzner-wal2json-arm-RELEASE + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/wal2json-arm.groovy \ No newline at end of file diff --git a/ppg/ydiff-arm.groovy b/ppg/ydiff-arm.groovy new file mode 100644 index 0000000000..753cd5eada --- /dev/null +++ b/ppg/ydiff-arm.groovy @@ -0,0 +1,254 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + sh """ + set -o xtrace + mkdir test + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/ydiff/ydiff_builder.sh -O builder.sh + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 + bash -x ./builder.sh --builddir=\${build_dir}/test --branch=${PG_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + """ +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def AWS_STASH_PATH + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/percona/postgres-packaging.git', + description: 'URL for ydiff repository', + name: 'GIT_REPO') + string( + defaultValue: '1.2', + description: 'Tag/Branch for ydiff repository', + name: 'PG_BRANCH') + string( + defaultValue: '16.3', + description: 'Tag/Branch for postgresql packaging repository', + name: 'GIT_BRANCH') + string( + defaultValue: '1', + description: 'RPM release value', + name: 'RPM_RELEASE') + string( + defaultValue: '1', + description: 'DEB release value', + name: 'DEB_RELEASE') + string( + defaultValue: 'ppg-16.3', + description: 'PPG repo name', + name: 'PPG_REPO') + choice( + choices: 'laboratory\ntesting\nexperimental', + description: 'Repo component to push packages to', + name: 'COMPONENT') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + stages { + stage('Create YDIFF source tarball') { + steps { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") + cleanUpWS() + buildStage("oraclelinux:8", "--get_sources=1") + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/ydiff.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/ydiff.properties + cat uploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') + } + } + stage('Build YDIFF generic source packages') { + parallel { + stage('Build YDIFF generic source rpm') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_src_rpm=1") + + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) + } + } + stage('Build YDIFF generic source deb') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_src_deb=1") + + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) + } + } + } //parallel + } // stage + stage('Build YDIFF RPMs/DEBs/Binary tarballs') { + parallel { + stage('Oracle Linux 8') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } + } + + stage('Sign packages') { + steps { + signRPM(params.CLOUD) + signDEB(params.CLOUD) + } + } + stage('Push to public repository') { + steps { + // sync packages + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) + } + } + + } + post { + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}" + } + deleteDir() + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/ppg/ydiff-arm.yml b/ppg/ydiff-arm.yml new file mode 100644 index 0000000000..790ef63f45 --- /dev/null +++ b/ppg/ydiff-arm.yml @@ -0,0 +1,15 @@ +- job: + name: hetzner-ydiff-arm-RELEASE + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/ydiff-arm.groovy + From fe9fce15dd99d52e7f0e3dbb5419cf41ca9d1686 Mon Sep 17 00:00:00 2001 From: Muhammad Aqeel Date: Wed, 12 Feb 2025 18:31:06 +0500 Subject: [PATCH 036/269] Adds missing params.CLOUD parameter to popArtifactFolder function. (#3156) --- ppg/etcd.groovy | 4 ++-- ppg/haproxy.groovy | 4 ++-- ppg/patroni.groovy | 4 ++-- ppg/percona-postgis.groovy | 4 ++-- ppg/pg_cron.groovy | 4 ++-- ppg/pg_gather.groovy | 4 ++-- ppg/pg_percona_telemetry_autobuild.groovy | 4 ++-- ppg/pg_stat_monitor-autobuild.groovy | 4 ++-- ppg/pg_tde.groovy | 4 ++-- ppg/pg_tde_arm_nightly.groovy | 4 ++-- ppg/pg_tde_nightly.groovy | 4 ++-- ppg/pgaudit.groovy | 4 ++-- ppg/pgaudit_set_user.groovy | 4 ++-- ppg/pgbackrest.groovy | 4 ++-- ppg/pgbadger.groovy | 4 ++-- ppg/pgbouncer.groovy | 4 ++-- ppg/pgpool2-build.groovy | 4 ++-- ppg/pgrepack.groovy | 4 ++-- ppg/pgvector.groovy | 4 ++-- ppg/postgresql-common.groovy | 4 ++-- ppg/postgresql_server.groovy | 4 ++-- ppg/postgresql_server_nightly.groovy | 4 ++-- ppg/ppg-server-ha.groovy | 4 ++-- ppg/ppg-server.groovy | 4 ++-- ppg/pysyncobj.groovy | 4 ++-- ppg/timescaledb.groovy | 4 ++-- ppg/wal2json.groovy | 4 ++-- 27 files changed, 54 insertions(+), 54 deletions(-) diff --git a/ppg/etcd.groovy b/ppg/etcd.groovy index 9462465ebf..5d8e26766b 100644 --- a/ppg/etcd.groovy +++ b/ppg/etcd.groovy @@ -100,7 +100,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) @@ -113,7 +113,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/haproxy.groovy b/ppg/haproxy.groovy index a252b23a44..a6108a56f4 100644 --- a/ppg/haproxy.groovy +++ b/ppg/haproxy.groovy @@ -100,7 +100,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) @@ -113,7 +113,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/patroni.groovy b/ppg/patroni.groovy index 10be059f03..1a87802df3 100644 --- a/ppg/patroni.groovy +++ b/ppg/patroni.groovy @@ -100,7 +100,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) @@ -113,7 +113,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/percona-postgis.groovy b/ppg/percona-postgis.groovy index 52f408140f..082a3495e1 100644 --- a/ppg/percona-postgis.groovy +++ b/ppg/percona-postgis.groovy @@ -107,7 +107,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) @@ -120,7 +120,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pg_cron.groovy b/ppg/pg_cron.groovy index 3945b08e6d..4f02c7a692 100644 --- a/ppg/pg_cron.groovy +++ b/ppg/pg_cron.groovy @@ -100,7 +100,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) @@ -113,7 +113,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pg_gather.groovy b/ppg/pg_gather.groovy index 2d3f958f78..64b904bf3f 100644 --- a/ppg/pg_gather.groovy +++ b/ppg/pg_gather.groovy @@ -100,7 +100,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) @@ -113,7 +113,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pg_percona_telemetry_autobuild.groovy b/ppg/pg_percona_telemetry_autobuild.groovy index 178abe178e..78785facf1 100644 --- a/ppg/pg_percona_telemetry_autobuild.groovy +++ b/ppg/pg_percona_telemetry_autobuild.groovy @@ -139,7 +139,7 @@ pipeline { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) @@ -155,7 +155,7 @@ pipeline { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_source_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pg_stat_monitor-autobuild.groovy b/ppg/pg_stat_monitor-autobuild.groovy index 161c1d084d..e7f0176bfd 100644 --- a/ppg/pg_stat_monitor-autobuild.groovy +++ b/ppg/pg_stat_monitor-autobuild.groovy @@ -139,7 +139,7 @@ pipeline { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) @@ -155,7 +155,7 @@ pipeline { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_source_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pg_tde.groovy b/ppg/pg_tde.groovy index 271e4c536b..049fef40f4 100644 --- a/ppg/pg_tde.groovy +++ b/ppg/pg_tde.groovy @@ -100,7 +100,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) @@ -113,7 +113,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pg_tde_arm_nightly.groovy b/ppg/pg_tde_arm_nightly.groovy index 620862a21a..771f321519 100644 --- a/ppg/pg_tde_arm_nightly.groovy +++ b/ppg/pg_tde_arm_nightly.groovy @@ -96,7 +96,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") pushArtifactFolder("srpm/", AWS_STASH_PATH) @@ -109,7 +109,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") pushArtifactFolder("source_deb/", AWS_STASH_PATH) diff --git a/ppg/pg_tde_nightly.groovy b/ppg/pg_tde_nightly.groovy index b4033b3627..38b6d1652a 100644 --- a/ppg/pg_tde_nightly.groovy +++ b/ppg/pg_tde_nightly.groovy @@ -96,7 +96,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") pushArtifactFolder("srpm/", AWS_STASH_PATH) @@ -109,7 +109,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") pushArtifactFolder("source_deb/", AWS_STASH_PATH) diff --git a/ppg/pgaudit.groovy b/ppg/pgaudit.groovy index a5fdddeb8e..6e98094e7d 100644 --- a/ppg/pgaudit.groovy +++ b/ppg/pgaudit.groovy @@ -100,7 +100,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) @@ -113,7 +113,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pgaudit_set_user.groovy b/ppg/pgaudit_set_user.groovy index 4c4d0c7f5f..c3fa26c055 100644 --- a/ppg/pgaudit_set_user.groovy +++ b/ppg/pgaudit_set_user.groovy @@ -100,7 +100,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) @@ -113,7 +113,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pgbackrest.groovy b/ppg/pgbackrest.groovy index 41fa8d440a..66a11a36f5 100644 --- a/ppg/pgbackrest.groovy +++ b/ppg/pgbackrest.groovy @@ -100,7 +100,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) @@ -113,7 +113,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pgbadger.groovy b/ppg/pgbadger.groovy index a84a20eca5..d018c1bd3a 100644 --- a/ppg/pgbadger.groovy +++ b/ppg/pgbadger.groovy @@ -100,7 +100,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) @@ -113,7 +113,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pgbouncer.groovy b/ppg/pgbouncer.groovy index 838c4ff617..0e34dac6f7 100644 --- a/ppg/pgbouncer.groovy +++ b/ppg/pgbouncer.groovy @@ -100,7 +100,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) @@ -113,7 +113,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pgpool2-build.groovy b/ppg/pgpool2-build.groovy index ff591ffc65..9dfc8b6053 100644 --- a/ppg/pgpool2-build.groovy +++ b/ppg/pgpool2-build.groovy @@ -181,7 +181,7 @@ pipeline { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) @@ -197,7 +197,7 @@ pipeline { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_source_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pgrepack.groovy b/ppg/pgrepack.groovy index 339dc67f39..63ccf46b05 100644 --- a/ppg/pgrepack.groovy +++ b/ppg/pgrepack.groovy @@ -100,7 +100,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) @@ -113,7 +113,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pgvector.groovy b/ppg/pgvector.groovy index 1aca9c59fb..bafbb58d35 100644 --- a/ppg/pgvector.groovy +++ b/ppg/pgvector.groovy @@ -100,7 +100,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) @@ -113,7 +113,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/postgresql-common.groovy b/ppg/postgresql-common.groovy index f7334ff669..8c9d999f63 100644 --- a/ppg/postgresql-common.groovy +++ b/ppg/postgresql-common.groovy @@ -100,7 +100,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) @@ -113,7 +113,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/postgresql_server.groovy b/ppg/postgresql_server.groovy index 39fd5429c3..4a9fffed5b 100644 --- a/ppg/postgresql_server.groovy +++ b/ppg/postgresql_server.groovy @@ -100,7 +100,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) @@ -113,7 +113,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/postgresql_server_nightly.groovy b/ppg/postgresql_server_nightly.groovy index 94867da246..c5babb501d 100644 --- a/ppg/postgresql_server_nightly.groovy +++ b/ppg/postgresql_server_nightly.groovy @@ -121,7 +121,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") pushArtifactFolder("srpm/", AWS_STASH_PATH) @@ -134,7 +134,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") pushArtifactFolder("source_deb/", AWS_STASH_PATH) diff --git a/ppg/ppg-server-ha.groovy b/ppg/ppg-server-ha.groovy index cb9c52c28a..40de9fab4d 100644 --- a/ppg/ppg-server-ha.groovy +++ b/ppg/ppg-server-ha.groovy @@ -96,7 +96,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) @@ -109,7 +109,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/ppg-server.groovy b/ppg/ppg-server.groovy index 30f5f81bc7..d37dbec8cb 100644 --- a/ppg/ppg-server.groovy +++ b/ppg/ppg-server.groovy @@ -96,7 +96,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) @@ -109,7 +109,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pysyncobj.groovy b/ppg/pysyncobj.groovy index 7438856994..bb9c3ff67e 100644 --- a/ppg/pysyncobj.groovy +++ b/ppg/pysyncobj.groovy @@ -100,7 +100,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) @@ -113,7 +113,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/timescaledb.groovy b/ppg/timescaledb.groovy index e644ad11ae..b8668f1008 100644 --- a/ppg/timescaledb.groovy +++ b/ppg/timescaledb.groovy @@ -100,7 +100,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) @@ -113,7 +113,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/wal2json.groovy b/ppg/wal2json.groovy index 1a3ecac2c6..45b8e53948 100644 --- a/ppg/wal2json.groovy +++ b/ppg/wal2json.groovy @@ -100,7 +100,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) @@ -113,7 +113,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) From 9a4d83cde4afdb893eb962302e196c39da2a57bf Mon Sep 17 00:00:00 2001 From: Muhammad Aqeel Date: Thu, 13 Feb 2025 12:44:45 +0500 Subject: [PATCH 037/269] Adds missing params.CLOUD parameter to popArtifactFolder function. (#3160) --- ppg/etcd.groovy | 14 ++++++------ ppg/haproxy.groovy | 28 +++++++++++------------ ppg/llvm.groovy | 4 ++-- ppg/patroni.groovy | 14 ++++++------ ppg/percona-postgis.groovy | 14 ++++++------ ppg/pg_cron.groovy | 14 ++++++------ ppg/pg_gather.groovy | 14 ++++++------ ppg/pg_percona_telemetry_autobuild.groovy | 14 ++++++------ ppg/pg_stat_monitor-autobuild.groovy | 14 ++++++------ ppg/pg_tde.groovy | 14 ++++++------ ppg/pg_tde_arm_nightly.groovy | 14 ++++++------ ppg/pg_tde_nightly.groovy | 14 ++++++------ ppg/pgaudit.groovy | 14 ++++++------ ppg/pgaudit_set_user.groovy | 14 ++++++------ ppg/pgbackrest.groovy | 14 ++++++------ ppg/pgbadger.groovy | 14 ++++++------ ppg/pgbouncer.groovy | 14 ++++++------ ppg/pgpool2-build.groovy | 14 ++++++------ ppg/pgrepack.groovy | 14 ++++++------ ppg/pgvector.groovy | 14 ++++++------ ppg/postgresql-common.groovy | 14 ++++++------ ppg/postgresql_server.groovy | 14 ++++++------ ppg/postgresql_server_nightly.groovy | 4 ++-- ppg/ppg-server-ha.groovy | 14 ++++++------ ppg/ppg-server.groovy | 14 ++++++------ ppg/pysyncobj.groovy | 14 ++++++------ ppg/timescaledb.groovy | 14 ++++++------ ppg/wal2json.groovy | 14 ++++++------ 28 files changed, 193 insertions(+), 193 deletions(-) diff --git a/ppg/etcd.groovy b/ppg/etcd.groovy index 5d8e26766b..b3452ab6bd 100644 --- a/ppg/etcd.groovy +++ b/ppg/etcd.groovy @@ -130,7 +130,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -143,7 +143,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -156,7 +156,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -169,7 +169,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -182,7 +182,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -195,7 +195,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -208,7 +208,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) diff --git a/ppg/haproxy.groovy b/ppg/haproxy.groovy index a6108a56f4..27113a82cc 100644 --- a/ppg/haproxy.groovy +++ b/ppg/haproxy.groovy @@ -130,7 +130,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -143,7 +143,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -156,7 +156,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -169,7 +169,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -182,7 +182,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -195,7 +195,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -208,7 +208,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -221,7 +221,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -234,7 +234,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -247,7 +247,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -260,7 +260,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -273,7 +273,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -286,7 +286,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -299,7 +299,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) diff --git a/ppg/llvm.groovy b/ppg/llvm.groovy index 454fc9be10..27257472bf 100644 --- a/ppg/llvm.groovy +++ b/ppg/llvm.groovy @@ -73,7 +73,7 @@ pipeline { cleanUpWS() buildStage("oraclelinux:8", "--get_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) sh ''' REPO_UPLOAD_PATH=$(grep "UPLOAD" test/llvm.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") @@ -99,7 +99,7 @@ pipeline { cleanUpWS() buildStage("oraclelinux:9", "--get_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) sh ''' REPO_UPLOAD_PATH=$(grep "UPLOAD" test/llvm.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") diff --git a/ppg/patroni.groovy b/ppg/patroni.groovy index 1a87802df3..51c56edbd5 100644 --- a/ppg/patroni.groovy +++ b/ppg/patroni.groovy @@ -130,7 +130,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -143,7 +143,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -156,7 +156,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -169,7 +169,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -182,7 +182,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -195,7 +195,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -208,7 +208,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) diff --git a/ppg/percona-postgis.groovy b/ppg/percona-postgis.groovy index 082a3495e1..33ec3b305b 100644 --- a/ppg/percona-postgis.groovy +++ b/ppg/percona-postgis.groovy @@ -137,7 +137,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -150,7 +150,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -163,7 +163,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -176,7 +176,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -189,7 +189,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -202,7 +202,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -215,7 +215,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) diff --git a/ppg/pg_cron.groovy b/ppg/pg_cron.groovy index 4f02c7a692..e2d44e1570 100644 --- a/ppg/pg_cron.groovy +++ b/ppg/pg_cron.groovy @@ -130,7 +130,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -143,7 +143,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -156,7 +156,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -169,7 +169,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -182,7 +182,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -195,7 +195,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -208,7 +208,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) diff --git a/ppg/pg_gather.groovy b/ppg/pg_gather.groovy index 64b904bf3f..11e80a1014 100644 --- a/ppg/pg_gather.groovy +++ b/ppg/pg_gather.groovy @@ -130,7 +130,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -143,7 +143,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -156,7 +156,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -169,7 +169,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -182,7 +182,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -195,7 +195,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -208,7 +208,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) diff --git a/ppg/pg_percona_telemetry_autobuild.groovy b/ppg/pg_percona_telemetry_autobuild.groovy index 78785facf1..2b7a2790f5 100644 --- a/ppg/pg_percona_telemetry_autobuild.groovy +++ b/ppg/pg_percona_telemetry_autobuild.groovy @@ -175,7 +175,7 @@ pipeline { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -191,7 +191,7 @@ pipeline { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -211,7 +211,7 @@ pipeline { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -227,7 +227,7 @@ pipeline { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -243,7 +243,7 @@ pipeline { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -259,7 +259,7 @@ pipeline { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -275,7 +275,7 @@ pipeline { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) diff --git a/ppg/pg_stat_monitor-autobuild.groovy b/ppg/pg_stat_monitor-autobuild.groovy index e7f0176bfd..bbb5992b70 100644 --- a/ppg/pg_stat_monitor-autobuild.groovy +++ b/ppg/pg_stat_monitor-autobuild.groovy @@ -175,7 +175,7 @@ pipeline { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -191,7 +191,7 @@ pipeline { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -211,7 +211,7 @@ pipeline { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -227,7 +227,7 @@ pipeline { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -243,7 +243,7 @@ pipeline { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -259,7 +259,7 @@ pipeline { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -275,7 +275,7 @@ pipeline { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) diff --git a/ppg/pg_tde.groovy b/ppg/pg_tde.groovy index 049fef40f4..da88bd3e29 100644 --- a/ppg/pg_tde.groovy +++ b/ppg/pg_tde.groovy @@ -130,7 +130,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -143,7 +143,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -156,7 +156,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -169,7 +169,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -182,7 +182,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -195,7 +195,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -208,7 +208,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) diff --git a/ppg/pg_tde_arm_nightly.groovy b/ppg/pg_tde_arm_nightly.groovy index 771f321519..b133c387f3 100644 --- a/ppg/pg_tde_arm_nightly.groovy +++ b/ppg/pg_tde_arm_nightly.groovy @@ -126,7 +126,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder("rpm/", AWS_STASH_PATH) @@ -139,7 +139,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder("rpm/", AWS_STASH_PATH) @@ -152,7 +152,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder("deb/", AWS_STASH_PATH) @@ -165,7 +165,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder("deb/", AWS_STASH_PATH) @@ -178,7 +178,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder("deb/", AWS_STASH_PATH) @@ -191,7 +191,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder("deb/", AWS_STASH_PATH) @@ -204,7 +204,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder("deb/", AWS_STASH_PATH) diff --git a/ppg/pg_tde_nightly.groovy b/ppg/pg_tde_nightly.groovy index 38b6d1652a..c7e5043716 100644 --- a/ppg/pg_tde_nightly.groovy +++ b/ppg/pg_tde_nightly.groovy @@ -126,7 +126,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder("rpm/", AWS_STASH_PATH) @@ -139,7 +139,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder("rpm/", AWS_STASH_PATH) @@ -152,7 +152,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder("deb/", AWS_STASH_PATH) @@ -165,7 +165,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder("deb/", AWS_STASH_PATH) @@ -178,7 +178,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder("deb/", AWS_STASH_PATH) @@ -191,7 +191,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder("deb/", AWS_STASH_PATH) @@ -204,7 +204,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder("deb/", AWS_STASH_PATH) diff --git a/ppg/pgaudit.groovy b/ppg/pgaudit.groovy index 6e98094e7d..7dcab460c3 100644 --- a/ppg/pgaudit.groovy +++ b/ppg/pgaudit.groovy @@ -130,7 +130,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -143,7 +143,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -156,7 +156,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -169,7 +169,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -182,7 +182,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -195,7 +195,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -208,7 +208,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) diff --git a/ppg/pgaudit_set_user.groovy b/ppg/pgaudit_set_user.groovy index c3fa26c055..94109c317c 100644 --- a/ppg/pgaudit_set_user.groovy +++ b/ppg/pgaudit_set_user.groovy @@ -130,7 +130,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -143,7 +143,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -156,7 +156,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -169,7 +169,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -182,7 +182,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -195,7 +195,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -208,7 +208,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) diff --git a/ppg/pgbackrest.groovy b/ppg/pgbackrest.groovy index 66a11a36f5..3e4751af9d 100644 --- a/ppg/pgbackrest.groovy +++ b/ppg/pgbackrest.groovy @@ -130,7 +130,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -143,7 +143,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -156,7 +156,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -169,7 +169,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -182,7 +182,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -195,7 +195,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -208,7 +208,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) diff --git a/ppg/pgbadger.groovy b/ppg/pgbadger.groovy index d018c1bd3a..a0ba5eb06d 100644 --- a/ppg/pgbadger.groovy +++ b/ppg/pgbadger.groovy @@ -130,7 +130,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -143,7 +143,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -156,7 +156,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -169,7 +169,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -182,7 +182,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -195,7 +195,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -208,7 +208,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) diff --git a/ppg/pgbouncer.groovy b/ppg/pgbouncer.groovy index 0e34dac6f7..749c5397e8 100644 --- a/ppg/pgbouncer.groovy +++ b/ppg/pgbouncer.groovy @@ -130,7 +130,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -143,7 +143,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -156,7 +156,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -169,7 +169,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -182,7 +182,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -195,7 +195,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -208,7 +208,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) diff --git a/ppg/pgpool2-build.groovy b/ppg/pgpool2-build.groovy index 9dfc8b6053..eb97a41f79 100644 --- a/ppg/pgpool2-build.groovy +++ b/ppg/pgpool2-build.groovy @@ -217,7 +217,7 @@ pipeline { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -233,7 +233,7 @@ pipeline { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -253,7 +253,7 @@ pipeline { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -269,7 +269,7 @@ pipeline { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -285,7 +285,7 @@ pipeline { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -301,7 +301,7 @@ pipeline { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -317,7 +317,7 @@ pipeline { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) diff --git a/ppg/pgrepack.groovy b/ppg/pgrepack.groovy index 63ccf46b05..6ddab158d8 100644 --- a/ppg/pgrepack.groovy +++ b/ppg/pgrepack.groovy @@ -130,7 +130,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -143,7 +143,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -156,7 +156,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -169,7 +169,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -182,7 +182,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -195,7 +195,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -208,7 +208,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) diff --git a/ppg/pgvector.groovy b/ppg/pgvector.groovy index bafbb58d35..734a207f9a 100644 --- a/ppg/pgvector.groovy +++ b/ppg/pgvector.groovy @@ -130,7 +130,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -143,7 +143,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -156,7 +156,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -169,7 +169,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -182,7 +182,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -195,7 +195,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -208,7 +208,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) diff --git a/ppg/postgresql-common.groovy b/ppg/postgresql-common.groovy index 8c9d999f63..4b55ec38e2 100644 --- a/ppg/postgresql-common.groovy +++ b/ppg/postgresql-common.groovy @@ -130,7 +130,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -143,7 +143,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -156,7 +156,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -169,7 +169,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -182,7 +182,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -195,7 +195,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -208,7 +208,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) diff --git a/ppg/postgresql_server.groovy b/ppg/postgresql_server.groovy index 4a9fffed5b..546b29700c 100644 --- a/ppg/postgresql_server.groovy +++ b/ppg/postgresql_server.groovy @@ -130,7 +130,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -143,7 +143,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -156,7 +156,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -169,7 +169,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -182,7 +182,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -195,7 +195,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -208,7 +208,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) diff --git a/ppg/postgresql_server_nightly.groovy b/ppg/postgresql_server_nightly.groovy index c5babb501d..c74e085f75 100644 --- a/ppg/postgresql_server_nightly.groovy +++ b/ppg/postgresql_server_nightly.groovy @@ -154,7 +154,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder("rpm/", AWS_STASH_PATH) @@ -167,7 +167,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder("deb/", AWS_STASH_PATH) diff --git a/ppg/ppg-server-ha.groovy b/ppg/ppg-server-ha.groovy index 40de9fab4d..bae4a93a0f 100644 --- a/ppg/ppg-server-ha.groovy +++ b/ppg/ppg-server-ha.groovy @@ -126,7 +126,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -139,7 +139,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -152,7 +152,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -165,7 +165,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -178,7 +178,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -191,7 +191,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -204,7 +204,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) diff --git a/ppg/ppg-server.groovy b/ppg/ppg-server.groovy index d37dbec8cb..e35358b32a 100644 --- a/ppg/ppg-server.groovy +++ b/ppg/ppg-server.groovy @@ -126,7 +126,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -139,7 +139,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -152,7 +152,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -165,7 +165,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -178,7 +178,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -191,7 +191,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -204,7 +204,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) diff --git a/ppg/pysyncobj.groovy b/ppg/pysyncobj.groovy index bb9c3ff67e..0f72099388 100644 --- a/ppg/pysyncobj.groovy +++ b/ppg/pysyncobj.groovy @@ -130,7 +130,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -143,7 +143,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -156,7 +156,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -169,7 +169,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -182,7 +182,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -195,7 +195,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -208,7 +208,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) diff --git a/ppg/timescaledb.groovy b/ppg/timescaledb.groovy index b8668f1008..3102aae55a 100644 --- a/ppg/timescaledb.groovy +++ b/ppg/timescaledb.groovy @@ -130,7 +130,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -143,7 +143,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -156,7 +156,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -169,7 +169,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -182,7 +182,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -195,7 +195,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -208,7 +208,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) diff --git a/ppg/wal2json.groovy b/ppg/wal2json.groovy index 45b8e53948..1862fa48e7 100644 --- a/ppg/wal2json.groovy +++ b/ppg/wal2json.groovy @@ -130,7 +130,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -143,7 +143,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -156,7 +156,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -169,7 +169,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -182,7 +182,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -195,7 +195,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -208,7 +208,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) From fe5a8852f5f9d3e634e6daf9711262d25ea4c061 Mon Sep 17 00:00:00 2001 From: Muhammad Aqeel Date: Thu, 13 Feb 2025 13:22:58 +0500 Subject: [PATCH 038/269] Adds missing params.CLOUD parameter to sync2ProdAutoBuild and signing functions. (#3161) --- ppg/etcd.groovy | 6 +++--- ppg/haproxy.groovy | 6 +++--- ppg/llvm.groovy | 4 ++-- ppg/patroni.groovy | 6 +++--- ppg/percona-postgis.groovy | 4 ++-- ppg/pg_cron.groovy | 6 +++--- ppg/pg_gather.groovy | 6 +++--- ppg/pg_percona_telemetry_autobuild.groovy | 2 +- ppg/pg_stat_monitor-autobuild.groovy | 6 +++--- ppg/pg_tde.groovy | 6 +++--- ppg/pg_tde_arm_nightly.groovy | 6 +++--- ppg/pg_tde_nightly.groovy | 6 +++--- ppg/pgaudit.groovy | 6 +++--- ppg/pgaudit_set_user.groovy | 6 +++--- ppg/pgbackrest.groovy | 6 +++--- ppg/pgbadger.groovy | 6 +++--- ppg/pgbouncer.groovy | 6 +++--- ppg/pgpool2-build.groovy | 4 ++-- ppg/pgrepack.groovy | 6 +++--- ppg/pgvector.groovy | 6 +++--- ppg/postgresql-common.groovy | 6 +++--- ppg/postgresql_server.groovy | 6 +++--- ppg/postgresql_server_nightly.groovy | 6 +++--- ppg/ppg-server-ha.groovy | 6 +++--- ppg/ppg-server.groovy | 6 +++--- ppg/pysyncobj.groovy | 6 +++--- ppg/timescaledb.groovy | 6 +++--- ppg/wal2json.groovy | 6 +++--- 28 files changed, 79 insertions(+), 79 deletions(-) diff --git a/ppg/etcd.groovy b/ppg/etcd.groovy index b3452ab6bd..a7f2aef683 100644 --- a/ppg/etcd.groovy +++ b/ppg/etcd.groovy @@ -220,14 +220,14 @@ pipeline { stage('Sign packages') { steps { - signRPM() - signDEB() + signRPM(params.CLOUD) + signDEB(params.CLOUD) } } stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(PPG_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) } } diff --git a/ppg/haproxy.groovy b/ppg/haproxy.groovy index 27113a82cc..c960cb1de6 100644 --- a/ppg/haproxy.groovy +++ b/ppg/haproxy.groovy @@ -311,14 +311,14 @@ pipeline { stage('Sign packages') { steps { - signRPM() - signDEB() + signRPM(params.CLOUD) + signDEB(params.CLOUD) } } stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(PPG_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) } } diff --git a/ppg/llvm.groovy b/ppg/llvm.groovy index 27257472bf..c0242bc846 100644 --- a/ppg/llvm.groovy +++ b/ppg/llvm.groovy @@ -122,13 +122,13 @@ pipeline { stage('Sign packages') { steps { - signRPM() + signRPM(params.CLOUD) } } stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(PPG_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) } } diff --git a/ppg/patroni.groovy b/ppg/patroni.groovy index 51c56edbd5..eb01658724 100644 --- a/ppg/patroni.groovy +++ b/ppg/patroni.groovy @@ -220,14 +220,14 @@ pipeline { stage('Sign packages') { steps { - signRPM() - signDEB() + signRPM(params.CLOUD) + signDEB(params.CLOUD) } } stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(PPG_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) } } diff --git a/ppg/percona-postgis.groovy b/ppg/percona-postgis.groovy index 33ec3b305b..e527d28def 100644 --- a/ppg/percona-postgis.groovy +++ b/ppg/percona-postgis.groovy @@ -227,8 +227,8 @@ pipeline { stage('Sign packages') { steps { - signRPM() - signDEB() + signRPM(params.CLOUD) + signDEB(params.CLOUD) } } stage('Push to public repository') { diff --git a/ppg/pg_cron.groovy b/ppg/pg_cron.groovy index e2d44e1570..d35355eb7b 100644 --- a/ppg/pg_cron.groovy +++ b/ppg/pg_cron.groovy @@ -220,14 +220,14 @@ pipeline { stage('Sign packages') { steps { - signRPM() - signDEB() + signRPM(params.CLOUD) + signDEB(params.CLOUD) } } stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(PPG_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) } } diff --git a/ppg/pg_gather.groovy b/ppg/pg_gather.groovy index 11e80a1014..720db29cab 100644 --- a/ppg/pg_gather.groovy +++ b/ppg/pg_gather.groovy @@ -220,14 +220,14 @@ pipeline { stage('Sign packages') { steps { - signRPM() - signDEB() + signRPM(params.CLOUD) + signDEB(params.CLOUD) } } stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(PPG_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) } } diff --git a/ppg/pg_percona_telemetry_autobuild.groovy b/ppg/pg_percona_telemetry_autobuild.groovy index 2b7a2790f5..872e96bda1 100644 --- a/ppg/pg_percona_telemetry_autobuild.groovy +++ b/ppg/pg_percona_telemetry_autobuild.groovy @@ -287,7 +287,7 @@ pipeline { stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(PPG_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) } } } //stages diff --git a/ppg/pg_stat_monitor-autobuild.groovy b/ppg/pg_stat_monitor-autobuild.groovy index bbb5992b70..8363d9c75b 100644 --- a/ppg/pg_stat_monitor-autobuild.groovy +++ b/ppg/pg_stat_monitor-autobuild.groovy @@ -286,14 +286,14 @@ pipeline { } //stage stage('Sign packages') { steps { - signRPM() - signDEB() + signRPM(params.CLOUD) + signDEB(params.CLOUD) } } stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(PPG_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) } } } //stages diff --git a/ppg/pg_tde.groovy b/ppg/pg_tde.groovy index da88bd3e29..01574edb76 100644 --- a/ppg/pg_tde.groovy +++ b/ppg/pg_tde.groovy @@ -220,14 +220,14 @@ pipeline { stage('Sign packages') { steps { - signRPM() - signDEB() + signRPM(params.CLOUD) + signDEB(params.CLOUD) } } stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(PPG_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) } } diff --git a/ppg/pg_tde_arm_nightly.groovy b/ppg/pg_tde_arm_nightly.groovy index b133c387f3..7169c36783 100644 --- a/ppg/pg_tde_arm_nightly.groovy +++ b/ppg/pg_tde_arm_nightly.groovy @@ -216,14 +216,14 @@ pipeline { stage('Sign packages') { steps { - signRPM() - signDEB() + signRPM(params.CLOUD) + signDEB(params.CLOUD) } } stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(PPG_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) } } diff --git a/ppg/pg_tde_nightly.groovy b/ppg/pg_tde_nightly.groovy index c7e5043716..58c4e798de 100644 --- a/ppg/pg_tde_nightly.groovy +++ b/ppg/pg_tde_nightly.groovy @@ -216,14 +216,14 @@ pipeline { stage('Sign packages') { steps { - signRPM() - signDEB() + signRPM(params.CLOUD) + signDEB(params.CLOUD) } } stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(PPG_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) } } diff --git a/ppg/pgaudit.groovy b/ppg/pgaudit.groovy index 7dcab460c3..a78a592078 100644 --- a/ppg/pgaudit.groovy +++ b/ppg/pgaudit.groovy @@ -220,14 +220,14 @@ pipeline { stage('Sign packages') { steps { - signRPM() - signDEB() + signRPM(params.CLOUD) + signDEB(params.CLOUD) } } stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(PPG_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) } } diff --git a/ppg/pgaudit_set_user.groovy b/ppg/pgaudit_set_user.groovy index 94109c317c..d9e197bebb 100644 --- a/ppg/pgaudit_set_user.groovy +++ b/ppg/pgaudit_set_user.groovy @@ -220,14 +220,14 @@ pipeline { stage('Sign packages') { steps { - signRPM() - signDEB() + signRPM(params.CLOUD) + signDEB(params.CLOUD) } } stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(PPG_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) } } diff --git a/ppg/pgbackrest.groovy b/ppg/pgbackrest.groovy index 3e4751af9d..9e66f7a7b3 100644 --- a/ppg/pgbackrest.groovy +++ b/ppg/pgbackrest.groovy @@ -220,14 +220,14 @@ pipeline { stage('Sign packages') { steps { - signRPM() - signDEB() + signRPM(params.CLOUD) + signDEB(params.CLOUD) } } stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(PPG_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) } } diff --git a/ppg/pgbadger.groovy b/ppg/pgbadger.groovy index a0ba5eb06d..1289363921 100644 --- a/ppg/pgbadger.groovy +++ b/ppg/pgbadger.groovy @@ -220,14 +220,14 @@ pipeline { stage('Sign packages') { steps { - signRPM() - signDEB() + signRPM(params.CLOUD) + signDEB(params.CLOUD) } } stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(PPG_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) } } diff --git a/ppg/pgbouncer.groovy b/ppg/pgbouncer.groovy index 749c5397e8..6836909a7b 100644 --- a/ppg/pgbouncer.groovy +++ b/ppg/pgbouncer.groovy @@ -220,14 +220,14 @@ pipeline { stage('Sign packages') { steps { - signRPM() - signDEB() + signRPM(params.CLOUD) + signDEB(params.CLOUD) } } stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(PPG_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) } } diff --git a/ppg/pgpool2-build.groovy b/ppg/pgpool2-build.groovy index eb97a41f79..f2002958e4 100644 --- a/ppg/pgpool2-build.groovy +++ b/ppg/pgpool2-build.groovy @@ -328,8 +328,8 @@ pipeline { } //stage stage('Sign packages') { steps { - signRPM() - signDEB() + signRPM(params.CLOUD) + signDEB(params.CLOUD) } } stage('Push to public repository') { diff --git a/ppg/pgrepack.groovy b/ppg/pgrepack.groovy index 6ddab158d8..5fccdb90bb 100644 --- a/ppg/pgrepack.groovy +++ b/ppg/pgrepack.groovy @@ -220,14 +220,14 @@ pipeline { stage('Sign packages') { steps { - signRPM() - signDEB() + signRPM(params.CLOUD) + signDEB(params.CLOUD) } } stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(PPG_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) } } diff --git a/ppg/pgvector.groovy b/ppg/pgvector.groovy index 734a207f9a..5074f05ad7 100644 --- a/ppg/pgvector.groovy +++ b/ppg/pgvector.groovy @@ -220,14 +220,14 @@ pipeline { stage('Sign packages') { steps { - signRPM() - signDEB() + signRPM(params.CLOUD) + signDEB(params.CLOUD) } } stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(PPG_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) } } diff --git a/ppg/postgresql-common.groovy b/ppg/postgresql-common.groovy index 4b55ec38e2..d8545a15c4 100644 --- a/ppg/postgresql-common.groovy +++ b/ppg/postgresql-common.groovy @@ -220,14 +220,14 @@ pipeline { stage('Sign packages') { steps { - signRPM() - signDEB() + signRPM(params.CLOUD) + signDEB(params.CLOUD) } } stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(PPG_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) } } diff --git a/ppg/postgresql_server.groovy b/ppg/postgresql_server.groovy index 546b29700c..4057744adb 100644 --- a/ppg/postgresql_server.groovy +++ b/ppg/postgresql_server.groovy @@ -220,14 +220,14 @@ pipeline { stage('Sign packages') { steps { - signRPM() - signDEB() + signRPM(params.CLOUD) + signDEB(params.CLOUD) } } stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(PPG_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) } } diff --git a/ppg/postgresql_server_nightly.groovy b/ppg/postgresql_server_nightly.groovy index c74e085f75..bc98d10cbd 100644 --- a/ppg/postgresql_server_nightly.groovy +++ b/ppg/postgresql_server_nightly.groovy @@ -182,8 +182,8 @@ pipeline { expression { currentBuild.result != 'NOT_BUILT' } } steps { - signRPM() - signDEB() + signRPM(params.CLOUD) + signDEB(params.CLOUD) } } stage('Push to public repository') { @@ -192,7 +192,7 @@ pipeline { } steps { // sync packages - sync2ProdAutoBuild(PPG_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) } } diff --git a/ppg/ppg-server-ha.groovy b/ppg/ppg-server-ha.groovy index bae4a93a0f..bcff1ad4ce 100644 --- a/ppg/ppg-server-ha.groovy +++ b/ppg/ppg-server-ha.groovy @@ -216,14 +216,14 @@ pipeline { stage('Sign packages') { steps { - signRPM() - signDEB() + signRPM(params.CLOUD) + signDEB(params.CLOUD) } } stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(PPG_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) } } diff --git a/ppg/ppg-server.groovy b/ppg/ppg-server.groovy index e35358b32a..adb77016ae 100644 --- a/ppg/ppg-server.groovy +++ b/ppg/ppg-server.groovy @@ -216,14 +216,14 @@ pipeline { stage('Sign packages') { steps { - signRPM() - signDEB() + signRPM(params.CLOUD) + signDEB(params.CLOUD) } } stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(PPG_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) } } diff --git a/ppg/pysyncobj.groovy b/ppg/pysyncobj.groovy index 0f72099388..819d25da28 100644 --- a/ppg/pysyncobj.groovy +++ b/ppg/pysyncobj.groovy @@ -220,14 +220,14 @@ pipeline { stage('Sign packages') { steps { - signRPM() - signDEB() + signRPM(params.CLOUD) + signDEB(params.CLOUD) } } stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(PPG_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) } } diff --git a/ppg/timescaledb.groovy b/ppg/timescaledb.groovy index 3102aae55a..02b2a17e6c 100644 --- a/ppg/timescaledb.groovy +++ b/ppg/timescaledb.groovy @@ -220,14 +220,14 @@ pipeline { stage('Sign packages') { steps { - signRPM() - signDEB() + signRPM(params.CLOUD) + signDEB(params.CLOUD) } } stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(PPG_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) } } diff --git a/ppg/wal2json.groovy b/ppg/wal2json.groovy index 1862fa48e7..def822fe71 100644 --- a/ppg/wal2json.groovy +++ b/ppg/wal2json.groovy @@ -220,14 +220,14 @@ pipeline { stage('Sign packages') { steps { - signRPM() - signDEB() + signRPM(params.CLOUD) + signDEB(params.CLOUD) } } stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(PPG_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) } } From a998c5c5af47de7726fccb96e335f1314a6c49ad Mon Sep 17 00:00:00 2001 From: Pavel Tankov <4014969+ptankov@users.noreply.github.com> Date: Mon, 10 Feb 2025 19:09:26 +0200 Subject: [PATCH 039/269] CLOUD-888 Fix failing EKS pipelines because of a change how latest version is detected - 02 (#3151) --- cloud/jenkins/pgo_operator_eks_latest.groovy | 4 +++- cloud/jenkins/pgo_operator_eks_version.groovy | 4 +++- cloud/jenkins/ps_operator_eks_latest.groovy | 4 +++- cloud/jenkins/ps_operator_eks_version.groovy | 4 +++- cloud/jenkins/psmdb_operator_eks_latest.groovy | 4 +++- cloud/jenkins/psmdb_operator_eks_version.groovy | 4 +++- cloud/jenkins/pxco-eks.groovy | 4 +++- 7 files changed, 21 insertions(+), 7 deletions(-) diff --git a/cloud/jenkins/pgo_operator_eks_latest.groovy b/cloud/jenkins/pgo_operator_eks_latest.groovy index c25e55a1f9..ffee85708a 100644 --- a/cloud/jenkins/pgo_operator_eks_latest.groovy +++ b/cloud/jenkins/pgo_operator_eks_latest.groovy @@ -31,7 +31,9 @@ void prepareNode() { } if ("$PLATFORM_VER" == "latest") { - USED_PLATFORM_VER = sh(script: "aws eks describe-addon-versions --query 'addons[].addonVersions[].compatibilities[].clusterVersion' --output json | jq -r 'flatten | unique | sort | reverse | .[0]'", , returnStdout: true).trim() + withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: 'AMI/OVF', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { + USED_PLATFORM_VER = sh(script: "aws eks describe-addon-versions --query 'addons[].addonVersions[].compatibilities[].clusterVersion' --output json | jq -r 'flatten | unique | sort | reverse | .[0]'", , returnStdout: true).trim() + } } else { USED_PLATFORM_VER="$PLATFORM_VER" } diff --git a/cloud/jenkins/pgo_operator_eks_version.groovy b/cloud/jenkins/pgo_operator_eks_version.groovy index 6a3105ebce..76c419901e 100644 --- a/cloud/jenkins/pgo_operator_eks_version.groovy +++ b/cloud/jenkins/pgo_operator_eks_version.groovy @@ -31,7 +31,9 @@ void prepareNode() { } if ("$PLATFORM_VER" == "latest") { - USED_PLATFORM_VER = sh(script: "aws eks describe-addon-versions --query 'addons[].addonVersions[].compatibilities[].clusterVersion' --output json | jq -r 'flatten | unique | sort | reverse | .[0]'", , returnStdout: true).trim() + withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: 'AMI/OVF', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { + USED_PLATFORM_VER = sh(script: "aws eks describe-addon-versions --query 'addons[].addonVersions[].compatibilities[].clusterVersion' --output json | jq -r 'flatten | unique | sort | reverse | .[0]'", , returnStdout: true).trim() + } } else { USED_PLATFORM_VER="$PLATFORM_VER" } diff --git a/cloud/jenkins/ps_operator_eks_latest.groovy b/cloud/jenkins/ps_operator_eks_latest.groovy index 983edc7008..617d44a856 100644 --- a/cloud/jenkins/ps_operator_eks_latest.groovy +++ b/cloud/jenkins/ps_operator_eks_latest.groovy @@ -29,7 +29,9 @@ void prepareNode() { void prepareSources() { if ("$PLATFORM_VER" == "latest") { - USED_PLATFORM_VER = sh(script: "aws eks describe-addon-versions --query 'addons[].addonVersions[].compatibilities[].clusterVersion' --output json | jq -r 'flatten | unique | sort | reverse | .[0]'", , returnStdout: true).trim() + withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: 'AMI/OVF', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { + USED_PLATFORM_VER = sh(script: "aws eks describe-addon-versions --query 'addons[].addonVersions[].compatibilities[].clusterVersion' --output json | jq -r 'flatten | unique | sort | reverse | .[0]'", , returnStdout: true).trim() + } } else { USED_PLATFORM_VER="$PLATFORM_VER" } diff --git a/cloud/jenkins/ps_operator_eks_version.groovy b/cloud/jenkins/ps_operator_eks_version.groovy index 057c80e912..86cd5de840 100644 --- a/cloud/jenkins/ps_operator_eks_version.groovy +++ b/cloud/jenkins/ps_operator_eks_version.groovy @@ -29,7 +29,9 @@ void prepareNode() { void prepareSources() { if ("$PLATFORM_VER" == "latest") { - USED_PLATFORM_VER = sh(script: "aws eks describe-addon-versions --query 'addons[].addonVersions[].compatibilities[].clusterVersion' --output json | jq -r 'flatten | unique | sort | reverse | .[0]'", , returnStdout: true).trim() + withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: 'AMI/OVF', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { + USED_PLATFORM_VER = sh(script: "aws eks describe-addon-versions --query 'addons[].addonVersions[].compatibilities[].clusterVersion' --output json | jq -r 'flatten | unique | sort | reverse | .[0]'", , returnStdout: true).trim() + } } else { USED_PLATFORM_VER="$PLATFORM_VER" } diff --git a/cloud/jenkins/psmdb_operator_eks_latest.groovy b/cloud/jenkins/psmdb_operator_eks_latest.groovy index 0c8052706c..f546efec2b 100644 --- a/cloud/jenkins/psmdb_operator_eks_latest.groovy +++ b/cloud/jenkins/psmdb_operator_eks_latest.groovy @@ -70,7 +70,9 @@ void prepareNode() { """ if ("$PLATFORM_VER" == "latest") { - USED_PLATFORM_VER = sh(script: "aws eks describe-addon-versions --query 'addons[].addonVersions[].compatibilities[].clusterVersion' --output json | jq -r 'flatten | unique | sort | reverse | .[0]'", , returnStdout: true).trim() + withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: 'AMI/OVF', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { + USED_PLATFORM_VER = sh(script: "aws eks describe-addon-versions --query 'addons[].addonVersions[].compatibilities[].clusterVersion' --output json | jq -r 'flatten | unique | sort | reverse | .[0]'", , returnStdout: true).trim() + } } else { USED_PLATFORM_VER="$PLATFORM_VER" } diff --git a/cloud/jenkins/psmdb_operator_eks_version.groovy b/cloud/jenkins/psmdb_operator_eks_version.groovy index 850598dcdd..b36191c1ab 100644 --- a/cloud/jenkins/psmdb_operator_eks_version.groovy +++ b/cloud/jenkins/psmdb_operator_eks_version.groovy @@ -70,7 +70,9 @@ void prepareNode() { """ if ("$PLATFORM_VER" == "latest") { - USED_PLATFORM_VER = sh(script: "aws eks describe-addon-versions --query 'addons[].addonVersions[].compatibilities[].clusterVersion' --output json | jq -r 'flatten | unique | sort | reverse | .[0]'", , returnStdout: true).trim() + withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: 'AMI/OVF', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { + USED_PLATFORM_VER = sh(script: "aws eks describe-addon-versions --query 'addons[].addonVersions[].compatibilities[].clusterVersion' --output json | jq -r 'flatten | unique | sort | reverse | .[0]'", , returnStdout: true).trim() + } } else { USED_PLATFORM_VER="$PLATFORM_VER" } diff --git a/cloud/jenkins/pxco-eks.groovy b/cloud/jenkins/pxco-eks.groovy index 12e60d534a..b0de107790 100644 --- a/cloud/jenkins/pxco-eks.groovy +++ b/cloud/jenkins/pxco-eks.groovy @@ -63,7 +63,9 @@ void prepareNode() { """ if ("$PLATFORM_VER" == "latest") { - PLATFORM_VER = sh(script: "aws eks describe-addon-versions --query 'addons[].addonVersions[].compatibilities[].clusterVersion' --output json | jq -r 'flatten | unique | sort | reverse | .[0]'", returnStdout: true).trim() + withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: 'AMI/OVF', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { + USED_PLATFORM_VER = sh(script: "aws eks describe-addon-versions --query 'addons[].addonVersions[].compatibilities[].clusterVersion' --output json | jq -r 'flatten | unique | sort | reverse | .[0]'", , returnStdout: true).trim() + } } if ("$IMAGE_PXC") { From 54bb6ff134051d8cd6f5501c1574def75a6f1ac6 Mon Sep 17 00:00:00 2001 From: Vadim Yalovets Date: Tue, 11 Feb 2025 10:42:06 +0200 Subject: [PATCH 040/269] PKG-223 packaging for release-8.0.41-32 (#3152) --- ps/jenkins/percona-server-for-mysql-8.0.groovy | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/ps/jenkins/percona-server-for-mysql-8.0.groovy b/ps/jenkins/percona-server-for-mysql-8.0.groovy index dc16af1601..174b06431b 100644 --- a/ps/jenkins/percona-server-for-mysql-8.0.groovy +++ b/ps/jenkins/percona-server-for-mysql-8.0.groovy @@ -1018,7 +1018,9 @@ parameters { sed -i "s/percona-release enable ps-80 testing/percona-release enable ps-8x-innovation testing/g" Dockerfile fi fi - sudo docker build -t perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE} . + sudo docker build -t perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE}-amd64 --platform="linux/amd64" . + sudo docker build -t perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE}-arm64 --platform="linux/arm64" . + sudo docker tag perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE}-amd64 perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE} sudo docker images ''' withCredentials([ @@ -1035,13 +1037,15 @@ parameters { else MYSQL_ROUTER_RELEASE=$(echo ${BRANCH} | sed 's/release-//g' | awk '{print substr($0, 0, 7)}' | sed 's/-//g') fi - sudo docker tag perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} perconalab/percona-server:${PS_RELEASE} - sudo docker push perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} - sudo docker push perconalab/percona-server:${PS_RELEASE} - sudo docker tag perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-aarch64 perconalab/percona-server:${PS_RELEASE}-aarch64 - sudo docker push perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-aarch64 - sudo docker push perconalab/percona-server:${PS_RELEASE}-aarch64 + sudo docker tag perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64 perconalab/percona-server:${PS_RELEASE}-amd64 + sudo docker push perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64 + sudo docker push perconalab/percona-server:${PS_RELEASE}-amd64 + sudo docker tag perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-arm64 perconalab/percona-server:${PS_RELEASE}-arm64 + sudo docker push perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-arm64 + sudo docker push perconalab/percona-server:${PS_RELEASE}-arm64 sudo docker tag perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE} perconalab/percona-mysql-router:${PS_MAJOR_RELEASE} + sudo docker push perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE}-amd64 + sudo docker push perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE}-arm64 sudo docker push perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE} sudo docker push perconalab/percona-mysql-router:${PS_MAJOR_RELEASE} ''' From ed972dad49db4f637aadd977feee3adff5476722 Mon Sep 17 00:00:00 2001 From: Pavel Tankov <4014969+ptankov@users.noreply.github.com> Date: Tue, 11 Feb 2025 13:47:23 +0200 Subject: [PATCH 041/269] CLOUD-889 Fix the detection of newest GKE version in pipelines (#3154) --- cloud/jenkins/pgo_operator_gke_latest.groovy | 2 +- cloud/jenkins/pgo_operator_gke_version.groovy | 2 +- cloud/jenkins/ps_operator_gke_latest.groovy | 2 +- cloud/jenkins/ps_operator_gke_version.groovy | 2 +- cloud/jenkins/psmdb_operator_gke_latest.groovy | 2 +- cloud/jenkins/psmdb_operator_gke_version.groovy | 2 +- cloud/jenkins/pxco-gke.groovy | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cloud/jenkins/pgo_operator_gke_latest.groovy b/cloud/jenkins/pgo_operator_gke_latest.groovy index 4b3b7845ad..455be73104 100644 --- a/cloud/jenkins/pgo_operator_gke_latest.groovy +++ b/cloud/jenkins/pgo_operator_gke_latest.groovy @@ -48,7 +48,7 @@ EOF } if ("$PLATFORM_VER" == "latest") { - USED_PLATFORM_VER = sh(script: "gcloud container get-server-config --region=$region --flatten=channels --filter='channels.channel=RAPID' --format='value(channels.defaultVersion)' | cut -d '.' -f 1,2", , returnStdout: true).trim() + USED_PLATFORM_VER = sh(script: "gcloud container get-server-config --region=$region --flatten=channels --filter='channels.channel=RAPID' --format='value(channels.validVersions)' | cut -d '.' -f 1,2", , returnStdout: true).trim() } else { USED_PLATFORM_VER="$PLATFORM_VER" } diff --git a/cloud/jenkins/pgo_operator_gke_version.groovy b/cloud/jenkins/pgo_operator_gke_version.groovy index d23429bdf4..89b5758979 100644 --- a/cloud/jenkins/pgo_operator_gke_version.groovy +++ b/cloud/jenkins/pgo_operator_gke_version.groovy @@ -48,7 +48,7 @@ EOF } if ("$PLATFORM_VER" == "latest") { - USED_PLATFORM_VER = sh(script: "gcloud container get-server-config --region=$region --flatten=channels --filter='channels.channel=RAPID' --format='value(channels.defaultVersion)' | cut -d '.' -f 1,2", , returnStdout: true).trim() + USED_PLATFORM_VER = sh(script: "gcloud container get-server-config --region=$region --flatten=channels --filter='channels.channel=RAPID' --format='value(channels.validVersions)' | cut -d '.' -f 1,2", , returnStdout: true).trim() } else { USED_PLATFORM_VER="$PLATFORM_VER" } diff --git a/cloud/jenkins/ps_operator_gke_latest.groovy b/cloud/jenkins/ps_operator_gke_latest.groovy index 72aa948a14..7722188f3b 100644 --- a/cloud/jenkins/ps_operator_gke_latest.groovy +++ b/cloud/jenkins/ps_operator_gke_latest.groovy @@ -46,7 +46,7 @@ EOF void prepareSources() { if ("$PLATFORM_VER" == "latest") { - USED_PLATFORM_VER = sh(script: "gcloud container get-server-config --region=$region --flatten=channels --filter='channels.channel=RAPID' --format='value(channels.defaultVersion)' | cut -d- -f1", , returnStdout: true).trim() + USED_PLATFORM_VER = sh(script: "gcloud container get-server-config --region=$region --flatten=channels --filter='channels.channel=RAPID' --format='value(channels.validVersions)' | cut -d- -f1", , returnStdout: true).trim() } else { USED_PLATFORM_VER="$PLATFORM_VER" } diff --git a/cloud/jenkins/ps_operator_gke_version.groovy b/cloud/jenkins/ps_operator_gke_version.groovy index c81701fa04..2ac3eeacde 100644 --- a/cloud/jenkins/ps_operator_gke_version.groovy +++ b/cloud/jenkins/ps_operator_gke_version.groovy @@ -46,7 +46,7 @@ EOF void prepareSources() { if ("$PLATFORM_VER" == "latest") { - USED_PLATFORM_VER = sh(script: "gcloud container get-server-config --region=$region --flatten=channels --filter='channels.channel=RAPID' --format='value(channels.defaultVersion)' | cut -d- -f1", , returnStdout: true).trim() + USED_PLATFORM_VER = sh(script: "gcloud container get-server-config --region=$region --flatten=channels --filter='channels.channel=RAPID' --format='value(channels.validVersions)' | cut -d- -f1", , returnStdout: true).trim() } else { USED_PLATFORM_VER="$PLATFORM_VER" } diff --git a/cloud/jenkins/psmdb_operator_gke_latest.groovy b/cloud/jenkins/psmdb_operator_gke_latest.groovy index 199b2e0645..e83a07d8bf 100644 --- a/cloud/jenkins/psmdb_operator_gke_latest.groovy +++ b/cloud/jenkins/psmdb_operator_gke_latest.groovy @@ -90,7 +90,7 @@ EOF } if ("$PLATFORM_VER" == "latest") { - USED_PLATFORM_VER = sh(script: "gcloud container get-server-config --region=$region --flatten=channels --filter='channels.channel=RAPID' --format='value(channels.defaultVersion)' | cut -d- -f1", , returnStdout: true).trim() + USED_PLATFORM_VER = sh(script: "gcloud container get-server-config --region=$region --flatten=channels --filter='channels.channel=RAPID' --format='value(channels.validVersions)' | cut -d- -f1", , returnStdout: true).trim() } else { USED_PLATFORM_VER="$PLATFORM_VER" } diff --git a/cloud/jenkins/psmdb_operator_gke_version.groovy b/cloud/jenkins/psmdb_operator_gke_version.groovy index 01fbd469c2..5d03f3070d 100644 --- a/cloud/jenkins/psmdb_operator_gke_version.groovy +++ b/cloud/jenkins/psmdb_operator_gke_version.groovy @@ -90,7 +90,7 @@ EOF } if ("$PLATFORM_VER" == "latest") { - USED_PLATFORM_VER = sh(script: "gcloud container get-server-config --region=$region --flatten=channels --filter='channels.channel=RAPID' --format='value(channels.defaultVersion)' | cut -d- -f1", , returnStdout: true).trim() + USED_PLATFORM_VER = sh(script: "gcloud container get-server-config --region=$region --flatten=channels --filter='channels.channel=RAPID' --format='value(channels.validVersions)' | cut -d- -f1", , returnStdout: true).trim() } else { USED_PLATFORM_VER="$PLATFORM_VER" } diff --git a/cloud/jenkins/pxco-gke.groovy b/cloud/jenkins/pxco-gke.groovy index 4c5a84d2ae..09422860dc 100644 --- a/cloud/jenkins/pxco-gke.groovy +++ b/cloud/jenkins/pxco-gke.groovy @@ -83,7 +83,7 @@ EOF } if ("$PLATFORM_VER" == "latest") { - PLATFORM_VER = sh(script: "gcloud container get-server-config --region=$region --flatten=channels --filter='channels.channel=RAPID' --format='value(channels.defaultVersion)' | cut -d- -f1", returnStdout: true).trim() + PLATFORM_VER = sh(script: "gcloud container get-server-config --region=$region --flatten=channels --filter='channels.channel=RAPID' --format='value(channels.validVersions)' | cut -d- -f1", returnStdout: true).trim() } if ("$IMAGE_PXC") { From 8bfcf0e1d6f89b70942bc8b1f9ba03840c16c88e Mon Sep 17 00:00:00 2001 From: Peter Sirotnak Date: Tue, 11 Feb 2025 13:48:28 +0100 Subject: [PATCH 042/269] PMM-13733: PMM V3 Migration pipeline (#3135) (#3136) * PMM-7: PMM V3 Migration tests (#3135) * PMM-13733: fix branches * PMM-13733: better description * PMM-13733: Add pxc database * PMM-13733: Upgrade pxc database pmm client * PMM-13733: Fix package manager on pxc docker * PMM-13733: Restart PXC container * PMM-13733: Restart PXC pmm agent * PMM-13733: Restart PXC pmm agent * PMM-13733: Removes PXC --- pmm/v3/pmm3-migration-tests.groovy | 357 +++++++++++++++++++++++++++++ 1 file changed, 357 insertions(+) create mode 100644 pmm/v3/pmm3-migration-tests.groovy diff --git a/pmm/v3/pmm3-migration-tests.groovy b/pmm/v3/pmm3-migration-tests.groovy new file mode 100644 index 0000000000..716decd9e1 --- /dev/null +++ b/pmm/v3/pmm3-migration-tests.groovy @@ -0,0 +1,357 @@ +library changelog: false, identifier: 'lib@master', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +def versionsList = pmmVersion('list').reverse() +def latestVersion = versionsList.first() +def getMinorVersion(VERSION) { + return VERSION.split("\\.")[1].toInteger() +} + +pipeline { + agent { + label 'agent-amd64-ol9' + } + environment { + REMOTE_AWS_MYSQL_USER=credentials('pmm-dev-mysql-remote-user') + REMOTE_AWS_MYSQL_PASSWORD=credentials('pmm-dev-remote-password') + REMOTE_AWS_MYSQL57_HOST=credentials('pmm-dev-mysql57-remote-host') + REMOTE_MYSQL_HOST=credentials('mysql-remote-host') + REMOTE_MYSQL_USER=credentials('mysql-remote-user') + REMOTE_MYSQL_PASSWORD=credentials('mysql-remote-password') + GCP_SERVER_IP=credentials('GCP_SERVER_IP') + GCP_USER=credentials('GCP_USER') + GCP_USER_PASSWORD=credentials('GCP_USER_PASSWORD') + REMOTE_MONGODB_HOST=credentials('qa-remote-mongodb-host') + REMOTE_MONGODB_USER=credentials('qa-remote-mongodb-user') + REMOTE_MONGODB_PASSWORD=credentials('qa-remote-mongodb-password') + REMOTE_POSTGRESQL_HOST=credentials('qa-remote-pgsql-host') + REMOTE_POSTGRESQL_USER=credentials('qa-remote-pgsql-user') + REMOTE_POSTGRESSQL_PASSWORD=credentials('qa-remote-pgsql-password') + REMOTE_PROXYSQL_HOST=credentials('qa-remote-proxysql-host') + REMOTE_PROXYSQL_USER=credentials('qa-remote-proxysql-user') + REMOTE_PROXYSQL_PASSWORD=credentials('qa-remote-proxysql-password') + INFLUXDB_ADMIN_USER=credentials('influxdb-admin-user') + INFLUXDB_ADMIN_PASSWORD=credentials('influxdb-admin-password') + INFLUXDB_USER=credentials('influxdb-user') + INFLUXDB_USER_PASSWORD=credentials('influxdb-user-password') + MONITORING_HOST=credentials('monitoring-host') + PMM_QA_AURORA2_MYSQL_HOST=credentials('PMM_QA_AURORA2_MYSQL_HOST') + PMM_QA_AURORA2_MYSQL_PASSWORD=credentials('PMM_QA_AURORA2_MYSQL_PASSWORD') + PMM_QA_AWS_ACCESS_KEY_ID=credentials('PMM_QA_AWS_ACCESS_KEY_ID') + PMM_QA_AWS_ACCESS_KEY=credentials('PMM_QA_AWS_ACCESS_KEY') + MAILOSAUR_API_KEY=credentials('MAILOSAUR_API_KEY') + MAILOSAUR_SERVER_ID=credentials('MAILOSAUR_SERVER_ID') + MAILOSAUR_SMTP_PASSWORD=credentials('MAILOSAUR_SMTP_PASSWORD') + ZEPHYR_PMM_API_KEY=credentials('ZEPHYR_PMM_API_KEY') + } + parameters { + string( + defaultValue: 'v3', + description: 'Tag/Branch for UI Tests repository PMM V3', + name: 'PMM_V3_UI_GIT_BRANCH') + string( + defaultValue: 'main', + description: 'Tag/Branch for UI Tests repository PMM V2', + name: 'PMM_V2_UI_GIT_BRANCH') + string( + defaultValue: latestVersion, + description: 'PMM Server Version to test for Upgrade', + name: 'DOCKER_VERSION') + string( + defaultValue: latestVersion, + description: 'PMM Client Version to test for Upgrade', + name: 'CLIENT_VERSION') + string( + defaultValue: 'pmm3admin!', + description: 'pmm-server admin user default password', + name: 'ADMIN_PASSWORD') + string( + defaultValue: 'main', + description: 'Tag/Branch for pmm-qa repository', + name: 'PMM_QA_GIT_BRANCH') + choice( + choices: ['experimental', 'testing', 'release'], + description: 'Select pmm repo to upgrate to', + name: 'UPGRADE_TAG') + } + options { + skipDefaultCheckout() + } + stages { + stage('Prepare') { + steps { + // fetch pmm-ui-tests repository + git poll: false, + branch: PMM_V3_UI_GIT_BRANCH, + url: 'https://github.com/percona/pmm-ui-tests.git' + + slackSend channel: '#pmm-notifications', color: '#0000FF', message: "[${JOB_NAME}]: build started - ${BUILD_URL}" + sh ''' + sudo mkdir -p /srv/pmm-qa || : + pushd /srv/pmm-qa + sudo git clone --single-branch --branch ${PMM_QA_GIT_BRANCH} https://github.com/percona/pmm-qa.git . + sudo git checkout ${PMM_QA_GIT_COMMIT_HASH} + popd + sudo ln -s /usr/bin/chromium-browser /usr/bin/chromium + ''' + } + } + stage('Start Server Instance') { + steps { + sh ''' + docker network create pmm-qa || true + git checkout ${PMM_V2_UI_GIT_BRANCH} + PWD=$(pwd) PMM_SERVER_IMAGE=percona/pmm-server:${DOCKER_VERSION} docker-compose up -d + + ''' + waitForContainer('pmm-server', 'pmm-managed entered RUNNING state') + waitForContainer('pmm-agent_mongo', 'waiting for connections on port 27017') + waitForContainer('pmm-agent_mysql_5_7', "Server hostname (bind-address):") + waitForContainer('pmm-agent_postgres', 'PostgreSQL init process complete; ready for start up.') + sleep 20 + sh """ + bash -x testdata/db_setup.sh + """ + script { + env.SERVER_IP = "127.0.0.1" + env.PMM_UI_URL = "http://${env.SERVER_IP}/" + env.PMM_URL = "http://admin:${env.ADMIN_PASSWORD}@${env.SERVER_IP}" + } + } + } + stage('Change admin password') { + when { + expression { getMinorVersion(DOCKER_VERSION) >= 27 } + } + steps { + sh ''' + docker exec pmm-server change-admin-password ${ADMIN_PASSWORD} + ''' + } + } + stage('Enable Repo') { + parallel { + stage('Enable Experimental Repo') { + when { + expression { env.UPGRADE_TAG == "experimental" } + } + steps { + script { + sh """ + set -o errexit + set -o xtrace + docker exec pmm-server sed -i'' -e 's^/release/^/experimental/^' /etc/yum.repos.d/pmm2-server.repo + docker exec pmm-server percona-release enable pmm2-client experimental + docker exec pmm-server yum clean all + docker exec pmm-server yum clean metadata + """ + } + } + } + stage('Enable Testing Repo') { + when { + expression { env.UPGRADE_TAG == "testing" } + } + steps { + script { + sh """ + set -o errexit + set -o xtrace + docker exec pmm-server sed -i'' -e 's^/release/^/testing/^' /etc/yum.repos.d/pmm2-server.repo + docker exec pmm-server percona-release enable pmm2-client testing + docker exec pmm-server yum clean all + docker exec pmm-server yum clean metadata + """ + } + } + } + stage('Enable Release Repo') { + when { + expression { env.UPGRADE_TAG == "release" } + } + steps { + script { + sh """ + set -o errexit + set -o xtrace + docker exec pmm-server yum clean all + docker exec pmm-server yum clean metadata + """ + } + } + } + } + } + stage('Setup Client for PMM-Server') { + steps { + script{ + if(env.UPGRADE_TAG == "experimental") { + setupPMMClient(SERVER_IP, CLIENT_VERSION.trim(), "pmm2", "no", "no", "no", 'compose_setup', ADMIN_PASSWORD) + } else if (env.UPGRADE_TAG == "testing") { + setupPMMClient(SERVER_IP, CLIENT_VERSION.trim(), "pmm2", "no", "yes", "no", 'compose_setup', ADMIN_PASSWORD, "no") + } else { + setupPMMClient(SERVER_IP, CLIENT_VERSION.trim(), "pmm2", "no", "no", "no", 'compose_setup', ADMIN_PASSWORD, "no") + } + } + sh """ + set -o errexit + set -o xtrace + export PATH=$PATH:/usr/sbin + export PMM_CLIENT_VERSION=${CLIENT_VERSION} + bash /srv/pmm-qa/pmm-tests/pmm-framework.sh \ + --download \ + --pdpgsql-version 17 --ps-version 8.0 --mo-version 8.0 --addclient=pdpgsql,1 --addclient=ps,1 --mongo-replica-for-backup \ + --pmm2 + sleep 20 + """ + } + } + stage('Sanity check') { + steps { + sh ''' + echo \${PMM_URL} + timeout 100 bash -c \'while [[ "$(curl -s -o /dev/null -w \'\'%{http_code}\'\' \${PMM_URL}/ping)" != "200" ]]; do sleep 5; done\' || false + ''' + } + } + stage('Prepare nightly tests on migrated pmm.') { + steps { + script { + sh """ + curl -sL https://rpm.nodesource.com/setup_20.x | sudo bash - + sudo yum install -y nodejs + node --version + npm ci + npx playwright install + envsubst < env.list > env.generated.list + """ + } + } + } + stage('Run pre migration Tests') { + options { + timeout(time: 150, unit: "MINUTES") + } + steps { + withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: 'PMM_AWS_DEV', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { + sh """ + sed -i 's+http://localhost/+${PMM_UI_URL}/+g' pr.codecept.js + export PWD=\$(pwd); + npx codeceptjs run --reporter mocha-multi -c pr.codecept.js --grep '@pmm-pre-migration' + git checkout ${PMM_V3_UI_GIT_BRANCH} + """ + } + } + } + stage('Migrate pmm2 to pmm3') { + steps { + script { + sh """ + echo "\$UPGRADE_TAG" + if [[ "\$UPGRADE_TAG" == "experimental" ]]; then + export PERCONA_REPOSITORY="experimental" + export DOCKER_TAG="3-dev-latest" + export DOCKER_REPO="perconalab/pmm-server" + elif [[ "\$UPGRADE_TAG" == "testing" ]]; then + export DOCKER_TAG=\$(wget -q "https://registry.hub.docker.com/v2/repositories/perconalab/pmm-server/tags?page_size=25&name=rc" -O - | jq -r .results[].name | grep 3.*.*-rc\$ | sort -V | tail -n1) + export DOCKER_REPO="perconalab/pmm-server" + elif [[ "\$UPGRADE_TAG" == "release" ]]; then + export DOCKER_TAG=\$(wget -q "https://registry.hub.docker.com/v2/repositories/percona/pmm-server/tags?page_size=25" -O - | jq -r .results[].name | grep 3.*.* | sort -V | tail -n1) + export DOCKER_REPO="percona/pmm-server" + fi + + echo "Percona repository is: \$PERCONA_REPOSITORY" + echo "Docker tag is: \$DOCKER_TAG" + + wget https://raw.githubusercontent.com/percona/pmm/refs/heads/v3/get-pmm.sh + chmod +x get-pmm.sh + ./get-pmm.sh -n pmm-server -b --network-name pmm-qa --tag "\$DOCKER_TAG" --repo "\$DOCKER_REPO" + + sudo percona-release enable pmm3-client \$UPGRADE_TAG + sudo yum install -y pmm-client + + listVar="rs101 rs102 rs103 rs201 rs202 rs203" + + for i in \$listVar; do + echo "\$i" + docker exec \$i percona-release enable pmm3-client \$UPGRADE_TAG + docker exec \$i yum install -y pmm-client + docker exec \$i sed -i "s/443/8443/g" /usr/local/percona/pmm/config/pmm-agent.yaml + docker exec \$i cat /usr/local/percona/pmm/config/pmm-agent.yaml + docker exec \$i systemctl restart pmm-agent + done + """ + env.SERVER_IP = "127.0.0.1" + env.PMM_UI_URL = "https://${env.SERVER_IP}/" + env.PMM_URL = "https://admin:${env.ADMIN_PASSWORD}@${env.SERVER_IP}" + } + } + } + stage('Sleep') { + steps { + sleep 300 + } + } + stage('Run Tests') { + options { + timeout(time: 150, unit: "MINUTES") + } + steps { + withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: 'PMM_AWS_DEV', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { + sh """ + sed -i 's+http://localhost/+${PMM_UI_URL}/+g' pr.codecept.js + export PWD=\$(pwd); + npx codeceptjs run --reporter mocha-multi -c pr.codecept.js --grep '@pmm-migration' + """ + } + } + } + } + post { + always { + sh ''' + # fetch all the logs from PMM server + curl --insecure ${PMM_URL}/logs.zip --output logs.zip || true + + # get logs from systemd pmm-agent.service + if [[ ${CLIENT_VERSION} != http* ]]; then + journalctl -u pmm-agent.service > ./pmm-agent.log + fi + + # get logs from managed and update-perform + echo --- pmm-managed logs from pmm-server --- >> pmm-managed-full.log + docker exec pmm-server cat /srv/logs/pmm-managed.log >> pmm-managed-full.log || true + docker exec pmm-server cat /srv/logs/pmm-update-perform.log >> pmm-update-perform.log || true + echo --- pmm-update-perform logs from pmm-server --- >> pmm-update-perform.log + docker cp pmm-server:/srv/logs srv-logs + tar -zcvf srv-logs.tar.gz srv-logs + + # stop the containers + docker-compose down || true + docker rm -f $(sudo docker ps -a -q) || true + docker volume rm $(sudo docker volume ls -q) || true + sudo chown -R ec2-user:ec2-user . || true + ''' + script { + archiveArtifacts artifacts: 'pmm-managed-full.log' + archiveArtifacts artifacts: 'pmm-update-perform.log' + archiveArtifacts artifacts: 'pmm-agent.log' + archiveArtifacts artifacts: 'logs.zip' + archiveArtifacts artifacts: 'srv-logs.tar.gz' + + if (currentBuild.result == null || currentBuild.result == 'SUCCESS') { + junit 'tests/output/*.xml' + slackSend botUser: true, channel: '#pmm-notifications', color: '#00FF00', message: "[${JOB_NAME}]: build finished - ${BUILD_URL}" + archiveArtifacts artifacts: 'logs.zip' + } else { + junit 'tests/output/*.xml' + slackSend botUser: true, channel: '#pmm-notifications', color: '#FF0000', message: "[${JOB_NAME}]: build ${currentBuild.result} - ${BUILD_URL}" + archiveArtifacts artifacts: 'logs.zip' + archiveArtifacts artifacts: 'tests/output/*.png' + } + } + } + } +} From 73d4423de386beffb6dbc5155b3cbd6221ef299e Mon Sep 17 00:00:00 2001 From: Surabhi Bhat Date: Wed, 12 Feb 2025 15:50:31 +0530 Subject: [PATCH 043/269] PKG-475 Update PS/PXC/PXB release pipeline to add support for private repos for pro builds --- .../percona-server-for-mysql-8.0.groovy | 101 +++++++++++------- 1 file changed, 63 insertions(+), 38 deletions(-) diff --git a/ps/jenkins/percona-server-for-mysql-8.0.groovy b/ps/jenkins/percona-server-for-mysql-8.0.groovy index 174b06431b..0d0caada64 100644 --- a/ps/jenkins/percona-server-for-mysql-8.0.groovy +++ b/ps/jenkins/percona-server-for-mysql-8.0.groovy @@ -33,43 +33,62 @@ void installCli(String PLATFORM) { } void buildStage(String DOCKER_OS, String STAGE_PARAM) { - sh """ - set -o xtrace - mkdir -p test - wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${BRANCH}/build-ps/percona-server-8.0_builder.sh -O ps_builder.sh || curl \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${BRANCH}/build-ps/percona-server-8.0_builder.sh -o ps_builder.sh - if [ ${FIPSMODE} = "YES" ]; then - sed -i 's|percona-server-server/usr|percona-server-server-pro/usr|g' ps_builder.sh - sed -i 's|dbg-package=percona-server-dbg|dbg-package=percona-server-pro-dbg|g' ps_builder.sh - fi - grep "percona-server-server" ps_builder.sh - export build_dir=\$(pwd -P) - if [ "$DOCKER_OS" = "none" ]; then - set -o xtrace - cd \${build_dir} - if [ -f ./test/percona-server-8.0.properties ]; then - . ./test/percona-server-8.0.properties - fi - sudo bash -x ./ps_builder.sh --builddir=\${build_dir}/test --install_deps=1 - if [ ${BUILD_TOKUDB_TOKUBACKUP} = "ON" ]; then - bash -x ./ps_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --branch=${BRANCH} --build_tokudb_tokubackup=1 --perconaft_branch=${PERCONAFT_BRANCH} --tokubackup_branch=${TOKUBACKUP_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM} - else - bash -x ./ps_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --branch=${BRANCH} --perconaft_branch=${PERCONAFT_BRANCH} --tokubackup_branch=${TOKUBACKUP_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM} - fi - else - docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " - set -o xtrace - cd \${build_dir} - if [ -f ./test/percona-server-8.0.properties ]; then - . ./test/percona-server-8.0.properties - fi - bash -x ./ps_builder.sh --builddir=\${build_dir}/test --install_deps=1 - if [ ${BUILD_TOKUDB_TOKUBACKUP} = \"ON\" ]; then - bash -x ./ps_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --branch=${BRANCH} --build_tokudb_tokubackup=1 --perconaft_branch=${PERCONAFT_BRANCH} --tokubackup_branch=${TOKUBACKUP_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM} - else - bash -x ./ps_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --branch=${BRANCH} --perconaft_branch=${PERCONAFT_BRANCH} --tokubackup_branch=${TOKUBACKUP_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM} - fi" - fi - """ + withCredentials([string(credentialsId: 'GITHUB_API_TOKEN', variable: 'TOKEN')]) { + sh """ + set -o xtrace + mkdir -p test + if [ \${FIPSMODE} = "YES" ]; then + MYSQL_VERSION_MINOR=\$(curl -s -O \$(echo \${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/\${BRANCH}/MYSQL_VERSION && grep MYSQL_VERSION_MINOR MYSQL_VERSION | awk -F= '{print \$2}') + if [ \${MYSQL_VERSION_MINOR} = "0" ]; then + PRO_BRANCH="8.0" + elif [ \${MYSQL_VERSION_MINOR} = "4" ]; then + PRO_BRANCH="8.4" + else + PRO_BRANCH="trunk" + fi + curl -L -H "Authorization: Bearer \${TOKEN}" \ + -H "Accept: application/vnd.github.v3.raw" \ + -o ps_builder.sh \ + "https://api.github.com/repos/percona/percona-server-private-build/contents/build-ps/percona-server-8.0_builder.sh?ref=\${PRO_BRANCH}" + sed -i 's|percona-server-server/usr|percona-server-server-pro/usr|g' ps_builder.sh + sed -i 's|dbg-package=percona-server-dbg|dbg-package=percona-server-pro-dbg|g' ps_builder.sh + else + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${BRANCH}/build-ps/percona-server-8.0_builder.sh -O ps_builder.sh || curl \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${BRANCH}/build-ps/percona-server-8.0_builder.sh -o ps_builder.sh + fi + grep "percona-server-server" ps_builder.sh + export build_dir=\$(pwd -P) + if [ "$DOCKER_OS" = "none" ]; then + set -o xtrace + cd \${build_dir} + if [ -f ./test/percona-server-8.0.properties ]; then + . ./test/percona-server-8.0.properties + fi + sudo bash -x ./ps_builder.sh --builddir=\${build_dir}/test --install_deps=1 + if [ ${BUILD_TOKUDB_TOKUBACKUP} = "ON" ]; then + bash -x ./ps_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --branch=${BRANCH} --build_tokudb_tokubackup=1 --perconaft_branch=${PERCONAFT_BRANCH} --tokubackup_branch=${TOKUBACKUP_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM} + else + bash -x ./ps_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --branch=${BRANCH} --perconaft_branch=${PERCONAFT_BRANCH} --tokubackup_branch=${TOKUBACKUP_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM} + fi + else + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + if [ \${FIPSMODE} = "YES" ]; then + git clone --depth 1 --branch \${PRO_BRANCH} https://x-access-token:${TOKEN}@github.com/percona/percona-server-private-build.git percona-server-private-build + mv -f \${build_dir}/percona-server-private-build/build-ps \${build_dir}/test/. + fi + if [ -f ./test/percona-server-8.0.properties ]; then + . ./test/percona-server-8.0.properties + fi + bash -x ./ps_builder.sh --builddir=\${build_dir}/test --install_deps=1 + if [ ${BUILD_TOKUDB_TOKUBACKUP} = \"ON\" ]; then + bash -x ./ps_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --branch=${BRANCH} --build_tokudb_tokubackup=1 --perconaft_branch=${PERCONAFT_BRANCH} --tokubackup_branch=${TOKUBACKUP_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM} + else + bash -x ./ps_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --branch=${BRANCH} --perconaft_branch=${PERCONAFT_BRANCH} --tokubackup_branch=${TOKUBACKUP_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM} + fi" + fi + """ + } } void cleanUpWS() { @@ -252,7 +271,13 @@ parameters { slackNotify("${SLACKNOTIFY}", "#00FF00", "[${JOB_NAME}]: starting build for ${BRANCH} - [${BUILD_URL}]") cleanUpWS() installCli("deb") - buildStage("none", "--get_sources=1") + script { + if (env.FIPSMODE == 'YES') { + buildStage("none", "--get_sources=1 --enable_fipsmode=1") + } else { + buildStage("none", "--get_sources=1") + } + } sh ''' REPO_UPLOAD_PATH=$(grep "UPLOAD" test/percona-server-8.0.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") From 4b1c1fb8f7aa0d48fb195db571692c42d93b5cc6 Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Thu, 13 Feb 2025 14:55:47 +0200 Subject: [PATCH 044/269] PKG-333 pbm: update get-branches job --- pbm/jenkins/get-pbm-branches.groovy | 72 +++++++++++++++-------------- 1 file changed, 38 insertions(+), 34 deletions(-) diff --git a/pbm/jenkins/get-pbm-branches.groovy b/pbm/jenkins/get-pbm-branches.groovy index d3d723e1df..88dc584457 100644 --- a/pbm/jenkins/get-pbm-branches.groovy +++ b/pbm/jenkins/get-pbm-branches.groovy @@ -5,9 +5,13 @@ library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'launcher-x64' : 'micro-amazon' } parameters { + choice( + choices: ['Hetzner','AWS'], + description: 'Cloud infra for build', + name: 'CLOUD') string( defaultValue: 'https://github.com/percona/percona-backup-mongodb.git', description: 'URL for percona-mongodb-backup repository', @@ -22,50 +26,50 @@ pipeline { stages { stage('Get release branches') { steps { - withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: 'AWS_STASH', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { - sh """ - EC=0 - aws s3 ls s3://percona-jenkins-artifactory/percona-backup-mongodb/branch_commit_id.properties || EC=\$? + script { + String S3_STASH = (params.CLOUD == 'Hetzner') ? 'HTZ_STASH' : 'AWS_STASH' + String S3_ENDPOINT = (params.CLOUD == 'Hetzner') ? '--endpoint-url https://fsn1.your-objectstorage.com' : '--endpoint-url https://s3.amazonaws.com' + withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: S3_STASH, secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { + sh """ + EC=0 + AWS_RETRY_MODE=standard AWS_MAX_ATTEMPTS=10 aws s3 ls s3://percona-jenkins-artifactory/percona-backup-mongodb/branch_commit_id.properties ${S3_ENDPOINT} --cli-connect-timeout 60 --cli-read-timeout 120 || EC=\$? - if [ \${EC} = 1 ]; then - LATEST_RELEASE_BRANCH=\$(git -c 'versionsort.suffix=-' ls-remote --heads --sort='v:refname' ${GIT_REPO} release\\* | tail -1) - BRANCH_NAME=\$(echo \${LATEST_RELEASE_BRANCH} | cut -d "/" -f 3) - COMMIT_ID=\$(echo \${LATEST_RELEASE_BRANCH} | cut -d " " -f 1) + if [ \${EC} = 1 ]; then + LATEST_RELEASE_BRANCH=\$(git -c 'versionsort.suffix=-' ls-remote --heads --sort='v:refname' ${GIT_REPO} release\\* | tail -1) + BRANCH_NAME=\$(echo \${LATEST_RELEASE_BRANCH} | cut -d "/" -f 3) + COMMIT_ID=\$(echo \${LATEST_RELEASE_BRANCH} | cut -d " " -f 1) - echo "BRANCH_NAME=\${BRANCH_NAME}" > branch_commit_id.properties - echo "COMMIT_ID=\${COMMIT_ID}" >> branch_commit_id.properties + echo "BRANCH_NAME=\${BRANCH_NAME}" > branch_commit_id.properties + echo "COMMIT_ID=\${COMMIT_ID}" >> branch_commit_id.properties - aws s3 cp branch_commit_id.properties s3://percona-jenkins-artifactory/percona-backup-mongodb/ - echo "START_NEW_BUILD=NO" > startBuild - else - aws s3 cp s3://percona-jenkins-artifactory/percona-backup-mongodb/branch_commit_id.properties . - source branch_commit_id.properties + AWS_RETRY_MODE=standard AWS_MAX_ATTEMPTS=10 aws s3 cp branch_commit_id.properties s3://percona-jenkins-artifactory/percona-backup-mongodb/ ${S3_ENDPOINT} --cli-connect-timeout 60 --cli-read-timeout 120 + echo "START_NEW_BUILD=NO" > startBuild + else + AWS_RETRY_MODE=standard AWS_MAX_ATTEMPTS=10 aws s3 cp s3://percona-jenkins-artifactory/percona-backup-mongodb/branch_commit_id.properties . ${S3_ENDPOINT} --cli-connect-timeout 60 --cli-read-timeout 120 + source branch_commit_id.properties - LATEST_RELEASE_BRANCH=\$(git -c 'versionsort.suffix=-' ls-remote --heads --sort='v:refname' ${GIT_REPO} release\\* | tail -1) - LATEST_BRANCH_NAME=\$(echo \${LATEST_RELEASE_BRANCH} | cut -d "/" -f 3) - LATEST_COMMIT_ID=\$(echo \${LATEST_RELEASE_BRANCH} | cut -d " " -f 1) + LATEST_RELEASE_BRANCH=\$(git -c 'versionsort.suffix=-' ls-remote --heads --sort='v:refname' ${GIT_REPO} release\\* | tail -1) + LATEST_BRANCH_NAME=\$(echo \${LATEST_RELEASE_BRANCH} | cut -d "/" -f 3) + LATEST_COMMIT_ID=\$(echo \${LATEST_RELEASE_BRANCH} | cut -d " " -f 1) - if [ "x\${COMMIT_ID}" != "x\${LATEST_COMMIT_ID}" ] || [ "x\${BRANCH_NAME}" != "x\${LATEST_BRANCH_NAME}" ]; then - echo "START_NEW_BUILD=YES" > startBuild - else - echo "START_NEW_BUILD=NO" > startBuild - fi + if [ "x\${COMMIT_ID}" != "x\${LATEST_COMMIT_ID}" ] || [ "x\${BRANCH_NAME}" != "x\${LATEST_BRANCH_NAME}" ]; then + echo "START_NEW_BUILD=YES" > startBuild + else + echo "START_NEW_BUILD=NO" > startBuild + fi - echo "BRANCH_NAME=\${LATEST_BRANCH_NAME}" > branch_commit_id.properties - echo "COMMIT_ID=\${LATEST_COMMIT_ID}" >> branch_commit_id.properties - aws s3 cp branch_commit_id.properties s3://percona-jenkins-artifactory/percona-backup-mongodb/ - fi - """ - } - script { + echo "BRANCH_NAME=\${LATEST_BRANCH_NAME}" > branch_commit_id.properties + echo "COMMIT_ID=\${LATEST_COMMIT_ID}" >> branch_commit_id.properties + AWS_RETRY_MODE=standard AWS_MAX_ATTEMPTS=10 aws s3 cp branch_commit_id.properties s3://percona-jenkins-artifactory/percona-backup-mongodb/ ${S3_ENDPOINT} --cli-connect-timeout 60 --cli-read-timeout 120 + fi + """ + } START_NEW_BUILD = sh(returnStdout: true, script: "source startBuild; echo \${START_NEW_BUILD}").trim() BRANCH_NAME = sh(returnStdout: true, script: "source branch_commit_id.properties; echo \${BRANCH_NAME}").trim() COMMIT_ID = sh(returnStdout: true, script: "source branch_commit_id.properties; echo \${COMMIT_ID}").trim() VERSION = sh(returnStdout: true, script: "source branch_commit_id.properties; echo \${BRANCH_NAME} | sed s:release\\-::").trim() } - } - } stage('Build needed') { when { @@ -78,7 +82,7 @@ pipeline { """ } slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: new changes for branch ${BRANCH_NAME}[commit id: ${COMMIT_ID}] were detected, build will be started soon") - build job: 'pbm-autobuild-RELEASE', parameters: [string(name: 'GIT_BRANCH', value: BRANCH_NAME), string(name: 'VERSION', value: VERSION), string(name: 'COMPONENT', value: 'testing')] + build job: 'hetzner-pbm-autobuild-RELEASE', parameters: [string(name: 'CLOUD', value: CLOUD), string(name: 'GIT_BRANCH', value: BRANCH_NAME), string(name: 'VERSION', value: VERSION), string(name: 'COMPONENT', value: 'testing')] build job: 'pbm-release-test-run', propagate: false, wait: false, parameters: [string(name: 'PBM_BRANCH', value: BRANCH_NAME), string(name: 'PBM_VERSION', value: VERSION)] } } From adfacadf2b57612fffb64524a3c99d94a17f2f81 Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Fri, 14 Feb 2025 10:56:20 +0200 Subject: [PATCH 045/269] PKG-486 psmdb.cd: migrate mongosh pipeline to Hetzner --- psmdb/jenkins/percona-mongodb-mongosh.groovy | 126 ++++++++++++++----- 1 file changed, 94 insertions(+), 32 deletions(-) diff --git a/psmdb/jenkins/percona-mongodb-mongosh.groovy b/psmdb/jenkins/percona-mongodb-mongosh.groovy index 42fd0e331a..98853aea90 100644 --- a/psmdb/jenkins/percona-mongodb-mongosh.groovy +++ b/psmdb/jenkins/percona-mongodb-mongosh.groovy @@ -30,7 +30,7 @@ def AWS_STASH_PATH pipeline { agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + label params.CLOUD == 'Hetzner' ? 'launcher-x64' : 'micro-amazon' } parameters { choice( @@ -58,7 +58,7 @@ pipeline { description: 'VERSION value', name: 'VERSION') string( - defaultValue: 'psmdb-70', + defaultValue: 'psmdb-80', description: 'PSMDB repo name', name: 'PSMDB_REPO') choice( @@ -96,110 +96,160 @@ pipeline { } stage('Build MongoDB Shell RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8') { + stage('Oracle Linux 8(x86_64)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_mongosh=1 --build_variant=rpm-x64") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) - uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Oracle Linux 9') { + stage('Oracle Linux 9(x86_64)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_mongosh=1 --build_variant=rpm-x64") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) - uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Amazon Linux 2023') { + stage('Oracle Linux 9(aarch64)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_mongosh=1 --build_variant=rpm-arm64") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Amazon Linux 2023(x86_64)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("amazonlinux:2023", "--build_mongosh=1 --build_variant=rpm-x64") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) - uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Amazon Linux 2023(aarch64)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("amazonlinux:2023", "--build_mongosh=1 --build_variant=rpm-arm64") + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) - uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { + stage('Ubuntu Focal (20.04)(x86_64)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_mongosh=1 --build_variant=deb-x64") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Jammy(22.04)') { + stage('Ubuntu Focal (20.04)(aarch64)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_mongosh=1 --build_variant=deb-arm64") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy (22.04)(x86_64)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_mongosh=1 --build_variant=deb-x64") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Noble(24.04)') { + stage('Ubuntu Jammy (22.04)(aarch64)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_mongosh=1 --build_variant=deb-arm64") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble (24.04)(x86_64)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_mongosh=1 --build_variant=deb-x64") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian Bullseye(11)') { + stage('Ubuntu Noble (24.04)(aarch64)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_mongosh=1 --build_variant=deb-arm64") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye (11)(x86_64)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_mongosh=1 --build_variant=deb-x64") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian Bookworm(12)') { + stage('Debian Bookworm (12)(x86_64)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_mongosh=1 --build_variant=deb-x64") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Oraclelinux 8 tarball') { @@ -208,26 +258,38 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_mongosh=1 --build_variant=linux-x64") pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) - uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') } } } } + stage('Upload packages and tarballs from S3') { + agent { + label params.CLOUD == 'Hetzner' ? 'launcher-x64' : 'micro-amazon' + } + steps { + cleanUpWS() + + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') + } + } + stage('Sign packages') { steps { - signRPM() - signDEB() + signRPM(params.CLOUD) + signDEB(params.CLOUD) } } stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(PSMDB_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PSMDB_REPO, COMPONENT) } } From 3a3107898ed627340693e4a967fa9729ee0a5e22 Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Mon, 17 Feb 2025 12:01:45 +0200 Subject: [PATCH 046/269] PKG-492 psmdb.cd: add "*-min" htz workers --- IaC/psmdb.cd/init.groovy.d/htz.cloud.groovy | 56 ++++++++++++++++----- 1 file changed, 44 insertions(+), 12 deletions(-) diff --git a/IaC/psmdb.cd/init.groovy.d/htz.cloud.groovy b/IaC/psmdb.cd/init.groovy.d/htz.cloud.groovy index c25d29808c..aad61fff99 100644 --- a/IaC/psmdb.cd/init.groovy.d/htz.cloud.groovy +++ b/IaC/psmdb.cd/init.groovy.d/htz.cloud.groovy @@ -19,6 +19,12 @@ execMap['deb12-x64-fsn1'] = execMap['deb'] execMap['deb12-aarch64-nbg1'] = execMap['deb'] execMap['deb12-aarch64-hel1'] = execMap['deb'] execMap['deb12-aarch64-fsn1'] = execMap['deb'] +execMap['deb12-x64-nbg1-min'] = execMap['deb'] +execMap['deb12-x64-hel1-min'] = execMap['deb'] +execMap['deb12-x64-fsn1-min'] = execMap['deb'] +execMap['deb12-aarch64-nbg1-min'] = execMap['deb'] +execMap['deb12-aarch64-hel1-min'] = execMap['deb'] +execMap['deb12-aarch64-fsn1-min'] = execMap['deb'] execMap['launcher-x64-fsn1'] = 10 bootDeadlineMap =[:] @@ -29,6 +35,12 @@ bootDeadlineMap['deb12-x64-fsn1'] = bootDeadlineMap['default'] bootDeadlineMap['deb12-aarch64-nbg1'] = bootDeadlineMap['default'] bootDeadlineMap['deb12-aarch64-hel1'] = bootDeadlineMap['default'] bootDeadlineMap['deb12-aarch64-fsn1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-nbg1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-hel1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-fsn1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-nbg1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-hel1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-fsn1-min'] = bootDeadlineMap['default'] bootDeadlineMap['launcher-x64-fsn1'] = bootDeadlineMap['default'] jvmOptsMap = [:] @@ -39,12 +51,20 @@ jvmOptsMap['deb12-x64-fsn1'] = jvmOptsMap['deb12'] jvmOptsMap['deb12-aarch64-nbg1'] = jvmOptsMap['deb12'] jvmOptsMap['deb12-aarch64-hel1'] = jvmOptsMap['deb12'] jvmOptsMap['deb12-aarch64-fsn1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-nbg1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-hel1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-fsn1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-nbg1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-hel1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-fsn1-min'] = jvmOptsMap['deb12'] jvmOptsMap['launcher-x64-fsn1'] = jvmOptsMap['deb12'] labelMap = [:] -labelMap['deb12-x64'] = 'docker-x64 docker-deb12-x64 deb12-x64' -labelMap['deb12-aarch64'] = 'docker-aarch64 docker-deb12-aarch64 deb12-aarch64' -labelMap['launcher-x64'] = 'launcher-x64' +labelMap['deb12-x64-min'] = 'docker-x64-min docker-deb12-x64-min deb12-x64-min' +labelMap['deb12-aarch64-min'] = 'docker-aarch64-min docker-deb12-aarch64-min deb12-aarch64-min' +labelMap['deb12-x64'] = 'docker-x64 docker-deb12-x64 deb12-x64' +labelMap['deb12-aarch64'] = 'docker-aarch64 docker-deb12-aarch64 deb12-aarch64' +labelMap['launcher-x64'] = 'launcher-x64' networkMap = [:] networkMap['percona-vpc-eu'] = '10442325' // percona-vpc-eu @@ -109,21 +129,33 @@ initMap['deb12-x64-fsn1'] = initMap['deb-docker'] initMap['deb12-aarch64-nbg1'] = initMap['deb-docker'] initMap['deb12-aarch64-hel1'] = initMap['deb-docker'] initMap['deb12-aarch64-fsn1'] = initMap['deb-docker'] +initMap['deb12-x64-nbg1-min'] = initMap['deb-docker'] +initMap['deb12-x64-hel1-min'] = initMap['deb-docker'] +initMap['deb12-x64-fsn1-min'] = initMap['deb-docker'] +initMap['deb12-aarch64-nbg1-min'] = initMap['deb-docker'] +initMap['deb12-aarch64-hel1-min'] = initMap['deb-docker'] +initMap['deb12-aarch64-fsn1-min'] = initMap['deb-docker'] initMap['launcher-x64-fsn1'] = initMap['deb-docker'] def templates = [ /* new HetznerServerTemplate("ubuntu20-cx21", "java", "name=ubuntu20-docker", "fsn1", "cx21"), */ - // tmplName tmplLabels tmplImage region server type - new HetznerServerTemplate("deb12-x64-nbg1", labelMap['deb12-x64'], imageMap['deb12-x64'], "nbg1", "cpx51"), - new HetznerServerTemplate("deb12-aarch64-nbg1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "nbg1", "cax41"), - new HetznerServerTemplate("deb12-x64-hel1", labelMap['deb12-x64'], imageMap['deb12-x64'], "hel1", "cpx51"), - new HetznerServerTemplate("deb12-aarch64-hel1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "hel1", "cax41"), - new HetznerServerTemplate("deb12-x64-fsn1", labelMap['deb12-x64'], imageMap['deb12-x64'], "fsn1", "cpx51"), - new HetznerServerTemplate("deb12-aarch64-fsn1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "fsn1", "cax41"), - new HetznerServerTemplate("launcher-x64-fsn1", labelMap['launcher-x64'], imageMap['launcher-x64'], "fsn1", "cpx21") + // tmplName tmplLabels tmplImage region server type + new HetznerServerTemplate("deb12-x64-nbg1-min", labelMap['deb12-x64-min'], imageMap['deb12-x64'], "nbg1", "cpx41"), + new HetznerServerTemplate("deb12-aarch64-nbg1-min", labelMap['deb12-aarch64-min'], imageMap['deb12-aarch64'], "nbg1", "cax31"), + new HetznerServerTemplate("deb12-x64-hel1-min", labelMap['deb12-x64-min'], imageMap['deb12-x64'], "hel1", "cpx41"), + new HetznerServerTemplate("deb12-aarch64-hel1-min", labelMap['deb12-aarch64-min'], imageMap['deb12-aarch64'], "hel1", "cax31"), + new HetznerServerTemplate("deb12-x64-fsn1-min", labelMap['deb12-x64-min'], imageMap['deb12-x64'], "fsn1", "cpx41"), + new HetznerServerTemplate("deb12-aarch64-fsn1-min", labelMap['deb12-aarch64-min'], imageMap['deb12-aarch64'], "fsn1", "cax31"), + new HetznerServerTemplate("deb12-x64-nbg1", labelMap['deb12-x64'], imageMap['deb12-x64'], "nbg1", "cpx51"), + new HetznerServerTemplate("deb12-aarch64-nbg1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "nbg1", "cax41"), + new HetznerServerTemplate("deb12-x64-hel1", labelMap['deb12-x64'], imageMap['deb12-x64'], "hel1", "cpx51"), + new HetznerServerTemplate("deb12-aarch64-hel1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "hel1", "cax41"), + new HetznerServerTemplate("deb12-x64-fsn1", labelMap['deb12-x64'], imageMap['deb12-x64'], "fsn1", "cpx51"), + new HetznerServerTemplate("deb12-aarch64-fsn1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "fsn1", "cax41"), + new HetznerServerTemplate("launcher-x64-fsn1", labelMap['launcher-x64'], imageMap['launcher-x64'], "fsn1", "cpx21") ] -templates.each { it -> +templates.each { it -> def sshConnector = new SshConnectorAsRoot("htz.cd.key") sshConnector.setConnectionMethod(new PublicAddressOnly()) // Replace with the desired method it.setConnector(sshConnector) From 0afc31e9c1a48c5a41100ed797f73aad312d0f08 Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Mon, 17 Feb 2025 13:22:43 +0200 Subject: [PATCH 047/269] PKG-493 add JNKPercona user to psmdb.cd, pxc.cd and ps80.cd --- IaC/ps80.cd/init.groovy.d/matrix.groovy | 1 + IaC/psmdb.cd/init.groovy.d/matrix.groovy | 1 + IaC/pxc.cd/init.groovy.d/matrix.groovy | 1 + 3 files changed, 3 insertions(+) diff --git a/IaC/ps80.cd/init.groovy.d/matrix.groovy b/IaC/ps80.cd/init.groovy.d/matrix.groovy index 33309cfece..a82e3424ce 100644 --- a/IaC/ps80.cd/init.groovy.d/matrix.groovy +++ b/IaC/ps80.cd/init.groovy.d/matrix.groovy @@ -149,6 +149,7 @@ authz_strategy_config = [ 'percona*QA-ps': ['Overall Read','Agent Configure','Agent Delete','Agent Create','Agent Disconnect','Agent Connect','Agent Build','Agent Provision','Run Delete','Run Update','Run Replay','Job Create','Job Delete','Job Configure','Job Read','Job Discover','Job Build','Job Workspace','Job Cancel','Job Move','View Create','View Delete','View Configure','View Read'], 'percona*qa-distro': ['Overall Read','Agent Configure','Agent Delete','Agent Create','Agent Disconnect','Agent Connect','Agent Build','Agent Provision','Run Delete','Run Update','Run Replay','Job Create','Job Delete','Job Configure','Job Read','Job Discover','Job Build','Job Workspace','Job Cancel','Job Move','View Create','View Delete','View Configure','View Read'], 'percona*doc': ['Overall Read','Agent Build','Agent Connect','Agent Provision','Job Discover','Job Read','Job Build','Job Cancel','Job Workspace','View Read'], + 'JNKPercona': ['Overall Read','Agent Build','Agent Connect','Agent Provision','Job Discover','Job Read','Job Build','Job Cancel','Job Workspace','View Read'], 'percona*external-contractors-ps': ['Overall Read','Agent Build','Agent Connect','Agent Provision','Job Discover','Job Read','Job Build','Job Cancel','Job Workspace','View Read'], ] ] diff --git a/IaC/psmdb.cd/init.groovy.d/matrix.groovy b/IaC/psmdb.cd/init.groovy.d/matrix.groovy index 0723f5e6d4..8ad93fc13d 100644 --- a/IaC/psmdb.cd/init.groovy.d/matrix.groovy +++ b/IaC/psmdb.cd/init.groovy.d/matrix.groovy @@ -148,6 +148,7 @@ authz_strategy_config = [ 'percona*dev-psmdb': ['Overall Read','Agent Configure','Agent Delete','Agent Create','Agent Disconnect','Agent Connect','Agent Build','Agent Provision','Run Delete','Run Update','Run Replay','Job Create','Job Delete','Job Configure','Job Read','Job Discover','Job Build','Job Workspace','Job Cancel','Job Move','View Create','View Delete','View Configure','View Read'], 'percona*qa-distro': ['Overall Read','Agent Configure','Agent Delete','Agent Create','Agent Disconnect','Agent Connect','Agent Build','Agent Provision','Run Delete','Run Update','Run Replay','Job Create','Job Delete','Job Configure','Job Read','Job Discover','Job Build','Job Workspace','Job Cancel','Job Move','View Create','View Delete','View Configure','View Read'], 'percona*doc': ['Overall Read','Agent Build','Agent Connect','Agent Provision','Job Discover','Job Read','Job Build','Job Cancel','Job Workspace','View Read'], + 'JNKPercona': ['Overall Read','Agent Build','Agent Connect','Agent Provision','Job Discover','Job Read','Job Build','Job Cancel','Job Workspace','View Read'], ] ] diff --git a/IaC/pxc.cd/init.groovy.d/matrix.groovy b/IaC/pxc.cd/init.groovy.d/matrix.groovy index 33309cfece..a82e3424ce 100644 --- a/IaC/pxc.cd/init.groovy.d/matrix.groovy +++ b/IaC/pxc.cd/init.groovy.d/matrix.groovy @@ -149,6 +149,7 @@ authz_strategy_config = [ 'percona*QA-ps': ['Overall Read','Agent Configure','Agent Delete','Agent Create','Agent Disconnect','Agent Connect','Agent Build','Agent Provision','Run Delete','Run Update','Run Replay','Job Create','Job Delete','Job Configure','Job Read','Job Discover','Job Build','Job Workspace','Job Cancel','Job Move','View Create','View Delete','View Configure','View Read'], 'percona*qa-distro': ['Overall Read','Agent Configure','Agent Delete','Agent Create','Agent Disconnect','Agent Connect','Agent Build','Agent Provision','Run Delete','Run Update','Run Replay','Job Create','Job Delete','Job Configure','Job Read','Job Discover','Job Build','Job Workspace','Job Cancel','Job Move','View Create','View Delete','View Configure','View Read'], 'percona*doc': ['Overall Read','Agent Build','Agent Connect','Agent Provision','Job Discover','Job Read','Job Build','Job Cancel','Job Workspace','View Read'], + 'JNKPercona': ['Overall Read','Agent Build','Agent Connect','Agent Provision','Job Discover','Job Read','Job Build','Job Cancel','Job Workspace','View Read'], 'percona*external-contractors-ps': ['Overall Read','Agent Build','Agent Connect','Agent Provision','Job Discover','Job Read','Job Build','Job Cancel','Job Workspace','View Read'], ] ] From be277b154447e0616d18e521caae52058bbf252b Mon Sep 17 00:00:00 2001 From: Surabhi Bhat Date: Mon, 17 Feb 2025 18:46:17 +0530 Subject: [PATCH 048/269] Add hetzner changes for pg_percona_telemetry jobs --- ppg/pg_percona_telemetry_autobuild.groovy | 20 +- ppg/pg_percona_telemetry_autobuild_arm.groovy | 300 ++++++++++++++++++ ppg/pg_percona_telemetry_autobuild_arm.yml | 14 + 3 files changed, 324 insertions(+), 10 deletions(-) create mode 100644 ppg/pg_percona_telemetry_autobuild_arm.groovy create mode 100644 ppg/pg_percona_telemetry_autobuild_arm.yml diff --git a/ppg/pg_percona_telemetry_autobuild.groovy b/ppg/pg_percona_telemetry_autobuild.groovy index 872e96bda1..c3a435abc4 100644 --- a/ppg/pg_percona_telemetry_autobuild.groovy +++ b/ppg/pg_percona_telemetry_autobuild.groovy @@ -82,7 +82,7 @@ pipeline { choice( name: 'PG_RELEASE', description: 'PPG major version to test', - choices: ['11', '12', '13', '14', '15', '16'] + choices: ['11', '12', '13', '14', '15', '16', '17'] ) string( defaultValue: 'ppg-16.0', @@ -102,7 +102,7 @@ pipeline { stages { stage('Download source from github') { agent { - label 'min-focal-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { echo '====> Source will be downloaded from github' @@ -132,7 +132,7 @@ pipeline { parallel { stage('Source rpm') { agent { - label 'min-ol-8-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { echo "====> Build percona_pg_telemetry generic source rpm" @@ -148,7 +148,7 @@ pipeline { } stage('Source deb') { agent { - label 'min-focal-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { echo "====> Build percona_pg_telemetry generic source deb" @@ -168,7 +168,7 @@ pipeline { parallel { stage('OL 8') { agent { - label 'min-ol-8-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { echo "====> Build percona_pg_telemetry rpm on OL 8 PG${PG_RELEASE}" @@ -184,7 +184,7 @@ pipeline { } //stage stage('OL 9') { agent { - label 'min-ol-9-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { echo "====> Build percona_pg_telemetry rpm on OL 9 PG${PG_RELEASE}" @@ -204,7 +204,7 @@ pipeline { parallel { stage('Ubuntu 20.04') { agent { - label 'min-focal-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { echo "====> Build percona_pg_telemetry deb on Ubuntu 20.04 PG${PG_RELEASE}" @@ -220,7 +220,7 @@ pipeline { } //stage stage('Ubuntu 22.04') { agent { - label 'min-jammy-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { echo "====> Build percona_pg_telemetry deb on Ubuntu 22.04 PG${PG_RELEASE}" @@ -252,7 +252,7 @@ pipeline { } //stage stage('Debian 11') { agent { - label 'min-bullseye-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { echo "====> Build percona_pg_telemetry deb on Debian 11 PG${PG_RELEASE}" @@ -268,7 +268,7 @@ pipeline { } //stage stage('Debian 12') { agent { - label 'min-bookworm-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { echo "====> Build percona_pg_telemetry deb on Debian 12 PG${PG_RELEASE}" diff --git a/ppg/pg_percona_telemetry_autobuild_arm.groovy b/ppg/pg_percona_telemetry_autobuild_arm.groovy new file mode 100644 index 0000000000..c9a38543d6 --- /dev/null +++ b/ppg/pg_percona_telemetry_autobuild_arm.groovy @@ -0,0 +1,300 @@ +/* groovylint-disable DuplicateStringLiteral, GStringExpressionWithinString, LineLength */ +library changelog: false, identifier: "lib@hetzner", retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) + +void installCli(String PLATFORM) { + sh """ + set -o xtrace + if [ -d aws ]; then + rm -rf aws + fi + if [ ${PLATFORM} = "deb" ]; then + sudo apt-get update + sudo apt-get -y install wget curl unzip gnupg2 + elif [ ${PLATFORM} = "rpm" ]; then + sudo yum -y install wget curl unzip gnupg2 + fi + curl https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip -o awscliv2.zip + unzip awscliv2.zip + sudo ./aws/install || true + """ +} +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + sh """ + set -o xtrace + mkdir test + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${BRANCH}/percona-packaging/scripts/pg_percona_telemetry_builder.sh -O ppt_builder.sh + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./ppt_builder.sh --builddir=\${build_dir}/test --pg_release=\${PG_RELEASE} --ppg_repo_name=\${PPG_REPO} --install_deps=1 + bash -x ./ppt_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --version=${VERSION} --branch=${BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} --pg_release=${PG_RELEASE} --ppg_repo_name=${PPG_REPO} ${STAGE_PARAM}" + """ +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def AWS_STASH_PATH + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: '1.0.0', + description: 'General version of the product', + name: 'VERSION' + ) + string( + defaultValue: 'https://github.com/Percona-Lab/percona_pg_telemetry.git', + description: 'percona_pg_telemetry repo', + name: 'GIT_REPO' + ) + string( + defaultValue: 'main', + description: 'Branch for tests', + name: 'BRANCH' + ) + string( + defaultValue: '1', + description: 'rpm release number', + name: 'RPM_RELEASE' + ) + string( + defaultValue: '1', + description: 'deb release number', + name: 'DEB_RELEASE' + ) + choice( + name: 'PG_RELEASE', + description: 'PPG major version to test', + choices: ['11', '12', '13', '14', '15', '16', '17'] + ) + string( + defaultValue: 'ppg-16.0', + description: 'PPG repo name', + name: 'PPG_REPO') + choice( + choices: 'laboratory\ntesting\nexperimental\nrelease', + description: 'Repo component to push packages to', + name: 'COMPONENT') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + timestamps () + } + stages { + stage('Download source from github') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + echo '====> Source will be downloaded from github' + //slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for PG${PG_RELEASE}, repo branch: ${BRANCH} - [${BUILD_URL}]") + cleanUpWS() + buildStage("ubuntu:focal", "--get_sources=1") + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/pg-percona-telemetry.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/pg-percona-telemetry.properties + cat uploadPath + cat awsUploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + stash includes: 'test/pg-percona-telemetry.properties', name: 'properties' + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') + } + } //stage + stage('Build percona_pg_telemetry generic source packages') { + parallel { + stage('Source rpm') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + echo "====> Build percona_pg_telemetry generic source rpm" + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_src_rpm=1") + + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) + } + } + stage('Source deb') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + echo "====> Build percona_pg_telemetry generic source deb" + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_source_deb=1") + + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) + } + } //stage + } //parallel + } //stage + stage('Build percona_pg_telemetry RPMs') { + parallel { + stage('OL 8') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + echo "====> Build percona_pg_telemetry rpm on OL 8 PG${PG_RELEASE}" + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } //stage + stage('OL 9') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + echo "====> Build percona_pg_telemetry rpm on OL 9 PG${PG_RELEASE}" + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } //stage + } //parallel + } //stage + stage('Build percona_pg_telemetry DEBs') { + parallel { + stage('Ubuntu 20.04') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + echo "====> Build percona_pg_telemetry deb on Ubuntu 20.04 PG${PG_RELEASE}" + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } //stage + stage('Ubuntu 22.04') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + echo "====> Build percona_pg_telemetry deb on Ubuntu 22.04 PG${PG_RELEASE}" + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } //stage + stage('Ubuntu Noble(24.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + echo "====> Build percona_pg_telemetry deb on Ubuntu 24.04 PG${PG_RELEASE}" + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } //stage + stage('Debian 11') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + echo "====> Build percona_pg_telemetry deb on Debian 11 PG${PG_RELEASE}" + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } //stage + stage('Debian 12') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + echo "====> Build percona_pg_telemetry deb on Debian 12 PG${PG_RELEASE}" + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } //stage + } //parallel + } //stage + stage('Sign packages') { + steps { + signRPM(params.CLOUD) + signDEB(params.CLOUD) + } + } + stage('Push to public repository') { + steps { + // sync packages + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) + } + } + } //stages + post { + success { + //slackNotify("#releases", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for PG${PG_RELEASE}, repo branch: ${BRANCH} - [${BUILD_URL}]") + deleteDir() + echo "Success" + } + failure { + //slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for PG${PG_RELEASE}, repo branch: ${BRANCH} - [${BUILD_URL}]") + deleteDir() + echo "Failure" + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + echo "Always" + } + } +} diff --git a/ppg/pg_percona_telemetry_autobuild_arm.yml b/ppg/pg_percona_telemetry_autobuild_arm.yml new file mode 100644 index 0000000000..ae2d3479f8 --- /dev/null +++ b/ppg/pg_percona_telemetry_autobuild_arm.yml @@ -0,0 +1,14 @@ +- job: + name: hetzner-pg_percona_telemetry-arm-RELEASE + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/pg_percona_telemetry_autobuild_arm.groovy From eb66f1bc6d8151dad7521245d8149ae371582a8b Mon Sep 17 00:00:00 2001 From: Surabhi Bhat Date: Mon, 17 Feb 2025 20:03:09 +0530 Subject: [PATCH 049/269] Fix issue with pg_percona_telemetry pipeline --- ppg/pg_percona_telemetry_autobuild.groovy | 25 ++++++----------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/ppg/pg_percona_telemetry_autobuild.groovy b/ppg/pg_percona_telemetry_autobuild.groovy index c3a435abc4..5fa87c9f1e 100644 --- a/ppg/pg_percona_telemetry_autobuild.groovy +++ b/ppg/pg_percona_telemetry_autobuild.groovy @@ -108,7 +108,6 @@ pipeline { echo '====> Source will be downloaded from github' //slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for PG${PG_RELEASE}, repo branch: ${BRANCH} - [${BUILD_URL}]") cleanUpWS() - installCli("deb") buildStage("ubuntu:focal", "--get_sources=1") sh ''' REPO_UPLOAD_PATH=$(grep "UPLOAD" test/pg-percona-telemetry.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") @@ -137,8 +136,6 @@ pipeline { steps { echo "====> Build percona_pg_telemetry generic source rpm" cleanUpWS() - installCli("rpm") - unstash 'properties' popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") @@ -153,8 +150,6 @@ pipeline { steps { echo "====> Build percona_pg_telemetry generic source deb" cleanUpWS() - installCli("deb") - unstash 'properties' popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_source_deb=1") @@ -173,8 +168,6 @@ pipeline { steps { echo "====> Build percona_pg_telemetry rpm on OL 8 PG${PG_RELEASE}" cleanUpWS() - installCli("rpm") - unstash 'properties' popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") @@ -189,8 +182,6 @@ pipeline { steps { echo "====> Build percona_pg_telemetry rpm on OL 9 PG${PG_RELEASE}" cleanUpWS() - installCli("rpm") - unstash 'properties' popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") @@ -209,8 +200,6 @@ pipeline { steps { echo "====> Build percona_pg_telemetry deb on Ubuntu 20.04 PG${PG_RELEASE}" cleanUpWS() - installCli("deb") - unstash 'properties' popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") @@ -225,8 +214,6 @@ pipeline { steps { echo "====> Build percona_pg_telemetry deb on Ubuntu 22.04 PG${PG_RELEASE}" cleanUpWS() - installCli("deb") - unstash 'properties' popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") @@ -241,8 +228,6 @@ pipeline { steps { echo "====> Build percona_pg_telemetry deb on Ubuntu 24.04 PG${PG_RELEASE}" cleanUpWS() - installCli("deb") - unstash 'properties' popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") @@ -257,8 +242,6 @@ pipeline { steps { echo "====> Build percona_pg_telemetry deb on Debian 11 PG${PG_RELEASE}" cleanUpWS() - installCli("deb") - unstash 'properties' popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") @@ -273,8 +256,6 @@ pipeline { steps { echo "====> Build percona_pg_telemetry deb on Debian 12 PG${PG_RELEASE}" cleanUpWS() - installCli("deb") - unstash 'properties' popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") @@ -284,6 +265,12 @@ pipeline { } //stage } //parallel } //stage + stage('Sign packages') { + steps { + signRPM(params.CLOUD) + signDEB(params.CLOUD) + } + } stage('Push to public repository') { steps { // sync packages From 8c1adde6acb486ab8e5a16087b769262624df659 Mon Sep 17 00:00:00 2001 From: Surabhi Bhat Date: Mon, 17 Feb 2025 20:31:45 +0530 Subject: [PATCH 050/269] Fix issue with pg_percona_telemetry pipeline - buildStage --- ppg/pg_percona_telemetry_autobuild.groovy | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/ppg/pg_percona_telemetry_autobuild.groovy b/ppg/pg_percona_telemetry_autobuild.groovy index 5fa87c9f1e..7984b779cd 100644 --- a/ppg/pg_percona_telemetry_autobuild.groovy +++ b/ppg/pg_percona_telemetry_autobuild.groovy @@ -24,17 +24,18 @@ void installCli(String PLATFORM) { void buildStage(String DOCKER_OS, String STAGE_PARAM) { sh """ - echo "Docker: $DOCKER_OS, Release: PG$PG_RELEASE, Stage: $STAGE_PARAM" set -o xtrace - mkdir -p test - wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/main/percona-packaging/scripts/pg_percona_telemetry_builder.sh -O ppt_builder.sh || curl \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/main/percona-packaging/scripts/pg_percona_telemetry_builder.sh -o ppt_builder.sh + mkdir test + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${BRANCH}/percona-packaging/scripts/pg_percona_telemetry_builder.sh -O ppt_builder.sh pwd -P + ls -laR export build_dir=\$(pwd -P) - set -o xtrace - cd \${build_dir} - sudo bash -x ./ppt_builder.sh --builddir=\${build_dir}/test --pg_release=\${PG_RELEASE} --ppg_repo_name=\${PPG_REPO} --install_deps=1 - bash -x ./ppt_builder.sh --builddir=\${build_dir}/test --version=\${VERSION} --branch=\${BRANCH} --repo=\${GIT_REPO} --rpm_release=\${RPM_RELEASE} --deb_release=\${DEB_RELEASE} --pg_release=\${PG_RELEASE} --ppg_repo_name=\${PPG_REPO} "$STAGE_PARAM" - """ + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./ppt_builder.sh --builddir=\${build_dir}/test --pg_release=\${PG_RELEASE} --ppg_repo_name=\${PPG_REPO} --install_deps=1 + bash -x ./ppt_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --version=${VERSION} --branch=${BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} --pg_release=${PG_RELEASE} --ppg_repo_name=${PPG_REPO} ${STAGE_PARAM}" + """ } void cleanUpWS() { From dfa6789cf29556e53737d3352de78dd010b7cda1 Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Mon, 17 Feb 2025 19:09:27 +0200 Subject: [PATCH 051/269] PKG-486 mongosh: fix worker labes for Hetzner/AWS for src stage --- psmdb/jenkins/percona-mongodb-mongosh.groovy | 3 +++ 1 file changed, 3 insertions(+) diff --git a/psmdb/jenkins/percona-mongodb-mongosh.groovy b/psmdb/jenkins/percona-mongodb-mongosh.groovy index 98853aea90..8fcb96b001 100644 --- a/psmdb/jenkins/percona-mongodb-mongosh.groovy +++ b/psmdb/jenkins/percona-mongodb-mongosh.groovy @@ -74,6 +74,9 @@ pipeline { } stages { stage('Create MongoDB Shell source tarball') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } steps { slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${MONGOSH_GIT_BRANCH} - [${BUILD_URL}]") cleanUpWS() From e3369e37959358807933b69f507df5a45f460c3e Mon Sep 17 00:00:00 2001 From: Muhammad Aqeel Date: Wed, 19 Feb 2025 19:53:04 +0500 Subject: [PATCH 052/269] Updates pgpool groovy to start using docker for builds. (#3171) * Updates pgpool groovy to start using docker for builds. * Fixes PostGIS sync --- ppg/percona-postgis.groovy | 2 +- ppg/pgpool2-build.groovy | 212 +++++++++++-------------------------- 2 files changed, 61 insertions(+), 153 deletions(-) diff --git a/ppg/percona-postgis.groovy b/ppg/percona-postgis.groovy index e527d28def..f5c9c1d552 100644 --- a/ppg/percona-postgis.groovy +++ b/ppg/percona-postgis.groovy @@ -234,7 +234,7 @@ pipeline { stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(POSTGIS_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, POSTGIS_REPO, COMPONENT) } } diff --git a/ppg/pgpool2-build.groovy b/ppg/pgpool2-build.groovy index f2002958e4..070393f181 100644 --- a/ppg/pgpool2-build.groovy +++ b/ppg/pgpool2-build.groovy @@ -1,76 +1,21 @@ -/* groovylint-disable DuplicateStringLiteral, GStringExpressionWithinString, LineLength */ -library changelog: false, identifier: "lib@hetzner", retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' -]) - -void installCli(String PLATFORM) { - sh """ - set -o xtrace - if [ -d aws ]; then - rm -rf aws - fi - if [ ${PLATFORM} = "deb" ]; then - sudo apt-get update - sudo apt-get -y install wget curl unzip gnupg2 - elif [ ${PLATFORM} = "rpm" ]; then - sudo yum -y install wget curl unzip gnupg2 - fi - curl https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip -o awscliv2.zip - unzip awscliv2.zip - sudo ./aws/install || true - """ -} +]) _ void buildStage(String DOCKER_OS, String STAGE_PARAM) { sh """ - echo "Docker: $DOCKER_OS, Release: PG$PG_RELEASE, Stage: $STAGE_PARAM" set -o xtrace - mkdir -p test - wget \$(echo ${GIT_BUILD_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${BUILD_BRANCH}/pgpool2/pgpool2_builder.sh -O pg2_builder.sh || curl \$(echo ${GIT_BUILD_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${BUILD_BRANCH}/pgpool2/pgpool2_builder.sh -o pg2_builder.sh - #git clone ${GIT_BUILD_REPO} - #cd postgres-packaging - #git checkout ${BUILD_BRANCH} - #cd .. - #cp postgres-packaging/pgpool2/pgpool2_builder.sh pg2_builder.sh - if [ -f /etc/redhat-release ]; then - sudo yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm || true - else - DEBIAN_VERSION=\$(lsb_release -sc) - # sed -e '/.*backports.*/d' /etc/apt/sources.list > sources.list.new - # sudo mv -vf sources.list.new /etc/apt/sources.list - if [ \${DEBIAN_VERSION} = bionic ]; then - wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - - echo "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-11 main" | sudo tee -a /etc/apt/sources.list - fi - if [ \${DEBIAN_VERSION} = buster ]; then - sudo apt-get -y update --allow-releaseinfo-change || true - fi - until sudo apt-get update; do - sleep 30 - echo "Waiting ..." - done - until sudo apt-get -y install gpgv curl clang gnupg; do - sleep 30 - echo "Waiting ..." - done - sudo wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb - sudo dpkg -i percona-release_latest.generic_all.deb - fi - sudo percona-release enable ppg-${PG_RELEASE} release + mkdir test + wget \$(echo ${GIT_BUILD_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${BUILD_BRANCH}/pgpool2/pgpool2_builder.sh -O pgpool2_builder.sh pwd -P export build_dir=\$(pwd -P) - set -o xtrace - cd \${build_dir} - if [ -f ./test/pgpool2.properties ]; then - . ./test/pgpool2.properties - fi - sed -i "s:VERSION=\\"1.0.0:VERSION=\\"$VERSION:" pg2_builder.sh - sed -i "s:PG_RELEASE=11:PG_RELEASE=\"${PG_RELEASE}\":" pg2_builder.sh - - sudo bash -x ./pg2_builder.sh --builddir=\${build_dir}/test --install_deps=1 - bash -x ./pg2_builder.sh --builddir=\${build_dir}/test --branch=\${BRANCH} --repo=\${GIT_REPO} --pp_branch=\${BUILD_BRANCH} --pp_repo=\${GIT_BUILD_REPO} --rpm_release=\${RPM_RELEASE} --deb_release=\${DEB_RELEASE} --pg_release=\${PG_RELEASE} "$STAGE_PARAM" - """ + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./pgpool2_builder.sh --builddir=\${build_dir}/test --install_deps=1 + bash -x ./pgpool2_builder.sh --builddir=\${build_dir}/test --branch=\${BRANCH} --repo=\${GIT_REPO} --pp_branch=\${BUILD_BRANCH} --pp_repo=\${GIT_BUILD_REPO} --rpm_release=\${RPM_RELEASE} --deb_release=\${DEB_RELEASE} --pg_release=\${PG_RELEASE} $STAGE_PARAM" + """ } void cleanUpWS() { @@ -83,7 +28,7 @@ def AWS_STASH_PATH pipeline { agent { - label params.CLOUD == 'Hetzner' ? 'launcher-x64' : 'micro-amazon' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { choice( @@ -134,53 +79,42 @@ pipeline { choices: 'laboratory\ntesting\nexperimental\nrelease', description: 'Repo component to push packages to', name: 'COMPONENT') - } + } options { skipDefaultCheckout() disableConcurrentBuilds() buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) - timestamps () } stages { - stage('Download source from github') { - agent { - label 'min-focal-x64' - } + stage('Create pgpool2 source tarball') { steps { - echo '====> Source will be downloaded from github' - // slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for PG${PG_RELEASE}, repo branch: ${BRANCH} - [${BUILD_URL}]") + slackNotify("", "#00FF00", "[${JOB_NAME}]: starting build for ${BUILD_BRANCH} - [${BUILD_URL}]") cleanUpWS() - installCli("deb") - buildStage("ubuntu:focal", "--get_sources=1") - sh ''' + buildStage("oraclelinux:8", "--get_sources=1") + sh ''' REPO_UPLOAD_PATH=$(grep "UPLOAD" test/pgpool2.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") echo ${REPO_UPLOAD_PATH} > uploadPath echo ${AWS_STASH_PATH} > awsUploadPath cat test/pgpool2.properties cat uploadPath - cat awsUploadPath - ''' + ''' script { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - stash includes: 'test/pgpool2.properties', name: 'properties' pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } - } //stage + } stage('Build pgpool2 generic source packages') { parallel { - stage('Source rpm') { + stage('Build pgpool2 generic source rpm') { agent { - label 'min-ol-8-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { - echo "====> Build pgpool2 generic source rpm" cleanUpWS() - installCli("rpm") - unstash 'properties' popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") @@ -188,144 +122,117 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } - stage('Source deb') { + stage('Build pgpool2 generic source deb') { agent { - label 'min-focal-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { - echo "====> Build pgpool2 generic source deb" cleanUpWS() - installCli("deb") - unstash 'properties' popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_source_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } - } //stage + } } //parallel - } //stage - stage('Build pgpool2 RPMs') { + } // stage + stage('Build pgpool2 RPMs/DEBs/Binary tarballs') { parallel { - stage('OL 8') { + stage('Oracle Linux 8') { agent { - label 'min-ol-8-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { - echo "====> Build pgpool2 rpm on Centos 8 PG${PG_RELEASE}" cleanUpWS() - installCli("rpm") - unstash 'properties' popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } - } //stage - stage('OL 9') { + } + stage('Oracle Linux 9') { agent { - label 'min-ol-9-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { - echo "====> Build pgpool2 rpm on OL9 PG${PG_RELEASE}" cleanUpWS() - installCli("rpm") - unstash 'properties' popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } - } //stage - } //parallel - } //stage - stage('Build pgpool2 DEBs') { - parallel { - stage('Ubuntu 20.04') { + } + stage('Ubuntu Focal(20.04)') { agent { - label 'min-focal-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { - echo "====> Build pgpool2 deb on Ubuntu 20.04 PG${PG_RELEASE}" cleanUpWS() - installCli("deb") - unstash 'properties' popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } - } //stage - stage('Ubuntu 22.04') { + } + stage('Ubuntu Jammy(22.04)') { agent { - label 'min-jammy-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { - echo "====> Build pgpool2 deb on Ubuntu 22.04 PG${PG_RELEASE}" cleanUpWS() - installCli("deb") - unstash 'properties' popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } - } //stage - stage('Ubuntu 24.04') { + } + stage('Ubuntu Noble(24.04)') { agent { - label 'min-noble-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { - echo "====> Build pgpool2 deb on Ubuntu 24.04 PG${PG_RELEASE}" cleanUpWS() - installCli("deb") - unstash 'properties' popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } - } //stage - stage('Debian 11') { + } + stage('Debian Bullseye(11)') { agent { - label 'min-bullseye-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { - echo "====> Build pgpool2 deb on Debian 11 PG${PG_RELEASE}" cleanUpWS() - installCli("deb") - unstash 'properties' popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } - } //stage - stage('Debian 12') { + } + stage('Debian Bookworm(12)') { agent { - label 'min-bookworm-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { - echo "====> Build pgpool2 deb on Debian 11 PG${PG_RELEASE}" cleanUpWS() - installCli("deb") - unstash 'properties' popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } - } //stage - } //parallel - } //stage + } + } + } + stage('Sign packages') { steps { signRPM(params.CLOUD) @@ -335,27 +242,28 @@ pipeline { stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild("ppg-${PG_RELEASE}", COMPONENT) + sync2ProdAutoBuild(params.CLOUD, "ppg-${PG_RELEASE}", COMPONENT) } } - } //stages + + } post { success { -// slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for PG${PG_RELEASE}, repo branch: ${BRANCH} - [${BUILD_URL}]") - deleteDir() - echo "Success" + slackNotify("", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${BUILD_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${BUILD_BRANCH}" + } + deleteDir() } failure { -// slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for PG${PG_RELEASE}, repo branch: ${BRANCH} - [${BUILD_URL}]") - deleteDir() - echo "Failure" + slackNotify("", "#FF0000", "[${JOB_NAME}]: build failed for ${BUILD_BRANCH} - [${BUILD_URL}]") + deleteDir() } always { sh ''' sudo rm -rf ./* ''' deleteDir() - echo "Always" } } } From 199913c35a7bb9a59e74c669e21ff928ac282e21 Mon Sep 17 00:00:00 2001 From: Muhammad Aqeel Date: Thu, 20 Feb 2025 16:24:37 +0500 Subject: [PATCH 053/269] Updates pg_stat_monitor groovy to start using docker for builds. (#3174) --- ppg/pg_stat_monitor-autobuild-arm.groovy | 1 + ppg/pg_stat_monitor-autobuild.groovy | 140 +++++++---------------- 2 files changed, 45 insertions(+), 96 deletions(-) diff --git a/ppg/pg_stat_monitor-autobuild-arm.groovy b/ppg/pg_stat_monitor-autobuild-arm.groovy index 6915d244dd..4dbbe72fde 100644 --- a/ppg/pg_stat_monitor-autobuild-arm.groovy +++ b/ppg/pg_stat_monitor-autobuild-arm.groovy @@ -235,6 +235,7 @@ pipeline { stage('Sign packages') { steps { signRPM(params.CLOUD) + signDEB(params.CLOUD) } } stage('Push to public repository') { diff --git a/ppg/pg_stat_monitor-autobuild.groovy b/ppg/pg_stat_monitor-autobuild.groovy index 8363d9c75b..9fc0fbd3e0 100644 --- a/ppg/pg_stat_monitor-autobuild.groovy +++ b/ppg/pg_stat_monitor-autobuild.groovy @@ -3,38 +3,20 @@ library changelog: false, identifier: "lib@hetzner", retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) - -void installCli(String PLATFORM) { - sh """ - set -o xtrace - if [ -d aws ]; then - rm -rf aws - fi - if [ ${PLATFORM} = "deb" ]; then - sudo apt-get update - sudo apt-get -y install wget curl unzip gnupg2 - elif [ ${PLATFORM} = "rpm" ]; then - sudo yum -y install wget curl unzip gnupg2 - fi - curl https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip -o awscliv2.zip - unzip awscliv2.zip - sudo ./aws/install || true - """ -} - void buildStage(String DOCKER_OS, String STAGE_PARAM) { sh """ - echo "Docker: $DOCKER_OS, Release: PG$PG_RELEASE, Stage: $STAGE_PARAM" set -o xtrace - mkdir -p test - wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/main/percona-packaging/scripts/pg_stat_monitor_builder.sh -O psm_builder.sh || curl \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/main/percona-packaging/scripts/pg_stat_monitor_builder.sh -o psm_builder.sh + mkdir test + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/main/percona-packaging/scripts/pg_stat_monitor_builder.sh -O builder.sh pwd -P + ls -laR export build_dir=\$(pwd -P) - set -o xtrace - cd \${build_dir} - sudo bash -x ./psm_builder.sh --builddir=\${build_dir}/test --pg_release=\${PG_RELEASE} --ppg_repo_name=\${PPG_REPO} --install_deps=1 - bash -x ./psm_builder.sh --builddir=\${build_dir}/test --version=\${VERSION} --branch=\${BRANCH} --repo=\${GIT_REPO} --rpm_release=\${RPM_RELEASE} --deb_release=\${DEB_RELEASE} --pg_release=\${PG_RELEASE} --ppg_repo_name=\${PPG_REPO} "$STAGE_PARAM" - """ + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./builder.sh --builddir=\${build_dir}/test --pg_release=\${PG_RELEASE} --ppg_repo_name=\${PPG_REPO} --install_deps=1 + bash -x ./builder.sh --builddir=\${build_dir}/test --version=\${VERSION} --branch=\${BRANCH} --repo=\${GIT_REPO} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} --pg_release=\${PG_RELEASE} --ppg_repo_name=\${PPG_REPO} ${STAGE_PARAM}" + """ } void cleanUpWS() { @@ -55,7 +37,7 @@ pipeline { description: 'Cloud infra for build', name: 'CLOUD' ) string( - defaultValue: '1.0.0', + defaultValue: '2.0.0', description: 'General version of the product', name: 'VERSION' ) @@ -85,9 +67,10 @@ pipeline { choices: ['11', '12', '13', '14', '15', '16', '17'] ) string( - defaultValue: 'ppg-16.0', + defaultValue: 'ppg-16.1', description: 'PPG repo name', - name: 'PPG_REPO') + name: 'PPG_REPO' + ) choice( choices: 'laboratory\ntesting\nexperimental\nrelease', description: 'Repo component to push packages to', @@ -102,28 +85,24 @@ pipeline { stages { stage('Download source from github') { agent { - label 'min-focal-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { - echo '====> Source will be downloaded from github' - slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for PG${PG_RELEASE}, repo branch: ${BRANCH} - [${BUILD_URL}]") + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${BRANCH} - [${BUILD_URL}]") cleanUpWS() - installCli("deb") - buildStage("ubuntu:focal", "--get_sources=1") - sh ''' + buildStage("oraclelinux:8", "--get_sources=1") + sh ''' REPO_UPLOAD_PATH=$(grep "UPLOAD" test/pg-stat-monitor.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") echo ${REPO_UPLOAD_PATH} > uploadPath echo ${AWS_STASH_PATH} > awsUploadPath cat test/pg-stat-monitor.properties cat uploadPath - cat awsUploadPath - ''' + ''' script { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - stash includes: 'test/pg-stat-monitor.properties', name: 'properties' pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } @@ -132,13 +111,10 @@ pipeline { parallel { stage('Source rpm') { agent { - label 'min-ol-8-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { - echo "====> Build pg_stat_monitor generic source rpm" cleanUpWS() - installCli("rpm") - unstash 'properties' popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") @@ -146,142 +122,114 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } - stage('Source deb') { + stage('Source deb') { agent { - label 'min-focal-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { - echo "====> Build pg_stat_monitor generic source deb" cleanUpWS() - installCli("deb") - unstash 'properties' popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_source_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } - } //stage + } } //parallel } //stage stage('Build pg_stat_monitor RPMs') { parallel { - stage('OL 8') { + stage('Oracle Linux 8') { agent { - label 'min-ol-8-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { - echo "====> Build pg_stat_monitor rpm on OL 8 PG${PG_RELEASE}" cleanUpWS() - installCli("rpm") - unstash 'properties' popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } - } //stage - stage('OL 9') { + } + stage('Oracle Linux 9') { agent { - label 'min-ol-9-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { - echo "====> Build pg_stat_monitor rpm on OL 9 PG${PG_RELEASE}" cleanUpWS() - installCli("rpm") - unstash 'properties' popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } - } //stage - } //parallel - } //stage - stage('Build pg_stat_monitor DEBs') { - parallel { - stage('Ubuntu 20.04') { + } + stage('Ubuntu Focal(20.04)') { agent { - label 'min-focal-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { - echo "====> Build pg_stat_monitor deb on Ubuntu 20.04 PG${PG_RELEASE}" cleanUpWS() - installCli("deb") - unstash 'properties' popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } - } //stage - stage('Ubuntu 22.04') { + } + stage('Ubuntu Jammy(22.04)') { agent { - label 'min-jammy-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { - echo "====> Build pg_stat_monitor deb on Ubuntu 22.04 PG${PG_RELEASE}" cleanUpWS() - installCli("deb") - unstash 'properties' popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } - } //stage - stage('Ubuntu 24.04') { + } + stage('Ubuntu Noble(24.04)') { agent { - label 'min-noble-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { - echo "====> Build pg_stat_monitor deb on Ubuntu 24.04 PG${PG_RELEASE}" cleanUpWS() - installCli("deb") - unstash 'properties' popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } - } //stage - stage('Debian 11') { + } + stage('Debian Bullseye(11)') { agent { - label 'min-bullseye-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { - echo "====> Build pg_stat_monitor deb on Debian 11 PG${PG_RELEASE}" cleanUpWS() - installCli("deb") - unstash 'properties' popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } - } //stage - stage('Debian 12') { + } + stage('Debian bookworm(12)') { agent { - label 'min-bookworm-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { - echo "====> Build pg_stat_monitor deb on Debian 12 PG${PG_RELEASE}" cleanUpWS() - installCli("deb") - unstash 'properties' popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } - } //stage + } } //parallel } //stage stage('Sign packages') { @@ -299,7 +247,7 @@ pipeline { } //stages post { success { - slackNotify("#releases", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for PG${PG_RELEASE}, repo branch: ${BRANCH} - [${BUILD_URL}]") + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for PG${PG_RELEASE}, repo branch: ${BRANCH} - [${BUILD_URL}]") deleteDir() echo "Success" } From 2fbf51c3c1a6e48e13078f112e0aa43397b84fc2 Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Thu, 20 Feb 2025 23:34:59 +0200 Subject: [PATCH 054/269] PKG-303 mongosh: add info about used CLOUD to description --- psmdb/jenkins/percona-mongodb-mongosh.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/psmdb/jenkins/percona-mongodb-mongosh.groovy b/psmdb/jenkins/percona-mongodb-mongosh.groovy index 8fcb96b001..2a235638ae 100644 --- a/psmdb/jenkins/percona-mongodb-mongosh.groovy +++ b/psmdb/jenkins/percona-mongodb-mongosh.groovy @@ -301,7 +301,7 @@ pipeline { success { slackNotify("#releases", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${MONGOSH_GIT_BRANCH} - [${BUILD_URL}]") script { - currentBuild.description = "Built on ${MONGOSH_GIT_BRANCH}. Path to packages: experimental/${AWS_STASH_PATH}" + currentBuild.description = "[${CLOUD}]: Built on ${MONGOSH_GIT_BRANCH}. Path to packages: experimental/${AWS_STASH_PATH}" } deleteDir() } From 7a316afbbeaa112cd47e1af682533bcc3fe0ef69 Mon Sep 17 00:00:00 2001 From: Muhammad Aqeel Date: Fri, 21 Feb 2025 18:27:07 +0500 Subject: [PATCH 055/269] Updates ppg-docker jobs for Hetzner (#3176) * Updates ppg-docker jobs for hetzner * Adds choice parameter for cloud selection. * Updates branch name in yml file --- ppg/ppg-docker-arm.groovy | 5 +++-- ppg/ppg-docker.groovy | 5 +++-- ppg/ppg-docker.yml | 4 ++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/ppg/ppg-docker-arm.groovy b/ppg/ppg-docker-arm.groovy index cba59afad3..ee371c2646 100644 --- a/ppg/ppg-docker-arm.groovy +++ b/ppg/ppg-docker-arm.groovy @@ -1,16 +1,17 @@ -library changelog: false, identifier: "lib@master", retriever: modernSCM([ +library changelog: false, identifier: "lib@hetzner", retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) pipeline { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } environment { PATH = '/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin' } parameters { + choice(name: 'CLOUD', choices: [ 'Hetzner','AWS' ], description: 'Cloud infra for build') choice(name: 'PPG_REPO', choices: ['testing','release','experimental'], description: 'Percona-release repo') string(name: 'PPG_VERSION', defaultValue: '12.19-1', description: 'PPG version') choice(name: 'TARGET_REPO', choices: ['PerconaLab','AWS_ECR','DockerHub'], description: 'Target repo for docker image, use DockerHub for release only') diff --git a/ppg/ppg-docker.groovy b/ppg/ppg-docker.groovy index 6af0fdcd97..179af39dbb 100644 --- a/ppg/ppg-docker.groovy +++ b/ppg/ppg-docker.groovy @@ -1,16 +1,17 @@ -library changelog: false, identifier: "lib@master", retriever: modernSCM([ +library changelog: false, identifier: "lib@hetzner", retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) pipeline { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } environment { PATH = '/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin' } parameters { + choice(name: 'CLOUD', choices: [ 'Hetzner','AWS' ], description: 'Cloud infra for build') choice(name: 'PPG_REPO', choices: ['testing','release','experimental'], description: 'Percona-release repo') string(name: 'PPG_VERSION', defaultValue: '16.3-1', description: 'PPG version') choice(name: 'TARGET_REPO', choices: ['PerconaLab','AWS_ECR','DockerHub'], description: 'Target repo for docker image, use DockerHub for release only') diff --git a/ppg/ppg-docker.yml b/ppg/ppg-docker.yml index 63c482693d..a70341aa47 100644 --- a/ppg/ppg-docker.yml +++ b/ppg/ppg-docker.yml @@ -1,5 +1,5 @@ - job: - name: ppg-docker + name: hetzner-ppg-docker project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ppg/ppg-docker.groovy From 321b8ba6009d664d1b8f24b49133aa402619bb16 Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Fri, 21 Feb 2025 21:55:02 +0200 Subject: [PATCH 056/269] PKG-303 mongosh: add "retry" loop for Hetzner S3 access --- vars/popArtifactFolder.groovy | 12 +++++++----- vars/pushArtifactFolder.groovy | 14 ++++++++------ 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/vars/popArtifactFolder.groovy b/vars/popArtifactFolder.groovy index a57a94e2ff..802192c497 100644 --- a/vars/popArtifactFolder.groovy +++ b/vars/popArtifactFolder.groovy @@ -2,11 +2,13 @@ def call(String CLOUD_NAME, String FOLDER_NAME, String AWS_STASH_PATH) { String S3_STASH = (CLOUD_NAME == 'Hetzner') ? 'HTZ_STASH' : 'AWS_STASH' String S3_ENDPOINT = (CLOUD_NAME == 'Hetzner') ? '--endpoint-url https://fsn1.your-objectstorage.com' : '--endpoint-url https://s3.amazonaws.com' withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: S3_STASH, secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { - sh """ - pwd - S3_PATH=s3://percona-jenkins-artifactory/${AWS_STASH_PATH} - AWS_RETRY_MODE=standard AWS_MAX_ATTEMPTS=10 aws s3 cp --recursive \$S3_PATH/${FOLDER_NAME} ${FOLDER_NAME} ${S3_ENDPOINT} --cli-connect-timeout 60 --cli-read-timeout 120 || : - """ + retry(15) { + sh """ + pwd + S3_PATH=s3://percona-jenkins-artifactory/${AWS_STASH_PATH} + AWS_RETRY_MODE=standard AWS_MAX_ATTEMPTS=10 aws s3 cp --recursive \$S3_PATH/${FOLDER_NAME} ${FOLDER_NAME} ${S3_ENDPOINT} --cli-connect-timeout 60 --cli-read-timeout 120 || : + """ + } } } diff --git a/vars/pushArtifactFolder.groovy b/vars/pushArtifactFolder.groovy index 617e383c41..f1e8d93307 100644 --- a/vars/pushArtifactFolder.groovy +++ b/vars/pushArtifactFolder.groovy @@ -2,12 +2,14 @@ def call(String CLOUD_NAME, String FOLDER_NAME, String AWS_STASH_PATH) { String S3_STASH = (CLOUD_NAME == 'Hetzner') ? 'HTZ_STASH' : 'AWS_STASH' String S3_ENDPOINT = (CLOUD_NAME == 'Hetzner') ? '--endpoint-url https://fsn1.your-objectstorage.com' : '--endpoint-url https://s3.amazonaws.com' withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: S3_STASH, secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { - sh """ - pwd - S3_PATH=s3://percona-jenkins-artifactory/${AWS_STASH_PATH} - aws s3 ls \$S3_PATH/${FOLDER_NAME} ${S3_ENDPOINT} || : - AWS_RETRY_MODE=standard AWS_MAX_ATTEMPTS=10 aws s3 cp --recursive ${FOLDER_NAME} \$S3_PATH/${FOLDER_NAME} ${S3_ENDPOINT} --cli-connect-timeout 60 --cli-read-timeout 120 || : - """ + retry(15) { + sh """ + pwd + S3_PATH=s3://percona-jenkins-artifactory/${AWS_STASH_PATH} + aws s3 ls \$S3_PATH/${FOLDER_NAME} ${S3_ENDPOINT} || : + AWS_RETRY_MODE=standard AWS_MAX_ATTEMPTS=10 aws s3 cp --recursive ${FOLDER_NAME} \$S3_PATH/${FOLDER_NAME} ${S3_ENDPOINT} --cli-connect-timeout 60 --cli-read-timeout 120 || : + """ + } } } From d5d0a13e9254a3d79fe9d612821dd3771a9e739e Mon Sep 17 00:00:00 2001 From: Muhammad Aqeel Date: Mon, 24 Feb 2025 14:04:26 +0500 Subject: [PATCH 057/269] [PKG-483]: Updates nightly jobs for hetzner (#3178) --- ppg/pg_tde_arm_nightly.groovy | 66 +++++++++++++++------------- ppg/pg_tde_nightly.groovy | 66 +++++++++++++++------------- ppg/pg_tde_nightly.yml | 4 +- ppg/postgresql_server_nightly.groovy | 36 ++++++++------- ppg/postgresql_server_nightly.yml | 4 +- 5 files changed, 94 insertions(+), 82 deletions(-) diff --git a/ppg/pg_tde_arm_nightly.groovy b/ppg/pg_tde_arm_nightly.groovy index 7169c36783..650b42899f 100644 --- a/ppg/pg_tde_arm_nightly.groovy +++ b/ppg/pg_tde_arm_nightly.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'URL for pg_tde repository', @@ -84,36 +88,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build pg_tde generic source packages') { parallel { stage('Build pg_tde generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build pg_tde generic source deb') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -122,93 +126,93 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian bookworm(12)') { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } diff --git a/ppg/pg_tde_nightly.groovy b/ppg/pg_tde_nightly.groovy index 58c4e798de..320678e446 100644 --- a/ppg/pg_tde_nightly.groovy +++ b/ppg/pg_tde_nightly.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'URL for pg_tde repository', @@ -84,36 +88,36 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build pg_tde generic source packages') { parallel { stage('Build pg_tde generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build pg_tde generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -122,93 +126,93 @@ pipeline { parallel { stage('Oracle Linux 8') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Oracle Linux 9') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian Bullseye(11)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Debian bookworm(12)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } diff --git a/ppg/pg_tde_nightly.yml b/ppg/pg_tde_nightly.yml index ec8649cef9..09808bfeec 100644 --- a/ppg/pg_tde_nightly.yml +++ b/ppg/pg_tde_nightly.yml @@ -1,5 +1,5 @@ - job: - name: pg_tde-nightly + name: hetzner-pg_tde-nightly project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ppg/pg_tde_nightly.groovy diff --git a/ppg/postgresql_server_nightly.groovy b/ppg/postgresql_server_nightly.groovy index bc98d10cbd..ff91635703 100644 --- a/ppg/postgresql_server_nightly.groovy +++ b/ppg/postgresql_server_nightly.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: 'lib@master', retriever: modernSCM([ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) _ @@ -29,9 +29,13 @@ def AWS_STASH_PATH pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'URL for ppg-server repository', @@ -106,8 +110,8 @@ pipeline { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } stash includes: 'uploadPath', name: 'uploadPath' - pushArtifactFolder("source_tarball/", AWS_STASH_PATH) - uploadTarballfromAWS("source_tarball/", AWS_STASH_PATH, 'source') + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } stage('Build PPG-SERVER generic source packages') { @@ -117,28 +121,28 @@ pipeline { parallel { stage('Build PPG-SERVER generic source rpm') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") - pushArtifactFolder("srpm/", AWS_STASH_PATH) - uploadRPMfromAWS("srpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } stage('Build PPG-SERVER generic source deb') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") - pushArtifactFolder("source_deb/", AWS_STASH_PATH) - uploadDEBfromAWS("source_deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) } } } //parallel @@ -150,28 +154,28 @@ pipeline { parallel { stage('Oracle Linux 9') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04)') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder("deb/", AWS_STASH_PATH) - uploadDEBfromAWS("deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } diff --git a/ppg/postgresql_server_nightly.yml b/ppg/postgresql_server_nightly.yml index 5182d83774..f9d623b8e0 100644 --- a/ppg/postgresql_server_nightly.yml +++ b/ppg/postgresql_server_nightly.yml @@ -1,5 +1,5 @@ - job: - name: postgresql-server-nightly + name: hetzner-postgresql-server-nightly project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ppg/postgresql_server_nightly.groovy From 36c115ecb18ca6448b8153f1fc20624638166f5c Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Mon, 24 Feb 2025 13:26:22 +0200 Subject: [PATCH 058/269] PKG-483 ppg: add missing param to uploadPGTarballfromAWS func --- vars/uploadPGTarballfromAWS.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vars/uploadPGTarballfromAWS.groovy b/vars/uploadPGTarballfromAWS.groovy index 1aebf4b6fa..0404c4d781 100644 --- a/vars/uploadPGTarballfromAWS.groovy +++ b/vars/uploadPGTarballfromAWS.groovy @@ -1,4 +1,4 @@ -def call(String CLOUD_NAME, String FOLDER_NAME, String AWS_STASH_PATH, String TarballType) { +def call(String CLOUD_NAME, String FOLDER_NAME, String AWS_STASH_PATH, String TarballType, String PRODUCT_VERSION) { def nodeLabel = (CLOUD_NAME == 'Hetzner') ? 'launcher-x64' : 'micro-amazon' node(nodeLabel) { deleteDir() From 72f39243523d59d6e95ba1517fd1ca637fc629d8 Mon Sep 17 00:00:00 2001 From: Muhammad Aqeel Date: Mon, 3 Mar 2025 15:07:25 +0500 Subject: [PATCH 059/269] Hetzner (#3194) * [PKG-373]: Integrate docker build stage into build pipelines. * [PKG-373]: fixes dockerfile path. --- pbm/jenkins/percona-mongodb-backup.groovy | 70 ++++++++++++++++ proxysql/proxysql.groovy | 69 +++++++++++++++ .../percona-server-for-mongodb-6.0.groovy | 67 +++++++++++++++ .../percona-server-for-mongodb-7.0.groovy | 70 ++++++++++++++++ .../percona-server-for-mongodb-8.0.groovy | 70 +++++++++++++++- pt/jenkins/percona-toolkit.groovy | 69 +++++++++++++++ pxb/jenkins/pxb-80.groovy | 83 +++++++++++++++++++ 7 files changed, 497 insertions(+), 1 deletion(-) diff --git a/pbm/jenkins/percona-mongodb-backup.groovy b/pbm/jenkins/percona-mongodb-backup.groovy index 857e47d9f7..87a167d342 100644 --- a/pbm/jenkins/percona-mongodb-backup.groovy +++ b/pbm/jenkins/percona-mongodb-backup.groovy @@ -338,7 +338,77 @@ pipeline { sync2ProdAutoBuild(params.CLOUD, PBM_REPO, COMPONENT) } } + stage('Build docker containers') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + script { + echo "====> Build docker containers" + cleanUpWS() + sh ''' + sleep 1200 + ''' + unstash 'uploadPath' + sh ''' + sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common + sudo apt-get install -y docker.io + sudo systemctl status docker + sudo apt-get install -y qemu binfmt-support qemu-user-static + sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + git clone https://github.com/percona/percona-docker + cd percona-docker/percona-backup-mongodb + sed -i "s/ENV PBM_VERSION.*/ENV PBM_VERSION ${VERSION}-${RPM_RELEASE}/g" Dockerfile + sed -i "s/ENV PBM_REPO_CH.*/ENV PBM_REPO_CH ${COMPONENT}/g" Dockerfile + sudo docker build --no-cache --platform "linux/amd64" -t perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE} . + + sed -i "s/ENV PBM_VERSION.*/ENV PBM_VERSION ${VERSION}-${RPM_RELEASE}/g" Dockerfile.aarch64 + sed -i "s/ENV PBM_REPO_CH.*/ENV PBM_REPO_CH ${COMPONENT}/g" Dockerfile.aarch64 + sudo docker build --no-cache -t perconalab/percona-server-mongodb:percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-aarch64 --platform="linux/arm64" -f Dockerfile.aarch64 . + + sudo docker images + ''' + withCredentials([ + usernamePassword(credentialsId: 'hub.docker.com', + passwordVariable: 'PASS', + usernameVariable: 'USER' + )]) { + sh ''' + echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin + sudo docker push perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE} + sudo docker push perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-aarch64 + PBM_MAJOR_VERSION=$(echo $VERSION | cut -d'.' -f1) + PBM_MINOR_VERSION=$(echo $VERSION | cut -d'.' -f2) + PBM_PATCH_VERSION=$(echo $VERSION | cut -d'.' -f3) + sudo docker manifest create perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION}.${PBM_MINOR_VERSION}.${PBM_PATCH_VERSION} \ + perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE} \ + perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-aarch64 + sudo docker manifest annotate perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION}.${PBM_MINOR_VERSION}.${PBM_PATCH_VERSION} perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-aarch64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION}.${PBM_MINOR_VERSION}.${PBM_PATCH_VERSION} perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE} --os linux --arch amd64 + sudo docker manifest inspect perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION}.${PBM_MINOR_VERSION}.${PBM_PATCH_VERSION} + sudo docker manifest create perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION}.${PBM_MINOR_VERSION} \ + perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE} \ + perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-aarch64 + sudo docker manifest annotate perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION}.${PBM_MINOR_VERSION} perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-aarch64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION}.${PBM_MINOR_VERSION} perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE} --os linux --arch amd64 + sudo docker manifest inspect perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION}.${PBM_MINOR_VERSION} + + sudo docker manifest create perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION} \ + perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE} \ + perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-aarch64 + sudo docker manifest annotate perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION} perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-aarch64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION} perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE} --os linux --arch amd64 + sudo docker manifest inspect perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION} + + sudo docker manifest push perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION}.${PBM_MINOR_VERSION}.${PBM_PATCH_VERSION} + sudo docker manifest push perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION}.${PBM_MINOR_VERSION} + sudo docker manifest push perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION} + ''' + } + } + } + } } post { success { diff --git a/proxysql/proxysql.groovy b/proxysql/proxysql.groovy index 5afb27774c..e98300670c 100644 --- a/proxysql/proxysql.groovy +++ b/proxysql/proxysql.groovy @@ -365,7 +365,76 @@ pipeline { sync2ProdAutoBuild(PROXYSQL_DEST_REPO, COMPONENT) } } + stage('Build docker containers') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + script { + echo "====> Build docker containers" + cleanUpWS() + sh ''' + sleep 1200 + ''' + unstash 'uploadPath' + sh ''' + sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common + sudo apt-get install -y docker.io + sudo systemctl status docker + sudo apt-get install -y qemu binfmt-support qemu-user-static + sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + git clone https://github.com/percona/percona-docker + cd percona-docker/proxysql + sed -i "s/ENV PROXYSQL_VERSION.*/ENV PROXYSQL_VERSION ${VERSION}-${RPM_RELEASE}/g" Dockerfile + sed -i "s/enable proxysql testing/enable proxysql ${COMPONENT}/g" Dockerfile + sudo docker build --no-cache --platform "linux/amd64" -t perconalab/proxysql:${VERSION}-${RPM_RELEASE} . + + sudo docker build --no-cache -t perconalab/proxysql:${VERSION}-${RPM_RELEASE}-aarch64 --platform="linux/arm64" -f Dockerfile . + + sudo docker images + ''' + withCredentials([ + usernamePassword(credentialsId: 'hub.docker.com', + passwordVariable: 'PASS', + usernameVariable: 'USER' + )]) { + sh ''' + echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin + sudo docker push perconalab/proxysql:${VERSION}-${RPM_RELEASE} + sudo docker push perconalab/proxysql:${VERSION}-${RPM_RELEASE}-aarch64 + + PROXYSQL_MAJOR_VERSION=$(echo $VERSION | cut -d'.' -f1) + PROXYSQL_MINOR_VERSION=$(echo $VERSION | cut -d'.' -f2) + PROXYSQL_PATCH_VERSION=$(echo $VERSION | cut -d'.' -f3) + sudo docker manifest create perconalab/proxysql:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION}.${PROXYSQL_PATCH_VERSION} \ + perconalab/proxysql:${VERSION}-${RPM_RELEASE} \ + perconalab/proxysql:${VERSION}-${RPM_RELEASE}-aarch64 + sudo docker manifest annotate perconalab/proxysql:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION}.${PROXYSQL_PATCH_VERSION} perconalab/proxysql:${VERSION}-${RPM_RELEASE}-aarch64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate perconalab/proxysql:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION}.${PROXYSQL_PATCH_VERSION} perconalab/proxysql:${VERSION}-${RPM_RELEASE} --os linux --arch amd64 + sudo docker manifest inspect perconalab/proxysql:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION}.${PROXYSQL_PATCH_VERSION} + sudo docker manifest create perconalab/proxysql:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION} \ + perconalab/proxysql:${VERSION}-${RPM_RELEASE} \ + perconalab/proxysql:${VERSION}-${RPM_RELEASE}-aarch64 + sudo docker manifest annotate perconalab/proxysql:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION} perconalab/proxysql:${VERSION}-${RPM_RELEASE}-aarch64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate perconalab/proxysql:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION} perconalab/proxysql:${VERSION}-${RPM_RELEASE} --os linux --arch amd64 + sudo docker manifest inspect perconalab/proxysql:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION} + + sudo docker manifest create perconalab/proxysql:${PROXYSQL_MAJOR_VERSION} \ + perconalab/proxysql:${VERSION}-${RPM_RELEASE} \ + perconalab/proxysql:${VERSION}-${RPM_RELEASE}-aarch64 + sudo docker manifest annotate perconalab/proxysql:${PROXYSQL_MAJOR_VERSION} perconalab/proxysql:${VERSION}-${RPM_RELEASE}-aarch64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate perconalab/proxysql:${PROXYSQL_MAJOR_VERSION} perconalab/proxysql:${VERSION}-${RPM_RELEASE} --os linux --arch amd64 + sudo docker manifest inspect perconalab/proxysql:${PROXYSQL_MAJOR_VERSION} + + sudo docker manifest push perconalab/proxysql:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION}.${PROXYSQL_PATCH_VERSION} + sudo docker manifest push perconalab/proxysql:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION} + sudo docker manifest push perconalab/proxysql:${PROXYSQL_MAJOR_VERSION} + ''' + } + } + } + } } post { success { diff --git a/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy index 1cf04aa783..5045e63ff5 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy @@ -538,7 +538,74 @@ pipeline { } } } + stage('Build docker containers') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + script { + if (env.FIPSMODE == 'YES') { + echo "The step is skipped" + } else { + echo "====> Build docker containers" + cleanUpWS() + sh ''' + sleep 1200 + ''' + unstash 'uploadPath' + sh ''' + sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common + sudo apt-get install -y docker.io + sudo systemctl status docker + sudo apt-get install -y qemu binfmt-support qemu-user-static + sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + git clone https://github.com/percona/percona-docker + cd percona-docker/percona-server-mongodb-6.0 + sed -i "s/ENV PSMDB_VERSION.*/ENV PSMDB_VERSION ${PSMDB_VERSION}-${PSMDB_RELEASE}/g" Dockerfile + sed -i "s/ENV PSMDB_REPO.*/ENV PSMDB_REPO ${COMPONENT}/g" Dockerfile + sudo docker build --no-cache --platform "linux/amd64" -t perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} . + + sed -i "s/ENV PSMDB_VERSION.*/ENV PSMDB_VERSION ${PSMDB_VERSION}-${PSMDB_RELEASE}/g" Dockerfile.aarch64 + sed -i "s/ENV PSMDB_REPO.*/ENV PSMDB_REPO ${COMPONENT}/g" Dockerfile.aarch64 + sudo docker build --no-cache -t perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 --platform="linux/arm64" -f Dockerfile.aarch64 . + sudo docker images + ''' + withCredentials([ + usernamePassword(credentialsId: 'hub.docker.com', + passwordVariable: 'PASS', + usernameVariable: 'USER' + )]) { + sh ''' + echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin + sudo docker push perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} + sudo docker push perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 + + PSMDB_MAJOR_VERSION=$(echo $PSMDB_VERSION | cut -d'.' -f1) + PSMDB_MINOR_VERSION=$(echo $PSMDB_VERSION | cut -d'.' -f2) + PSMDB_PATCH_VERSION=$(echo $PSMDB_VERSION | cut -d'.' -f3) + sudo docker manifest create perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} \ + perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} \ + perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 + sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} --os linux --arch amd64 + sudo docker manifest inspect perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} + + sudo docker manifest create perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} \ + perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} \ + perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 + sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} --os linux --arch amd64 + sudo docker manifest inspect perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} + + sudo docker manifest push perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} + sudo docker manifest push perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} + ''' + } + } + } + } + } } post { success { diff --git a/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy index 875680d072..73f1a86b24 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy @@ -572,6 +572,76 @@ pipeline { } } + stage('Build docker containers') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + script { + if (env.FIPSMODE == 'YES') { + echo "The step is skipped" + } else { + echo "====> Build docker containers" + cleanUpWS() + sh ''' + sleep 1200 + ''' + unstash 'uploadPath' + sh ''' + sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common + sudo apt-get install -y docker.io + sudo systemctl status docker + sudo apt-get install -y qemu binfmt-support qemu-user-static + sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + git clone https://github.com/percona/percona-docker + cd percona-docker/percona-server-mongodb-7.0 + sed -i "s/ENV PSMDB_VERSION.*/ENV PSMDB_VERSION ${PSMDB_VERSION}-${PSMDB_RELEASE}/g" Dockerfile + sed -i "s/ENV PSMDB_REPO.*/ENV PSMDB_REPO ${COMPONENT}/g" Dockerfile + sudo docker build --no-cache --platform "linux/amd64" -t perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} . + + sed -i "s/ENV PSMDB_VERSION.*/ENV PSMDB_VERSION ${PSMDB_VERSION}-${PSMDB_RELEASE}/g" Dockerfile.aarch64 + sed -i "s/ENV PSMDB_REPO.*/ENV PSMDB_REPO ${COMPONENT}/g" Dockerfile.aarch64 + sudo docker build --no-cache -t perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 --platform="linux/arm64" -f Dockerfile.aarch64 . + + sudo docker images + ''' + withCredentials([ + usernamePassword(credentialsId: 'hub.docker.com', + passwordVariable: 'PASS', + usernameVariable: 'USER' + )]) { + sh ''' + echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin + sudo docker push perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} + sudo docker push perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 + + PSMDB_MAJOR_VERSION=$(echo $PSMDB_VERSION | cut -d'.' -f1) + PSMDB_MINOR_VERSION=$(echo $PSMDB_VERSION | cut -d'.' -f2) + PSMDB_PATCH_VERSION=$(echo $PSMDB_VERSION | cut -d'.' -f3) + sudo docker manifest create perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} \ + perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} \ + perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 + sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} --os linux --arch amd64 + sudo docker manifest inspect perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} + + sudo docker manifest create perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} \ + perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} \ + perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 + sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} --os linux --arch amd64 + sudo docker manifest inspect perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} + + sudo docker manifest push perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} + sudo docker manifest push perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} + + ''' + } + } + } + } + } + } post { success { diff --git a/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy index 1a6e43ba36..a01f477996 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy @@ -541,7 +541,75 @@ pipeline { } } } + stage('Build docker containers') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + script { + if (env.FIPSMODE == 'YES') { + echo "The step is skipped" + } else { + echo "====> Build docker containers" + cleanUpWS() + sh ''' + sleep 1200 + ''' + unstash 'uploadPath' + sh ''' + sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common + sudo apt-get install -y docker.io + sudo systemctl status docker + sudo apt-get install -y qemu binfmt-support qemu-user-static + sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + git clone https://github.com/percona/percona-docker + cd percona-docker/percona-server-mongodb-8.0 + sed -i "s/ENV PSMDB_VERSION.*/ENV PSMDB_VERSION ${PSMDB_VERSION}-${PSMDB_RELEASE}/g" Dockerfile + sed -i "s/ENV PSMDB_REPO.*/ENV PSMDB_REPO ${COMPONENT}/g" Dockerfile + sudo docker build --no-cache --platform "linux/amd64" -t perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} . + + sed -i "s/ENV PSMDB_VERSION.*/ENV PSMDB_VERSION ${PSMDB_VERSION}-${PSMDB_RELEASE}/g" Dockerfile.aarch64 + sed -i "s/ENV PSMDB_REPO.*/ENV PSMDB_REPO ${COMPONENT}/g" Dockerfile.aarch64 + sudo docker build --no-cache -t perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 --platform="linux/arm64" -f Dockerfile.aarch64 . + + sudo docker images + ''' + withCredentials([ + usernamePassword(credentialsId: 'hub.docker.com', + passwordVariable: 'PASS', + usernameVariable: 'USER' + )]) { + sh ''' + echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin + sudo docker push perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} + sudo docker push perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 + PSMDB_MAJOR_VERSION=$(echo $PSMDB_VERSION | cut -d'.' -f1) + PSMDB_MINOR_VERSION=$(echo $PSMDB_VERSION | cut -d'.' -f2) + PSMDB_PATCH_VERSION=$(echo $PSMDB_VERSION | cut -d'.' -f3) + sudo docker manifest create perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} \ + perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} \ + perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 + sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} --os linux --arch amd64 + sudo docker manifest inspect perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} + + sudo docker manifest create perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} \ + perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} \ + perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 + sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} --os linux --arch amd64 + sudo docker manifest inspect perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} + + sudo docker manifest push perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} + sudo docker manifest push perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} + + ''' + } + } + } + } + } } post { success { @@ -566,4 +634,4 @@ pipeline { deleteDir() } } -} \ No newline at end of file +} diff --git a/pt/jenkins/percona-toolkit.groovy b/pt/jenkins/percona-toolkit.groovy index c74f18ef62..5bd55832ee 100644 --- a/pt/jenkins/percona-toolkit.groovy +++ b/pt/jenkins/percona-toolkit.groovy @@ -334,7 +334,76 @@ pipeline { sync2ProdAutoBuild(PT_REPO, COMPONENT) } } + stage('Build docker containers') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + script { + echo "====> Build docker containers" + cleanUpWS() + sh ''' + sleep 1200 + ''' + unstash 'uploadPath' + sh ''' + sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common + sudo apt-get install -y docker.io + sudo systemctl status docker + sudo apt-get install -y qemu binfmt-support qemu-user-static + sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + git clone https://github.com/percona/percona-docker + cd percona-docker/percona-toolkit + sed -i "s/ENV PT_VERSION.*/ENV PT_VERSION ${VERSION}-${RPM_RELEASE}/g" Dockerfile + sed -i "s/pt release/pt ${COMPONENT}/g" Dockerfile + sudo docker build --no-cache --platform "linux/amd64" -t perconalab/percona-toolkit:${VERSION}-${RPM_RELEASE} . + + sudo docker build --no-cache -t perconalab/percona-toolkit:${VERSION}-${RPM_RELEASE}-aarch64 --platform="linux/arm64" -f Dockerfile . + + sudo docker images + ''' + withCredentials([ + usernamePassword(credentialsId: 'hub.docker.com', + passwordVariable: 'PASS', + usernameVariable: 'USER' + )]) { + sh ''' + echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin + sudo docker push perconalab/percona-toolkit:${VERSION}-${RPM_RELEASE} + sudo docker push perconalab/percona-toolkit:${VERSION}-${RPM_RELEASE}-aarch64 + + PT_MAJOR_VERSION=$(echo $VERSION | cut -d'.' -f1) + PT_MINOR_VERSION=$(echo $VERSION | cut -d'.' -f2) + PT_PATCH_VERSION=$(echo $VERSION | cut -d'.' -f3) + sudo docker manifest create perconalab/percona-toolkit:${PT_MAJOR_VERSION}.${PT_MINOR_VERSION}.${PT_PATCH_VERSION} \ + perconalab/percona-toolkit:${VERSION}-${RPM_RELEASE} \ + perconalab/percona-toolkit:${VERSION}-${RPM_RELEASE}-aarch64 + sudo docker manifest annotate perconalab/percona-toolkit:${PT_MAJOR_VERSION}.${PT_MINOR_VERSION}.${PT_PATCH_VERSION} perconalab/percona-toolkit:${VERSION}-${RPM_RELEASE}-aarch64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate perconalab/percona-toolkit:${PT_MAJOR_VERSION}.${PT_MINOR_VERSION}.${PT_PATCH_VERSION} perconalab/percona-toolkit:${VERSION}-${RPM_RELEASE} --os linux --arch amd64 + sudo docker manifest inspect perconalab/percona-toolkit:${PT_MAJOR_VERSION}.${PT_MINOR_VERSION}.${PT_PATCH_VERSION} + sudo docker manifest create perconalab/percona-toolkit:${PT_MAJOR_VERSION}.${PT_MINOR_VERSION} \ + perconalab/percona-toolkit:${VERSION}-${RPM_RELEASE} \ + perconalab/percona-toolkit:${VERSION}-${RPM_RELEASE}-aarch64 + sudo docker manifest annotate perconalab/percona-toolkit:${PT_MAJOR_VERSION}.${PT_MINOR_VERSION} perconalab/percona-toolkit:${VERSION}-${RPM_RELEASE}-aarch64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate perconalab/percona-toolkit:${PT_MAJOR_VERSION}.${PT_MINOR_VERSION} perconalab/percona-toolkit:${VERSION}-${RPM_RELEASE} --os linux --arch amd64 + sudo docker manifest inspect perconalab/percona-toolkit:${PT_MAJOR_VERSION}.${PT_MINOR_VERSION} + + sudo docker manifest create perconalab/percona-toolkit:${PT_MAJOR_VERSION} \ + perconalab/percona-toolkit:${VERSION}-${RPM_RELEASE} \ + perconalab/percona-toolkit:${VERSION}-${RPM_RELEASE}-aarch64 + sudo docker manifest annotate perconalab/percona-toolkit:${PT_MAJOR_VERSION} perconalab/percona-toolkit:${VERSION}-${RPM_RELEASE}-aarch64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate perconalab/percona-toolkit:${PT_MAJOR_VERSION} perconalab/percona-toolkit:${VERSION}-${RPM_RELEASE} --os linux --arch amd64 + sudo docker manifest inspect perconalab/percona-toolkit:${PT_MAJOR_VERSION} + + sudo docker manifest push perconalab/percona-toolkit:${PT_MAJOR_VERSION}.${PT_MINOR_VERSION}.${PT_PATCH_VERSION} + sudo docker manifest push perconalab/percona-toolkit:${PT_MAJOR_VERSION}.${PT_MINOR_VERSION} + sudo docker manifest push perconalab/percona-toolkit:${PT_MAJOR_VERSION} + ''' + } + } + } + } } post { success { diff --git a/pxb/jenkins/pxb-80.groovy b/pxb/jenkins/pxb-80.groovy index 4523e374ad..de23d5c066 100644 --- a/pxb/jenkins/pxb-80.groovy +++ b/pxb/jenkins/pxb-80.groovy @@ -706,6 +706,89 @@ pipeline { } } } + stage('Build docker containers') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + script { + if (env.FIPSMODE == 'YES') { + echo "The step is skipped" + } else { + echo "====> Build docker containers" + cleanUpWS() + sh ''' + sleep 1200 + ''' + unstash 'uploadPath' + sh ''' + sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common + sudo apt-get install -y docker.io + sudo systemctl status docker + sudo apt-get install -y qemu binfmt-support qemu-user-static + sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + curl -O https://raw.githubusercontent.com/percona/percona-xtrabackup/${BRANCH}/MYSQL_VERSION + . ./MYSQL_VERSION + XB_VERSION_MAJOR = sh(returnStdout: true, script: "grep 'XB_VERSION_MAJOR' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 ").trim() + XB_VERSION_MINOR = sh(returnStdout: true, script: "grep 'XB_VERSION_MINOR' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 ").trim() + XB_VERSION_PATCH = sh(returnStdout: true, script: "grep 'XB_VERSION_PATCH' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 ").trim() + XB_VERSION_EXTRA = sh(returnStdout: true, script: "grep 'XB_VERSION_EXTRA' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 | sed 's/-//g'").trim() + XB_REVISION = sh(returnStdout: true, script: "grep 'REVISION' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 ").trim() + PXB_RELEASE_VERSION = sh(returnStdout: true, script: """ echo ${BRANCH} | sed -nE '/release-(8\\.[0-9]{1})\\..*/s//\\1/p' """).trim() + git clone https://github.com/percona/percona-docker + cd percona-docker/percona-xtrabackup-8.0 + sed -i "s/ENV XTRABACKUP_VERSION.*/ENV XTRABACKUP_VERSION ${PXB_RELEASE_VERSION}/g" Dockerfile + sed -i "s/ENV PS_VERSION.*/ENV PS_VERSION ${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}/g" Dockerfile + sed -i "s/pxb-80 testing/pxb-80 ${COMPONENT}/g" Dockerfile + sudo docker build --no-cache --platform "linux/amd64" -t perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION} . + + sed -i "s/ENV XTRABACKUP_VERSION.*/ENV XTRABACKUP_VERSION ${PXB_RELEASE_VERSION}/g" Dockerfile.aarch64 + sed -i "s/ENV PS_VERSION.*/ENV PS_VERSION ${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}/g" Dockerfile.aarch64 + sed -i "s/pxb-80 testing/pxb-80 ${COMPONENT}/g" Dockerfile.aarch64 + sudo docker build --no-cache -t perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION}-aarch64 --platform="linux/arm64" -f Dockerfile.aarch64 . + + sudo docker images + ''' + withCredentials([ + usernamePassword(credentialsId: 'hub.docker.com', + passwordVariable: 'PASS', + usernameVariable: 'USER' + )]) { + sh ''' + echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin + #curl -O https://raw.githubusercontent.com/percona/percona-xtrabackup/${BRANCH}/MYSQL_VERSION + #. ./MYSQL_VERSION + XB_VERSION_MAJOR = sh(returnStdout: true, script: "grep 'XB_VERSION_MAJOR' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 ").trim() + XB_VERSION_MINOR = sh(returnStdout: true, script: "grep 'XB_VERSION_MINOR' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 ").trim() + XB_VERSION_PATCH = sh(returnStdout: true, script: "grep 'XB_VERSION_PATCH' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 ").trim() + XB_VERSION_EXTRA = sh(returnStdout: true, script: "grep 'XB_VERSION_EXTRA' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 | sed 's/-//g'").trim() + XB_REVISION = sh(returnStdout: true, script: "grep 'REVISION' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 ").trim() + PXB_RELEASE_VERSION = sh(returnStdout: true, script: """ echo ${BRANCH} | sed -nE '/release-(8\\.[0-9]{1})\\..*/s//\\1/p' """).trim() + sudo docker push perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION} + sudo docker push perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION}-aarch64 + + sudo docker manifest create perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH} \ + perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION} \ + perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION}-aarch64 + sudo docker manifest annotate perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH} perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION}-aarch64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH} perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION} --os linux --arch amd64 + sudo docker manifest inspect perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH} + + sudo docker manifest create perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR} \ + perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION} \ + perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION}-aarch64 + sudo docker manifest annotate perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR} perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION}-aarch64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR} perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION} --os linux --arch amd64 + sudo docker manifest inspect perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR} + + sudo docker manifest push perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH} + sudo docker manifest push perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR} + ''' + } + } + } + } + } } post { success { From c9e676244cd3191a136256971929da03bb56c886 Mon Sep 17 00:00:00 2001 From: Muhammad Aqeel Date: Mon, 3 Mar 2025 16:49:50 +0500 Subject: [PATCH 060/269] ProxySQL job was not properly migrated to Hetzner. (#3195) --- proxysql/proxysql.groovy | 42 ++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/proxysql/proxysql.groovy b/proxysql/proxysql.groovy index e98300670c..0e763acc50 100644 --- a/proxysql/proxysql.groovy +++ b/proxysql/proxysql.groovy @@ -117,7 +117,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("centos:7", "--build_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) @@ -130,7 +130,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) @@ -147,7 +147,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -160,7 +160,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -173,7 +173,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -186,7 +186,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -199,7 +199,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -212,7 +212,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -225,7 +225,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -238,7 +238,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -251,7 +251,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -264,7 +264,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -277,7 +277,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -290,7 +290,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -303,7 +303,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -316,7 +316,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -329,7 +329,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_tarball=1") pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) @@ -342,7 +342,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_tarball=1") pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) @@ -355,14 +355,14 @@ pipeline { stage('Sign packages') { steps { - signRPM() - signDEB() + signRPM(params.CLOUD) + signDEB(params.CLOUD) } } stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(PROXYSQL_DEST_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PROXYSQL_DEST_REPO, COMPONENT) } } stage('Build docker containers') { From c0547126d4f543c2b5dfe010dfc9f5a4f90bcffd Mon Sep 17 00:00:00 2001 From: Muhammad Aqeel Date: Tue, 4 Mar 2025 19:32:15 +0500 Subject: [PATCH 061/269] [PKG-373]: Fixes qemu installation issue. (#3196) --- pbm/jenkins/percona-mongodb-backup.groovy | 2 +- proxysql/proxysql.groovy | 2 +- psmdb/jenkins/percona-server-for-mongodb-6.0.groovy | 2 +- psmdb/jenkins/percona-server-for-mongodb-7.0.groovy | 2 +- psmdb/jenkins/percona-server-for-mongodb-8.0.groovy | 2 +- pt/jenkins/percona-toolkit.groovy | 2 +- pxb/jenkins/pxb-80.groovy | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/pbm/jenkins/percona-mongodb-backup.groovy b/pbm/jenkins/percona-mongodb-backup.groovy index 87a167d342..56b8159e28 100644 --- a/pbm/jenkins/percona-mongodb-backup.groovy +++ b/pbm/jenkins/percona-mongodb-backup.groovy @@ -354,7 +354,7 @@ pipeline { sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common sudo apt-get install -y docker.io sudo systemctl status docker - sudo apt-get install -y qemu binfmt-support qemu-user-static + sudo apt-get install -y qemu-system binfmt-support qemu-user-static sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes git clone https://github.com/percona/percona-docker cd percona-docker/percona-backup-mongodb diff --git a/proxysql/proxysql.groovy b/proxysql/proxysql.groovy index 0e763acc50..9db09f767b 100644 --- a/proxysql/proxysql.groovy +++ b/proxysql/proxysql.groovy @@ -381,7 +381,7 @@ pipeline { sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common sudo apt-get install -y docker.io sudo systemctl status docker - sudo apt-get install -y qemu binfmt-support qemu-user-static + sudo apt-get install -y qemu-system binfmt-support qemu-user-static sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes git clone https://github.com/percona/percona-docker cd percona-docker/proxysql diff --git a/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy index 5045e63ff5..b647058f2e 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy @@ -557,7 +557,7 @@ pipeline { sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common sudo apt-get install -y docker.io sudo systemctl status docker - sudo apt-get install -y qemu binfmt-support qemu-user-static + sudo apt-get install -y qemu-system binfmt-support qemu-user-static sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes git clone https://github.com/percona/percona-docker cd percona-docker/percona-server-mongodb-6.0 diff --git a/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy index 73f1a86b24..bfa7eeacff 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy @@ -591,7 +591,7 @@ pipeline { sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common sudo apt-get install -y docker.io sudo systemctl status docker - sudo apt-get install -y qemu binfmt-support qemu-user-static + sudo apt-get install -y qemu-system binfmt-support qemu-user-static sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes git clone https://github.com/percona/percona-docker cd percona-docker/percona-server-mongodb-7.0 diff --git a/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy index a01f477996..c88737dab3 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy @@ -560,7 +560,7 @@ pipeline { sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common sudo apt-get install -y docker.io sudo systemctl status docker - sudo apt-get install -y qemu binfmt-support qemu-user-static + sudo apt-get install -y qemu-system binfmt-support qemu-user-static sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes git clone https://github.com/percona/percona-docker cd percona-docker/percona-server-mongodb-8.0 diff --git a/pt/jenkins/percona-toolkit.groovy b/pt/jenkins/percona-toolkit.groovy index 5bd55832ee..5d4bcbf979 100644 --- a/pt/jenkins/percona-toolkit.groovy +++ b/pt/jenkins/percona-toolkit.groovy @@ -350,7 +350,7 @@ pipeline { sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common sudo apt-get install -y docker.io sudo systemctl status docker - sudo apt-get install -y qemu binfmt-support qemu-user-static + sudo apt-get install -y qemu-system binfmt-support qemu-user-static sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes git clone https://github.com/percona/percona-docker cd percona-docker/percona-toolkit diff --git a/pxb/jenkins/pxb-80.groovy b/pxb/jenkins/pxb-80.groovy index de23d5c066..51dc9c3293 100644 --- a/pxb/jenkins/pxb-80.groovy +++ b/pxb/jenkins/pxb-80.groovy @@ -725,7 +725,7 @@ pipeline { sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common sudo apt-get install -y docker.io sudo systemctl status docker - sudo apt-get install -y qemu binfmt-support qemu-user-static + sudo apt-get install -y qemu-system binfmt-support qemu-user-static sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes curl -O https://raw.githubusercontent.com/percona/percona-xtrabackup/${BRANCH}/MYSQL_VERSION . ./MYSQL_VERSION From 5570222cbeec8be3f41c709204b8a771f5a35f8b Mon Sep 17 00:00:00 2001 From: Surabhi Bhat Date: Thu, 6 Mar 2025 12:19:11 +0530 Subject: [PATCH 062/269] update percona-telemetry-agent script --- .../percona-telemetry-agent.groovy | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/percona-telemetry-agent/percona-telemetry-agent.groovy b/percona-telemetry-agent/percona-telemetry-agent.groovy index 559a7ba0c9..3f4d542654 100644 --- a/percona-telemetry-agent/percona-telemetry-agent.groovy +++ b/percona-telemetry-agent/percona-telemetry-agent.groovy @@ -100,7 +100,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) @@ -113,7 +113,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("debian:buster", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) @@ -130,7 +130,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -143,7 +143,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -156,7 +156,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -169,7 +169,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -182,7 +182,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("amazonlinux:2023", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -195,7 +195,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("amazonlinux:2023", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -208,7 +208,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -221,7 +221,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -234,7 +234,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -247,7 +247,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -260,7 +260,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -273,7 +273,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -286,7 +286,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -299,7 +299,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -312,7 +312,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -325,7 +325,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) From 5d9f7574b2663d1bc8257789da156b83498fe2e5 Mon Sep 17 00:00:00 2001 From: Surabhi Bhat Date: Mon, 10 Mar 2025 12:06:09 +0530 Subject: [PATCH 063/269] Update percona-telemetry-agent groovy script --- percona-telemetry-agent/percona-telemetry-agent.groovy | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/percona-telemetry-agent/percona-telemetry-agent.groovy b/percona-telemetry-agent/percona-telemetry-agent.groovy index 3f4d542654..dded936315 100644 --- a/percona-telemetry-agent/percona-telemetry-agent.groovy +++ b/percona-telemetry-agent/percona-telemetry-agent.groovy @@ -337,14 +337,14 @@ pipeline { stage('Sign packages') { steps { - signRPM() - signDEB() + signRPM(params.CLOUD) + signDEB(params.CLOUD) } } stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(PTA_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PTA_REPO, COMPONENT) } } From 9baa76bb27cc9cf499df20e0aa43b94f62b14e3d Mon Sep 17 00:00:00 2001 From: Muhammad Aqeel Date: Mon, 10 Mar 2025 14:22:43 +0500 Subject: [PATCH 064/269] [PG-1424]: Temporarily updates default branch to release-17.4 for nightly builds. (#3206) --- ppg/postgresql_server_nightly.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ppg/postgresql_server_nightly.groovy b/ppg/postgresql_server_nightly.groovy index ff91635703..197f5e0c36 100644 --- a/ppg/postgresql_server_nightly.groovy +++ b/ppg/postgresql_server_nightly.groovy @@ -41,7 +41,7 @@ pipeline { description: 'URL for ppg-server repository', name: 'GIT_REPO') string( - defaultValue: 'TDE_REL_17_STABLE', + defaultValue: 'release-17.4', description: 'Tag/Branch for postgresql', name: 'PG_BRANCH') string( From 6032e6934667f5fd0ce8216e7bcae3e9071f9c8f Mon Sep 17 00:00:00 2001 From: Muhammad Aqeel Date: Mon, 10 Mar 2025 15:40:20 +0500 Subject: [PATCH 065/269] [PG-1424]: Updates default branch of packaging. (#3207) --- ppg/postgresql_server_nightly.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ppg/postgresql_server_nightly.groovy b/ppg/postgresql_server_nightly.groovy index 197f5e0c36..0b2e9dec1a 100644 --- a/ppg/postgresql_server_nightly.groovy +++ b/ppg/postgresql_server_nightly.groovy @@ -45,7 +45,7 @@ pipeline { description: 'Tag/Branch for postgresql', name: 'PG_BRANCH') string( - defaultValue: '17.0', + defaultValue: '17.4', description: 'Tag/Branch for ppg-server repository', name: 'GIT_BRANCH') string( From 85a3568394b11219697b4d71c2ee87083ac044c8 Mon Sep 17 00:00:00 2001 From: Vadim Yalovets Date: Mon, 10 Mar 2025 18:18:52 +0200 Subject: [PATCH 066/269] PKG-484 PS jobs Hetzner migration fixing and validation (#3209) --- ...percona-server-for-mysql-8.0-docker.groovy | 417 ++++++++++++++++++ .../percona-server-for-mysql-8.0-docker.yml | 14 + .../percona-server-for-mysql-8.0.groovy | 303 +++++++------ pxb/jenkins/pxb-80.groovy | 224 ++++------ pxc/jenkins/percona-xtradb-cluster-8.0.groovy | 161 ++++--- vars/uploadTarballToDownloadsTesting.groovy | 31 +- 6 files changed, 808 insertions(+), 342 deletions(-) create mode 100644 ps/jenkins/percona-server-for-mysql-8.0-docker.groovy create mode 100644 ps/jenkins/percona-server-for-mysql-8.0-docker.yml diff --git a/ps/jenkins/percona-server-for-mysql-8.0-docker.groovy b/ps/jenkins/percona-server-for-mysql-8.0-docker.groovy new file mode 100644 index 0000000000..2dd948a992 --- /dev/null +++ b/ps/jenkins/percona-server-for-mysql-8.0-docker.groovy @@ -0,0 +1,417 @@ +/* groovylint-disable DuplicateStringLiteral, GStringExpressionWithinString, LineLength */ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +import groovy.transform.Field + +void installCli(String PLATFORM) { + sh """ + if [ \${CLOUD} = "AWS" ]; then + set -o xtrace + if [ -d aws ]; then + rm -rf aws + fi + if [ ${PLATFORM} = "deb" ]; then + sudo apt-get update + sudo apt-get -y install wget curl unzip + elif [ ${PLATFORM} = "rpm" ]; then + export RHVER=\$(rpm --eval %rhel) + if [ \${RHVER} = "7" ]; then + sudo sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* || true + sudo sed -i 's|#\\s*baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* || true + if [ -e "/etc/yum.repos.d/CentOS-SCLo-scl.repo" ]; then + cat /etc/yum.repos.d/CentOS-SCLo-scl.repo + fi + fi + sudo yum -y install wget curl unzip + fi + curl https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip -o awscliv2.zip + unzip awscliv2.zip + sudo ./aws/install || true + fi + """ +} + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + withCredentials([string(credentialsId: 'GITHUB_API_TOKEN', variable: 'TOKEN')]) { + sh """ + set -o xtrace + mkdir -p test + if [ \${FIPSMODE} = "YES" ]; then + MYSQL_VERSION_MINOR=\$(curl -s -O \$(echo \${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/\${BRANCH}/MYSQL_VERSION && grep MYSQL_VERSION_MINOR MYSQL_VERSION | awk -F= '{print \$2}') + if [ \${MYSQL_VERSION_MINOR} = "0" ]; then + PRO_BRANCH="8.0" + elif [ \${MYSQL_VERSION_MINOR} = "4" ]; then + PRO_BRANCH="8.4" + else + PRO_BRANCH="trunk" + fi + curl -L -H "Authorization: Bearer \${TOKEN}" \ + -H "Accept: application/vnd.github.v3.raw" \ + -o ps_builder.sh \ + "https://api.github.com/repos/percona/percona-server-private-build/contents/build-ps/percona-server-8.0_builder.sh?ref=\${PRO_BRANCH}" + sed -i 's|percona-server-server/usr|percona-server-server-pro/usr|g' ps_builder.sh + sed -i 's|dbg-package=percona-server-dbg|dbg-package=percona-server-pro-dbg|g' ps_builder.sh + else + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${BRANCH}/build-ps/percona-server-8.0_builder.sh -O ps_builder.sh || curl \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${BRANCH}/build-ps/percona-server-8.0_builder.sh -o ps_builder.sh + fi + grep "percona-server-server" ps_builder.sh + export build_dir=\$(pwd -P) + if [ "$DOCKER_OS" = "none" ]; then + set -o xtrace + cd \${build_dir} + if [ \${FIPSMODE} = "YES" ]; then + git clone --depth 1 --branch \${PRO_BRANCH} https://x-access-token:${TOKEN}@github.com/percona/percona-server-private-build.git percona-server-private-build + mv -f \${build_dir}/percona-server-private-build/build-ps \${build_dir}/test/. + fi + if [ -f ./test/percona-server-8.0.properties ]; then + . ./test/percona-server-8.0.properties + fi + sudo bash -x ./ps_builder.sh --builddir=\${build_dir}/test --install_deps=1 + if [ ${BUILD_TOKUDB_TOKUBACKUP} = "ON" ]; then + bash -x ./ps_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --branch=${BRANCH} --build_tokudb_tokubackup=1 --perconaft_branch=${PERCONAFT_BRANCH} --tokubackup_branch=${TOKUBACKUP_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM} + else + bash -x ./ps_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --branch=${BRANCH} --perconaft_branch=${PERCONAFT_BRANCH} --tokubackup_branch=${TOKUBACKUP_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM} + fi + else + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + if [ \${FIPSMODE} = "YES" ]; then + git clone --depth 1 --branch \${PRO_BRANCH} https://x-access-token:${TOKEN}@github.com/percona/percona-server-private-build.git percona-server-private-build + mv -f \${build_dir}/percona-server-private-build/build-ps \${build_dir}/test/. + fi + if [ -f ./test/percona-server-8.0.properties ]; then + . ./test/percona-server-8.0.properties + fi + bash -x ./ps_builder.sh --builddir=\${build_dir}/test --install_deps=1 + if [ ${BUILD_TOKUDB_TOKUBACKUP} = \"ON\" ]; then + bash -x ./ps_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --branch=${BRANCH} --build_tokudb_tokubackup=1 --perconaft_branch=${PERCONAFT_BRANCH} --tokubackup_branch=${TOKUBACKUP_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM} + else + bash -x ./ps_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --branch=${BRANCH} --perconaft_branch=${PERCONAFT_BRANCH} --tokubackup_branch=${TOKUBACKUP_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM} + fi" + fi + """ + } +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def installDependencies(def nodeName) { + def aptNodes = ['min-bullseye-x64', 'min-bookworm-x64', 'min-focal-x64', 'min-jammy-x64', 'min-noble-x64'] + def yumNodes = ['min-ol-8-x64', 'min-centos-7-x64', 'min-ol-9-x64', 'min-amazon-2-x64'] + try{ + if (aptNodes.contains(nodeName)) { + if(nodeName == "min-bullseye-x64" || nodeName == "min-bookworm-x64"){ + sh ''' + sudo apt-get update + sudo apt-get install -y ansible git wget + ''' + }else if(nodeName == "min-focal-x64" || nodeName == "min-jammy-x64" || nodeName == "min-noble-x64"){ + sh ''' + sudo apt-get update + sudo apt-get install -y software-properties-common + sudo apt-add-repository --yes --update ppa:ansible/ansible + sudo apt-get install -y ansible git wget + ''' + }else { + error "Node Not Listed in APT" + } + } else if (yumNodes.contains(nodeName)) { + + if(nodeName == "min-centos-7-x64" || nodeName == "min-ol-9-x64"){ + sh ''' + sudo yum install -y epel-release + sudo yum -y update + sudo yum install -y ansible git wget tar + ''' + }else if(nodeName == "min-ol-8-x64"){ + sh ''' + sudo yum install -y epel-release + sudo yum -y update + sudo yum install -y ansible-2.9.27 git wget tar + ''' + }else if(nodeName == "min-amazon-2-x64"){ + sh ''' + sudo amazon-linux-extras install epel + sudo yum -y update + sudo yum install -y ansible git wget + ''' + } + else { + error "Node Not Listed in YUM" + } + } else { + echo "Unexpected node name: ${nodeName}" + } + } catch (Exception e) { + slackNotify("${SLACKNOTIFY}", "#FF0000", "[${JOB_NAME}]: Server Provision for Mini Package Testing for ${nodeName} at ${BRANCH} FAILED !!") + } + +} + +def runPlaybook(def nodeName) { + + try { + def playbook = "ps_lts_innovation.yml" + def playbook_path = "package-testing/playbooks/${playbook}" + + sh ''' + set -xe + git clone --depth 1 https://github.com/Percona-QA/package-testing + ''' + sh """ + set -xe + export install_repo="\${install_repo}" + export client_to_test="ps80" + export check_warning="\${check_warnings}" + export install_mysql_shell="\${install_mysql_shell}" + ansible-playbook \ + --connection=local \ + --inventory 127.0.0.1, \ + --limit 127.0.0.1 \ + ${playbook_path} + """ + } catch (Exception e) { + slackNotify("${SLACKNOTIFY}", "#FF0000", "[${JOB_NAME}]: Mini Package Testing for ${nodeName} at ${BRANCH} FAILED !!!") + mini_test_error="True" + } +} + +def minitestNodes = [ "min-bullseye-x64", + "min-bookworm-x64", + "min-centos-7-x64", + "min-ol-8-x64", + "min-focal-x64", + "min-amazon-2-x64", + "min-jammy-x64", + "min-noble-x64", + "min-ol-9-x64" ] + +def package_tests_ps80(def nodes) { + def stepsForParallel = [:] + for (int i = 0; i < nodes.size(); i++) { + def nodeName = nodes[i] + stepsForParallel[nodeName] = { + stage("Minitest run on ${nodeName}") { + node(nodeName) { + installDependencies(nodeName) + runPlaybook(nodeName) + } + } + } + } + parallel stepsForParallel +} + +@Field def mini_test_error = "False" +def AWS_STASH_PATH +def PS8_RELEASE_VERSION +def product_to_test = 'innovation-lts' +def install_repo = 'testing' +def action_to_test = 'install' +def check_warnings = 'yes' +def install_mysql_shell = 'no' + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } +parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string(defaultValue: 'release-8.0.28-19', description: 'Tag/Branch for percona-server repository', name: 'BRANCH') + string(defaultValue: '1', description: 'RPM version', name: 'RPM_RELEASE') + string(defaultValue: '1', description: 'DEB version', name: 'DEB_RELEASE') + choice( + choices: 'NO\nYES', + description: 'Enable fipsmode', + name: 'FIPSMODE') + choice( + choices: 'testing\nexperimental\nrelease', + description: 'Repo component to push packages to', + name: 'COMPONENT') + choice( + choices: '#releases-ci\n#releases', + description: 'Channel for notifications', + name: 'SLACKNOTIFY') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + timestamps () + } + stages { + + stage('Build docker containers') { + agent { + label 'launcher-x64' + } + steps { + script { + if (env.FIPSMODE == 'YES') { + echo "The step is skipped" + } else { + echo "====> Build docker container" + sh ''' + PS_RELEASE=$(echo ${BRANCH} | sed 's/release-//g') + PS_MAJOR_RELEASE=$(echo ${BRANCH} | sed "s/release-//g" | sed "s/\\.//g" | awk '{print substr($0, 0, 2)}') + if [ ${PS_MAJOR_RELEASE} != "80" ]; then + MYSQL_SHELL_RELEASE=$(echo ${BRANCH} | sed 's/release-//g' | awk '{print substr($0, 0, 6)}' | sed 's/-//g') + MYSQL_ROUTER_RELEASE=$(echo ${BRANCH} | sed 's/release-//g' | awk '{print substr($0, 0, 6)}' | sed 's/-//g') + else + MYSQL_SHELL_RELEASE=$(echo ${BRANCH} | sed 's/release-//g' | awk '{print substr($0, 0, 7)}' | sed 's/-//g') + MYSQL_ROUTER_RELEASE=$(echo ${BRANCH} | sed 's/release-//g' | awk '{print substr($0, 0, 7)}' | sed 's/-//g') + fi + sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor + sudo apt-get install -y docker-ce docker-ce-cli containerd.io + export DOCKER_CLI_EXPERIMENTAL=enabled + sudo mkdir -p /usr/libexec/docker/cli-plugins/ + sudo curl -L https://github.com/docker/buildx/releases/download/v0.21.2/buildx-v0.21.2.linux-amd64 -o /usr/libexec/docker/cli-plugins/docker-buildx + sudo chmod +x /usr/libexec/docker/cli-plugins/docker-buildx + sudo systemctl restart docker + sudo apt-get install -y qemu-system binfmt-support qemu-user-static + sudo qemu-system-x86_64 --version + sudo lscpu | grep -q 'sse4_2' && grep -q 'popcnt' /proc/cpuinfo && echo "Supports x86-64-v2" || echo "Does NOT support x86-64-v2" + sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + git clone https://github.com/percona/percona-docker + cd percona-docker/percona-server-8.0 + sed -i "s/ENV PS_VERSION.*/ENV PS_VERSION ${PS_RELEASE}.${RPM_RELEASE}/g" Dockerfile + sed -i "s/ENV PS_TELEMETRY_VERSION.*/ENV PS_TELEMETRY_VERSION ${PS_RELEASE}-${RPM_RELEASE}/g" Dockerfile + if [ ${PS_MAJOR_RELEASE} != "80" ]; then + sed -i "s/ENV MYSQL_SHELL_VERSION.*/ENV MYSQL_SHELL_VERSION ${MYSQL_SHELL_RELEASE}-${RPM_RELEASE}/g" Dockerfile + fi + sed -i "s/ENV PS_REPO .*/ENV PS_REPO testing/g" Dockerfile + if [ ${PS_MAJOR_RELEASE} != "80" ]; then + if [ ${PS_MAJOR_RELEASE} = "84" ]; then + sed -i "s/percona-release enable ps-80/percona-release enable ps-84-lts/g" Dockerfile + else + sed -i "s/percona-release enable ps-80/percona-release enable ps-8x-innovation/g" Dockerfile + fi + sed -i "s/percona-release enable mysql-shell/PS_REPO=\"testing\";percona-release enable mysql-shell/g" Dockerfile + fi + sed -i "s/ENV PS_VERSION.*/ENV PS_VERSION ${PS_RELEASE}.${RPM_RELEASE}/g" Dockerfile.aarch64 + sed -i "s/ENV PS_TELEMETRY_VERSION.*/ENV PS_TELEMETRY_VERSION ${PS_RELEASE}-${RPM_RELEASE}/g" Dockerfile.aarch64 + sed -i "s/ENV PS_REPO .*/ENV PS_REPO testing/g" Dockerfile.aarch64 + if [ ${PS_MAJOR_RELEASE} != "80" ]; then + if [ ${PS_MAJOR_RELEASE} = "84" ]; then + sed -i "s/percona-release enable ps-80/percona-release enable ps-84-lts/g" Dockerfile.aarch64 + else + sed -i "s/percona-release enable ps-80/percona-release enable ps-8x-innovation/g" Dockerfile.aarch64 + fi + sed -i "s/percona-release enable mysql-shell/PS_REPO=\"testing\";percona-release enable mysql-shell/g" Dockerfile.aarch64 + fi + sudo docker build -t perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64 --progress plain --platform="linux/amd64" . + sudo docker buildx build --platform linux/arm64 -t perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-arm64 --load -f Dockerfile.aarch64 . + cd ../mysql-router + sed -i "s/ENV ROUTE_VERSION.*/ENV ROUTE_VERSION ${PS_RELEASE}.${RPM_RELEASE}/g" Dockerfile + sed -i "s/ENV MYSQL_SHELL_VERSION.*/ENV MYSQL_SHELL_VERSION ${MYSQL_SHELL_RELEASE}-${RPM_RELEASE}/g" Dockerfile + if [ ${PS_MAJOR_RELEASE} != "80" ]; then + if [ ${PS_MAJOR_RELEASE} = "84" ]; then + sed -i "s/percona-release enable ps-80 testing/percona-release enable ps-84-lts testing/g" Dockerfile + else + sed -i "s/percona-release enable ps-80 testing/percona-release enable ps-8x-innovation testing/g" Dockerfile + fi + fi + sudo docker build -t perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE}-amd64 --platform="linux/amd64" . + sudo docker build -t perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE}-arm64 --platform="linux/arm64" . + sudo docker tag perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE}-amd64 perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE} + sudo docker images + ''' + withCredentials([ + usernamePassword(credentialsId: 'hub.docker.com', + passwordVariable: 'PASS', + usernameVariable: 'USER' + )]) { + sh ''' + echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin + PS_RELEASE=$(echo ${BRANCH} | sed 's/release-//g') + PS_MAJOR_RELEASE=$(echo ${BRANCH} | sed "s/release-//g" | awk '{print substr($0, 0, 3)}') + if [ ${PS_MAJOR_RELEASE} != "80" ]; then + MYSQL_ROUTER_RELEASE=$(echo ${BRANCH} | sed 's/release-//g' | awk '{print substr($0, 0, 6)}' | sed 's/-//g') + else + MYSQL_ROUTER_RELEASE=$(echo ${BRANCH} | sed 's/release-//g' | awk '{print substr($0, 0, 7)}' | sed 's/-//g') + fi + sudo docker tag perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64 perconalab/percona-server:${PS_RELEASE}-amd64 + sudo docker push perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64 + sudo docker push perconalab/percona-server:${PS_RELEASE}-amd64 + sudo docker tag perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-arm64 perconalab/percona-server:${PS_RELEASE}-arm64 + sudo docker push perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-arm64 + sudo docker push perconalab/percona-server:${PS_RELEASE}-arm64 + sudo docker tag perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE} perconalab/percona-mysql-router:${PS_MAJOR_RELEASE} + sudo docker push perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE}-amd64 + sudo docker push perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE}-arm64 + sudo docker push perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE} + sudo docker push perconalab/percona-mysql-router:${PS_MAJOR_RELEASE} + ''' + } + sh ''' + PS_RELEASE=$(echo ${BRANCH} | sed 's/release-//g') + sudo docker manifest create perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} \ + perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64 \ + perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-arm64 + sudo docker manifest annotate perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-arm64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64 --os linux --arch amd64 + sudo docker manifest inspect perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} + ''' + withCredentials([ + usernamePassword(credentialsId: 'hub.docker.com', + passwordVariable: 'PASS', + usernameVariable: 'USER' + )]) { + sh ''' + PS_RELEASE=$(echo ${BRANCH} | sed 's/release-//g') + PS_MAJOR_RELEASE=$(echo ${BRANCH} | sed "s/release-//g" | sed "s/\\.//g" | awk '{print substr($0, 0, 2)}') + echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin + PS_RELEASE=$(echo ${BRANCH} | sed 's/release-//g') + sudo docker manifest push perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} + sudo docker buildx imagetools create -t perconalab/percona-server:${PS_RELEASE} perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} + sudo docker buildx imagetools create -t perconalab/percona-server:${PS_MAJOR_RELEASE} perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} + ''' + } + } + } + } + } + } + post { + success { + script { + if (env.FIPSMODE == 'YES') { + slackNotify("${SLACKNOTIFY}", "#00FF00", "[${JOB_NAME}]: PRO build has been finished successfully for ${BRANCH} - [${BUILD_URL}]") + } else { + slackNotify("${SLACKNOTIFY}", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${BRANCH} - [${BUILD_URL}]") + } + } + slackNotify("${SLACKNOTIFY}", "#00FF00", "[${JOB_NAME}]: Triggering Builds for Package Testing for ${BRANCH} - [${BUILD_URL}]") + unstash 'properties' + deleteDir() + } + failure { + slackNotify("${SLACKNOTIFY}", "#FF0000", "[${JOB_NAME}]: build failed for ${BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${BRANCH}" + } + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/ps/jenkins/percona-server-for-mysql-8.0-docker.yml b/ps/jenkins/percona-server-for-mysql-8.0-docker.yml new file mode 100644 index 0000000000..ee817071b1 --- /dev/null +++ b/ps/jenkins/percona-server-for-mysql-8.0-docker.yml @@ -0,0 +1,14 @@ +- job: + name: hetzner-ps8.0-docker-build + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/adivinho/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ps/jenkins/percona-server-for-mysql-8.0-docker.groovy diff --git a/ps/jenkins/percona-server-for-mysql-8.0.groovy b/ps/jenkins/percona-server-for-mysql-8.0.groovy index 0d0caada64..d1508d1b76 100644 --- a/ps/jenkins/percona-server-for-mysql-8.0.groovy +++ b/ps/jenkins/percona-server-for-mysql-8.0.groovy @@ -8,27 +8,29 @@ import groovy.transform.Field void installCli(String PLATFORM) { sh """ - set -o xtrace - if [ -d aws ]; then - rm -rf aws - fi - if [ ${PLATFORM} = "deb" ]; then - sudo apt-get update - sudo apt-get -y install wget curl unzip - elif [ ${PLATFORM} = "rpm" ]; then - export RHVER=\$(rpm --eval %rhel) - if [ \${RHVER} = "7" ]; then - sudo sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* || true - sudo sed -i 's|#\\s*baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* || true - if [ -e "/etc/yum.repos.d/CentOS-SCLo-scl.repo" ]; then - cat /etc/yum.repos.d/CentOS-SCLo-scl.repo + if [ \${CLOUD} = "AWS" ]; then + set -o xtrace + if [ -d aws ]; then + rm -rf aws + fi + if [ ${PLATFORM} = "deb" ]; then + sudo apt-get update + sudo apt-get -y install wget curl unzip + elif [ ${PLATFORM} = "rpm" ]; then + export RHVER=\$(rpm --eval %rhel) + if [ \${RHVER} = "7" ]; then + sudo sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* || true + sudo sed -i 's|#\\s*baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* || true + if [ -e "/etc/yum.repos.d/CentOS-SCLo-scl.repo" ]; then + cat /etc/yum.repos.d/CentOS-SCLo-scl.repo + fi fi + sudo yum -y install wget curl unzip fi - sudo yum -y install wget curl unzip - fi - curl https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip -o awscliv2.zip - unzip awscliv2.zip - sudo ./aws/install || true + curl https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip -o awscliv2.zip + unzip awscliv2.zip + sudo ./aws/install || true + fi """ } @@ -60,6 +62,10 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { if [ "$DOCKER_OS" = "none" ]; then set -o xtrace cd \${build_dir} + if [ \${FIPSMODE} = "YES" ]; then + git clone --depth 1 --branch \${PRO_BRANCH} https://x-access-token:${TOKEN}@github.com/percona/percona-server-private-build.git percona-server-private-build + mv -f \${build_dir}/percona-server-private-build/build-ps \${build_dir}/test/. + fi if [ -f ./test/percona-server-8.0.properties ]; then . ./test/percona-server-8.0.properties fi @@ -265,7 +271,7 @@ parameters { stage('Create PS source tarball') { agent { - label 'min-focal-x64' + label params.CLOUD == 'Hetzner' ? 'deb12-x64' : 'min-focal-x64' } steps { slackNotify("${SLACKNOTIFY}", "#00FF00", "[${JOB_NAME}]: starting build for ${BRANCH} - [${BUILD_URL}]") @@ -300,18 +306,18 @@ parameters { parallel { stage('Build PS generic source rpm') { agent { - label 'min-centos-7-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { - buildStage("none", "--build_src_rpm=1 --enable_fipsmode=1") + buildStage("centos:7", "--build_src_rpm=1 --enable_fipsmode=1") } else { - buildStage("none", "--build_src_rpm=1") + buildStage("centos:7", "--build_src_rpm=1") } } @@ -321,18 +327,18 @@ parameters { } stage('Build PS generic source deb') { agent { - label 'min-buster-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { - buildStage("none", "--build_source_deb=1 --enable_fipsmode=1") + buildStage("debian:buster", "--build_source_deb=1 --enable_fipsmode=1") } else { - buildStage("none", "--build_source_deb=1") + buildStage("debian:buster", "--build_source_deb=1") } } @@ -346,7 +352,7 @@ parameters { parallel { stage('Centos 7') { agent { - label 'min-centos-7-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -356,8 +362,8 @@ parameters { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("srpm/", AWS_STASH_PATH) - buildStage("none", "--build_rpm=1") + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("centos:7", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } @@ -366,7 +372,7 @@ parameters { } stage('Oracle Linux 8') { agent { - label 'min-ol-8-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -376,8 +382,8 @@ parameters { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("srpm/", AWS_STASH_PATH) - buildStage("none", "--build_rpm=1") + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } @@ -396,7 +402,7 @@ parameters { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("centos:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -406,18 +412,18 @@ parameters { } stage('Oracle Linux 9') { agent { - label 'min-ol-9-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { - buildStage("none", "--build_rpm=1 --with_zenfs=1 --enable_fipsmode=1") + buildStage("oraclelinux:9", "--build_rpm=1 --with_zenfs=1 --enable_fipsmode=1") } else { - buildStage("none", "--build_rpm=1 --with_zenfs=1") + buildStage("oraclelinux:9", "--build_rpm=1 --with_zenfs=1") } } @@ -432,7 +438,7 @@ parameters { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { buildStage("oraclelinux:9", "--build_rpm=1 --enable_fipsmode=1") @@ -444,29 +450,49 @@ parameters { pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } -/* stage('Amazon Linux 2023') { + stage('Amazon Linux 2023') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { - cleanUpWS() - installCli("rpm") - unstash 'properties' - popArtifactFolder("srpm/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'YES') { - buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") + if (env.FIPSMODE == 'NO') { + echo "The step is skipped" } else { - buildStage("amazonlinux:2023", "--build_rpm=1 --with_zenfs=1") + cleanUpWS() + installCli("rpm") + unstash 'properties' + popArtifactFolder("srpm/", AWS_STASH_PATH) + buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + } + } + stage('Amazon Linux 2023 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + script { + if (env.FIPSMODE == 'NO') { + echo "The step is skipped" + } else { + cleanUpWS() + installCli("rpm") + unstash 'properties' + popArtifactFolder("srpm/", AWS_STASH_PATH) + buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") - pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } } - }*/ + } stage('Ubuntu Focal(20.04)') { agent { - label 'min-focal-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -476,8 +502,8 @@ parameters { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) - buildStage("none", "--build_deb=1 --with_zenfs=1") + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1 --with_zenfs=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } @@ -486,18 +512,18 @@ parameters { } stage('Ubuntu Jammy(22.04)') { agent { - label 'min-jammy-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { - buildStage("none", "--build_deb=1 --with_zenfs=1 --enable_fipsmode=1") + buildStage("ubuntu:jammy", "--build_deb=1 --with_zenfs=1 --enable_fipsmode=1") } else { - buildStage("none", "--build_deb=1 --with_zenfs=1") + buildStage("ubuntu:jammy", "--build_deb=1 --with_zenfs=1") } } @@ -506,18 +532,18 @@ parameters { } stage('Ubuntu Noble(24.04)') { agent { - label 'min-noble-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { - buildStage("none", "--build_deb=1 --with_zenfs=1 --enable_fipsmode=1") + buildStage("ubuntu:noble", "--build_deb=1 --with_zenfs=1 --enable_fipsmode=1") } else { - buildStage("none", "--build_deb=1 --with_zenfs=1") + buildStage("ubuntu:noble", "--build_deb=1 --with_zenfs=1") } } @@ -526,7 +552,7 @@ parameters { } stage('Debian Bullseye(11)') { agent { - label 'min-bullseye-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -536,8 +562,8 @@ parameters { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) - buildStage("none", "--build_deb=1 --with_zenfs=1") + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1 --with_zenfs=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } @@ -546,18 +572,18 @@ parameters { } stage('Debian Bookworm(12)') { agent { - label 'min-bookworm-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { - buildStage("none", "--build_deb=1 --with_zenfs=1 --enable_fipsmode=1") + buildStage("debian:bookworm", "--build_deb=1 --with_zenfs=1 --enable_fipsmode=1") } else { - buildStage("none", "--build_deb=1 --with_zenfs=1") + buildStage("debian:bookworm", "--build_deb=1 --with_zenfs=1") } } @@ -576,7 +602,7 @@ parameters { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1 --with_zenfs=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -592,7 +618,7 @@ parameters { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { buildStage("ubuntu:jammy", "--build_deb=1 --with_zenfs=1 --enable_fipsmode=1") @@ -612,7 +638,7 @@ parameters { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { buildStage("ubuntu:noble", "--build_deb=1 --with_zenfs=1 --enable_fipsmode=1") @@ -636,7 +662,7 @@ parameters { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1 --with_zenfs=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -652,7 +678,7 @@ parameters { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { buildStage("debian:bookworm", "--build_deb=1 --with_zenfs=1 --enable_fipsmode=1") @@ -666,7 +692,7 @@ parameters { } stage('Centos 7 binary tarball') { agent { - label 'min-centos-7-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -676,8 +702,8 @@ parameters { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) - buildStage("none", "--build_tarball=1") + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("centos:7", "--build_tarball=1") pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } @@ -686,7 +712,7 @@ parameters { } stage('Centos 7 debug tarball') { agent { - label 'min-centos-7-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -696,8 +722,8 @@ parameters { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) - buildStage("none", "--debug=1 --build_tarball=1") + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("centos:7", "--debug=1 --build_tarball=1") pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } @@ -706,7 +732,7 @@ parameters { } stage('Oracle Linux 8 binary tarball') { agent { - label 'min-ol-8-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -716,8 +742,8 @@ parameters { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) - buildStage("none", "--build_tarball=1") + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_tarball=1") pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } @@ -726,7 +752,7 @@ parameters { } stage('Oracle Linux 8 debug tarball') { agent { - label 'min-ol-8-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -736,8 +762,8 @@ parameters { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) - buildStage("none", "--debug=1 --build_tarball=1") + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--debug=1 --build_tarball=1") pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } @@ -746,18 +772,18 @@ parameters { } stage('Oracle Linux 9 tarball') { agent { - label 'min-ol-9-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { - buildStage("none", "--build_tarball=1 --enable_fipsmode=1") + buildStage("oraclelinux:9", "--build_tarball=1 --enable_fipsmode=1") } else { - buildStage("none", "--build_tarball=1") + buildStage("oraclelinux:9", "--build_tarball=1") } } @@ -766,18 +792,18 @@ parameters { } stage('Oracle Linux 9 ZenFS tarball') { agent { - label 'min-ol-9-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { echo "The step is skipped" } else { - buildStage("none", "--build_tarball=1 --with_zenfs=1") + buildStage("oraclelinux:9", "--build_tarball=1 --with_zenfs=1") pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } @@ -785,18 +811,18 @@ parameters { } stage('Oracle Linux 9 debug tarball') { agent { - label 'min-ol-9-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { - buildStage("none", "--debug=1 --build_tarball=1 --enable_fipsmode=1") + buildStage("oraclelinux:9", "--debug=1 --build_tarball=1 --enable_fipsmode=1") } else { - buildStage("none", "--debug=1 --build_tarball=1") + buildStage("oraclelinux:9", "--debug=1 --build_tarball=1") } } @@ -805,7 +831,7 @@ parameters { } stage('Ubuntu Focal(20.04) tarball') { agent { - label 'min-focal-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -815,8 +841,8 @@ parameters { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) - buildStage("none", "--build_tarball=1") + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_tarball=1") pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } @@ -825,7 +851,7 @@ parameters { } stage('Ubuntu Focal(20.04) debug tarball') { agent { - label 'min-focal-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -835,8 +861,8 @@ parameters { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) - buildStage("none", "--debug=1 --build_tarball=1") + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--debug=1 --build_tarball=1") pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } @@ -845,18 +871,18 @@ parameters { } stage('Ubuntu Jammy(22.04) tarball') { agent { - label 'min-jammy-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { - buildStage("none", "--build_tarball=1 --enable_fipsmode=1") + buildStage("ubuntu:jammy", "--build_tarball=1 --enable_fipsmode=1") } else { - buildStage("none", "--build_tarball=1") + buildStage("ubuntu:jammy", "--build_tarball=1") } } @@ -865,18 +891,18 @@ parameters { } stage('Ubuntu Jammy(22.04) ZenFS tarball') { agent { - label 'min-jammy-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { echo "The step is skipped" } else { - buildStage("none", "--build_tarball=1 --with_zenfs=1") + buildStage("ubuntu:jammy", "--build_tarball=1 --with_zenfs=1") pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } @@ -884,18 +910,18 @@ parameters { } stage('Ubuntu Jammy(22.04) debug tarball') { agent { - label 'min-jammy-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { - buildStage("none", "--debug=1 --build_tarball=1 --enable_fipsmode=1") + buildStage("ubuntu:jammy", "--debug=1 --build_tarball=1 --enable_fipsmode=1") } else { - buildStage("none", "--debug=1 --build_tarball=1") + buildStage("ubuntu:jammy", "--debug=1 --build_tarball=1") } } @@ -906,7 +932,7 @@ parameters { } stage('Upload packages and tarballs from S3') { agent { - label 'min-jammy-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -934,22 +960,22 @@ parameters { // sync packages if ("${MYSQL_VERSION_MINOR}" == "0") { if (env.FIPSMODE == 'YES') { - sync2PrivateProdAutoBuild("ps-80-pro", COMPONENT) + sync2PrivateProdAutoBuild(params.CLOUD, "ps-80-pro", COMPONENT) } else { - sync2ProdAutoBuild("ps-80", COMPONENT) + sync2ProdAutoBuild(params.CLOUD, "ps-80", COMPONENT) } } else { if (env.FIPSMODE == 'YES') { if ("${MYSQL_VERSION_MINOR}" == "4") { - sync2PrivateProdAutoBuild("ps-84-pro", COMPONENT) + sync2PrivateProdAutoBuild(params.CLOUD, "ps-84-pro", COMPONENT) } else { - sync2PrivateProdAutoBuild("ps-8x-innovation-pro", COMPONENT) + sync2PrivateProdAutoBuild(params.CLOUD, "ps-8x-innovation-pro", COMPONENT) } } else { if ("${MYSQL_VERSION_MINOR}" == "4") { - sync2ProdAutoBuild("ps-84-lts", COMPONENT) + sync2ProdAutoBuild(params.CLOUD, "ps-84-lts", COMPONENT) } else { - sync2ProdAutoBuild("ps-8x-innovation", COMPONENT) + sync2ProdAutoBuild(params.CLOUD, "ps-8x-innovation", COMPONENT) } } } @@ -961,9 +987,9 @@ parameters { script { try { if (env.FIPSMODE == 'YES') { - uploadTarballToDownloadsTesting("ps-gated", "${BRANCH}") + uploadTarballToDownloadsTesting(params.CLOUD, "ps-gated", "${BRANCH}") } else { - uploadTarballToDownloadsTesting("ps", "${BRANCH}") + uploadTarballToDownloadsTesting(params.CLOUD, "ps", "${BRANCH}") } } catch (err) { @@ -975,7 +1001,7 @@ parameters { } stage('Build docker containers') { agent { - label 'min-focal-x64' + label 'launcher-x64' } steps { script { @@ -983,12 +1009,6 @@ parameters { echo "The step is skipped" } else { echo "====> Build docker container" - cleanUpWS() - installCli("deb") - sh ''' - sleep 1200 - ''' - unstash 'properties' sh ''' PS_RELEASE=$(echo ${BRANCH} | sed 's/release-//g') PS_MAJOR_RELEASE=$(echo ${BRANCH} | sed "s/release-//g" | sed "s/\\.//g" | awk '{print substr($0, 0, 2)}') @@ -1000,9 +1020,19 @@ parameters { MYSQL_ROUTER_RELEASE=$(echo ${BRANCH} | sed 's/release-//g' | awk '{print substr($0, 0, 7)}' | sed 's/-//g') fi sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common - sudo apt-get install -y docker.io - sudo systemctl status docker - sudo apt-get install -y qemu binfmt-support qemu-user-static + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor + sudo apt-get install -y docker-ce docker-ce-cli containerd.io + export DOCKER_CLI_EXPERIMENTAL=enabled + sudo mkdir -p /usr/libexec/docker/cli-plugins/ + sudo curl -L https://github.com/docker/buildx/releases/download/v0.21.2/buildx-v0.21.2.linux-amd64 -o /usr/libexec/docker/cli-plugins/docker-buildx + sudo chmod +x /usr/libexec/docker/cli-plugins/docker-buildx + sudo systemctl restart docker + sudo apt-get install -y qemu-system binfmt-support qemu-user-static + sudo qemu-system-x86_64 --version + sudo lscpu | grep -q 'sse4_2' && grep -q 'popcnt' /proc/cpuinfo && echo "Supports x86-64-v2" || echo "Does NOT support x86-64-v2" sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes git clone https://github.com/percona/percona-docker cd percona-docker/percona-server-8.0 @@ -1031,8 +1061,8 @@ parameters { fi sed -i "s/percona-release enable mysql-shell/PS_REPO=\"testing\";percona-release enable mysql-shell/g" Dockerfile.aarch64 fi - sudo docker build -t perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64 . - sudo docker build -t perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-arm64 --platform="linux/arm64" -f Dockerfile.aarch64 . + sudo docker build -t perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64 --progress plain --platform="linux/amd64" . + sudo docker buildx build --platform linux/arm64 -t perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-arm64 --load -f Dockerfile.aarch64 . cd ../mysql-router sed -i "s/ENV ROUTE_VERSION.*/ENV ROUTE_VERSION ${PS_RELEASE}.${RPM_RELEASE}/g" Dockerfile sed -i "s/ENV MYSQL_SHELL_VERSION.*/ENV MYSQL_SHELL_VERSION ${MYSQL_SHELL_RELEASE}-${RPM_RELEASE}/g" Dockerfile @@ -1091,15 +1121,18 @@ parameters { )]) { sh ''' PS_RELEASE=$(echo ${BRANCH} | sed 's/release-//g') + PS_MAJOR_RELEASE=$(echo ${BRANCH} | sed "s/release-//g" | sed "s/\\.//g" | awk '{print substr($0, 0, 2)}') echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin PS_RELEASE=$(echo ${BRANCH} | sed 's/release-//g') sudo docker manifest push perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} + sudo docker buildx imagetools create -t perconalab/percona-server:${PS_RELEASE} perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} + sudo docker buildx imagetools create -t perconalab/percona-server:${PS_MAJOR_RELEASE} perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} ''' } } } } - } + } } post { success { diff --git a/pxb/jenkins/pxb-80.groovy b/pxb/jenkins/pxb-80.groovy index 51dc9c3293..a87662a620 100644 --- a/pxb/jenkins/pxb-80.groovy +++ b/pxb/jenkins/pxb-80.groovy @@ -6,18 +6,40 @@ library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ import groovy.transform.Field void buildStage(String DOCKER_OS, String STAGE_PARAM) { - sh """ - set -o xtrace - mkdir test - wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${BRANCH}/storage/innobase/xtrabackup/utils/percona-xtrabackup-8.0_builder.sh -O percona-xtrabackup-8.0_builder.sh - pwd -P - export build_dir=\$(pwd -P) - docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " - set -o xtrace - cd \${build_dir} - bash -x ./percona-xtrabackup-8.0_builder.sh --builddir=\${build_dir}/test --install_deps=1 - bash -x ./percona-xtrabackup-8.0_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --branch=${BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" - """ + withCredentials([string(credentialsId: 'GITHUB_API_TOKEN', variable: 'TOKEN')]) { + sh """ + set -o xtrace + mkdir test + if [ \${FIPSMODE} = "YES" ]; then + MYSQL_VERSION_MINOR=\$(curl -s -O \$(echo \${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/\${BRANCH}/MYSQL_VERSION && grep MYSQL_VERSION_MINOR MYSQL_VERSION | awk -F= '{print \$2}') + if [ \${MYSQL_VERSION_MINOR} = "0" ]; then + PRO_BRANCH="8.0" + elif [ \${MYSQL_VERSION_MINOR} = "4" ]; then + PRO_BRANCH="8.4" + else + PRO_BRANCH="trunk" + fi + curl -L -H "Authorization: Bearer \${TOKEN}" \ + -H "Accept: application/vnd.github.v3.raw" \ + -o percona-xtrabackup-8.0_builder.sh \ + "https://api.github.com/repos/percona/percona-xtrabackup-private-build/contents/percona-xtrabackup-8.0_builder.sh?ref=\${PRO_BRANCH}" + else + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${BRANCH}/storage/innobase/xtrabackup/utils/percona-xtrabackup-8.0_builder.sh -O percona-xtrabackup-8.0_builder.sh + fi + pwd -P + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./percona-xtrabackup-8.0_builder.sh --builddir=\${build_dir}/test --install_deps=1 + if [ \${FIPSMODE} = "YES" ]; then + git clone --depth 1 --branch \${PRO_BRANCH} https://x-access-token:${TOKEN}@github.com/percona/percona-xtrabackup-private-build.git percona-xtrabackup-private-build + mv -f \${build_dir}/percona-xtrabackup-private-build \${build_dir}/test/. + ls \${build_dir}/test + fi + bash -x ./percona-xtrabackup-8.0_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --branch=${BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + """ + } } void cleanUpWS() { @@ -213,7 +235,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { buildStage("centos:7", "--build_src_rpm=1 --enable_fipsmode=1") @@ -232,7 +254,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { buildStage("ubuntu:focal", "--build_source_deb=1 --enable_fipsmode=1") @@ -260,7 +282,7 @@ pipeline { echo "The step is skipped" } else { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -279,7 +301,7 @@ pipeline { echo "The step is skipped" } else { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -295,7 +317,7 @@ pipeline { steps { script { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) if (env.FIPSMODE == 'YES') { buildStage("oraclelinux:9", "--build_rpm=1 --enable_fipsmode=1") } else { @@ -314,7 +336,7 @@ pipeline { steps { script { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) if (env.FIPSMODE == 'YES') { buildStage("oraclelinux:9", "--build_rpm=1 --enable_fipsmode=1") } else { @@ -326,25 +348,44 @@ pipeline { } } } -/* stage('Amazon Linux 2023') { + stage('Amazon Linux 2023') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { - cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) - if (env.FIPSMODE == 'YES') { - buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") + if (env.FIPSMODE == 'NO') { + echo "The step is skipped" } else { - buildStage("amazonlinux:2023", "--build_rpm=1") + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } + } + } + } + stage('Amazon Linux 2023 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + script { + if (env.FIPSMODE == 'NO') { + echo "The step is skipped" + } else { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") - pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) - uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } } } - }*/ + } stage('Ubuntu Focal(20.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' @@ -355,7 +396,7 @@ pipeline { echo "The step is skipped" } else { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -374,7 +415,7 @@ pipeline { echo "The step is skipped" } else { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -390,7 +431,7 @@ pipeline { steps { script { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) if (env.FIPSMODE == 'YES') { buildStage("ubuntu:jammy", "--build_deb=1 --enable_fipsmode=1") } else { @@ -409,7 +450,7 @@ pipeline { steps { script { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) if (env.FIPSMODE == 'YES') { buildStage("ubuntu:jammy", "--build_deb=1 --enable_fipsmode=1") } else { @@ -428,7 +469,7 @@ pipeline { steps { script { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) if (env.FIPSMODE == 'YES') { buildStage("ubuntu:noble", "--build_deb=1 --enable_fipsmode=1") } else { @@ -447,7 +488,7 @@ pipeline { steps { script { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) if (env.FIPSMODE == 'YES') { buildStage("ubuntu:noble", "--build_deb=1 --enable_fipsmode=1") } else { @@ -469,7 +510,7 @@ pipeline { echo "The step is skipped" } else { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -488,7 +529,7 @@ pipeline { echo "The step is skipped" } else { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -504,7 +545,7 @@ pipeline { steps { script { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) if (env.FIPSMODE == 'YES') { buildStage("debian:bookworm", "--build_deb=1 --enable_fipsmode=1") } else { @@ -522,7 +563,7 @@ pipeline { steps { script { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) if (env.FIPSMODE == 'YES') { buildStage("debian:bookworm", "--build_deb=1 --enable_fipsmode=1") } else { @@ -543,7 +584,7 @@ pipeline { echo "The step is skipped" } else { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_tarball=1") pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) @@ -559,7 +600,7 @@ pipeline { steps { script { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) if (env.FIPSMODE == 'YES') { buildStage("oraclelinux:9", "--build_tarball=1 --enable_fipsmode=1") } else { @@ -581,7 +622,7 @@ pipeline { echo "The step is skipped" } else { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_tarball=1") pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) @@ -597,7 +638,7 @@ pipeline { steps { script { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) if (env.FIPSMODE == 'YES') { buildStage("ubuntu:jammy", "--build_tarball=1 --enable_fipsmode=1") } else { @@ -616,7 +657,7 @@ pipeline { steps { script { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) if (env.FIPSMODE == 'YES') { buildStage("ubuntu:noble", "--build_tarball=1 --enable_fipsmode=1") } else { @@ -638,7 +679,7 @@ pipeline { echo "The step is skipped" } else { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_tarball=1") pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) @@ -654,7 +695,7 @@ pipeline { steps { script { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) if (env.FIPSMODE == 'YES') { buildStage("debian:bookworm", "--build_tarball=1 --enable_fipsmode=1") } else { @@ -684,111 +725,28 @@ pipeline { // sync packages if ("${MYSQL_VERSION_MINOR}" == "0") { if (env.FIPSMODE == 'YES') { - sync2PrivateProdAutoBuild("pxb-80-pro", COMPONENT) + sync2PrivateProdAutoBuild(params.CLOUD, "pxb-80-pro", COMPONENT) } else { - sync2ProdAutoBuild("pxb-80", COMPONENT) + sync2ProdAutoBuild(params.CLOUD, "pxb-80", COMPONENT) } } else { if (env.FIPSMODE == 'YES') { if ("${MYSQL_VERSION_MINOR}" == "4") { - sync2PrivateProdAutoBuild("pxb-84-pro", COMPONENT) + sync2PrivateProdAutoBuild(params.CLOUD, "pxb-84-pro", COMPONENT) } else { - sync2PrivateProdAutoBuild("pxb-8x-innovation-pro", COMPONENT) + sync2PrivateProdAutoBuild(params.CLOUD, "pxb-8x-innovation-pro", COMPONENT) } } else { if ("${MYSQL_VERSION_MINOR}" == "4") { - sync2ProdAutoBuild("pxb-84-lts", COMPONENT) + sync2ProdAutoBuild(params.CLOUD, "pxb-84-lts", COMPONENT) } else { - sync2ProdAutoBuild("pxb-8x-innovation", COMPONENT) + sync2ProdAutoBuild(params.CLOUD, "pxb-8x-innovation", COMPONENT) } } } } } } - stage('Build docker containers') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' - } - steps { - script { - if (env.FIPSMODE == 'YES') { - echo "The step is skipped" - } else { - echo "====> Build docker containers" - cleanUpWS() - sh ''' - sleep 1200 - ''' - unstash 'uploadPath' - sh ''' - sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common - sudo apt-get install -y docker.io - sudo systemctl status docker - sudo apt-get install -y qemu-system binfmt-support qemu-user-static - sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - curl -O https://raw.githubusercontent.com/percona/percona-xtrabackup/${BRANCH}/MYSQL_VERSION - . ./MYSQL_VERSION - XB_VERSION_MAJOR = sh(returnStdout: true, script: "grep 'XB_VERSION_MAJOR' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 ").trim() - XB_VERSION_MINOR = sh(returnStdout: true, script: "grep 'XB_VERSION_MINOR' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 ").trim() - XB_VERSION_PATCH = sh(returnStdout: true, script: "grep 'XB_VERSION_PATCH' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 ").trim() - XB_VERSION_EXTRA = sh(returnStdout: true, script: "grep 'XB_VERSION_EXTRA' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 | sed 's/-//g'").trim() - XB_REVISION = sh(returnStdout: true, script: "grep 'REVISION' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 ").trim() - PXB_RELEASE_VERSION = sh(returnStdout: true, script: """ echo ${BRANCH} | sed -nE '/release-(8\\.[0-9]{1})\\..*/s//\\1/p' """).trim() - git clone https://github.com/percona/percona-docker - cd percona-docker/percona-xtrabackup-8.0 - sed -i "s/ENV XTRABACKUP_VERSION.*/ENV XTRABACKUP_VERSION ${PXB_RELEASE_VERSION}/g" Dockerfile - sed -i "s/ENV PS_VERSION.*/ENV PS_VERSION ${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}/g" Dockerfile - sed -i "s/pxb-80 testing/pxb-80 ${COMPONENT}/g" Dockerfile - sudo docker build --no-cache --platform "linux/amd64" -t perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION} . - - sed -i "s/ENV XTRABACKUP_VERSION.*/ENV XTRABACKUP_VERSION ${PXB_RELEASE_VERSION}/g" Dockerfile.aarch64 - sed -i "s/ENV PS_VERSION.*/ENV PS_VERSION ${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}/g" Dockerfile.aarch64 - sed -i "s/pxb-80 testing/pxb-80 ${COMPONENT}/g" Dockerfile.aarch64 - sudo docker build --no-cache -t perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION}-aarch64 --platform="linux/arm64" -f Dockerfile.aarch64 . - - sudo docker images - ''' - withCredentials([ - usernamePassword(credentialsId: 'hub.docker.com', - passwordVariable: 'PASS', - usernameVariable: 'USER' - )]) { - sh ''' - echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin - #curl -O https://raw.githubusercontent.com/percona/percona-xtrabackup/${BRANCH}/MYSQL_VERSION - #. ./MYSQL_VERSION - XB_VERSION_MAJOR = sh(returnStdout: true, script: "grep 'XB_VERSION_MAJOR' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 ").trim() - XB_VERSION_MINOR = sh(returnStdout: true, script: "grep 'XB_VERSION_MINOR' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 ").trim() - XB_VERSION_PATCH = sh(returnStdout: true, script: "grep 'XB_VERSION_PATCH' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 ").trim() - XB_VERSION_EXTRA = sh(returnStdout: true, script: "grep 'XB_VERSION_EXTRA' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 | sed 's/-//g'").trim() - XB_REVISION = sh(returnStdout: true, script: "grep 'REVISION' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 ").trim() - PXB_RELEASE_VERSION = sh(returnStdout: true, script: """ echo ${BRANCH} | sed -nE '/release-(8\\.[0-9]{1})\\..*/s//\\1/p' """).trim() - sudo docker push perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION} - sudo docker push perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION}-aarch64 - - sudo docker manifest create perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH} \ - perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION} \ - perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION}-aarch64 - sudo docker manifest annotate perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH} perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION}-aarch64 --os linux --arch arm64 --variant v8 - sudo docker manifest annotate perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH} perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION} --os linux --arch amd64 - sudo docker manifest inspect perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH} - - sudo docker manifest create perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR} \ - perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION} \ - perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION}-aarch64 - sudo docker manifest annotate perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR} perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION}-aarch64 --os linux --arch arm64 --variant v8 - sudo docker manifest annotate perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR} perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION} --os linux --arch amd64 - sudo docker manifest inspect perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR} - - sudo docker manifest push perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH} - sudo docker manifest push perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR} - ''' - } - } - } - } - } } post { success { diff --git a/pxc/jenkins/percona-xtradb-cluster-8.0.groovy b/pxc/jenkins/percona-xtradb-cluster-8.0.groovy index 2b009ed7be..962abbc82c 100644 --- a/pxc/jenkins/percona-xtradb-cluster-8.0.groovy +++ b/pxc/jenkins/percona-xtradb-cluster-8.0.groovy @@ -81,6 +81,9 @@ pipeline { } stages { stage('Create PXC source tarball') { + agent { + label params.CLOUD == 'Hetzner' ? 'deb12-x64' : 'min-focal-x64' + } steps { slackNotify("${SLACKNOTIFY}", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") cleanUpWS() @@ -112,7 +115,7 @@ pipeline { steps { cleanUpWS() unstash 'pxc-80.properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { buildStage("centos:7", "--build_src_rpm=1 --enable_fipsmode=1") @@ -132,7 +135,7 @@ pipeline { steps { cleanUpWS() unstash 'pxc-80.properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { buildStage("ubuntu:xenial", "--build_source_deb=1 --enable_fipsmode=1") @@ -158,7 +161,7 @@ pipeline { /* cleanUpWS() unstash 'pxc-80.properties' - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("centos:7", "--build_rpm=1") stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' @@ -178,7 +181,7 @@ pipeline { } else { cleanUpWS() unstash 'pxc-80.properties' - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("centos:8", "--build_rpm=1") stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' @@ -199,7 +202,7 @@ pipeline { } else { cleanUpWS() unstash 'pxc-80.properties' - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("centos:8", "--build_rpm=1") stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' @@ -216,7 +219,7 @@ pipeline { steps { cleanUpWS() unstash 'pxc-80.properties' - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { buildStage("oraclelinux:9", "--build_rpm=1 --enable_fipsmode=1") @@ -236,7 +239,7 @@ pipeline { steps { cleanUpWS() unstash 'pxc-80.properties' - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { buildStage("oraclelinux:9", "--build_rpm=1 --enable_fipsmode=1") @@ -249,21 +252,48 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } -/* stage('Amazon Linux 2023') { + stage('Amazon Linux 2023') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { - cleanUpWS() - unstash 'pxc-80.properties' - popArtifactFolder("srpm/", AWS_STASH_PATH) - buildStage("amazonlinux:2023", "--build_rpm=1") + script { + if (env.FIPSMODE == 'NO') { + echo "The step is skipped" + } else { + cleanUpWS() + unstash 'pxc-80.properties' + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") - stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' - pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) - uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' + pushArtifactFolder("rpm/", AWS_STASH_PATH) + uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + } + } } - }*/ + } + stage('Amazon Linux 2023 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + script { + if (env.FIPSMODE == 'NO') { + echo "The step is skipped" + } else { + cleanUpWS() + unstash 'pxc-80.properties' + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") + + stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + } + } stage('Ubuntu Focal(20.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' @@ -275,7 +305,7 @@ pipeline { } else { cleanUpWS() unstash 'pxc-80.properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' @@ -296,7 +326,7 @@ pipeline { } else { cleanUpWS() unstash 'pxc-80.properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' @@ -313,7 +343,7 @@ pipeline { steps { cleanUpWS() unstash 'pxc-80.properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { buildStage("ubuntu:jammy", "--build_deb=1 --enable_fipsmode=1") @@ -334,7 +364,7 @@ pipeline { steps { cleanUpWS() unstash 'pxc-80.properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { buildStage("ubuntu:jammy", "--build_deb=1 --enable_fipsmode=1") @@ -355,7 +385,7 @@ pipeline { steps { cleanUpWS() unstash 'pxc-80.properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { buildStage("ubuntu:noble", "--build_deb=1 --enable_fipsmode=1") @@ -376,7 +406,7 @@ pipeline { steps { cleanUpWS() unstash 'pxc-80.properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { buildStage("ubuntu:noble", "--build_deb=1 --enable_fipsmode=1") @@ -401,7 +431,7 @@ pipeline { } else { cleanUpWS() unstash 'pxc-80.properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' @@ -422,7 +452,7 @@ pipeline { } else { cleanUpWS() unstash 'pxc-80.properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' @@ -439,7 +469,7 @@ pipeline { steps { cleanUpWS() unstash 'pxc-80.properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { buildStage("debian:bookworm", "--build_deb=1 --enable_fipsmode=1") @@ -460,7 +490,7 @@ pipeline { steps { cleanUpWS() unstash 'pxc-80.properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { buildStage("debian:bookworm", "--build_deb=1 --enable_fipsmode=1") @@ -485,7 +515,7 @@ pipeline { } else { cleanUpWS() unstash 'pxc-80.properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("centos:8", "--build_tarball=1") stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' @@ -502,7 +532,7 @@ pipeline { steps { cleanUpWS() unstash 'pxc-80.properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { buildStage("oraclelinux:9", "--build_tarball=1 --enable_fipsmode=1") @@ -527,7 +557,7 @@ pipeline { } else { cleanUpWS() unstash 'pxc-80.properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_tarball=1") stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' @@ -544,7 +574,7 @@ pipeline { steps { cleanUpWS() unstash 'pxc-80.properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { buildStage("ubuntu:jammy", "--build_tarball=1 --enable_fipsmode=1") @@ -574,22 +604,22 @@ pipeline { if ("${PXC_VERSION_MINOR}" == "0") { // sync packages if (env.FIPSMODE == 'YES') { - sync2PrivateProdAutoBuild("pxc-80-pro", COMPONENT) + sync2PrivateProdAutoBuild(params.CLOUD, "pxc-80-pro", COMPONENT) } else { - sync2ProdAutoBuild("pxc-80", COMPONENT) + sync2ProdAutoBuild(params.CLOUD, "pxc-80", COMPONENT) } } else { if (env.FIPSMODE == 'YES') { if ("${PXC_VERSION_MINOR}" == "4") { - sync2PrivateProdAutoBuild("pxc-84-pro", COMPONENT) + sync2PrivateProdAutoBuild(params.CLOUD, "pxc-84-pro", COMPONENT) } else { - sync2PrivateProdAutoBuild("pxc-8x-innovation-pro", COMPONENT) + sync2PrivateProdAutoBuild(params.CLOUD, "pxc-8x-innovation-pro", COMPONENT) } } else { if ("${PXC_VERSION_MINOR}" == "4") { - sync2ProdAutoBuild("pxc-84-lts", COMPONENT) + sync2ProdAutoBuild(params.CLOUD, "pxc-84-lts", COMPONENT) } else { - sync2ProdAutoBuild("pxc-8x-innovation", COMPONENT) + sync2ProdAutoBuild(params.CLOUD, "pxc-8x-innovation", COMPONENT) } } } @@ -601,9 +631,9 @@ pipeline { script { try { if (env.FIPSMODE == 'YES') { - uploadTarballToDownloadsTesting("pxc-gated", "${GIT_BRANCH}") + uploadTarballToDownloadsTesting(params.CLOUD, "pxc-gated", "${GIT_BRANCH}") } else { - uploadTarballToDownloadsTesting("pxc", "${GIT_BRANCH}") + uploadTarballToDownloadsTesting(params.CLOUD, "pxc", "${GIT_BRANCH}") } } catch (err) { @@ -615,7 +645,7 @@ pipeline { } stage('Build docker containers') { agent { - label 'min-focal-x64' + label params.CLOUD == 'Hetzner' ? 'deb12-x64' : 'min-focal-x64' } steps { script { @@ -631,15 +661,28 @@ pipeline { sh ''' PXC_RELEASE=$(echo ${GIT_BRANCH} | sed 's/release-//g') PXC_MAJOR_RELEASE=$(echo ${GIT_BRANCH} | sed "s/release-//g" | sed "s/\\.//g" | awk '{print substr($0, 0, 2)}') + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common - sudo apt-get install -y docker.io - sudo systemctl status docker - sudo apt-get install -y qemu binfmt-support qemu-user-static + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor + sudo apt-get install -y docker-ce docker-ce-cli containerd.io + export DOCKER_CLI_EXPERIMENTAL=enabled + sudo mkdir -p /usr/libexec/docker/cli-plugins/ + sudo curl -L https://github.com/docker/buildx/releases/download/v0.21.2/buildx-v0.21.2.linux-amd64 -o /usr/libexec/docker/cli-plugins/docker-buildx + sudo chmod +x /usr/libexec/docker/cli-plugins/docker-buildx + sudo systemctl restart docker + sudo apt-get install -y qemu-system binfmt-support qemu-user-static + sudo qemu-system-x86_64 --version sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes curl -O https://raw.githubusercontent.com/percona/percona-xtradb-cluster/${GIT_BRANCH}/MYSQL_VERSION . ./MYSQL_VERSION git clone https://github.com/percona/percona-docker - cd percona-docker/percona-xtradb-cluster-8.0 + cd percona-docker/percona-xtradb-cluster-${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR} sed -i "s/ENV PXC_VERSION.*/ENV PXC_VERSION ${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}/g" Dockerfile sed -i "s/ENV PXC_TELEMETRY_VERSION.*/ENV PXC_TELEMETRY_VERSION ${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}-${RPM_RELEASE}/g" Dockerfile sed -i "s/ENV PXC_REPO .*/ENV PXC_REPO testing/g" Dockerfile @@ -654,8 +697,8 @@ pipeline { sed -i "s/--skip-ssl//g" dockerdir/entrypoint.sh fi fi - sudo docker build --no-cache --platform "linux/amd64" -t perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} . - sudo docker build --no-cache --platform "linux/amd64" --build-arg DEBUG=1 -t perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-debug . + sudo docker build --no-cache --platform "linux/amd64" -t perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-amd64 . + sudo docker build --no-cache --platform "linux/amd64" --build-arg DEBUG=1 -t perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-debug-amd64 . sed -i "s/ENV PXC_VERSION.*/ENV PXC_VERSION ${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}/g" Dockerfile.aarch64 sed -i "s/ENV PXC_TELEMETRY_VERSION.*/ENV PXC_TELEMETRY_VERSION ${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}-${RPM_RELEASE}/g" Dockerfile.aarch64 @@ -671,8 +714,8 @@ pipeline { sed -i "s/--skip-ssl//g" dockerdir/entrypoint.sh fi fi - sudo docker build --no-cache -t perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-aarch64 --platform="linux/arm64" -f Dockerfile.aarch64 . - sudo docker build --no-cache --build-arg DEBUG=1 -t perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-debug-aarch64 --platform="linux/arm64" -f Dockerfile.aarch64 . + sudo docker build --no-cache -t perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-arm64 --platform="linux/arm64" -f Dockerfile.aarch64 . + sudo docker build --no-cache --build-arg DEBUG=1 -t perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-debug-arm64 --platform="linux/arm64" -f Dockerfile.aarch64 . if [ ${PXC_MAJOR_RELEASE} != "84" ]; then cd ../percona-xtradb-cluster-8.0-backup @@ -709,22 +752,22 @@ pipeline { echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin curl -O https://raw.githubusercontent.com/percona/percona-xtradb-cluster/${GIT_BRANCH}/MYSQL_VERSION . ./MYSQL_VERSION - sudo docker push perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} - sudo docker push perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-debug - sudo docker push perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-aarch64 - sudo docker push perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-debug-aarch64 + sudo docker push perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-amd64 + sudo docker push perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-debug-amd64 + sudo docker push perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-arm64 + sudo docker push perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-debug-arm64 sudo docker push perconalab/percona-xtradb-cluster-operator:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}-pxc8.${MYSQL_VERSION_MINOR}-backup ''' } sh ''' curl -O https://raw.githubusercontent.com/percona/percona-xtradb-cluster/${GIT_BRANCH}/MYSQL_VERSION . ./MYSQL_VERSION - sudo docker manifest create perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-multi \ - perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} \ - perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-aarch64 - sudo docker manifest annotate perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-multi perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-aarch64 --os linux --arch arm64 --variant v8 - sudo docker manifest annotate perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-multi perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} --os linux --arch amd64 - sudo docker manifest inspect perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-multi + sudo docker manifest create perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} \ + perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-amd64 \ + perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-arm64 + sudo docker manifest annotate perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-arm64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-multi perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-amd64 --os linux --arch amd64 + sudo docker manifest inspect perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} ''' withCredentials([ usernamePassword(credentialsId: 'hub.docker.com', @@ -735,7 +778,9 @@ pipeline { echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin curl -O https://raw.githubusercontent.com/percona/percona-xtradb-cluster/${GIT_BRANCH}/MYSQL_VERSION . ./MYSQL_VERSION - sudo docker manifest push perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-multi + sudo docker manifest push perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} + sudo docker buildx imagetools create -t perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR} perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} + sudo docker buildx imagetools create -t perconalab/percona-xtradb-cluster:latest perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} ''' } } diff --git a/vars/uploadTarballToDownloadsTesting.groovy b/vars/uploadTarballToDownloadsTesting.groovy index 1f28d55d2c..e97dbdacef 100644 --- a/vars/uploadTarballToDownloadsTesting.groovy +++ b/vars/uploadTarballToDownloadsTesting.groovy @@ -16,23 +16,16 @@ def call(String CLOUD_NAME, String PRODUCT_NAME, String PRODUCT_VERSION) { cutProductVersion=\$(echo ${PRODUCT_VERSION} | sed 's/release-//g'); # Get PXC version from a file - if [ "x${PRODUCT_NAME}" == "xpxc" ]; then - if [[ "${PRODUCT_VERSION}" != *CUSTOM* ]]; then - curl -O https://raw.githubusercontent.com/percona/percona-xtradb-cluster/${PRODUCT_VERSION}/MYSQL_VERSION - MYSQL_VERSION_MAJOR=\$(cat MYSQL_VERSION | grep MYSQL_VERSION_MAJOR | awk -F= '{print \$2}') - MYSQL_VERSION_MINOR=\$(cat MYSQL_VERSION | grep MYSQL_VERSION_MINOR | awk -F= '{print \$2}') - MYSQL_VERSION_PATCH=\$(cat MYSQL_VERSION | grep MYSQL_VERSION_PATCH | awk -F= '{print \$2}') - cutProductVersion=\${MYSQL_VERSION_MAJOR}.\${MYSQL_VERSION_MINOR}.\${MYSQL_VERSION_PATCH} - fi + if [ "x${PRODUCT_NAME}" = "xpxc" ]; then + curl -O https://raw.githubusercontent.com/percona/percona-xtradb-cluster/${PRODUCT_VERSION}/MYSQL_VERSION + MYSQL_VERSION_MAJOR=\$(cat MYSQL_VERSION | grep MYSQL_VERSION_MAJOR | awk -F= '{print \$2}') + MYSQL_VERSION_MINOR=\$(cat MYSQL_VERSION | grep MYSQL_VERSION_MINOR | awk -F= '{print \$2}') + MYSQL_VERSION_PATCH=\$(cat MYSQL_VERSION | grep MYSQL_VERSION_PATCH | awk -F= '{print \$2}') + cutProductVersion=\${MYSQL_VERSION_MAJOR}.\${MYSQL_VERSION_MINOR}.\${MYSQL_VERSION_PATCH} fi - if [[ "${PRODUCT_NAME}" != *gated* ]]; then - ssh -o StrictHostKeyChecking=no -i ${KEY_PATH} ${USER}@repo.ci.percona.com \ - ssh -p 2222 jenkins-deploy.jenkins-deploy.web.r.int.percona.com mkdir -p /data/downloads/TESTING/${PRODUCT_NAME}-\${cutProductVersion} - - ssh -o StrictHostKeyChecking=no -i ${KEY_PATH} ${USER}@repo.ci.percona.com \ - rsync -avt -e '"ssh -p 2222"' --bwlimit=50000 --progress ${path_to_build}/binary/tarball/* jenkins-deploy.jenkins-deploy.web.r.int.percona.com:/data/downloads/TESTING/${PRODUCT_NAME}-\${cutProductVersion}/ - else + case "${PRODUCT_NAME}" in + *gated*) echo "Processing gated product";; ssh -o StrictHostKeyChecking=no -i ${KEY_PATH} ${USER}@repo.ci.percona.com \ mkdir -p /srv/repo-copy/private/qa-test/${PRODUCT_NAME}-\${cutProductVersion} @@ -41,7 +34,13 @@ def call(String CLOUD_NAME, String PRODUCT_NAME, String PRODUCT_VERSION) { ssh -o StrictHostKeyChecking=no -i ${KEY_PATH} ${USER}@repo.ci.percona.com \ rsync -avt --delete --delete-excluded --delete-after --progress --exclude=*.sh --exclude=*.bak /srv/repo-copy/private/qa-test/* 10.30.9.32:/www/repo.percona.com/htdocs/private/qa-test/ - fi + *) echo "Processing non-gated product";; + ssh -o StrictHostKeyChecking=no -i ${KEY_PATH} ${USER}@repo.ci.percona.com \ + ssh -p 2222 jenkins-deploy.jenkins-deploy.web.r.int.percona.com mkdir -p /data/downloads/TESTING/${PRODUCT_NAME}-\${cutProductVersion} + + ssh -o StrictHostKeyChecking=no -i ${KEY_PATH} ${USER}@repo.ci.percona.com \ + rsync -avt -e '"ssh -p 2222"' --bwlimit=50000 --progress ${path_to_build}/binary/tarball/* jenkins-deploy.jenkins-deploy.web.r.int.percona.com:/data/downloads/TESTING/${PRODUCT_NAME}-\${cutProductVersion}/ + esac curl https://www.percona.com/admin/config/percona/percona_downloads/crawl_directory """ From be2db8b4ebae77787c8ee5ec75953638bc20b419 Mon Sep 17 00:00:00 2001 From: Muhammad Aqeel Date: Wed, 12 Mar 2025 14:04:07 +0500 Subject: [PATCH 067/269] [PKG-373]: Fixes docker build issue with apparmor. (#3212) --- pbm/jenkins/percona-mongodb-backup.groovy | 17 +++- proxysql/proxysql.groovy | 17 +++- .../percona-server-for-mongodb-6.0.groovy | 17 +++- .../percona-server-for-mongodb-7.0.groovy | 17 +++- .../percona-server-for-mongodb-8.0.groovy | 17 +++- pt/jenkins/percona-toolkit.groovy | 17 +++- pxb/jenkins/pxb-80.groovy | 97 +++++++++++++++++++ 7 files changed, 187 insertions(+), 12 deletions(-) diff --git a/pbm/jenkins/percona-mongodb-backup.groovy b/pbm/jenkins/percona-mongodb-backup.groovy index 56b8159e28..f41991f689 100644 --- a/pbm/jenkins/percona-mongodb-backup.groovy +++ b/pbm/jenkins/percona-mongodb-backup.groovy @@ -351,10 +351,23 @@ pipeline { ''' unstash 'uploadPath' sh ''' + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common - sudo apt-get install -y docker.io - sudo systemctl status docker + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor + sudo apt-get install -y docker-ce docker-ce-cli containerd.io + export DOCKER_CLI_EXPERIMENTAL=enabled + sudo mkdir -p /usr/libexec/docker/cli-plugins/ + sudo curl -L https://github.com/docker/buildx/releases/download/v0.21.2/buildx-v0.21.2.linux-amd64 -o /usr/libexec/docker/cli-plugins/docker-buildx + sudo chmod +x /usr/libexec/docker/cli-plugins/docker-buildx + sudo systemctl restart docker sudo apt-get install -y qemu-system binfmt-support qemu-user-static + sudo qemu-system-x86_64 --version sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes git clone https://github.com/percona/percona-docker cd percona-docker/percona-backup-mongodb diff --git a/proxysql/proxysql.groovy b/proxysql/proxysql.groovy index 9db09f767b..8592b59541 100644 --- a/proxysql/proxysql.groovy +++ b/proxysql/proxysql.groovy @@ -378,10 +378,23 @@ pipeline { ''' unstash 'uploadPath' sh ''' + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common - sudo apt-get install -y docker.io - sudo systemctl status docker + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor + sudo apt-get install -y docker-ce docker-ce-cli containerd.io + export DOCKER_CLI_EXPERIMENTAL=enabled + sudo mkdir -p /usr/libexec/docker/cli-plugins/ + sudo curl -L https://github.com/docker/buildx/releases/download/v0.21.2/buildx-v0.21.2.linux-amd64 -o /usr/libexec/docker/cli-plugins/docker-buildx + sudo chmod +x /usr/libexec/docker/cli-plugins/docker-buildx + sudo systemctl restart docker sudo apt-get install -y qemu-system binfmt-support qemu-user-static + sudo qemu-system-x86_64 --version sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes git clone https://github.com/percona/percona-docker cd percona-docker/proxysql diff --git a/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy index b647058f2e..ff1dfb6c77 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy @@ -554,10 +554,23 @@ pipeline { ''' unstash 'uploadPath' sh ''' + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common - sudo apt-get install -y docker.io - sudo systemctl status docker + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor + sudo apt-get install -y docker-ce docker-ce-cli containerd.io + export DOCKER_CLI_EXPERIMENTAL=enabled + sudo mkdir -p /usr/libexec/docker/cli-plugins/ + sudo curl -L https://github.com/docker/buildx/releases/download/v0.21.2/buildx-v0.21.2.linux-amd64 -o /usr/libexec/docker/cli-plugins/docker-buildx + sudo chmod +x /usr/libexec/docker/cli-plugins/docker-buildx + sudo systemctl restart docker sudo apt-get install -y qemu-system binfmt-support qemu-user-static + sudo qemu-system-x86_64 --version sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes git clone https://github.com/percona/percona-docker cd percona-docker/percona-server-mongodb-6.0 diff --git a/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy index bfa7eeacff..c96d336c9e 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy @@ -588,10 +588,23 @@ pipeline { ''' unstash 'uploadPath' sh ''' + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common - sudo apt-get install -y docker.io - sudo systemctl status docker + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor + sudo apt-get install -y docker-ce docker-ce-cli containerd.io + export DOCKER_CLI_EXPERIMENTAL=enabled + sudo mkdir -p /usr/libexec/docker/cli-plugins/ + sudo curl -L https://github.com/docker/buildx/releases/download/v0.21.2/buildx-v0.21.2.linux-amd64 -o /usr/libexec/docker/cli-plugins/docker-buildx + sudo chmod +x /usr/libexec/docker/cli-plugins/docker-buildx + sudo systemctl restart docker sudo apt-get install -y qemu-system binfmt-support qemu-user-static + sudo qemu-system-x86_64 --version sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes git clone https://github.com/percona/percona-docker cd percona-docker/percona-server-mongodb-7.0 diff --git a/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy index c88737dab3..8a326320aa 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy @@ -557,10 +557,23 @@ pipeline { ''' unstash 'uploadPath' sh ''' + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common - sudo apt-get install -y docker.io - sudo systemctl status docker + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor + sudo apt-get install -y docker-ce docker-ce-cli containerd.io + export DOCKER_CLI_EXPERIMENTAL=enabled + sudo mkdir -p /usr/libexec/docker/cli-plugins/ + sudo curl -L https://github.com/docker/buildx/releases/download/v0.21.2/buildx-v0.21.2.linux-amd64 -o /usr/libexec/docker/cli-plugins/docker-buildx + sudo chmod +x /usr/libexec/docker/cli-plugins/docker-buildx + sudo systemctl restart docker sudo apt-get install -y qemu-system binfmt-support qemu-user-static + sudo qemu-system-x86_64 --version sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes git clone https://github.com/percona/percona-docker cd percona-docker/percona-server-mongodb-8.0 diff --git a/pt/jenkins/percona-toolkit.groovy b/pt/jenkins/percona-toolkit.groovy index 5d4bcbf979..8045b8204a 100644 --- a/pt/jenkins/percona-toolkit.groovy +++ b/pt/jenkins/percona-toolkit.groovy @@ -347,10 +347,23 @@ pipeline { ''' unstash 'uploadPath' sh ''' + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common - sudo apt-get install -y docker.io - sudo systemctl status docker + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor + sudo apt-get install -y docker-ce docker-ce-cli containerd.io + export DOCKER_CLI_EXPERIMENTAL=enabled + sudo mkdir -p /usr/libexec/docker/cli-plugins/ + sudo curl -L https://github.com/docker/buildx/releases/download/v0.21.2/buildx-v0.21.2.linux-amd64 -o /usr/libexec/docker/cli-plugins/docker-buildx + sudo chmod +x /usr/libexec/docker/cli-plugins/docker-buildx + sudo systemctl restart docker sudo apt-get install -y qemu-system binfmt-support qemu-user-static + sudo qemu-system-x86_64 --version sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes git clone https://github.com/percona/percona-docker cd percona-docker/percona-toolkit diff --git a/pxb/jenkins/pxb-80.groovy b/pxb/jenkins/pxb-80.groovy index a87662a620..31c2da50c7 100644 --- a/pxb/jenkins/pxb-80.groovy +++ b/pxb/jenkins/pxb-80.groovy @@ -747,6 +747,103 @@ pipeline { } } } + stage('Build docker containers') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + script { + if (env.FIPSMODE == 'YES') { + echo "The step is skipped" + } else { + echo "====> Build docker containers" + cleanUpWS() + sh ''' + sleep 1200 + ''' + unstash 'uploadPath' + sh ''' + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor + sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor + sudo apt-get install -y docker-ce docker-ce-cli containerd.io + export DOCKER_CLI_EXPERIMENTAL=enabled + sudo mkdir -p /usr/libexec/docker/cli-plugins/ + sudo curl -L https://github.com/docker/buildx/releases/download/v0.21.2/buildx-v0.21.2.linux-amd64 -o /usr/libexec/docker/cli-plugins/docker-buildx + sudo chmod +x /usr/libexec/docker/cli-plugins/docker-buildx + sudo systemctl restart docker + sudo apt-get install -y qemu-system binfmt-support qemu-user-static + sudo qemu-system-x86_64 --version + sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + curl -O https://raw.githubusercontent.com/percona/percona-xtrabackup/${BRANCH}/MYSQL_VERSION + . ./MYSQL_VERSION + XB_VERSION_MAJOR = sh(returnStdout: true, script: "grep 'XB_VERSION_MAJOR' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 ").trim() + XB_VERSION_MINOR = sh(returnStdout: true, script: "grep 'XB_VERSION_MINOR' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 ").trim() + XB_VERSION_PATCH = sh(returnStdout: true, script: "grep 'XB_VERSION_PATCH' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 ").trim() + XB_VERSION_EXTRA = sh(returnStdout: true, script: "grep 'XB_VERSION_EXTRA' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 | sed 's/-//g'").trim() + XB_REVISION = sh(returnStdout: true, script: "grep 'REVISION' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 ").trim() + PXB_RELEASE_VERSION = sh(returnStdout: true, script: """ echo ${BRANCH} | sed -nE '/release-(8\\.[0-9]{1})\\..*/s//\\1/p' """).trim() + git clone https://github.com/percona/percona-docker + cd percona-docker/percona-xtrabackup-8.0 + sed -i "s/ENV XTRABACKUP_VERSION.*/ENV XTRABACKUP_VERSION ${PXB_RELEASE_VERSION}/g" Dockerfile + sed -i "s/ENV PS_VERSION.*/ENV PS_VERSION ${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}/g" Dockerfile + sed -i "s/pxb-80 testing/pxb-80 ${COMPONENT}/g" Dockerfile + sudo docker build --no-cache --platform "linux/amd64" -t perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION} . + + sed -i "s/ENV XTRABACKUP_VERSION.*/ENV XTRABACKUP_VERSION ${PXB_RELEASE_VERSION}/g" Dockerfile.aarch64 + sed -i "s/ENV PS_VERSION.*/ENV PS_VERSION ${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}/g" Dockerfile.aarch64 + sed -i "s/pxb-80 testing/pxb-80 ${COMPONENT}/g" Dockerfile.aarch64 + sudo docker build --no-cache -t perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION}-aarch64 --platform="linux/arm64" -f Dockerfile.aarch64 . + + sudo docker images + ''' + withCredentials([ + usernamePassword(credentialsId: 'hub.docker.com', + passwordVariable: 'PASS', + usernameVariable: 'USER' + )]) { + sh ''' + echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin + #curl -O https://raw.githubusercontent.com/percona/percona-xtrabackup/${BRANCH}/MYSQL_VERSION + #. ./MYSQL_VERSION + XB_VERSION_MAJOR = sh(returnStdout: true, script: "grep 'XB_VERSION_MAJOR' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 ").trim() + XB_VERSION_MINOR = sh(returnStdout: true, script: "grep 'XB_VERSION_MINOR' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 ").trim() + XB_VERSION_PATCH = sh(returnStdout: true, script: "grep 'XB_VERSION_PATCH' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 ").trim() + XB_VERSION_EXTRA = sh(returnStdout: true, script: "grep 'XB_VERSION_EXTRA' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 | sed 's/-//g'").trim() + XB_REVISION = sh(returnStdout: true, script: "grep 'REVISION' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 ").trim() + PXB_RELEASE_VERSION = sh(returnStdout: true, script: """ echo ${BRANCH} | sed -nE '/release-(8\\.[0-9]{1})\\..*/s//\\1/p' """).trim() + sudo docker push perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION} + sudo docker push perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION}-aarch64 + + sudo docker manifest create perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH} \ + perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION} \ + perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION}-aarch64 + sudo docker manifest annotate perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH} perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION}-aarch64 --os linux --arch arm64 --varia +t v8 + sudo docker manifest annotate perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH} perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION} --os linux --arch amd64 + sudo docker manifest inspect perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH} + + sudo docker manifest create perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR} \ + perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION} \ + perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION}-aarch64 + sudo docker manifest annotate perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR} perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION}-aarch64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR} perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION} --os linux --arch amd64 + sudo docker manifest inspect perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR} + + sudo docker manifest push perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH} + sudo docker manifest push perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR} + ''' + } + } + } + } + } } post { success { From 2bad58608505e84f941240fb77ebb6b0a376c645 Mon Sep 17 00:00:00 2001 From: Muhammad Aqeel Date: Wed, 12 Mar 2025 16:32:25 +0500 Subject: [PATCH 068/269] [PKG-373]: Builds proxysql docker image only for AMD64. (#3213) --- proxysql/proxysql.groovy | 37 ++++++------------------------------- 1 file changed, 6 insertions(+), 31 deletions(-) diff --git a/proxysql/proxysql.groovy b/proxysql/proxysql.groovy index 8592b59541..2f04e479ab 100644 --- a/proxysql/proxysql.groovy +++ b/proxysql/proxysql.groovy @@ -388,22 +388,13 @@ pipeline { sudo systemctl stop apparmor sudo systemctl disable apparmor sudo apt-get install -y docker-ce docker-ce-cli containerd.io - export DOCKER_CLI_EXPERIMENTAL=enabled - sudo mkdir -p /usr/libexec/docker/cli-plugins/ - sudo curl -L https://github.com/docker/buildx/releases/download/v0.21.2/buildx-v0.21.2.linux-amd64 -o /usr/libexec/docker/cli-plugins/docker-buildx - sudo chmod +x /usr/libexec/docker/cli-plugins/docker-buildx sudo systemctl restart docker - sudo apt-get install -y qemu-system binfmt-support qemu-user-static - sudo qemu-system-x86_64 --version - sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes git clone https://github.com/percona/percona-docker cd percona-docker/proxysql sed -i "s/ENV PROXYSQL_VERSION.*/ENV PROXYSQL_VERSION ${VERSION}-${RPM_RELEASE}/g" Dockerfile sed -i "s/enable proxysql testing/enable proxysql ${COMPONENT}/g" Dockerfile sudo docker build --no-cache --platform "linux/amd64" -t perconalab/proxysql:${VERSION}-${RPM_RELEASE} . - sudo docker build --no-cache -t perconalab/proxysql:${VERSION}-${RPM_RELEASE}-aarch64 --platform="linux/arm64" -f Dockerfile . - sudo docker images ''' withCredentials([ @@ -414,35 +405,19 @@ pipeline { sh ''' echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin sudo docker push perconalab/proxysql:${VERSION}-${RPM_RELEASE} - sudo docker push perconalab/proxysql:${VERSION}-${RPM_RELEASE}-aarch64 PROXYSQL_MAJOR_VERSION=$(echo $VERSION | cut -d'.' -f1) PROXYSQL_MINOR_VERSION=$(echo $VERSION | cut -d'.' -f2) PROXYSQL_PATCH_VERSION=$(echo $VERSION | cut -d'.' -f3) - sudo docker manifest create perconalab/proxysql:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION}.${PROXYSQL_PATCH_VERSION} \ - perconalab/proxysql:${VERSION}-${RPM_RELEASE} \ - perconalab/proxysql:${VERSION}-${RPM_RELEASE}-aarch64 - sudo docker manifest annotate perconalab/proxysql:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION}.${PROXYSQL_PATCH_VERSION} perconalab/proxysql:${VERSION}-${RPM_RELEASE}-aarch64 --os linux --arch arm64 --variant v8 - sudo docker manifest annotate perconalab/proxysql:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION}.${PROXYSQL_PATCH_VERSION} perconalab/proxysql:${VERSION}-${RPM_RELEASE} --os linux --arch amd64 - sudo docker manifest inspect perconalab/proxysql:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION}.${PROXYSQL_PATCH_VERSION} - sudo docker manifest create perconalab/proxysql:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION} \ - perconalab/proxysql:${VERSION}-${RPM_RELEASE} \ - perconalab/proxysql:${VERSION}-${RPM_RELEASE}-aarch64 - sudo docker manifest annotate perconalab/proxysql:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION} perconalab/proxysql:${VERSION}-${RPM_RELEASE}-aarch64 --os linux --arch arm64 --variant v8 - sudo docker manifest annotate perconalab/proxysql:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION} perconalab/proxysql:${VERSION}-${RPM_RELEASE} --os linux --arch amd64 - sudo docker manifest inspect perconalab/proxysql:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION} + docker tag perconalab/proxysql:${VERSION}-${RPM_RELEASE} perconalab/proxysql:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION}.${PROXYSQL_PATCH_VERSION} + docker tag perconalab/proxysql:${VERSION}-${RPM_RELEASE} perconalab/proxysql:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION} + docker tag perconalab/proxysql:${VERSION}-${RPM_RELEASE} perconalab/proxysql:${PROXYSQL_MAJOR_VERSION} - sudo docker manifest create perconalab/proxysql:${PROXYSQL_MAJOR_VERSION} \ - perconalab/proxysql:${VERSION}-${RPM_RELEASE} \ - perconalab/proxysql:${VERSION}-${RPM_RELEASE}-aarch64 - sudo docker manifest annotate perconalab/proxysql:${PROXYSQL_MAJOR_VERSION} perconalab/proxysql:${VERSION}-${RPM_RELEASE}-aarch64 --os linux --arch arm64 --variant v8 - sudo docker manifest annotate perconalab/proxysql:${PROXYSQL_MAJOR_VERSION} perconalab/proxysql:${VERSION}-${RPM_RELEASE} --os linux --arch amd64 - sudo docker manifest inspect perconalab/proxysql:${PROXYSQL_MAJOR_VERSION} + sudo docker push perconalab/proxysql:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION}.${PROXYSQL_PATCH_VERSION} + sudo docker push perconalab/proxysql:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION} + sudo docker push perconalab/proxysql:${PROXYSQL_MAJOR_VERSION} - sudo docker manifest push perconalab/proxysql:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION}.${PROXYSQL_PATCH_VERSION} - sudo docker manifest push perconalab/proxysql:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION} - sudo docker manifest push perconalab/proxysql:${PROXYSQL_MAJOR_VERSION} ''' } } From 61ee4d5a38b0304dbeaed03cbb1de7ea72df8ce0 Mon Sep 17 00:00:00 2001 From: Muhammad Aqeel Date: Wed, 12 Mar 2025 20:03:28 +0500 Subject: [PATCH 069/269] [PKG-373]: Fixes proxysql docker image tags (#3214) --- proxysql/proxysql.groovy | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/proxysql/proxysql.groovy b/proxysql/proxysql.groovy index 2f04e479ab..74cea993dc 100644 --- a/proxysql/proxysql.groovy +++ b/proxysql/proxysql.groovy @@ -393,7 +393,7 @@ pipeline { cd percona-docker/proxysql sed -i "s/ENV PROXYSQL_VERSION.*/ENV PROXYSQL_VERSION ${VERSION}-${RPM_RELEASE}/g" Dockerfile sed -i "s/enable proxysql testing/enable proxysql ${COMPONENT}/g" Dockerfile - sudo docker build --no-cache --platform "linux/amd64" -t perconalab/proxysql:${VERSION}-${RPM_RELEASE} . + sudo docker build --no-cache --platform "linux/amd64" -t perconalab/proxysql2:${VERSION} . sudo docker images ''' @@ -404,19 +404,17 @@ pipeline { )]) { sh ''' echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin - sudo docker push perconalab/proxysql:${VERSION}-${RPM_RELEASE} + sudo docker push perconalab/proxysql2:${VERSION} PROXYSQL_MAJOR_VERSION=$(echo $VERSION | cut -d'.' -f1) PROXYSQL_MINOR_VERSION=$(echo $VERSION | cut -d'.' -f2) PROXYSQL_PATCH_VERSION=$(echo $VERSION | cut -d'.' -f3) - docker tag perconalab/proxysql:${VERSION}-${RPM_RELEASE} perconalab/proxysql:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION}.${PROXYSQL_PATCH_VERSION} - docker tag perconalab/proxysql:${VERSION}-${RPM_RELEASE} perconalab/proxysql:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION} - docker tag perconalab/proxysql:${VERSION}-${RPM_RELEASE} perconalab/proxysql:${PROXYSQL_MAJOR_VERSION} + docker tag perconalab/proxysql2:${VERSION} perconalab/proxysql2:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION} + docker tag perconalab/proxysql2:${VERSION} perconalab/proxysql2:${PROXYSQL_MAJOR_VERSION} - sudo docker push perconalab/proxysql:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION}.${PROXYSQL_PATCH_VERSION} - sudo docker push perconalab/proxysql:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION} - sudo docker push perconalab/proxysql:${PROXYSQL_MAJOR_VERSION} + sudo docker push perconalab/proxysql2:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION} + sudo docker push perconalab/proxysql2:${PROXYSQL_MAJOR_VERSION} ''' } From 27099c90a413c2fac08997b8e5e2b539bed770d3 Mon Sep 17 00:00:00 2001 From: Vadim Yalovets Date: Wed, 12 Mar 2025 18:02:22 +0200 Subject: [PATCH 070/269] Hetzner (#3215) --- .../percona-server-for-mysql-8.0.groovy | 4 +- pxc/jenkins/percona-xtradb-cluster-8.0.groovy | 55 ++++++++++++++----- vars/uploadTarballToDownloadsTesting.groovy | 3 +- 3 files changed, 45 insertions(+), 17 deletions(-) diff --git a/ps/jenkins/percona-server-for-mysql-8.0.groovy b/ps/jenkins/percona-server-for-mysql-8.0.groovy index d1508d1b76..db1324e874 100644 --- a/ps/jenkins/percona-server-for-mysql-8.0.groovy +++ b/ps/jenkins/percona-server-for-mysql-8.0.groovy @@ -462,7 +462,7 @@ parameters { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -482,7 +482,7 @@ parameters { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) diff --git a/pxc/jenkins/percona-xtradb-cluster-8.0.groovy b/pxc/jenkins/percona-xtradb-cluster-8.0.groovy index 962abbc82c..082b0e564e 100644 --- a/pxc/jenkins/percona-xtradb-cluster-8.0.groovy +++ b/pxc/jenkins/percona-xtradb-cluster-8.0.groovy @@ -4,19 +4,40 @@ library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ ]) _ void buildStage(String DOCKER_OS, String STAGE_PARAM) { - sh """ - set -o xtrace - mkdir -p test - wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/build-ps/pxc_builder.sh -O pxc_builder.sh - pwd -P - ls -laR - export build_dir=\$(pwd -P) - docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " - set -o xtrace - cd \${build_dir} - bash -x ./pxc_builder.sh --builddir=\${build_dir}/test --install_deps=1 - bash -x ./pxc_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --branch=${GIT_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} --bin_release=${BIN_RELEASE} ${STAGE_PARAM}" - """ + withCredentials([string(credentialsId: 'GITHUB_API_TOKEN', variable: 'TOKEN')]) { + sh """ + set -o xtrace + mkdir -p test + if [ \${FIPSMODE} = "YES" ]; then + PXC_VERSION_MINOR=\$(curl -s -O \$(echo \${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/\${GIT_BRANCH}/MYSQL_VERSION && cat MYSQL_VERSION | grep MYSQL_VERSION_MINOR | awk -F= '{print \$2}') + if [ \${PXC_VERSION_MINOR} = "0" ]; then + PRO_BRANCH="8.0" + elif [ \${PXC_VERSION_MINOR} = "4" ]; then + PRO_BRANCH="8.4" + else + PRO_BRANCH="trunk" + fi + curl -L -H "Authorization: Bearer \${TOKEN}" \ + -H "Accept: application/vnd.github.v3.raw" \ + -o pxc_builder.sh \ + "https://api.github.com/repos/percona/percona-xtradb-cluster-private-build/contents/build-ps/pxc_builder.sh?ref=\${PRO_BRANCH}" + else + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/build-ps/pxc_builder.sh -O pxc_builder.sh + fi + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./pxc_builder.sh --builddir=\${build_dir}/test --install_deps=1 + if [ \${FIPSMODE} = "YES" ]; then + git clone --depth 1 --branch \${PRO_BRANCH} https://x-access-token:${TOKEN}@github.com/percona/percona-xtradb-cluster-private-build.git percona-xtradb-cluster-private-build + mv -f \${build_dir}/percona-xtradb-cluster-private-build/build-ps \${build_dir}/test/. + fi + bash -x ./pxc_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --branch=${GIT_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} --bin_release=${BIN_RELEASE} ${STAGE_PARAM}" + """ + } } void cleanUpWS() { @@ -87,7 +108,13 @@ pipeline { steps { slackNotify("${SLACKNOTIFY}", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") cleanUpWS() - buildStage("centos:7", "--get_sources=1") + script { + if (env.FIPSMODE == 'YES') { + buildStage("centos:7", "--get_sources=1 --enable_fipsmode=1") + } else { + buildStage("centos:7", "--get_sources=1") + } + } sh ''' REPO_UPLOAD_PATH=$(grep "DEST=UPLOAD" test/pxc-80.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") diff --git a/vars/uploadTarballToDownloadsTesting.groovy b/vars/uploadTarballToDownloadsTesting.groovy index e97dbdacef..74f4e96470 100644 --- a/vars/uploadTarballToDownloadsTesting.groovy +++ b/vars/uploadTarballToDownloadsTesting.groovy @@ -6,6 +6,7 @@ def call(String CLOUD_NAME, String PRODUCT_NAME, String PRODUCT_VERSION) { def path_to_build = sh(returnStdout: true, script: "cat uploadPath").trim() withCredentials([sshUserPrivateKey(credentialsId: 'repo.ci.percona.com', keyFileVariable: 'KEY_PATH', usernameVariable: 'USER')]) { sh """ + #!/bin/bash set -o xtrace cat /etc/hosts > hosts @@ -16,7 +17,7 @@ def call(String CLOUD_NAME, String PRODUCT_NAME, String PRODUCT_VERSION) { cutProductVersion=\$(echo ${PRODUCT_VERSION} | sed 's/release-//g'); # Get PXC version from a file - if [ "x${PRODUCT_NAME}" = "xpxc" ]; then + if [ \"x${PRODUCT_NAME}\" = \"xpxc\" ]; then curl -O https://raw.githubusercontent.com/percona/percona-xtradb-cluster/${PRODUCT_VERSION}/MYSQL_VERSION MYSQL_VERSION_MAJOR=\$(cat MYSQL_VERSION | grep MYSQL_VERSION_MAJOR | awk -F= '{print \$2}') MYSQL_VERSION_MINOR=\$(cat MYSQL_VERSION | grep MYSQL_VERSION_MINOR | awk -F= '{print \$2}') From 83138fa870167576b769291d0f21654c46144c19 Mon Sep 17 00:00:00 2001 From: Muhammad Aqeel Date: Wed, 12 Mar 2025 22:31:19 +0500 Subject: [PATCH 071/269] [PKG-373]: Adds one more tag to proxysql docker image. (#3216) --- proxysql/proxysql.groovy | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/proxysql/proxysql.groovy b/proxysql/proxysql.groovy index 74cea993dc..11e466dd2c 100644 --- a/proxysql/proxysql.groovy +++ b/proxysql/proxysql.groovy @@ -393,7 +393,7 @@ pipeline { cd percona-docker/proxysql sed -i "s/ENV PROXYSQL_VERSION.*/ENV PROXYSQL_VERSION ${VERSION}-${RPM_RELEASE}/g" Dockerfile sed -i "s/enable proxysql testing/enable proxysql ${COMPONENT}/g" Dockerfile - sudo docker build --no-cache --platform "linux/amd64" -t perconalab/proxysql2:${VERSION} . + sudo docker build --no-cache --platform "linux/amd64" -t perconalab/proxysql2:${VERSION}-${RPM_RELEASE} . sudo docker images ''' @@ -404,15 +404,17 @@ pipeline { )]) { sh ''' echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin - sudo docker push perconalab/proxysql2:${VERSION} + sudo docker push perconalab/proxysql2:${VERSION}-${RPM_RELEASE} PROXYSQL_MAJOR_VERSION=$(echo $VERSION | cut -d'.' -f1) PROXYSQL_MINOR_VERSION=$(echo $VERSION | cut -d'.' -f2) PROXYSQL_PATCH_VERSION=$(echo $VERSION | cut -d'.' -f3) - docker tag perconalab/proxysql2:${VERSION} perconalab/proxysql2:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION} - docker tag perconalab/proxysql2:${VERSION} perconalab/proxysql2:${PROXYSQL_MAJOR_VERSION} + docker tag perconalab/proxysql2:${VERSION}-${RPM_RELEASE} perconalab/proxysql2:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION}.${PROXYSQL_PATCH_VERSION} + docker tag perconalab/proxysql2:${VERSION}-${RPM_RELEASE} perconalab/proxysql2:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION} + docker tag perconalab/proxysql2:${VERSION}-${RPM_RELEASE} perconalab/proxysql2:${PROXYSQL_MAJOR_VERSION} + sudo docker push perconalab/proxysql2:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION}.${PROXYSQL_PATCH_VERSION} sudo docker push perconalab/proxysql2:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION} sudo docker push perconalab/proxysql2:${PROXYSQL_MAJOR_VERSION} From d667efcf9954d9ad2578d9b59d6abf7f71ac489d Mon Sep 17 00:00:00 2001 From: Vadim Yalovets Date: Fri, 14 Mar 2025 13:50:27 +0200 Subject: [PATCH 072/269] Hetzner (#3222) --- pxc/jenkins/percona-xtradb-cluster-8.0.groovy | 22 ++----------------- vars/uploadTarballToDownloadsTesting.groovy | 11 +++++----- 2 files changed, 8 insertions(+), 25 deletions(-) diff --git a/pxc/jenkins/percona-xtradb-cluster-8.0.groovy b/pxc/jenkins/percona-xtradb-cluster-8.0.groovy index 082b0e564e..169d1e38ae 100644 --- a/pxc/jenkins/percona-xtradb-cluster-8.0.groovy +++ b/pxc/jenkins/percona-xtradb-cluster-8.0.groovy @@ -179,24 +179,6 @@ pipeline { } // stage stage('Build PXC RPMs/DEBs/Binary tarballs') { parallel { - stage('Centos 7') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' - } - steps { - echo "The step is skipped" -/* - cleanUpWS() - unstash 'pxc-80.properties' - popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) - buildStage("centos:7", "--build_rpm=1") - - stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' - pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) - uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) -*/ - } - } stage('Centos 8') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' @@ -294,8 +276,8 @@ pipeline { buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' - pushArtifactFolder("rpm/", AWS_STASH_PATH) - uploadRPMfromAWS("rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } } diff --git a/vars/uploadTarballToDownloadsTesting.groovy b/vars/uploadTarballToDownloadsTesting.groovy index 74f4e96470..b3d864435c 100644 --- a/vars/uploadTarballToDownloadsTesting.groovy +++ b/vars/uploadTarballToDownloadsTesting.groovy @@ -24,9 +24,9 @@ def call(String CLOUD_NAME, String PRODUCT_NAME, String PRODUCT_VERSION) { MYSQL_VERSION_PATCH=\$(cat MYSQL_VERSION | grep MYSQL_VERSION_PATCH | awk -F= '{print \$2}') cutProductVersion=\${MYSQL_VERSION_MAJOR}.\${MYSQL_VERSION_MINOR}.\${MYSQL_VERSION_PATCH} fi - - case "${PRODUCT_NAME}" in - *gated*) echo "Processing gated product";; + echo \${cutProductVersion} + if expr \"\${PRODUCT_NAME}\" : \".*gated.*\" > /dev/null; then + echo "Processing gated product" ssh -o StrictHostKeyChecking=no -i ${KEY_PATH} ${USER}@repo.ci.percona.com \ mkdir -p /srv/repo-copy/private/qa-test/${PRODUCT_NAME}-\${cutProductVersion} @@ -35,13 +35,14 @@ def call(String CLOUD_NAME, String PRODUCT_NAME, String PRODUCT_VERSION) { ssh -o StrictHostKeyChecking=no -i ${KEY_PATH} ${USER}@repo.ci.percona.com \ rsync -avt --delete --delete-excluded --delete-after --progress --exclude=*.sh --exclude=*.bak /srv/repo-copy/private/qa-test/* 10.30.9.32:/www/repo.percona.com/htdocs/private/qa-test/ - *) echo "Processing non-gated product";; + else + echo "Processing non-gated product" ssh -o StrictHostKeyChecking=no -i ${KEY_PATH} ${USER}@repo.ci.percona.com \ ssh -p 2222 jenkins-deploy.jenkins-deploy.web.r.int.percona.com mkdir -p /data/downloads/TESTING/${PRODUCT_NAME}-\${cutProductVersion} ssh -o StrictHostKeyChecking=no -i ${KEY_PATH} ${USER}@repo.ci.percona.com \ rsync -avt -e '"ssh -p 2222"' --bwlimit=50000 --progress ${path_to_build}/binary/tarball/* jenkins-deploy.jenkins-deploy.web.r.int.percona.com:/data/downloads/TESTING/${PRODUCT_NAME}-\${cutProductVersion}/ - esac + fi curl https://www.percona.com/admin/config/percona/percona_downloads/crawl_directory """ From cf47781c789c0faf7b614e396236415964f19fc5 Mon Sep 17 00:00:00 2001 From: Vadim Yalovets Date: Mon, 17 Mar 2025 09:48:19 +0200 Subject: [PATCH 073/269] Hetzner (#3225) --- vars/uploadTarballToDownloadsTesting.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vars/uploadTarballToDownloadsTesting.groovy b/vars/uploadTarballToDownloadsTesting.groovy index b3d864435c..89502eb4b1 100644 --- a/vars/uploadTarballToDownloadsTesting.groovy +++ b/vars/uploadTarballToDownloadsTesting.groovy @@ -25,7 +25,7 @@ def call(String CLOUD_NAME, String PRODUCT_NAME, String PRODUCT_VERSION) { cutProductVersion=\${MYSQL_VERSION_MAJOR}.\${MYSQL_VERSION_MINOR}.\${MYSQL_VERSION_PATCH} fi echo \${cutProductVersion} - if expr \"\${PRODUCT_NAME}\" : \".*gated.*\" > /dev/null; then + if expr \"${PRODUCT_NAME}\" : \".*gated.*\" > /dev/null; then echo "Processing gated product" ssh -o StrictHostKeyChecking=no -i ${KEY_PATH} ${USER}@repo.ci.percona.com \ mkdir -p /srv/repo-copy/private/qa-test/${PRODUCT_NAME}-\${cutProductVersion} From 814dd9e9c26728af2f80806ea999ccc607d865b4 Mon Sep 17 00:00:00 2001 From: Surabhi Bhat Date: Tue, 18 Mar 2025 12:52:15 +0530 Subject: [PATCH 074/269] Migrate qpress pipeline to Hetzner and add AL 2023 arm64 build --- ps/jenkins/qpress.groovy | 57 +++++++++++++++++++++++++++------------- 1 file changed, 39 insertions(+), 18 deletions(-) diff --git a/ps/jenkins/qpress.groovy b/ps/jenkins/qpress.groovy index 1658f53581..4af3c2ed36 100644 --- a/ps/jenkins/qpress.groovy +++ b/ps/jenkins/qpress.groovy @@ -212,7 +212,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "RPM") sh ''' pwd @@ -233,7 +233,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "RPM") sh ''' pwd @@ -254,7 +254,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:9", "RPM") sh ''' pwd @@ -275,7 +275,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:9", "RPM") sh ''' pwd @@ -296,7 +296,28 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("amazonlinux:2023", "RPM") + sh ''' + pwd + ls -la test/rpm + cp -r test/srpm . + cp -r test/rpm . + ''' + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) + } + } + stage('Amazon Linux 2023 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("amazonlinux:2023", "RPM") sh ''' pwd @@ -317,7 +338,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "DEB") sh ''' pwd @@ -335,7 +356,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "DEB") sh ''' pwd @@ -353,7 +374,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("debian:bullseye", "DEB") sh ''' pwd @@ -371,7 +392,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("debian:bullseye", "DEB") sh ''' pwd @@ -389,7 +410,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "DEB") sh ''' pwd @@ -407,7 +428,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "DEB") sh ''' pwd @@ -425,7 +446,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("debian:bookworm", "DEB") sh ''' pwd @@ -443,7 +464,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("debian:bookworm", "DEB") sh ''' pwd @@ -461,7 +482,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:noble", "DEB") sh ''' pwd @@ -479,7 +500,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:noble", "DEB") sh ''' pwd @@ -495,14 +516,14 @@ pipeline { } stage('Sign packages') { steps { - signRPM() - signDEB() + signRPM(params.CLOUD) + signDEB(params.CLOUD) } } stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild('tools', COMPONENT) + sync2ProdAutoBuild(params.CLOUD, 'tools', COMPONENT) } } From 6dbe19aacce7c29114651f9fedef18526fcdfd44 Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Fri, 21 Mar 2025 15:21:42 +0200 Subject: [PATCH 075/269] PKG-534 pxc.cd: configure Hetzner cloud --- IaC/pxc.cd/init.groovy.d/htz.cloud.groovy | 179 ++++++++++++++++++++++ 1 file changed, 179 insertions(+) create mode 100644 IaC/pxc.cd/init.groovy.d/htz.cloud.groovy diff --git a/IaC/pxc.cd/init.groovy.d/htz.cloud.groovy b/IaC/pxc.cd/init.groovy.d/htz.cloud.groovy new file mode 100644 index 0000000000..c3ad5efba3 --- /dev/null +++ b/IaC/pxc.cd/init.groovy.d/htz.cloud.groovy @@ -0,0 +1,179 @@ +import cloud.dnation.jenkins.plugins.hetzner.* +import cloud.dnation.jenkins.plugins.hetzner.launcher.* +import hudson.model.* +import jenkins.model.Jenkins +import java.util.logging.Logger + +def cloudName = "pxc-htz" + +imageMap = [:] // ID TYPE NAME DESCRIPTION ARCHITECTURE IMAGE SIZE DISK SIZE CREATED DEPRECATED +imageMap['deb12-x64'] = '114690387' // 114690387 system debian-12 Debian 12 x86 - 5 GB Tue Jun 13 09:00:02 EEST 2023 - +imageMap['deb12-aarch64'] = '114690389' // 114690389 system debian-12 Debian 12 arm - 5 GB Tue Jun 13 09:00:03 EEST 2023 - +imageMap['launcher-x64'] = imageMap['deb12-x64'] + +execMap = [:] +execMap['deb'] = 1 +execMap['deb12-x64-nbg1'] = execMap['deb'] +execMap['deb12-x64-hel1'] = execMap['deb'] +execMap['deb12-x64-fsn1'] = execMap['deb'] +execMap['deb12-aarch64-nbg1'] = execMap['deb'] +execMap['deb12-aarch64-hel1'] = execMap['deb'] +execMap['deb12-aarch64-fsn1'] = execMap['deb'] +execMap['deb12-x64-nbg1-min'] = execMap['deb'] +execMap['deb12-x64-hel1-min'] = execMap['deb'] +execMap['deb12-x64-fsn1-min'] = execMap['deb'] +execMap['deb12-aarch64-nbg1-min'] = execMap['deb'] +execMap['deb12-aarch64-hel1-min'] = execMap['deb'] +execMap['deb12-aarch64-fsn1-min'] = execMap['deb'] +execMap['launcher-x64-fsn1'] = 10 + +bootDeadlineMap =[:] +bootDeadlineMap['default'] = 3 +bootDeadlineMap['deb12-x64-nbg1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-hel1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-fsn1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-nbg1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-hel1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-fsn1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-nbg1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-hel1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-fsn1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-nbg1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-hel1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-fsn1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['launcher-x64-fsn1'] = bootDeadlineMap['default'] + +jvmOptsMap = [:] +jvmOptsMap['deb12'] = '-Xmx512m -Xms512m --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED' +jvmOptsMap['deb12-x64-nbg1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-hel1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-fsn1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-nbg1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-hel1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-fsn1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-nbg1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-hel1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-fsn1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-nbg1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-hel1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-fsn1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['launcher-x64-fsn1'] = jvmOptsMap['deb12'] + +labelMap = [:] +labelMap['deb12-x64-min'] = 'docker-x64-min docker-deb12-x64-min deb12-x64-min' +labelMap['deb12-aarch64-min'] = 'docker-aarch64-min docker-deb12-aarch64-min deb12-aarch64-min' +labelMap['deb12-x64'] = 'docker-x64 docker-deb12-x64 deb12-x64' +labelMap['deb12-aarch64'] = 'docker-aarch64 docker-deb12-aarch64 deb12-aarch64' +labelMap['launcher-x64'] = 'launcher-x64' + +networkMap = [:] +networkMap['percona-vpc-eu'] = '10442325' // percona-vpc-eu + +initMap = [:] +initMap['deb-docker'] = '''#!/bin/bash -x + set -o xtrace + sudo fallocate -l 32G /swapfile + sudo chmod 600 /swapfile + sudo mkswap /swapfile + sudo swapon /swapfile + + export DEBIAN_FRONTEND=noninteractive + until sudo apt-get update; do + sleep 1 + echo try again + done + until sudo apt-get -y install openjdk-17-jre-headless apt-transport-https ca-certificates curl gnupg lsb-release unzip git; do + sleep 1 + echo try again + done + curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg + echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null + until sudo apt-get update; do + sleep 1 + echo try again + done + until sudo apt-get -y install docker-ce docker-ce-cli containerd.io; do + sleep 1 + echo try again + done + if ! $(aws --version | grep -q 'aws-cli/2'); then + find /tmp -maxdepth 1 -name "*aws*" | xargs sudo rm -rf + until curl "https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m)-2.22.35.zip" -o "/tmp/awscliv2.zip"; do + sleep 1 + echo try again + done + unzip -o /tmp/awscliv2.zip -d /tmp + cd /tmp/aws && sudo ./install + fi + sudo install -o $(id -u -n) -g $(id -g -n) -d /mnt/jenkins + sudo sysctl net.ipv4.tcp_fin_timeout=15 + sudo sysctl net.ipv4.tcp_tw_reuse=1 + sudo sysctl net.ipv6.conf.all.disable_ipv6=1 + sudo sysctl net.ipv6.conf.default.disable_ipv6=1 + sudo sysctl -w fs.inotify.max_user_watches=10000000 || true + sudo sysctl -w fs.aio-max-nr=1048576 || true + sudo sysctl -w fs.file-max=6815744 || true + echo "* soft core unlimited" | sudo tee -a /etc/security/limits.conf + sudo sed -i.bak -e 's^ExecStart=.*^ExecStart=/usr/bin/dockerd --data-root=/mnt/docker --default-ulimit nofile=900000:900000^' /lib/systemd/system/docker.service + sudo systemctl daemon-reload + sudo install -o root -g root -d /mnt/docker + sudo usermod -aG docker $(id -u -n) + sudo mkdir -p /etc/docker + echo '{"experimental": true, "ipv6": true, "fixed-cidr-v6": "fd3c:a8b0:18eb:5c06::/64"}' | sudo tee /etc/docker/daemon.json + sudo systemctl restart docker + echo "* * * * * root /usr/sbin/route add default gw 10.177.1.1 eth0" | sudo tee /etc/cron.d/fix-default-route +''' +initMap['deb12-x64-nbg1'] = initMap['deb-docker'] +initMap['deb12-x64-hel1'] = initMap['deb-docker'] +initMap['deb12-x64-fsn1'] = initMap['deb-docker'] +initMap['deb12-aarch64-nbg1'] = initMap['deb-docker'] +initMap['deb12-aarch64-hel1'] = initMap['deb-docker'] +initMap['deb12-aarch64-fsn1'] = initMap['deb-docker'] +initMap['deb12-x64-nbg1-min'] = initMap['deb-docker'] +initMap['deb12-x64-hel1-min'] = initMap['deb-docker'] +initMap['deb12-x64-fsn1-min'] = initMap['deb-docker'] +initMap['deb12-aarch64-nbg1-min'] = initMap['deb-docker'] +initMap['deb12-aarch64-hel1-min'] = initMap['deb-docker'] +initMap['deb12-aarch64-fsn1-min'] = initMap['deb-docker'] +initMap['launcher-x64-fsn1'] = initMap['deb-docker'] + +def templates = [ + /* new HetznerServerTemplate("ubuntu20-cx21", "java", "name=ubuntu20-docker", "fsn1", "cx21"), */ + // tmplName tmplLabels tmplImage region server type + new HetznerServerTemplate("deb12-x64-nbg1-min", labelMap['deb12-x64-min'], imageMap['deb12-x64'], "nbg1", "cpx41"), + new HetznerServerTemplate("deb12-aarch64-nbg1-min", labelMap['deb12-aarch64-min'], imageMap['deb12-aarch64'], "nbg1", "cax31"), + new HetznerServerTemplate("deb12-x64-hel1-min", labelMap['deb12-x64-min'], imageMap['deb12-x64'], "hel1", "cpx41"), + new HetznerServerTemplate("deb12-aarch64-hel1-min", labelMap['deb12-aarch64-min'], imageMap['deb12-aarch64'], "hel1", "cax31"), + new HetznerServerTemplate("deb12-x64-fsn1-min", labelMap['deb12-x64-min'], imageMap['deb12-x64'], "fsn1", "cpx41"), + new HetznerServerTemplate("deb12-aarch64-fsn1-min", labelMap['deb12-aarch64-min'], imageMap['deb12-aarch64'], "fsn1", "cax31"), + new HetznerServerTemplate("deb12-x64-nbg1", labelMap['deb12-x64'], imageMap['deb12-x64'], "nbg1", "cpx51"), + new HetznerServerTemplate("deb12-aarch64-nbg1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "nbg1", "cax41"), + new HetznerServerTemplate("deb12-x64-hel1", labelMap['deb12-x64'], imageMap['deb12-x64'], "hel1", "cpx51"), + new HetznerServerTemplate("deb12-aarch64-hel1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "hel1", "cax41"), + new HetznerServerTemplate("deb12-x64-fsn1", labelMap['deb12-x64'], imageMap['deb12-x64'], "fsn1", "cpx51"), + new HetznerServerTemplate("deb12-aarch64-fsn1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "fsn1", "cax41"), + new HetznerServerTemplate("launcher-x64-fsn1", labelMap['launcher-x64'], imageMap['launcher-x64'], "fsn1", "cpx21") +] + +templates.each { it -> + def sshConnector = new SshConnectorAsRoot("htz.cd.key") + sshConnector.setConnectionMethod(new PublicAddressOnly()) // Replace with the desired method + it.setConnector(sshConnector) + // it.setConnector(new SshConnectorAsRoot("hz.psmdb.cd")) + def tmplName = it.name + it.setNumExecutors(execMap[tmplName]) + it.bootDeadline = bootDeadlineMap[tmplName] + it.remoteFs = "/mnt/jenkins/" + it.jvmOpts = jvmOptsMap[tmplName] + it.network = networkMap['percona-vpc-eu'] + it.userData = initMap[tmplName] + } + +// public HetznerCloud(String name, String credentialsId, String instanceCapStr, List serverTemplates) +def cloud = new HetznerCloud(cloudName, "htz.cd.token", "100", templates) + +def jenkins = Jenkins.get() + +jenkins.clouds.remove(jenkins.clouds.getByName(cloudName)) +jenkins.clouds.add(cloud) +jenkins.save() From 43c0edc79d3fdc416924a9d9211815847d5b667b Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Fri, 21 Mar 2025 17:39:26 +0200 Subject: [PATCH 076/269] PKG-541 ps80.cd: configure Hetzner cloud --- IaC/ps80.cd/init.groovy.d/htz.cloud.groovy | 179 +++++++++++++++++++++ 1 file changed, 179 insertions(+) create mode 100644 IaC/ps80.cd/init.groovy.d/htz.cloud.groovy diff --git a/IaC/ps80.cd/init.groovy.d/htz.cloud.groovy b/IaC/ps80.cd/init.groovy.d/htz.cloud.groovy new file mode 100644 index 0000000000..4cc9f1a33b --- /dev/null +++ b/IaC/ps80.cd/init.groovy.d/htz.cloud.groovy @@ -0,0 +1,179 @@ +import cloud.dnation.jenkins.plugins.hetzner.* +import cloud.dnation.jenkins.plugins.hetzner.launcher.* +import hudson.model.* +import jenkins.model.Jenkins +import java.util.logging.Logger + +def cloudName = "ps80-htz" + +imageMap = [:] // ID TYPE NAME DESCRIPTION ARCHITECTURE IMAGE SIZE DISK SIZE CREATED DEPRECATED +imageMap['deb12-x64'] = '114690387' // 114690387 system debian-12 Debian 12 x86 - 5 GB Tue Jun 13 09:00:02 EEST 2023 - +imageMap['deb12-aarch64'] = '114690389' // 114690389 system debian-12 Debian 12 arm - 5 GB Tue Jun 13 09:00:03 EEST 2023 - +imageMap['launcher-x64'] = imageMap['deb12-x64'] + +execMap = [:] +execMap['deb'] = 1 +execMap['deb12-x64-nbg1'] = execMap['deb'] +execMap['deb12-x64-hel1'] = execMap['deb'] +execMap['deb12-x64-fsn1'] = execMap['deb'] +execMap['deb12-aarch64-nbg1'] = execMap['deb'] +execMap['deb12-aarch64-hel1'] = execMap['deb'] +execMap['deb12-aarch64-fsn1'] = execMap['deb'] +execMap['deb12-x64-nbg1-min'] = execMap['deb'] +execMap['deb12-x64-hel1-min'] = execMap['deb'] +execMap['deb12-x64-fsn1-min'] = execMap['deb'] +execMap['deb12-aarch64-nbg1-min'] = execMap['deb'] +execMap['deb12-aarch64-hel1-min'] = execMap['deb'] +execMap['deb12-aarch64-fsn1-min'] = execMap['deb'] +execMap['launcher-x64-fsn1'] = 10 + +bootDeadlineMap =[:] +bootDeadlineMap['default'] = 3 +bootDeadlineMap['deb12-x64-nbg1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-hel1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-fsn1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-nbg1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-hel1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-fsn1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-nbg1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-hel1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-fsn1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-nbg1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-hel1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-fsn1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['launcher-x64-fsn1'] = bootDeadlineMap['default'] + +jvmOptsMap = [:] +jvmOptsMap['deb12'] = '-Xmx512m -Xms512m --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED' +jvmOptsMap['deb12-x64-nbg1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-hel1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-fsn1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-nbg1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-hel1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-fsn1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-nbg1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-hel1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-fsn1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-nbg1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-hel1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-fsn1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['launcher-x64-fsn1'] = jvmOptsMap['deb12'] + +labelMap = [:] +labelMap['deb12-x64-min'] = 'docker-x64-min docker-deb12-x64-min deb12-x64-min' +labelMap['deb12-aarch64-min'] = 'docker-aarch64-min docker-deb12-aarch64-min deb12-aarch64-min' +labelMap['deb12-x64'] = 'docker-x64 docker-deb12-x64 deb12-x64' +labelMap['deb12-aarch64'] = 'docker-aarch64 docker-deb12-aarch64 deb12-aarch64' +labelMap['launcher-x64'] = 'launcher-x64' + +networkMap = [:] +networkMap['percona-vpc-eu'] = '10442325' // percona-vpc-eu + +initMap = [:] +initMap['deb-docker'] = '''#!/bin/bash -x + set -o xtrace + sudo fallocate -l 32G /swapfile + sudo chmod 600 /swapfile + sudo mkswap /swapfile + sudo swapon /swapfile + + export DEBIAN_FRONTEND=noninteractive + until sudo apt-get update; do + sleep 1 + echo try again + done + until sudo apt-get -y install openjdk-17-jre-headless apt-transport-https ca-certificates curl gnupg lsb-release unzip git; do + sleep 1 + echo try again + done + curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg + echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null + until sudo apt-get update; do + sleep 1 + echo try again + done + until sudo apt-get -y install docker-ce docker-ce-cli containerd.io; do + sleep 1 + echo try again + done + if ! $(aws --version | grep -q 'aws-cli/2'); then + find /tmp -maxdepth 1 -name "*aws*" | xargs sudo rm -rf + until curl "https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m)-2.22.35.zip" -o "/tmp/awscliv2.zip"; do + sleep 1 + echo try again + done + unzip -o /tmp/awscliv2.zip -d /tmp + cd /tmp/aws && sudo ./install + fi + sudo install -o $(id -u -n) -g $(id -g -n) -d /mnt/jenkins + sudo sysctl net.ipv4.tcp_fin_timeout=15 + sudo sysctl net.ipv4.tcp_tw_reuse=1 + sudo sysctl net.ipv6.conf.all.disable_ipv6=1 + sudo sysctl net.ipv6.conf.default.disable_ipv6=1 + sudo sysctl -w fs.inotify.max_user_watches=10000000 || true + sudo sysctl -w fs.aio-max-nr=1048576 || true + sudo sysctl -w fs.file-max=6815744 || true + echo "* soft core unlimited" | sudo tee -a /etc/security/limits.conf + sudo sed -i.bak -e 's^ExecStart=.*^ExecStart=/usr/bin/dockerd --data-root=/mnt/docker --default-ulimit nofile=900000:900000^' /lib/systemd/system/docker.service + sudo systemctl daemon-reload + sudo install -o root -g root -d /mnt/docker + sudo usermod -aG docker $(id -u -n) + sudo mkdir -p /etc/docker + echo '{"experimental": true, "ipv6": true, "fixed-cidr-v6": "fd3c:a8b0:18eb:5c06::/64"}' | sudo tee /etc/docker/daemon.json + sudo systemctl restart docker + echo "* * * * * root /usr/sbin/route add default gw 10.177.1.1 eth0" | sudo tee /etc/cron.d/fix-default-route +''' +initMap['deb12-x64-nbg1'] = initMap['deb-docker'] +initMap['deb12-x64-hel1'] = initMap['deb-docker'] +initMap['deb12-x64-fsn1'] = initMap['deb-docker'] +initMap['deb12-aarch64-nbg1'] = initMap['deb-docker'] +initMap['deb12-aarch64-hel1'] = initMap['deb-docker'] +initMap['deb12-aarch64-fsn1'] = initMap['deb-docker'] +initMap['deb12-x64-nbg1-min'] = initMap['deb-docker'] +initMap['deb12-x64-hel1-min'] = initMap['deb-docker'] +initMap['deb12-x64-fsn1-min'] = initMap['deb-docker'] +initMap['deb12-aarch64-nbg1-min'] = initMap['deb-docker'] +initMap['deb12-aarch64-hel1-min'] = initMap['deb-docker'] +initMap['deb12-aarch64-fsn1-min'] = initMap['deb-docker'] +initMap['launcher-x64-fsn1'] = initMap['deb-docker'] + +def templates = [ + /* new HetznerServerTemplate("ubuntu20-cx21", "java", "name=ubuntu20-docker", "fsn1", "cx21"), */ + // tmplName tmplLabels tmplImage region server type + new HetznerServerTemplate("deb12-x64-nbg1-min", labelMap['deb12-x64-min'], imageMap['deb12-x64'], "nbg1", "cpx41"), + new HetznerServerTemplate("deb12-aarch64-nbg1-min", labelMap['deb12-aarch64-min'], imageMap['deb12-aarch64'], "nbg1", "cax31"), + new HetznerServerTemplate("deb12-x64-hel1-min", labelMap['deb12-x64-min'], imageMap['deb12-x64'], "hel1", "cpx41"), + new HetznerServerTemplate("deb12-aarch64-hel1-min", labelMap['deb12-aarch64-min'], imageMap['deb12-aarch64'], "hel1", "cax31"), + new HetznerServerTemplate("deb12-x64-fsn1-min", labelMap['deb12-x64-min'], imageMap['deb12-x64'], "fsn1", "cpx41"), + new HetznerServerTemplate("deb12-aarch64-fsn1-min", labelMap['deb12-aarch64-min'], imageMap['deb12-aarch64'], "fsn1", "cax31"), + new HetznerServerTemplate("deb12-x64-nbg1", labelMap['deb12-x64'], imageMap['deb12-x64'], "nbg1", "cpx51"), + new HetznerServerTemplate("deb12-aarch64-nbg1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "nbg1", "cax41"), + new HetznerServerTemplate("deb12-x64-hel1", labelMap['deb12-x64'], imageMap['deb12-x64'], "hel1", "cpx51"), + new HetznerServerTemplate("deb12-aarch64-hel1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "hel1", "cax41"), + new HetznerServerTemplate("deb12-x64-fsn1", labelMap['deb12-x64'], imageMap['deb12-x64'], "fsn1", "cpx51"), + new HetznerServerTemplate("deb12-aarch64-fsn1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "fsn1", "cax41"), + new HetznerServerTemplate("launcher-x64-fsn1", labelMap['launcher-x64'], imageMap['launcher-x64'], "fsn1", "cpx21") +] + +templates.each { it -> + def sshConnector = new SshConnectorAsRoot("htz.cd.key") + sshConnector.setConnectionMethod(new PublicAddressOnly()) // Replace with the desired method + it.setConnector(sshConnector) + // it.setConnector(new SshConnectorAsRoot("hz.psmdb.cd")) + def tmplName = it.name + it.setNumExecutors(execMap[tmplName]) + it.bootDeadline = bootDeadlineMap[tmplName] + it.remoteFs = "/mnt/jenkins/" + it.jvmOpts = jvmOptsMap[tmplName] + it.network = networkMap['percona-vpc-eu'] + it.userData = initMap[tmplName] + } + +// public HetznerCloud(String name, String credentialsId, String instanceCapStr, List serverTemplates) +def cloud = new HetznerCloud(cloudName, "htz.cd.token", "100", templates) + +def jenkins = Jenkins.get() + +jenkins.clouds.remove(jenkins.clouds.getByName(cloudName)) +jenkins.clouds.add(cloud) +jenkins.save() From e8fee8d0a27793841ad443d0ec012977f32c6521 Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Fri, 21 Mar 2025 18:04:24 +0200 Subject: [PATCH 077/269] PKG-542 ps57.cd: configure Hetzner cloud --- IaC/ps57.cd/init.groovy.d/htz.cloud.groovy | 179 +++++++++++++++++++++ 1 file changed, 179 insertions(+) create mode 100644 IaC/ps57.cd/init.groovy.d/htz.cloud.groovy diff --git a/IaC/ps57.cd/init.groovy.d/htz.cloud.groovy b/IaC/ps57.cd/init.groovy.d/htz.cloud.groovy new file mode 100644 index 0000000000..c0c0105a31 --- /dev/null +++ b/IaC/ps57.cd/init.groovy.d/htz.cloud.groovy @@ -0,0 +1,179 @@ +import cloud.dnation.jenkins.plugins.hetzner.* +import cloud.dnation.jenkins.plugins.hetzner.launcher.* +import hudson.model.* +import jenkins.model.Jenkins +import java.util.logging.Logger + +def cloudName = "ps57-htz" + +imageMap = [:] // ID TYPE NAME DESCRIPTION ARCHITECTURE IMAGE SIZE DISK SIZE CREATED DEPRECATED +imageMap['deb12-x64'] = '114690387' // 114690387 system debian-12 Debian 12 x86 - 5 GB Tue Jun 13 09:00:02 EEST 2023 - +imageMap['deb12-aarch64'] = '114690389' // 114690389 system debian-12 Debian 12 arm - 5 GB Tue Jun 13 09:00:03 EEST 2023 - +imageMap['launcher-x64'] = imageMap['deb12-x64'] + +execMap = [:] +execMap['deb'] = 1 +execMap['deb12-x64-nbg1'] = execMap['deb'] +execMap['deb12-x64-hel1'] = execMap['deb'] +execMap['deb12-x64-fsn1'] = execMap['deb'] +execMap['deb12-aarch64-nbg1'] = execMap['deb'] +execMap['deb12-aarch64-hel1'] = execMap['deb'] +execMap['deb12-aarch64-fsn1'] = execMap['deb'] +execMap['deb12-x64-nbg1-min'] = execMap['deb'] +execMap['deb12-x64-hel1-min'] = execMap['deb'] +execMap['deb12-x64-fsn1-min'] = execMap['deb'] +execMap['deb12-aarch64-nbg1-min'] = execMap['deb'] +execMap['deb12-aarch64-hel1-min'] = execMap['deb'] +execMap['deb12-aarch64-fsn1-min'] = execMap['deb'] +execMap['launcher-x64-fsn1'] = 10 + +bootDeadlineMap =[:] +bootDeadlineMap['default'] = 3 +bootDeadlineMap['deb12-x64-nbg1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-hel1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-fsn1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-nbg1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-hel1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-fsn1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-nbg1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-hel1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-fsn1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-nbg1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-hel1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-fsn1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['launcher-x64-fsn1'] = bootDeadlineMap['default'] + +jvmOptsMap = [:] +jvmOptsMap['deb12'] = '-Xmx512m -Xms512m --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED' +jvmOptsMap['deb12-x64-nbg1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-hel1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-fsn1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-nbg1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-hel1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-fsn1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-nbg1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-hel1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-fsn1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-nbg1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-hel1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-fsn1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['launcher-x64-fsn1'] = jvmOptsMap['deb12'] + +labelMap = [:] +labelMap['deb12-x64-min'] = 'docker-x64-min docker-deb12-x64-min deb12-x64-min' +labelMap['deb12-aarch64-min'] = 'docker-aarch64-min docker-deb12-aarch64-min deb12-aarch64-min' +labelMap['deb12-x64'] = 'docker-x64 docker-deb12-x64 deb12-x64' +labelMap['deb12-aarch64'] = 'docker-aarch64 docker-deb12-aarch64 deb12-aarch64' +labelMap['launcher-x64'] = 'launcher-x64' + +networkMap = [:] +networkMap['percona-vpc-eu'] = '10442325' // percona-vpc-eu + +initMap = [:] +initMap['deb-docker'] = '''#!/bin/bash -x + set -o xtrace + sudo fallocate -l 32G /swapfile + sudo chmod 600 /swapfile + sudo mkswap /swapfile + sudo swapon /swapfile + + export DEBIAN_FRONTEND=noninteractive + until sudo apt-get update; do + sleep 1 + echo try again + done + until sudo apt-get -y install openjdk-17-jre-headless apt-transport-https ca-certificates curl gnupg lsb-release unzip git; do + sleep 1 + echo try again + done + curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg + echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null + until sudo apt-get update; do + sleep 1 + echo try again + done + until sudo apt-get -y install docker-ce docker-ce-cli containerd.io; do + sleep 1 + echo try again + done + if ! $(aws --version | grep -q 'aws-cli/2'); then + find /tmp -maxdepth 1 -name "*aws*" | xargs sudo rm -rf + until curl "https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m)-2.22.35.zip" -o "/tmp/awscliv2.zip"; do + sleep 1 + echo try again + done + unzip -o /tmp/awscliv2.zip -d /tmp + cd /tmp/aws && sudo ./install + fi + sudo install -o $(id -u -n) -g $(id -g -n) -d /mnt/jenkins + sudo sysctl net.ipv4.tcp_fin_timeout=15 + sudo sysctl net.ipv4.tcp_tw_reuse=1 + sudo sysctl net.ipv6.conf.all.disable_ipv6=1 + sudo sysctl net.ipv6.conf.default.disable_ipv6=1 + sudo sysctl -w fs.inotify.max_user_watches=10000000 || true + sudo sysctl -w fs.aio-max-nr=1048576 || true + sudo sysctl -w fs.file-max=6815744 || true + echo "* soft core unlimited" | sudo tee -a /etc/security/limits.conf + sudo sed -i.bak -e 's^ExecStart=.*^ExecStart=/usr/bin/dockerd --data-root=/mnt/docker --default-ulimit nofile=900000:900000^' /lib/systemd/system/docker.service + sudo systemctl daemon-reload + sudo install -o root -g root -d /mnt/docker + sudo usermod -aG docker $(id -u -n) + sudo mkdir -p /etc/docker + echo '{"experimental": true, "ipv6": true, "fixed-cidr-v6": "fd3c:a8b0:18eb:5c06::/64"}' | sudo tee /etc/docker/daemon.json + sudo systemctl restart docker + echo "* * * * * root /usr/sbin/route add default gw 10.177.1.1 eth0" | sudo tee /etc/cron.d/fix-default-route +''' +initMap['deb12-x64-nbg1'] = initMap['deb-docker'] +initMap['deb12-x64-hel1'] = initMap['deb-docker'] +initMap['deb12-x64-fsn1'] = initMap['deb-docker'] +initMap['deb12-aarch64-nbg1'] = initMap['deb-docker'] +initMap['deb12-aarch64-hel1'] = initMap['deb-docker'] +initMap['deb12-aarch64-fsn1'] = initMap['deb-docker'] +initMap['deb12-x64-nbg1-min'] = initMap['deb-docker'] +initMap['deb12-x64-hel1-min'] = initMap['deb-docker'] +initMap['deb12-x64-fsn1-min'] = initMap['deb-docker'] +initMap['deb12-aarch64-nbg1-min'] = initMap['deb-docker'] +initMap['deb12-aarch64-hel1-min'] = initMap['deb-docker'] +initMap['deb12-aarch64-fsn1-min'] = initMap['deb-docker'] +initMap['launcher-x64-fsn1'] = initMap['deb-docker'] + +def templates = [ + /* new HetznerServerTemplate("ubuntu20-cx21", "java", "name=ubuntu20-docker", "fsn1", "cx21"), */ + // tmplName tmplLabels tmplImage region server type + new HetznerServerTemplate("deb12-x64-nbg1-min", labelMap['deb12-x64-min'], imageMap['deb12-x64'], "nbg1", "cpx41"), + new HetznerServerTemplate("deb12-aarch64-nbg1-min", labelMap['deb12-aarch64-min'], imageMap['deb12-aarch64'], "nbg1", "cax31"), + new HetznerServerTemplate("deb12-x64-hel1-min", labelMap['deb12-x64-min'], imageMap['deb12-x64'], "hel1", "cpx41"), + new HetznerServerTemplate("deb12-aarch64-hel1-min", labelMap['deb12-aarch64-min'], imageMap['deb12-aarch64'], "hel1", "cax31"), + new HetznerServerTemplate("deb12-x64-fsn1-min", labelMap['deb12-x64-min'], imageMap['deb12-x64'], "fsn1", "cpx41"), + new HetznerServerTemplate("deb12-aarch64-fsn1-min", labelMap['deb12-aarch64-min'], imageMap['deb12-aarch64'], "fsn1", "cax31"), + new HetznerServerTemplate("deb12-x64-nbg1", labelMap['deb12-x64'], imageMap['deb12-x64'], "nbg1", "cpx51"), + new HetznerServerTemplate("deb12-aarch64-nbg1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "nbg1", "cax41"), + new HetznerServerTemplate("deb12-x64-hel1", labelMap['deb12-x64'], imageMap['deb12-x64'], "hel1", "cpx51"), + new HetznerServerTemplate("deb12-aarch64-hel1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "hel1", "cax41"), + new HetznerServerTemplate("deb12-x64-fsn1", labelMap['deb12-x64'], imageMap['deb12-x64'], "fsn1", "cpx51"), + new HetznerServerTemplate("deb12-aarch64-fsn1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "fsn1", "cax41"), + new HetznerServerTemplate("launcher-x64-fsn1", labelMap['launcher-x64'], imageMap['launcher-x64'], "fsn1", "cpx21") +] + +templates.each { it -> + def sshConnector = new SshConnectorAsRoot("htz.cd.key") + sshConnector.setConnectionMethod(new PublicAddressOnly()) // Replace with the desired method + it.setConnector(sshConnector) + // it.setConnector(new SshConnectorAsRoot("hz.psmdb.cd")) + def tmplName = it.name + it.setNumExecutors(execMap[tmplName]) + it.bootDeadline = bootDeadlineMap[tmplName] + it.remoteFs = "/mnt/jenkins/" + it.jvmOpts = jvmOptsMap[tmplName] + it.network = networkMap['percona-vpc-eu'] + it.userData = initMap[tmplName] + } + +// public HetznerCloud(String name, String credentialsId, String instanceCapStr, List serverTemplates) +def cloud = new HetznerCloud(cloudName, "htz.cd.token", "100", templates) + +def jenkins = Jenkins.get() + +jenkins.clouds.remove(jenkins.clouds.getByName(cloudName)) +jenkins.clouds.add(cloud) +jenkins.save() From a4b1b81d72bcfc7aa8e0a8d352a80ebabf88f9de Mon Sep 17 00:00:00 2001 From: Surabhi Bhat Date: Fri, 21 Mar 2025 14:47:49 +0530 Subject: [PATCH 078/269] PKG-540 Adjust PSMDB build pipelines to use mongodb build scripts from private repo --- .../percona-server-for-mongodb-6.0.groovy | 145 +++++++++------- .../percona-server-for-mongodb-7.0.groovy | 156 ++++++++++-------- .../percona-server-for-mongodb-8.0.groovy | 147 ++++++++++------- 3 files changed, 256 insertions(+), 192 deletions(-) diff --git a/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy index ff1dfb6c77..d97eacf5f5 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy @@ -4,21 +4,36 @@ library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ ]) _ void buildStage(String DOCKER_OS, String STAGE_PARAM) { - sh """ - set -o xtrace - ls -laR ./ - rm -rf test/* - mkdir -p test - wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/percona-packaging/scripts/psmdb_builder.sh -O psmdb_builder.sh - pwd -P - ls -laR - export build_dir=\$(pwd -P) - docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + withCredentials([string(credentialsId: 'GITHUB_API_TOKEN', variable: 'TOKEN')]) { + sh """ set -o xtrace - cd \${build_dir} - bash -x ./psmdb_builder.sh --builddir=\${build_dir}/test --install_deps=1 - bash -x ./psmdb_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --branch=${GIT_BRANCH} --psm_ver=${PSMDB_VERSION} --psm_release=${PSMDB_RELEASE} --mongo_tools_tag=${MONGO_TOOLS_TAG} ${STAGE_PARAM}" + ls -laR ./ + rm -rf test/* + mkdir -p test + if [ \${FULL_FEATURED} = "yes" ]; then + PRO_BRANCH="v6.0" + curl -L -H "Authorization: Bearer \${TOKEN}" \ + -H "Accept: application/vnd.github.v3.raw" \ + -o psmdb_builder.sh \ + "https://api.github.com/repos/percona/mongo-build-scripts/contents/scripts/psmdb_builder.sh?ref=\${PRO_BRANCH}" + else + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/percona-packaging/scripts/psmdb_builder.sh -O psmdb_builder.sh + fi + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./psmdb_builder.sh --builddir=\${build_dir}/test --install_deps=1 + if [ \${FULL_FEATURED} = "yes" ]; then + git clone --depth 1 --branch \${PRO_BRANCH} https://x-access-token:${TOKEN}@github.com/percona/mongo-build-scripts.git percona-packaging + mv -f \${build_dir}/percona-packaging \${build_dir}/test/. + ls -la \${build_dir}/percona-packaging + fi + bash -x ./psmdb_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --branch=${GIT_BRANCH} --psm_ver=${PSMDB_VERSION} --psm_release=${PSMDB_RELEASE} --mongo_tools_tag=${MONGO_TOOLS_TAG} ${STAGE_PARAM}" """ + } } void cleanUpWS() { @@ -64,8 +79,8 @@ pipeline { name: 'PSMDB_REPO') choice( choices: 'no\nyes', - description: 'Enable fipsmode', - name: 'FIPSMODE') + description: 'Enable all pro features', + name: 'FULL_FEATURED') choice( choices: 'laboratory\ntesting\nexperimental', description: 'Repo component to push packages to', @@ -85,7 +100,13 @@ pipeline { steps { slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") cleanUpWS() - buildStage("oraclelinux:8", "--get_sources=1") + script { + if (env.FULL_FEATURED == 'yes') { + buildStage("oraclelinux:8", "--get_sources=1 --full_featured=1") + } else { + buildStage("oraclelinux:8", "--get_sources=1") + } + } sh ''' REPO_UPLOAD_PATH=$(grep "UPLOAD" test/percona-server-mongodb-60.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") @@ -113,8 +134,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("oraclelinux:8", "--build_src_rpm=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("oraclelinux:8", "--build_src_rpm=1 --full_featured=1") } else { buildStage("oraclelinux:8", "--build_src_rpm=1") } @@ -132,8 +153,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("ubuntu:focal", "--build_src_deb=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("ubuntu:focal", "--build_src_deb=1 --full_featured=1") } else { buildStage("ubuntu:focal", "--build_src_deb=1") } @@ -154,8 +175,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("oraclelinux:8", "--build_rpm=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("oraclelinux:8", "--build_rpm=1 --full_featured=1") } else { buildStage("oraclelinux:8", "--build_rpm=1") } @@ -171,8 +192,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("oraclelinux:8", "--build_rpm=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("oraclelinux:8", "--build_rpm=1 --full_featured=1") } else { buildStage("oraclelinux:8", "--build_rpm=1") } @@ -188,8 +209,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("oraclelinux:9", "--build_rpm=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("oraclelinux:9", "--build_rpm=1 --full_featured=1") } else { buildStage("oraclelinux:9", "--build_rpm=1") } @@ -205,8 +226,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("oraclelinux:9", "--build_rpm=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("oraclelinux:9", "--build_rpm=1 --full_featured=1") } else { buildStage("oraclelinux:9", "--build_rpm=1") } @@ -222,8 +243,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("amazonlinux:2023", "--build_rpm=1 --full_featured=1") } else { buildStage("amazonlinux:2023", "--build_rpm=1") } @@ -239,8 +260,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("amazonlinux:2023", "--build_rpm=1 --full_featured=1") } else { buildStage("amazonlinux:2023", "--build_rpm=1") } @@ -256,8 +277,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("ubuntu:focal", "--build_deb=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("ubuntu:focal", "--build_deb=1 --full_featured=1") } else { buildStage("ubuntu:focal", "--build_deb=1") } @@ -273,8 +294,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("ubuntu:focal", "--build_deb=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("ubuntu:focal", "--build_deb=1 --full_featured=1") } else { buildStage("ubuntu:focal", "--build_deb=1") } @@ -290,8 +311,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("ubuntu:jammy", "--build_deb=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("ubuntu:jammy", "--build_deb=1 --full_featured=1") } else { buildStage("ubuntu:jammy", "--build_deb=1") } @@ -307,8 +328,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("ubuntu:jammy", "--build_deb=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("ubuntu:jammy", "--build_deb=1 --full_featured=1") } else { buildStage("ubuntu:jammy", "--build_deb=1") } @@ -324,8 +345,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("ubuntu:noble", "--build_deb=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("ubuntu:noble", "--build_deb=1 --full_featured=1") } else { buildStage("ubuntu:noble", "--build_deb=1") } @@ -341,8 +362,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("ubuntu:noble", "--build_deb=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("ubuntu:noble", "--build_deb=1 --full_featured=1") } else { buildStage("ubuntu:noble", "--build_deb=1") } @@ -358,8 +379,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("debian:bullseye", "--build_deb=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("debian:bullseye", "--build_deb=1 --full_featured=1") } else { buildStage("debian:bullseye", "--build_deb=1") } @@ -375,8 +396,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("oraclelinux:8", "--build_tarball=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("oraclelinux:8", "--build_tarball=1 --full_featured=1") } else { buildStage("oraclelinux:8", "--build_tarball=1") } @@ -392,8 +413,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("oraclelinux:9", "--build_tarball=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("oraclelinux:9", "--build_tarball=1 --full_featured=1") } else { buildStage("oraclelinux:9", "--build_tarball=1") } @@ -409,8 +430,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("amazonlinux:2023", "--build_tarball=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("amazonlinux:2023", "--build_tarball=1 --full_featured=1") } else { buildStage("amazonlinux:2023", "--build_tarball=1") } @@ -420,7 +441,7 @@ pipeline { } stage('Ubuntu Focal(20.04) binary tarball(glibc2.31)') { when { - expression { env.FIPSMODE != 'yes' } + expression { env.FULL_FEATURED != 'yes' } } agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' @@ -434,7 +455,7 @@ pipeline { } stage('Debian Bullseye(11) binary tarball(glibc2.31)') { when { - expression { env.FIPSMODE != 'yes' } + expression { env.FULL_FEATURED != 'yes' } } agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' @@ -454,8 +475,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("ubuntu:jammy", "--build_tarball=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("ubuntu:jammy", "--build_tarball=1 --full_featured=1") } else { buildStage("ubuntu:jammy", "--build_tarball=1") } @@ -471,8 +492,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("ubuntu:noble", "--build_tarball=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("ubuntu:noble", "--build_tarball=1 --full_featured=1") } else { buildStage("ubuntu:noble", "--build_tarball=1") } @@ -506,7 +527,7 @@ pipeline { steps { // sync packages script { - if (env.FIPSMODE == 'yes') { + if (env.FULL_FEATURED == 'yes') { // Replace by a new procedure when it's ready sync2PrivateProdAutoBuild(params.CLOUD, PSMDB_REPO+"-pro", COMPONENT) } else { @@ -518,7 +539,7 @@ pipeline { stage('Push Tarballs to TESTING download area') { steps { script { - if (env.FIPSMODE == 'yes') { + if (env.FULL_FEATURED == 'yes') { try { uploadTarballToDownloadsTesting(params.CLOUD, "psmdb-gated", "${PSMDB_VERSION}") } @@ -544,7 +565,7 @@ pipeline { } steps { script { - if (env.FIPSMODE == 'YES') { + if (env.FULL_FEATURED == 'YES') { echo "The step is skipped" } else { echo "====> Build docker containers" @@ -624,7 +645,7 @@ pipeline { success { slackNotify("#releases", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") script { - if (env.FIPSMODE == 'yes') { + if (env.FULL_FEATURED == 'yes') { currentBuild.description = "!!! PRO Built on ${GIT_BRANCH}. Path to packages: experimental/${AWS_STASH_PATH}" } else { currentBuild.description = "Built on ${GIT_BRANCH}. Path to packages: experimental/${AWS_STASH_PATH}" diff --git a/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy index c96d336c9e..61e5eb55d4 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy @@ -4,21 +4,37 @@ library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ ]) _ void buildStage(String DOCKER_OS, String STAGE_PARAM) { - sh """ - set -o xtrace - ls -laR ./ - rm -rf test/* - mkdir -p test - wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/percona-packaging/scripts/psmdb_builder.sh -O psmdb_builder.sh - pwd -P - ls -laR - export build_dir=\$(pwd -P) - docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + withCredentials([string(credentialsId: 'GITHUB_API_TOKEN', variable: 'TOKEN')]) { + sh """ set -o xtrace - cd \${build_dir} - bash -x ./psmdb_builder.sh --builddir=\${build_dir}/test --install_deps=1 - bash -x ./psmdb_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --branch=${GIT_BRANCH} --psm_ver=${PSMDB_VERSION} --psm_release=${PSMDB_RELEASE} --mongo_tools_tag=${MONGO_TOOLS_TAG} ${STAGE_PARAM}" - """ + ls -laR ./ + rm -rf test/* + mkdir -p test + if [ \${FULL_FEATURED} = "yes" ]; then + PRO_BRANCH="v7.0" + curl -H "Authorization: token ${TOKEN}" https://api.github.com/user + curl -L -H "Authorization: Bearer \${TOKEN}" \ + -H "Accept: application/vnd.github.v3.raw" \ + -o psmdb_builder.sh \ + "https://api.github.com/repos/percona/mongo-build-scripts/contents/scripts/psmdb_builder.sh?ref=\${PRO_BRANCH}" + else + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/percona-packaging/scripts/psmdb_builder.sh -O psmdb_builder.sh + fi + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./psmdb_builder.sh --builddir=\${build_dir}/test --install_deps=1 + if [ \${FULL_FEATURED} = "yes" ]; then + git clone --depth 1 --branch \${PRO_BRANCH} https://x-access-token:${TOKEN}@github.com/percona/mongo-build-scripts.git percona-packaging + mv -f \${build_dir}/percona-packaging \${build_dir}/test/. + ls -la \${build_dir}/percona-packaging + fi + bash -x ./psmdb_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --branch=${GIT_BRANCH} --psm_ver=${PSMDB_VERSION} --psm_release=${PSMDB_RELEASE} --mongo_tools_tag=${MONGO_TOOLS_TAG} ${STAGE_PARAM}" + """ + } } void cleanUpWS() { @@ -64,8 +80,8 @@ pipeline { name: 'PSMDB_REPO') choice( choices: 'no\nyes', - description: 'Enable fipsmode', - name: 'FIPSMODE') + description: 'Enable all pro features', + name: 'FULL_FEATURED') choice( choices: 'laboratory\ntesting\nexperimental', description: 'Repo component to push packages to', @@ -85,7 +101,13 @@ pipeline { steps { slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") cleanUpWS() - buildStage("oraclelinux:8", "--get_sources=1") + script { + if (env.FULL_FEATURED == 'yes') { + buildStage("oraclelinux:8", "--get_sources=1 --full_featured=1") + } else { + buildStage("oraclelinux:8", "--get_sources=1") + } + } sh ''' REPO_UPLOAD_PATH=$(grep "UPLOAD" test/percona-server-mongodb-70.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") @@ -113,8 +135,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("oraclelinux:8", "--build_src_rpm=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("oraclelinux:8", "--build_src_rpm=1 --full_featured=1") } else { buildStage("oraclelinux:8", "--build_src_rpm=1") } @@ -132,8 +154,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("ubuntu:focal", "--build_src_deb=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("ubuntu:focal", "--build_src_deb=1 --full_featured=1") } else { buildStage("ubuntu:focal", "--build_src_deb=1") } @@ -154,8 +176,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("oraclelinux:8", "--build_rpm=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("oraclelinux:8", "--build_rpm=1 --full_featured=1") } else { buildStage("oraclelinux:8", "--build_rpm=1") } @@ -171,8 +193,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("oraclelinux:8", "--build_rpm=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("oraclelinux:8", "--build_rpm=1 --full_featured=1") } else { buildStage("oraclelinux:8", "--build_rpm=1") } @@ -188,8 +210,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("oraclelinux:9", "--build_rpm=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("oraclelinux:9", "--build_rpm=1 --full_featured=1") } else { buildStage("oraclelinux:9", "--build_rpm=1") } @@ -205,8 +227,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("oraclelinux:9", "--build_rpm=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("oraclelinux:9", "--build_rpm=1 --full_featured=1") } else { buildStage("oraclelinux:9", "--build_rpm=1") } @@ -222,8 +244,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("amazonlinux:2023", "--build_rpm=1 --full_featured=1") } else { buildStage("amazonlinux:2023", "--build_rpm=1") } @@ -239,8 +261,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("amazonlinux:2023", "--build_rpm=1 --full_featured=1") } else { buildStage("amazonlinux:2023", "--build_rpm=1") } @@ -256,8 +278,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("ubuntu:focal", "--build_deb=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("ubuntu:focal", "--build_deb=1 --full_featured=1") } else { buildStage("ubuntu:focal", "--build_deb=1") } @@ -273,8 +295,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("ubuntu:focal", "--build_deb=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("ubuntu:focal", "--build_deb=1 --full_featured=1") } else { buildStage("ubuntu:focal", "--build_deb=1") } @@ -290,8 +312,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("ubuntu:jammy", "--build_deb=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("ubuntu:jammy", "--build_deb=1 --full_featured=1") } else { buildStage("ubuntu:jammy", "--build_deb=1") } @@ -307,8 +329,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("ubuntu:jammy", "--build_deb=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("ubuntu:jammy", "--build_deb=1 --full_featured=1") } else { buildStage("ubuntu:jammy", "--build_deb=1") } @@ -324,8 +346,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("ubuntu:noble", "--build_deb=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("ubuntu:noble", "--build_deb=1 --full_featured=1") } else { buildStage("ubuntu:noble", "--build_deb=1") } @@ -341,8 +363,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("ubuntu:noble", "--build_deb=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("ubuntu:noble", "--build_deb=1 --full_featured=1") } else { buildStage("ubuntu:noble", "--build_deb=1") } @@ -358,8 +380,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("debian:bullseye", "--build_deb=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("debian:bullseye", "--build_deb=1 --full_featured=1") } else { buildStage("debian:bullseye", "--build_deb=1") } @@ -375,8 +397,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("debian:bookworm", "--build_deb=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("debian:bookworm", "--build_deb=1 --full_featured=1") } else { buildStage("debian:bookworm", "--build_deb=1") } @@ -392,8 +414,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("oraclelinux:8", "--build_tarball=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("oraclelinux:8", "--build_tarball=1 --full_featured=1") } else { buildStage("oraclelinux:8", "--build_tarball=1") } @@ -409,8 +431,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("oraclelinux:9", "--build_tarball=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("oraclelinux:9", "--build_tarball=1 --full_featured=1") } else { buildStage("oraclelinux:9", "--build_tarball=1") } @@ -426,8 +448,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("amazonlinux:2023", "--build_tarball=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("amazonlinux:2023", "--build_tarball=1 --full_featured=1") } else { buildStage("amazonlinux:2023", "--build_tarball=1") } @@ -437,7 +459,7 @@ pipeline { } stage('Ubuntu Focal(20.04) binary tarball(glibc2.31)') { when { - expression { env.FIPSMODE != 'yes' } + expression { env.FULL_FEATURED != 'yes' } } agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' @@ -457,8 +479,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("ubuntu:jammy", "--build_tarball=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("ubuntu:jammy", "--build_tarball=1 --full_featured=1") } else { buildStage("ubuntu:jammy", "--build_tarball=1") } @@ -474,8 +496,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("ubuntu:noble", "--build_tarball=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("ubuntu:noble", "--build_tarball=1 --full_featured=1") } else { buildStage("ubuntu:noble", "--build_tarball=1") } @@ -485,7 +507,7 @@ pipeline { } stage('Debian Bullseye(11) binary tarball(glibc2.31)') { when { - expression { env.FIPSMODE != 'yes' } + expression { env.FULL_FEATURED != 'yes' } } agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' @@ -505,8 +527,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("debian:bookworm", "--build_tarball=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("debian:bookworm", "--build_tarball=1 --full_featured=1") } else { buildStage("debian:bookworm", "--build_tarball=1") } @@ -540,7 +562,7 @@ pipeline { steps { // sync packages script { - if (env.FIPSMODE == 'yes') { + if (env.FULL_FEATURED == 'yes') { sync2PrivateProdAutoBuild(params.CLOUD, PSMDB_REPO+"-pro", COMPONENT) } else { sync2ProdAutoBuild(params.CLOUD, PSMDB_REPO, COMPONENT) @@ -551,7 +573,7 @@ pipeline { stage('Push Tarballs to TESTING download area') { steps { script { - if (env.FIPSMODE == 'yes') { + if (env.FULL_FEATURED == 'yes') { try { uploadTarballToDownloadsTesting(params.CLOUD, "psmdb-gated", "${PSMDB_VERSION}") } @@ -578,7 +600,7 @@ pipeline { } steps { script { - if (env.FIPSMODE == 'YES') { + if (env.FULL_FEATURED == 'YES') { echo "The step is skipped" } else { echo "====> Build docker containers" @@ -660,7 +682,7 @@ pipeline { success { slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") script { - if (env.FIPSMODE == 'yes') { + if (env.FULL_FEATURED == 'yes') { currentBuild.description = "!!! PRO Built on ${GIT_BRANCH}. Path to packages: experimental/${AWS_STASH_PATH}" } else { currentBuild.description = "Built on ${GIT_BRANCH}. Path to packages: experimental/${AWS_STASH_PATH}" diff --git a/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy index 8a326320aa..0daa2abdae 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy @@ -4,19 +4,34 @@ library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ ]) _ void buildStage(String DOCKER_OS, String STAGE_PARAM) { - sh """ - set -o xtrace - mkdir test - wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/percona-packaging/scripts/psmdb_builder.sh -O psmdb_builder.sh - pwd -P - ls -laR - export build_dir=\$(pwd -P) - docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + withCredentials([string(credentialsId: 'GITHUB_API_TOKEN', variable: 'TOKEN')]) { + sh """ set -o xtrace - cd \${build_dir} - bash -x ./psmdb_builder.sh --builddir=\${build_dir}/test --install_deps=1 - bash -x ./psmdb_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --branch=${GIT_BRANCH} --psm_ver=${PSMDB_VERSION} --psm_release=${PSMDB_RELEASE} --mongo_tools_tag=${MONGO_TOOLS_TAG} ${STAGE_PARAM}" - """ + mkdir test + if [ \${FULL_FEATURED} = "yes" ]; then + PRO_BRANCH="v8.0" + curl -L -H "Authorization: Bearer \${TOKEN}" \ + -H "Accept: application/vnd.github.v3.raw" \ + -o psmdb_builder.sh \ + "https://api.github.com/repos/percona/mongo-build-scripts/contents/scripts/psmdb_builder.sh?ref=\${PRO_BRANCH}" + else + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/percona-packaging/scripts/psmdb_builder.sh -O psmdb_builder.sh + fi + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./psmdb_builder.sh --builddir=\${build_dir}/test --install_deps=1 + if [ \${FULL_FEATURED} = "yes" ]; then + git clone --depth 1 --branch \${PRO_BRANCH} https://x-access-token:${TOKEN}@github.com/percona/mongo-build-scripts.git percona-packaging + mv -f \${build_dir}/percona-packaging \${build_dir}/test/. + ls -la \${build_dir}/percona-packaging + fi + bash -x ./psmdb_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --branch=${GIT_BRANCH} --psm_ver=${PSMDB_VERSION} --psm_release=${PSMDB_RELEASE} --mongo_tools_tag=${MONGO_TOOLS_TAG} ${STAGE_PARAM}" + """ + } } void cleanUpWS() { @@ -62,8 +77,8 @@ pipeline { name: 'PSMDB_REPO') choice( choices: 'no\nyes', - description: 'Enable fipsmode', - name: 'FIPSMODE') + description: 'Enable all pro features', + name: 'FULL_FEATURED') choice( choices: 'laboratory\ntesting\nexperimental', description: 'Repo component to push packages to', @@ -83,7 +98,13 @@ pipeline { steps { slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") cleanUpWS() - buildStage("oraclelinux:8", "--get_sources=1") + script { + if (env.FULL_FEATURED == 'yes') { + buildStage("oraclelinux:8", "--get_sources=1 --full_featured=1") + } else { + buildStage("oraclelinux:8", "--get_sources=1") + } + } sh ''' REPO_UPLOAD_PATH=$(grep "UPLOAD" test/percona-server-mongodb-80.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") @@ -111,8 +132,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("oraclelinux:8", "--build_src_rpm=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("oraclelinux:8", "--build_src_rpm=1 --full_featured=1") } else { buildStage("oraclelinux:8", "--build_src_rpm=1") } @@ -130,8 +151,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("ubuntu:focal", "--build_src_deb=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("ubuntu:focal", "--build_src_deb=1 --full_featured=1") } else { buildStage("ubuntu:focal", "--build_src_deb=1") } @@ -152,8 +173,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("oraclelinux:8", "--build_rpm=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("oraclelinux:8", "--build_rpm=1 --full_featured=1") } else { buildStage("oraclelinux:8", "--build_rpm=1") } @@ -169,8 +190,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("oraclelinux:8", "--build_rpm=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("oraclelinux:8", "--build_rpm=1 --full_featured=1") } else { buildStage("oraclelinux:8", "--build_rpm=1") } @@ -186,8 +207,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("oraclelinux:9", "--build_rpm=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("oraclelinux:9", "--build_rpm=1 --full_featured=1") } else { buildStage("oraclelinux:9", "--build_rpm=1") } @@ -203,8 +224,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("oraclelinux:9", "--build_rpm=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("oraclelinux:9", "--build_rpm=1 --full_featured=1") } else { buildStage("oraclelinux:9", "--build_rpm=1") } @@ -220,8 +241,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("amazonlinux:2023", "--build_rpm=1 --full_featured=1") } else { buildStage("amazonlinux:2023", "--build_rpm=1") } @@ -237,8 +258,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("amazonlinux:2023", "--build_rpm=1 --full_featured=1") } else { buildStage("amazonlinux:2023", "--build_rpm=1") } @@ -254,8 +275,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("ubuntu:focal", "--build_deb=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("ubuntu:focal", "--build_deb=1 --full_featured=1") } else { buildStage("ubuntu:focal", "--build_deb=1") } @@ -271,8 +292,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("ubuntu:focal", "--build_deb=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("ubuntu:focal", "--build_deb=1 --full_featured=1") } else { buildStage("ubuntu:focal", "--build_deb=1") } @@ -288,8 +309,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("ubuntu:jammy", "--build_deb=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("ubuntu:jammy", "--build_deb=1 --full_featured=1") } else { buildStage("ubuntu:jammy", "--build_deb=1") } @@ -305,8 +326,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("ubuntu:jammy", "--build_deb=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("ubuntu:jammy", "--build_deb=1 --full_featured=1") } else { buildStage("ubuntu:jammy", "--build_deb=1") } @@ -322,8 +343,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("ubuntu:noble", "--build_deb=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("ubuntu:noble", "--build_deb=1 --full_featured=1") } else { buildStage("ubuntu:noble", "--build_deb=1") } @@ -339,8 +360,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("ubuntu:noble", "--build_deb=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("ubuntu:noble", "--build_deb=1 --full_featured=1") } else { buildStage("ubuntu:noble", "--build_deb=1") } @@ -356,8 +377,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("debian:bookworm", "--build_deb=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("debian:bookworm", "--build_deb=1 --full_featured=1") } else { buildStage("debian:bookworm", "--build_deb=1") } @@ -373,8 +394,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("oraclelinux:8", "--build_tarball=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("oraclelinux:8", "--build_tarball=1 --full_featured=1") } else { buildStage("oraclelinux:8", "--build_tarball=1") } @@ -390,8 +411,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("oraclelinux:9", "--build_tarball=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("oraclelinux:9", "--build_tarball=1 --full_featured=1") } else { buildStage("oraclelinux:9", "--build_tarball=1") } @@ -407,8 +428,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("amazonlinux:2023", "--build_tarball=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("amazonlinux:2023", "--build_tarball=1 --full_featured=1") } else { buildStage("amazonlinux:2023", "--build_tarball=1") } @@ -424,8 +445,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("ubuntu:focal", "--build_tarball=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("ubuntu:focal", "--build_tarball=1 --full_featured=1") } else { buildStage("ubuntu:focal", "--build_tarball=1") } @@ -441,8 +462,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("ubuntu:jammy", "--build_tarball=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("ubuntu:jammy", "--build_tarball=1 --full_featured=1") } else { buildStage("ubuntu:jammy", "--build_tarball=1") } @@ -458,8 +479,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("ubuntu:noble", "--build_tarball=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("ubuntu:noble", "--build_tarball=1 --full_featured=1") } else { buildStage("ubuntu:noble", "--build_tarball=1") } @@ -475,8 +496,8 @@ pipeline { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'yes') { - buildStage("debian:bookworm", "--build_tarball=1 --enable_fipsmode=1") + if (env.FULL_FEATURED == 'yes') { + buildStage("debian:bookworm", "--build_tarball=1 --full_featured=1") } else { buildStage("debian:bookworm", "--build_tarball=1") } @@ -510,7 +531,7 @@ pipeline { steps { // sync packages script { - if (env.FIPSMODE == 'yes') { + if (env.FULL_FEATURED == 'yes') { sync2PrivateProdAutoBuild(params.CLOUD, PSMDB_REPO+"-pro", COMPONENT) } else { sync2ProdAutoBuild(params.CLOUD, PSMDB_REPO, COMPONENT) @@ -521,7 +542,7 @@ pipeline { stage('Push Tarballs to TESTING download area') { steps { script { - if (env.FIPSMODE == 'yes') { + if (env.FULL_FEATURED == 'yes') { try { uploadTarballToDownloadsTesting(params.CLOUD, "psmdb-gated", "${PSMDB_VERSION}") } @@ -547,7 +568,7 @@ pipeline { } steps { script { - if (env.FIPSMODE == 'YES') { + if (env.FULL_FEATURED == 'YES') { echo "The step is skipped" } else { echo "====> Build docker containers" @@ -628,7 +649,7 @@ pipeline { success { slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") script { - if (env.FIPSMODE == 'yes') { + if (env.FULL_FEATURED == 'yes') { currentBuild.description = "!!! PRO Built on ${GIT_BRANCH}. Path to packages: experimental/${AWS_STASH_PATH}" } else { currentBuild.description = "Built on ${GIT_BRANCH}. Path to packages: experimental/${AWS_STASH_PATH}" From 0d5b73edda3239ba7c3314c00e14d3c85703379b Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Tue, 25 Mar 2025 18:51:16 +0200 Subject: [PATCH 079/269] PKG-543 pxb.cd: configure Hetzner cloud --- IaC/pxb.cd/init.groovy.d/htz.cloud.groovy | 179 ++++++++++++++++++++++ 1 file changed, 179 insertions(+) create mode 100644 IaC/pxb.cd/init.groovy.d/htz.cloud.groovy diff --git a/IaC/pxb.cd/init.groovy.d/htz.cloud.groovy b/IaC/pxb.cd/init.groovy.d/htz.cloud.groovy new file mode 100644 index 0000000000..2b810854b5 --- /dev/null +++ b/IaC/pxb.cd/init.groovy.d/htz.cloud.groovy @@ -0,0 +1,179 @@ +import cloud.dnation.jenkins.plugins.hetzner.* +import cloud.dnation.jenkins.plugins.hetzner.launcher.* +import hudson.model.* +import jenkins.model.Jenkins +import java.util.logging.Logger + +def cloudName = "pxb-htz" + +imageMap = [:] // ID TYPE NAME DESCRIPTION ARCHITECTURE IMAGE SIZE DISK SIZE CREATED DEPRECATED +imageMap['deb12-x64'] = '114690387' // 114690387 system debian-12 Debian 12 x86 - 5 GB Tue Jun 13 09:00:02 EEST 2023 - +imageMap['deb12-aarch64'] = '114690389' // 114690389 system debian-12 Debian 12 arm - 5 GB Tue Jun 13 09:00:03 EEST 2023 - +imageMap['launcher-x64'] = imageMap['deb12-x64'] + +execMap = [:] +execMap['deb'] = 1 +execMap['deb12-x64-nbg1'] = execMap['deb'] +execMap['deb12-x64-hel1'] = execMap['deb'] +execMap['deb12-x64-fsn1'] = execMap['deb'] +execMap['deb12-aarch64-nbg1'] = execMap['deb'] +execMap['deb12-aarch64-hel1'] = execMap['deb'] +execMap['deb12-aarch64-fsn1'] = execMap['deb'] +execMap['deb12-x64-nbg1-min'] = execMap['deb'] +execMap['deb12-x64-hel1-min'] = execMap['deb'] +execMap['deb12-x64-fsn1-min'] = execMap['deb'] +execMap['deb12-aarch64-nbg1-min'] = execMap['deb'] +execMap['deb12-aarch64-hel1-min'] = execMap['deb'] +execMap['deb12-aarch64-fsn1-min'] = execMap['deb'] +execMap['launcher-x64-fsn1'] = 10 + +bootDeadlineMap =[:] +bootDeadlineMap['default'] = 3 +bootDeadlineMap['deb12-x64-nbg1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-hel1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-fsn1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-nbg1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-hel1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-fsn1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-nbg1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-hel1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-fsn1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-nbg1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-hel1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-fsn1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['launcher-x64-fsn1'] = bootDeadlineMap['default'] + +jvmOptsMap = [:] +jvmOptsMap['deb12'] = '-Xmx512m -Xms512m --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED' +jvmOptsMap['deb12-x64-nbg1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-hel1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-fsn1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-nbg1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-hel1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-fsn1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-nbg1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-hel1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-fsn1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-nbg1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-hel1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-fsn1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['launcher-x64-fsn1'] = jvmOptsMap['deb12'] + +labelMap = [:] +labelMap['deb12-x64-min'] = 'docker-x64-min docker-deb12-x64-min deb12-x64-min' +labelMap['deb12-aarch64-min'] = 'docker-aarch64-min docker-deb12-aarch64-min deb12-aarch64-min' +labelMap['deb12-x64'] = 'docker-x64 docker-deb12-x64 deb12-x64' +labelMap['deb12-aarch64'] = 'docker-aarch64 docker-deb12-aarch64 deb12-aarch64' +labelMap['launcher-x64'] = 'launcher-x64' + +networkMap = [:] +networkMap['percona-vpc-eu'] = '10442325' // percona-vpc-eu + +initMap = [:] +initMap['deb-docker'] = '''#!/bin/bash -x + set -o xtrace + sudo fallocate -l 32G /swapfile + sudo chmod 600 /swapfile + sudo mkswap /swapfile + sudo swapon /swapfile + + export DEBIAN_FRONTEND=noninteractive + until sudo apt-get update; do + sleep 1 + echo try again + done + until sudo apt-get -y install openjdk-17-jre-headless apt-transport-https ca-certificates curl gnupg lsb-release unzip git; do + sleep 1 + echo try again + done + curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg + echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null + until sudo apt-get update; do + sleep 1 + echo try again + done + until sudo apt-get -y install docker-ce docker-ce-cli containerd.io; do + sleep 1 + echo try again + done + if ! $(aws --version | grep -q 'aws-cli/2'); then + find /tmp -maxdepth 1 -name "*aws*" | xargs sudo rm -rf + until curl "https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m)-2.22.35.zip" -o "/tmp/awscliv2.zip"; do + sleep 1 + echo try again + done + unzip -o /tmp/awscliv2.zip -d /tmp + cd /tmp/aws && sudo ./install + fi + sudo install -o $(id -u -n) -g $(id -g -n) -d /mnt/jenkins + sudo sysctl net.ipv4.tcp_fin_timeout=15 + sudo sysctl net.ipv4.tcp_tw_reuse=1 + sudo sysctl net.ipv6.conf.all.disable_ipv6=1 + sudo sysctl net.ipv6.conf.default.disable_ipv6=1 + sudo sysctl -w fs.inotify.max_user_watches=10000000 || true + sudo sysctl -w fs.aio-max-nr=1048576 || true + sudo sysctl -w fs.file-max=6815744 || true + echo "* soft core unlimited" | sudo tee -a /etc/security/limits.conf + sudo sed -i.bak -e 's^ExecStart=.*^ExecStart=/usr/bin/dockerd --data-root=/mnt/docker --default-ulimit nofile=900000:900000^' /lib/systemd/system/docker.service + sudo systemctl daemon-reload + sudo install -o root -g root -d /mnt/docker + sudo usermod -aG docker $(id -u -n) + sudo mkdir -p /etc/docker + echo '{"experimental": true, "ipv6": true, "fixed-cidr-v6": "fd3c:a8b0:18eb:5c06::/64"}' | sudo tee /etc/docker/daemon.json + sudo systemctl restart docker + echo "* * * * * root /usr/sbin/route add default gw 10.177.1.1 eth0" | sudo tee /etc/cron.d/fix-default-route +''' +initMap['deb12-x64-nbg1'] = initMap['deb-docker'] +initMap['deb12-x64-hel1'] = initMap['deb-docker'] +initMap['deb12-x64-fsn1'] = initMap['deb-docker'] +initMap['deb12-aarch64-nbg1'] = initMap['deb-docker'] +initMap['deb12-aarch64-hel1'] = initMap['deb-docker'] +initMap['deb12-aarch64-fsn1'] = initMap['deb-docker'] +initMap['deb12-x64-nbg1-min'] = initMap['deb-docker'] +initMap['deb12-x64-hel1-min'] = initMap['deb-docker'] +initMap['deb12-x64-fsn1-min'] = initMap['deb-docker'] +initMap['deb12-aarch64-nbg1-min'] = initMap['deb-docker'] +initMap['deb12-aarch64-hel1-min'] = initMap['deb-docker'] +initMap['deb12-aarch64-fsn1-min'] = initMap['deb-docker'] +initMap['launcher-x64-fsn1'] = initMap['deb-docker'] + +def templates = [ + /* new HetznerServerTemplate("ubuntu20-cx21", "java", "name=ubuntu20-docker", "fsn1", "cx21"), */ + // tmplName tmplLabels tmplImage region server type + new HetznerServerTemplate("deb12-x64-nbg1-min", labelMap['deb12-x64-min'], imageMap['deb12-x64'], "nbg1", "cpx41"), + new HetznerServerTemplate("deb12-aarch64-nbg1-min", labelMap['deb12-aarch64-min'], imageMap['deb12-aarch64'], "nbg1", "cax31"), + new HetznerServerTemplate("deb12-x64-hel1-min", labelMap['deb12-x64-min'], imageMap['deb12-x64'], "hel1", "cpx41"), + new HetznerServerTemplate("deb12-aarch64-hel1-min", labelMap['deb12-aarch64-min'], imageMap['deb12-aarch64'], "hel1", "cax31"), + new HetznerServerTemplate("deb12-x64-fsn1-min", labelMap['deb12-x64-min'], imageMap['deb12-x64'], "fsn1", "cpx41"), + new HetznerServerTemplate("deb12-aarch64-fsn1-min", labelMap['deb12-aarch64-min'], imageMap['deb12-aarch64'], "fsn1", "cax31"), + new HetznerServerTemplate("deb12-x64-nbg1", labelMap['deb12-x64'], imageMap['deb12-x64'], "nbg1", "cpx51"), + new HetznerServerTemplate("deb12-aarch64-nbg1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "nbg1", "cax41"), + new HetznerServerTemplate("deb12-x64-hel1", labelMap['deb12-x64'], imageMap['deb12-x64'], "hel1", "cpx51"), + new HetznerServerTemplate("deb12-aarch64-hel1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "hel1", "cax41"), + new HetznerServerTemplate("deb12-x64-fsn1", labelMap['deb12-x64'], imageMap['deb12-x64'], "fsn1", "cpx51"), + new HetznerServerTemplate("deb12-aarch64-fsn1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "fsn1", "cax41"), + new HetznerServerTemplate("launcher-x64-fsn1", labelMap['launcher-x64'], imageMap['launcher-x64'], "fsn1", "cpx21") +] + +templates.each { it -> + def sshConnector = new SshConnectorAsRoot("htz.cd.key") + sshConnector.setConnectionMethod(new PublicAddressOnly()) // Replace with the desired method + it.setConnector(sshConnector) + // it.setConnector(new SshConnectorAsRoot("hz.psmdb.cd")) + def tmplName = it.name + it.setNumExecutors(execMap[tmplName]) + it.bootDeadline = bootDeadlineMap[tmplName] + it.remoteFs = "/mnt/jenkins/" + it.jvmOpts = jvmOptsMap[tmplName] + it.network = networkMap['percona-vpc-eu'] + it.userData = initMap[tmplName] + } + +// public HetznerCloud(String name, String credentialsId, String instanceCapStr, List serverTemplates) +def cloud = new HetznerCloud(cloudName, "htz.cd.token", "100", templates) + +def jenkins = Jenkins.get() + +jenkins.clouds.remove(jenkins.clouds.getByName(cloudName)) +jenkins.clouds.add(cloud) +jenkins.save() From 2ddec280e82031a64d6ad75867fe3b6de5c3b593 Mon Sep 17 00:00:00 2001 From: Muhammad Aqeel Date: Wed, 26 Mar 2025 14:09:28 +0500 Subject: [PATCH 080/269] [PG-1384]: Updates PG 17.4 tag (#3237) --- ppg/pg_source_tarballs.groovy | 4 ++-- ppg/pg_tarballs-arm.groovy | 6 +++--- ppg/pg_tarballs.groovy | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/ppg/pg_source_tarballs.groovy b/ppg/pg_source_tarballs.groovy index 4ebd3aa8ed..a79a34f72f 100644 --- a/ppg/pg_source_tarballs.groovy +++ b/ppg/pg_source_tarballs.groovy @@ -20,7 +20,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { String getPostgreSQLVersion(String BRANCH_NAME, String configureFileName) { def packageVersion = sh(script: """ # Download the configure file - if [[ "${BRANCH_NAME}" == *TDE* ]]; then + if echo "${BRANCH_NAME}" | grep -q "release-"; then wget https://raw.githubusercontent.com/Percona-Lab/postgres/${BRANCH_NAME}/configure -O ${configureFileName} else wget https://raw.githubusercontent.com/postgres/postgres/${BRANCH_NAME}/configure -O ${configureFileName} @@ -120,7 +120,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = "TDE_REL_17_STABLE" + def BRANCH_NAME = "release-17.4.1" def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl3") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Source-Tarballs" diff --git a/ppg/pg_tarballs-arm.groovy b/ppg/pg_tarballs-arm.groovy index 29adde7dbb..5a4c0c74ae 100644 --- a/ppg/pg_tarballs-arm.groovy +++ b/ppg/pg_tarballs-arm.groovy @@ -20,7 +20,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { String getPostgreSQLVersion(String BRANCH_NAME, String configureFileName) { def packageVersion = sh(script: """ # Download the configure file - if [[ "${BRANCH_NAME}" == *TDE* ]]; then + if echo "${BRANCH_NAME}" | grep -q "release-"; then wget https://raw.githubusercontent.com/Percona-Lab/postgres/${BRANCH_NAME}/configure -O ${configureFileName} else wget https://raw.githubusercontent.com/postgres/postgres/${BRANCH_NAME}/configure -O ${configureFileName} @@ -124,7 +124,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = "TDE_REL_17_STABLE" + def BRANCH_NAME = "release-17.4.1" def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl3") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" @@ -150,7 +150,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = 'TDE_REL_17_STABLE' + def BRANCH_NAME = 'release-17.4.1' def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl1.1") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" diff --git a/ppg/pg_tarballs.groovy b/ppg/pg_tarballs.groovy index 1196cf96e6..ab4cc0d04e 100644 --- a/ppg/pg_tarballs.groovy +++ b/ppg/pg_tarballs.groovy @@ -20,7 +20,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { String getPostgreSQLVersion(String BRANCH_NAME, String configureFileName) { def packageVersion = sh(script: """ # Download the configure file - if [[ "${BRANCH_NAME}" == *TDE* ]]; then + if echo "${BRANCH_NAME}" | grep -q "release-"; then wget https://raw.githubusercontent.com/Percona-Lab/postgres/${BRANCH_NAME}/configure -O ${configureFileName} else wget https://raw.githubusercontent.com/postgres/postgres/${BRANCH_NAME}/configure -O ${configureFileName} @@ -124,7 +124,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = "TDE_REL_17_STABLE" + def BRANCH_NAME = "release-17.4.1" def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl3") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" @@ -150,7 +150,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = 'TDE_REL_17_STABLE' + def BRANCH_NAME = 'release-17.4.1' def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl1.1") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" From 4f9e4865f742653cda326861a4e758c1568e79ff Mon Sep 17 00:00:00 2001 From: Sandra Romanchenko <53295797+sandraromanchenko@users.noreply.github.com> Date: Fri, 28 Mar 2025 10:13:51 +0200 Subject: [PATCH 081/269] PSMDB-1637. Push images to private dockerhub, add ARM build and migrate to Hetzner (#3239) --- psmdb/psmdb-docker-pro.groovy | 226 ++++++++++++++++++++++++---------- psmdb/psmdb-docker-pro.yml | 4 +- 2 files changed, 165 insertions(+), 65 deletions(-) diff --git a/psmdb/psmdb-docker-pro.groovy b/psmdb/psmdb-docker-pro.groovy index 8acfc40e4a..a630e184b4 100644 --- a/psmdb/psmdb-docker-pro.groovy +++ b/psmdb/psmdb-docker-pro.groovy @@ -1,4 +1,4 @@ -library changelog: false, identifier: "lib@master", retriever: modernSCM([ +library changelog: false, identifier: "lib@hetzner", retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) @@ -7,16 +7,21 @@ def REPO_CI_PATH pipeline { agent { - label params.ARCH == 'x86_64' ? 'docker' : 'docker-64gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } environment { PATH = '/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin' } parameters { + choice(name: 'CLOUD', choices: [ 'Hetzner','AWS' ], description: 'Cloud infra for build') choice(name: 'PSMDB_REPO', choices: ['release','testing','experimental'], description: 'percona-release repo to take packages from') string(name: 'PSMDB_VERSION', defaultValue: '6.0.18-15', description: 'PSMDB version, for example: 6.0.18-15 or 7.0.14-8') - string(name: 'TICKET_NAME', defaultValue: '', description: 'Target folder for docker image') - choice(name: 'ARCH', choices: ['x86_64','aarch64'], description: 'Docker arch') + choice(name: 'TARGET_REPO', choices: ['DockerHub','REPO.CI'], description: 'Target destination for docker image, use Percona for release only') + string(name: 'TICKET_NAME', defaultValue: '', description: 'Target folder on repo.ci for docker image if TARGET_REPO is repo.ci') + string(name: 'PD_BRANCH', defaultValue: '', description: 'Branch/commit from percona-docker repository to be used for building images') + booleanParam(name: 'UPDATE_MAJ_REL_TAG', defaultValue: false, description: 'Update major release tag (6.0 for 6.0.20) in DockerHub') + booleanParam(name: 'UPDATE_LATEST_TAG', defaultValue: false, description: 'Update \'latest\' tag in DockerHub') + booleanParam(name: 'IGNORE_TRIVY', defaultValue: false, description: 'Push images despite failed trivy check, use with caution') } options { disableConcurrentBuilds() @@ -29,40 +34,77 @@ pipeline { } } } + stage('Prepare environment') { + steps { + script { + if (params.CLOUD == 'Hetzner') { + sh ''' + sudo apt-get update + sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common apparmor apparmor-utils + sudo systemctl stop apparmor + sudo systemctl disable apparmor + sudo mkdir -p /usr/libexec/docker/cli-plugins + LATEST=\$(curl -s https://api.github.com/repos/docker/buildx/releases/latest | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/\\1/') + sudo curl -L "https://github.com/docker/buildx/releases/download/v\${LATEST}/buildx-v\${LATEST}.linux-amd64" \\ + -o /usr/libexec/docker/cli-plugins/docker-buildx + sudo chmod +x /usr/libexec/docker/cli-plugins/docker-buildx + sudo systemctl restart docker + sudo apt-get install -y qemu-system binfmt-support qemu-user-static + sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + ''' + } else { + sh ''' + sudo yum install -y ca-certificates curl gnupg2 git qemu qemu-user-static || true + sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + ''' + } + } + } + } stage ('Build image') { steps { withCredentials([usernamePassword(credentialsId: 'PSMDB_PRIVATE_REPO_ACCESS', passwordVariable: 'PASSWORD', usernameVariable: 'USERNAME')]) { sh """ - MAJ_VER=\$(echo ${params.PSMDB_VERSION} | awk -F "." '{print \$1"."\$2}') + MAJ_VER=\$(echo "${params.PSMDB_VERSION}" | awk -F "." '{print \$1"."\$2}') echo \$MAJ_VER - MIN_VER=\$(echo ${params.PSMDB_VERSION} | awk -F "-" '{print \$1}') + MIN_VER=\$(echo "${params.PSMDB_VERSION}" | awk -F "-" '{print \$1}') echo \$MIN_VER git clone https://github.com/percona/percona-docker cd percona-docker/percona-server-mongodb-\$MAJ_VER - sed -E "s|ENV PSMDB_VERSION (.+)|ENV PSMDB_VERSION ${params.PSMDB_VERSION}|" -i Dockerfile - sed -E "s|ENV PSMDB_REPO (.+)|ENV PSMDB_REPO ${params.PSMDB_REPO}|" -i Dockerfile - REPO_VER=\$(echo ${params.PSMDB_VERSION} | awk -F "." '{print \$1\$2}') - OS_VER=\$(grep -P "ENV OS_VER" Dockerfile | cut -d " " -f 3) - echo \$OS_VER - OS_VER_NUM=\$(echo \$OS_VER | sed "s|el||") - echo \$OS_VER_NUM - PKG_URL="http://repo.percona.com/private/${USERNAME}-${PASSWORD}/psmdb-\$REPO_VER-pro/yum/${params.PSMDB_REPO}/\${OS_VER_NUM}/RPMS/${ARCH}/" - echo \$PKG_URL - sed -E "/curl -Lf -o \\/tmp\\/Percona-Server-MongoDB-server.rpm/d" -i Dockerfile - sed -E "/percona-server-mongodb-mongos-\${FULL_PERCONA_VERSION}/d" -i Dockerfile - sed -E "/percona-server-mongodb-tools-\${FULL_PERCONA_VERSION}/d" -i Dockerfile - sed -E "s|rpmkeys --checksig /tmp/Percona-Server-MongoDB-server.rpm|rpmkeys --checksig /tmp/*.rpm|" -i Dockerfile - sed -E "s|rpm -iv /tmp/Percona-Server-MongoDB-server.rpm --nodeps;|dnf -y install /tmp/Percona-Server-MongoDB-mongos-pro.rpm /tmp/Percona-Server-MongoDB-tools.rpm; rpm -iv /tmp/Percona-Server-MongoDB-server-pro.rpm --nodeps;|" -i Dockerfile - sed -E "s|rm -rf /tmp/Percona-Server-MongoDB-server.rpm|rm -rf /tmp/*.rpm|" -i Dockerfile - sed -E "s|server/LICENSE|server-pro/LICENSE|" -i Dockerfile - - mkdir -p packages - curl -Lf -o ./packages/Percona-Server-MongoDB-server-pro.rpm \$PKG_URL/percona-server-mongodb-server-pro-${params.PSMDB_VERSION}.\$OS_VER.${ARCH}.rpm - curl -Lf -o ./packages/Percona-Server-MongoDB-mongos-pro.rpm \$PKG_URL/percona-server-mongodb-mongos-pro-${params.PSMDB_VERSION}.\$OS_VER.${ARCH}.rpm - curl -Lf -o ./packages/Percona-Server-MongoDB-tools.rpm \$PKG_URL/percona-server-mongodb-tools-${params.PSMDB_VERSION}.\$OS_VER.${ARCH}.rpm - sed -E '/^ARG PERCONA_TELEMETRY_DISABLE/a \\\nCOPY packages/*.rpm /tmp/' -i Dockerfile - cat Dockerfile - docker build . -t percona-server-mongodb-pro:${params.PSMDB_VERSION} + if [ -n "${params.PD_BRANCH}" ]; then + git checkout ${params.PD_BRANCH} + fi + for ARCH in x86_64 aarch64; do + FILENAME=\$(if [ \"\$ARCH\" = \"x86_64\" ]; then echo \"Dockerfile\"; else echo \"Dockerfile.aarch64\"; fi) + sed -E "s|ENV PSMDB_VERSION (.+)|ENV PSMDB_VERSION ${params.PSMDB_VERSION}|" -i "\$FILENAME" + sed -E "s|ENV PSMDB_REPO (.+)|ENV PSMDB_REPO ${params.PSMDB_REPO}|" -i "\$FILENAME" + REPO_VER=\$(echo "${params.PSMDB_VERSION}" | awk -F "." '{print \$1\$2}') + OS_VER=\$(grep -P "ENV OS_VER" Dockerfile | cut -d " " -f 3) + echo \$OS_VER + OS_VER_NUM=\$(echo \$OS_VER | sed "s|el||") + echo \$OS_VER_NUM + PKG_URL="http://repo.percona.com/private/${USERNAME}-${PASSWORD}/psmdb-\$REPO_VER-pro/yum/${params.PSMDB_REPO}/\${OS_VER_NUM}/RPMS/\${ARCH}/" + echo \$PKG_URL + sed -E "/curl -Lf -o \\/tmp\\/Percona-Server-MongoDB-server.rpm/d" -i "\$FILENAME" + sed -E "/percona-server-mongodb-mongos-\${FULL_PERCONA_VERSION}/d" -i "\$FILENAME" + sed -E "/percona-server-mongodb-tools-\${FULL_PERCONA_VERSION}/d" -i "\$FILENAME" + sed -E "s|mongosh |mongosh percona-telemetry-agent |" -i "\$FILENAME" + sed -E "s|rpmkeys --checksig /tmp/Percona-Server-MongoDB-server.rpm|rpmkeys --checksig /tmp/*.rpm|" -i "\$FILENAME" + sed -E "s|rpm -iv /tmp/Percona-Server-MongoDB-server.rpm --nodeps;|rpm -iv /tmp/Percona-Server-MongoDB-mongos-pro.rpm /tmp/Percona-Server-MongoDB-tools.rpm; rpm -iv /tmp/Percona-Server-MongoDB-server-pro.rpm --nodeps;|" -i "\$FILENAME" + sed -E "s|rm -rf /tmp/Percona-Server-MongoDB-server.rpm|rm -rf /tmp/*.rpm|" -i "\$FILENAME" + sed -E "s|server/LICENSE|server-pro/LICENSE|" -i "\$FILENAME" + mkdir -p packages + curl -Lf -o ./packages/Percona-Server-MongoDB-server-pro.rpm \$PKG_URL/percona-server-mongodb-server-pro-${params.PSMDB_VERSION}.\$OS_VER.\${ARCH}.rpm + curl -Lf -o ./packages/Percona-Server-MongoDB-mongos-pro.rpm \$PKG_URL/percona-server-mongodb-mongos-pro-${params.PSMDB_VERSION}.\$OS_VER.\${ARCH}.rpm + curl -Lf -o ./packages/Percona-Server-MongoDB-tools.rpm \$PKG_URL/percona-server-mongodb-tools-${params.PSMDB_VERSION}.\$OS_VER.\${ARCH}.rpm + sed -E '/^ARG PERCONA_TELEMETRY_DISABLE/a \\\nCOPY packages/*.rpm /tmp/' -i "\$FILENAME" + cat "\$FILENAME" + if [ "\$ARCH" = "x86_64" ]; then + docker build --no-cache -t percona-server-mongodb-pro-amd -f "\$FILENAME" . + else + docker build --no-cache -t percona-server-mongodb-pro-arm --platform="linux/arm64" -f "\$FILENAME" . + fi + done rm -rf packages """ } @@ -75,22 +117,16 @@ pipeline { try { sh """ TRIVY_VERSION=\$(curl --silent 'https://api.github.com/repos/aquasecurity/trivy/releases/latest' | grep '"tag_name":' | tr -d '"' | sed -E 's/.*v(.+),.*/\\1/') - if [[ ${ARCH} == "x86_64" ]]; then - TRIVY_ARCH="64bit" - elif [[ ${ARCH} == "aarch64" ]]; then - TRIVY_ARCH="ARM64" - fi - wget https://github.com/aquasecurity/trivy/releases/download/v\${TRIVY_VERSION}/trivy_\${TRIVY_VERSION}_Linux-\${TRIVY_ARCH}.tar.gz - sudo tar zxvf trivy_\${TRIVY_VERSION}_Linux-\${TRIVY_ARCH}.tar.gz -C /usr/local/bin/ - rm trivy_\${TRIVY_VERSION}_Linux-\${TRIVY_ARCH}.tar.gz + wget https://github.com/aquasecurity/trivy/releases/download/v\${TRIVY_VERSION}/trivy_\${TRIVY_VERSION}_Linux-64bit.tar.gz + sudo tar zxvf trivy_\${TRIVY_VERSION}_Linux-64bit.tar.gz -C /usr/local/bin/ wget https://raw.githubusercontent.com/aquasecurity/trivy/v\${TRIVY_VERSION}/contrib/junit.tpl curl https://raw.githubusercontent.com/Percona-QA/psmdb-testing/main/docker/trivyignore -o ".trivyignore" - if [ ${params.PSMDB_REPO} = "release" ]; then - /usr/local/bin/trivy -q image --format template --template @junit.tpl -o trivy-hight-junit.xml \ - --timeout 10m0s --ignore-unfixed --exit-code 1 --severity HIGH,CRITICAL percona-server-mongodb-pro:${params.PSMDB_VERSION} + if [ "${params.IGNORE_TRIVY}" = "true" ]; then + /usr/local/bin/trivy -q image --timeout 10m0s --ignore-unfixed --exit-code 0 --severity HIGH,CRITICAL percona-server-mongodb-pro-arm + /usr/local/bin/trivy -q image --timeout 10m0s --ignore-unfixed --exit-code 0 --severity HIGH,CRITICAL percona-server-mongodb-pro-amd else - /usr/local/bin/trivy -q image --format template --template @junit.tpl -o trivy-hight-junit.xml \ - --timeout 10m0s --ignore-unfixed --exit-code 0 --severity HIGH,CRITICAL percona-server-mongodb-pro:${params.PSMDB_VERSION} + /usr/local/bin/trivy -q image --timeout 10m0s --ignore-unfixed --exit-code 1 --severity HIGH,CRITICAL percona-server-mongodb-pro-arm + /usr/local/bin/trivy -q image --timeout 10m0s --ignore-unfixed --exit-code 1 --severity HIGH,CRITICAL percona-server-mongodb-pro-amd fi """ } catch (Exception e) { @@ -101,17 +137,17 @@ pipeline { } } } - post { - always { - junit testResults: "*-junit.xml", keepLongStdio: true, allowEmptyResults: true, skipPublishingChecks: true - } - } } stage ('Push image to repo.ci') { + when { + environment name: 'TARGET_REPO', value: 'REPO.CI' + } steps { sh """ - docker save -o percona-server-mongodb-pro-${params.PSMDB_VERSION}.tar percona-server-mongodb-pro:${params.PSMDB_VERSION} - gzip percona-server-mongodb-pro-${params.PSMDB_VERSION}.tar + docker save -o percona-server-mongodb-pro-${params.PSMDB_VERSION}-amd64.tar percona-server-mongodb-pro-amd + docker save -o percona-server-mongodb-pro-${params.PSMDB_VERSION}-arm64.tar percona-server-mongodb-pro-arm + gzip percona-server-mongodb-pro-${params.PSMDB_VERSION}-amd64.tar + gzip percona-server-mongodb-pro-${params.PSMDB_VERSION}-arm64.tar echo "UPLOAD/experimental/CUSTOM/${TICKET_NAME}/${JOB_NAME}/${BUILD_NUMBER}" > uploadPath """ script { @@ -122,6 +158,79 @@ pipeline { uploadTarball('docker') } } + stage ('Push images to private percona docker registry') { + when { + environment name: 'TARGET_REPO', value: 'DockerHub' + } + steps { + withCredentials([usernamePassword(credentialsId: 'hub.docker.com', passwordVariable: 'PASS', usernameVariable: 'USER')]) { + sh """ + docker login -u '${USER}' -p '${PASS}' + MAJ_VER=\$(echo ${params.PSMDB_VERSION} | awk -F "." '{print \$1"."\$2}') + MIN_VER=\$(echo ${params.PSMDB_VERSION} | awk -F "-" '{print \$1}') + + docker tag percona-server-mongodb-pro-amd percona/percona-server-mongodb-pro:${params.PSMDB_VERSION}-amd64 + docker tag percona-server-mongodb-pro-arm percona/percona-server-mongodb-pro:${params.PSMDB_VERSION}-arm64 + docker push percona/percona-server-mongodb-pro:${params.PSMDB_VERSION}-amd64 + docker push percona/percona-server-mongodb-pro:${params.PSMDB_VERSION}-arm64 + + docker tag percona-server-mongodb-pro-amd percona/percona-server-mongodb-pro:\$MIN_VER-amd64 + docker tag percona-server-mongodb-pro-arm percona/percona-server-mongodb-pro:\$MIN_VER-arm64 + docker push percona/percona-server-mongodb-pro:\$MIN_VER-amd64 + docker push percona/percona-server-mongodb-pro:\$MIN_VER-arm64 + + docker manifest create percona/percona-server-mongodb-pro:${params.PSMDB_VERSION} \ + percona/percona-server-mongodb-pro:${params.PSMDB_VERSION}-amd64 \ + percona/percona-server-mongodb-pro:${params.PSMDB_VERSION}-arm64 + docker manifest annotate percona/percona-server-mongodb-pro:${params.PSMDB_VERSION} \ + percona/percona-server-mongodb-pro:${params.PSMDB_VERSION}-arm64 --os linux --arch arm64 --variant v8 + docker manifest annotate percona/percona-server-mongodb-pro:${params.PSMDB_VERSION} \ + percona/percona-server-mongodb-pro:${params.PSMDB_VERSION}-amd64 --os linux --arch amd64 + docker manifest inspect percona/percona-server-mongodb-pro:${params.PSMDB_VERSION} + docker manifest push percona/percona-server-mongodb-pro:${params.PSMDB_VERSION} + + docker manifest create percona/percona-server-mongodb-pro:\$MIN_VER \ + percona/percona-server-mongodb-pro:\$MIN_VER-amd64 \ + percona/percona-server-mongodb-pro:\$MIN_VER-arm64 + docker manifest annotate percona/percona-server-mongodb-pro:\$MIN_VER \ + percona/percona-server-mongodb-pro:\$MIN_VER-arm64 --os linux --arch arm64 --variant v8 + docker manifest annotate percona/percona-server-mongodb-pro:\$MIN_VER \ + percona/percona-server-mongodb-pro:\$MIN_VER-amd64 --os linux --arch amd64 + docker manifest inspect percona/percona-server-mongodb-pro:\$MIN_VER + docker manifest push percona/percona-server-mongodb-pro:\$MIN_VER + + if [ ${params.UPDATE_MAJ_REL_TAG} = "true" ]; then + docker tag percona-server-mongodb-pro-amd percona/percona-server-mongodb-pro:\$MAJ_VER-amd64 + docker tag percona-server-mongodb-pro-arm percona/percona-server-mongodb-pro:\$MAJ_VER-arm64 + docker push percona/percona-server-mongodb-pro:\$MAJ_VER-amd64 + docker push percona/percona-server-mongodb-pro:\$MAJ_VER-arm64 + + docker manifest create percona/percona-server-mongodb-pro:\$MAJ_VER \ + percona/percona-server-mongodb-pro:\$MAJ_VER-amd64 \ + percona/percona-server-mongodb-pro:\$MAJ_VER-arm64 + docker manifest annotate percona/percona-server-mongodb-pro:\$MAJ_VER \ + percona/percona-server-mongodb-pro:\$MAJ_VER-arm64 --os linux --arch arm64 --variant v8 + docker manifest annotate percona/percona-server-mongodb-pro:\$MAJ_VER \ + percona/percona-server-mongodb-pro:\$MAJ_VER-amd64 --os linux --arch amd64 + docker manifest inspect percona/percona-server-mongodb-pro:\$MAJ_VER + docker manifest push percona/percona-server-mongodb-pro:\$MAJ_VER + fi + + if [ "${params.UPDATE_MAJ_REL_TAG}" = "true" ] && [ "${params.UPDATE_LATEST_TAG}" = "true" ]; then + docker manifest create percona/percona-server-mongodb-pro:latest \ + percona/percona-server-mongodb-pro:\$MAJ_VER-amd64 \ + percona/percona-server-mongodb-pro:\$MAJ_VER-arm64 + docker manifest annotate percona/percona-server-mongodb-pro:latest \ + percona/percona-server-mongodb-pro:\$MAJ_VER-arm64 --os linux --arch arm64 --variant v8 + docker manifest annotate percona/percona-server-mongodb-pro:latest \ + percona/percona-server-mongodb-pro:\$MAJ_VER-amd64 --os linux --arch amd64 + docker manifest inspect percona/percona-server-mongodb-pro:latest + docker manifest push percona/percona-server-mongodb-pro:latest + fi + """ + } + } + } } post { always { @@ -132,22 +241,13 @@ pipeline { deleteDir() } success { - slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: Building of PSMDB ${PSMDB_VERSION} repo ${PSMDB_REPO} succeed") - script { - currentBuild.description = "Built on ${PSMDB_VERSION}. Path to packages: ${REPO_CI_PATH}" - } + slackNotify("#mongodb_autofeed", "#00FF00", "[${JOB_NAME}]: Building of PSMDB PRO ${PSMDB_VERSION}, repo ${PSMDB_REPO} succeed") } unstable { - slackNotify("#releases-ci", "#F6F930", "[${JOB_NAME}]: Building of PSMDB ${PSMDB_VERSION} repo ${PSMDB_REPO} unstable - [${BUILD_URL}testReport/]") - script { - currentBuild.description = "Built on ${PSMDB_VERSION}. Path to packages: ${REPO_CI_PATH}" - } + slackNotify("#mongodb_autofeed", "#F6F930", "[${JOB_NAME}]: Building of PSMDB PRO ${PSMDB_VERSION}, repo ${PSMDB_REPO} unstable - [${BUILD_URL}testReport/]") } failure { - slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: Building of PSMDB ${PSMDB_VERSION} repo ${PSMDB_REPO} failed - [${BUILD_URL}]") - script { - currentBuild.description = "Built on ${PSMDB_VERSION}. Path to packages: ${REPO_CI_PATH}" - } + slackNotify("#mongodb_autofeed", "#FF0000", "[${JOB_NAME}]: Building of PSMDB PRO ${PSMDB_VERSION}, repo ${PSMDB_REPO} failed - [${BUILD_URL}]") } - } +} } diff --git a/psmdb/psmdb-docker-pro.yml b/psmdb/psmdb-docker-pro.yml index 3378230517..ac4cb1a4f6 100644 --- a/psmdb/psmdb-docker-pro.yml +++ b/psmdb/psmdb-docker-pro.yml @@ -1,5 +1,5 @@ - job: - name: psmdb-docker-pro + name: hetzner-psmdb-docker-pro project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: psmdb/psmdb-docker-pro.groovy From 9ab3522f7367fc2a3dc1175e0434ff6ed4745741 Mon Sep 17 00:00:00 2001 From: Vadim Yalovets Date: Mon, 7 Apr 2025 12:04:19 +0300 Subject: [PATCH 082/269] Hetzner (#3249) --- .../percona-xtradb-cluster-8.0-docker.groovy | 235 ++++++ .../percona-xtradb-cluster-8.0-docker.yml | 14 + pxc/jenkins/percona-xtradb-cluster-8.0.groovy | 73 +- pxc/jenkins/percona-xtradb-cluster-9.x.groovy | 733 ++++++++++++++++++ pxc/jenkins/percona-xtradb-cluster-9.x.yml | 15 + 5 files changed, 1033 insertions(+), 37 deletions(-) create mode 100644 pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy create mode 100644 pxc/jenkins/percona-xtradb-cluster-8.0-docker.yml create mode 100644 pxc/jenkins/percona-xtradb-cluster-9.x.groovy create mode 100644 pxc/jenkins/percona-xtradb-cluster-9.x.yml diff --git a/pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy b/pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy new file mode 100644 index 0000000000..9bc531111d --- /dev/null +++ b/pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy @@ -0,0 +1,235 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def AWS_STASH_PATH + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/percona/percona-xtradb-cluster.git', + description: 'URL for percona-xtradb-cluster repository', + name: 'GIT_REPO') + string( + defaultValue: '8.0', + description: 'Tag/Branch for percona-xtradb-cluster repository', + name: 'GIT_BRANCH') + string( + defaultValue: '1', + description: 'RPM release value', + name: 'RPM_RELEASE') + string( + defaultValue: '1', + description: 'DEB release value', + name: 'DEB_RELEASE') + choice( + choices: '#releases-ci\n#releases', + description: 'Channel for notifications', + name: 'SLACKNOTIFY') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + timestamps () + } + stages { + stage('Build docker containers') { + agent { + label params.CLOUD == 'Hetzner' ? 'deb12-x64' : 'min-focal-x64' + } + steps { + script { + echo "====> Build docker containers" + cleanUpWS() + sh ''' + PXC_RELEASE=$(echo ${GIT_BRANCH} | sed 's/release-//g') + PXC_MAJOR_RELEASE=$(echo ${GIT_BRANCH} | sed "s/release-//g" | sed "s/\\.//g" | awk '{print substr($0, 0, 2)}') + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor + sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor + sudo apt-get install -y docker-ce docker-ce-cli containerd.io + export DOCKER_CLI_EXPERIMENTAL=enabled + sudo mkdir -p /usr/libexec/docker/cli-plugins/ + sudo curl -L https://github.com/docker/buildx/releases/download/v0.21.2/buildx-v0.21.2.linux-amd64 -o /usr/libexec/docker/cli-plugins/docker-buildx + sudo chmod +x /usr/libexec/docker/cli-plugins/docker-buildx + sudo systemctl restart docker + sudo apt-get install -y qemu-system binfmt-support qemu-user-static + sudo qemu-system-x86_64 --version + sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + curl -O https://raw.githubusercontent.com/percona/percona-xtradb-cluster/${GIT_BRANCH}/MYSQL_VERSION + . ./MYSQL_VERSION + git clone https://github.com/percona/percona-docker + cd percona-docker/percona-xtradb-cluster-${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR} + sed -i "s/ENV PXC_VERSION.*/ENV PXC_VERSION ${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}/g" Dockerfile + sed -i "s/ENV PXC_TELEMETRY_VERSION.*/ENV PXC_TELEMETRY_VERSION ${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}-${RPM_RELEASE}/g" Dockerfile + sed -i "s/ENV PXC_REPO .*/ENV PXC_REPO testing/g" Dockerfile + if [ ${PXC_MAJOR_RELEASE} != "80" ]; then + if [ ${PXC_MAJOR_RELEASE} != "84" ]; then + sed -i "s/pxc-80/pxc-8x-innovation/g" Dockerfile + else + sed -i "s/pdpxc-8.0/pdpxc-84-lts/g" Dockerfile + sed -i "s/pxc-80/pxc-84-lts/g" Dockerfile + sed -i "s/default_authentication_plugin=mysql_native_password/mysql-native-password=ON\\nrequire_secure_transport=OFF/g" dockerdir/etc/mysql/node.cnf + sed -i "s/skip-host-cache/host_cache_size = 0/g" dockerdir/etc/mysql/node.cnf + sed -i "s/--skip-ssl//g" dockerdir/entrypoint.sh + fi + fi + sudo docker build --no-cache --platform "linux/amd64" -t perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-amd64 . + sudo docker build --no-cache --platform "linux/amd64" --build-arg DEBUG=1 -t perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-debug-amd64 . + + sed -i "s/ENV PXC_VERSION.*/ENV PXC_VERSION ${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}/g" Dockerfile.aarch64 + sed -i "s/ENV PXC_TELEMETRY_VERSION.*/ENV PXC_TELEMETRY_VERSION ${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}-${RPM_RELEASE}/g" Dockerfile.aarch64 + sed -i "s/ENV PXC_REPO .*/ENV PXC_REPO testing/g" Dockerfile.aarch64 + if [ ${PXC_MAJOR_RELEASE} != "80" ]; then + if [ ${PXC_MAJOR_RELEASE} != "84" ]; then + sed -i "s/pxc-80/pxc-8x-innovation/g" Dockerfile.aarch64 + else + sed -i "s/pdpxc-8.0/pdpxc-84-lts/g" Dockerfile.aarch64 + sed -i "s/pxc-80/pxc-84-lts/g" Dockerfile.aarch64 + sed -i "s/default_authentication_plugin=mysql_native_password/mysql-native-password=ON\\nrequire_secure_transport=OFF/g" dockerdir/etc/mysql/node.cnf + sed -i "s/skip-host-cache/host_cache_size = 0/g" dockerdir/etc/mysql/node.cnf + sed -i "s/--skip-ssl//g" dockerdir/entrypoint.sh + fi + fi + sudo docker build --no-cache -t perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-arm64 --platform="linux/arm64" -f Dockerfile.aarch64 . + sudo docker build --no-cache --build-arg DEBUG=1 -t perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-debug-arm64 --platform="linux/arm64" -f Dockerfile.aarch64 . + + if [ ${PXC_MAJOR_RELEASE} != "84" ]; then + cd ../percona-xtradb-cluster-8.0-backup + else + cd ../percona-xtradb-cluster-8.4-backup + fi + sed -i "s/ENV PXC_VERSION.*/ENV PXC_VERSION=${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}/g" Dockerfile + sed -i "s/ENV PXC_REPO.*/ENV PXC_REPO=testing/g" Dockerfile + sed -i "s:yum/release:yum/testing:g" Dockerfile + if [ ${PXC_MAJOR_RELEASE} != "80" ]; then + #sed -i "s/ENV PXB_VERSION.*/ENV PXB_VERSION ${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}/g" Dockerfile + sed -i "s/ENV PXB_VERSION.*/ENV PXB_VERSION 8.4.0-2.1/g" Dockerfile + sed -i "s/ENV PS_VERSION.*/ENV PS_VERSION ${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}/g" Dockerfile + if [ ${PXC_MAJOR_RELEASE} != "84" ]; then + sed -i "s/tools/pxb-8x-innovation/g" Dockerfile + sed -i "s/ps-80/ps-8x-innovation/g" Dockerfile + sed -i "s/pxc-80/pxc-8x-innovation/g" Dockerfile + else + sed -i "s/tools/pxb-84-lts/g" Dockerfile + sed -i "s/ps-80/ps-84-lts/g" Dockerfile + sed -i "s/pxc-80/pxc-84-lts/g" Dockerfile + fi + sed -i "s/percona-xtrabackup-80/percona-xtrabackup-${PXC_MAJOR_RELEASE}/g" Dockerfile + fi + sudo docker build --no-cache --platform "linux/amd64" -t perconalab/percona-xtradb-cluster-operator:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}-pxc8.${MYSQL_VERSION_MINOR}-backup . + + sudo docker images + ''' + withCredentials([ + usernamePassword(credentialsId: 'hub.docker.com', + passwordVariable: 'PASS', + usernameVariable: 'USER' + )]) { + sh ''' + echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin + curl -O https://raw.githubusercontent.com/percona/percona-xtradb-cluster/${GIT_BRANCH}/MYSQL_VERSION + . ./MYSQL_VERSION + sudo docker push perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-amd64 + sudo docker push perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-debug-amd64 + sudo docker push perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-arm64 + sudo docker push perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-debug-arm64 + sudo docker push perconalab/percona-xtradb-cluster-operator:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}-pxc8.${MYSQL_VERSION_MINOR}-backup + ''' + } + sh ''' + curl -O https://raw.githubusercontent.com/percona/percona-xtradb-cluster/${GIT_BRANCH}/MYSQL_VERSION + . ./MYSQL_VERSION + sudo docker manifest create perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} \ + perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-amd64 \ + perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-arm64 + sudo docker manifest annotate perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-arm64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-amd64 --os linux --arch amd64 + sudo docker manifest inspect perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} + ''' + withCredentials([ + usernamePassword(credentialsId: 'hub.docker.com', + passwordVariable: 'PASS', + usernameVariable: 'USER' + )]) { + sh ''' + echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin + curl -O https://raw.githubusercontent.com/percona/percona-xtradb-cluster/${GIT_BRANCH}/MYSQL_VERSION + . ./MYSQL_VERSION + sudo docker manifest push perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} + sudo docker buildx imagetools create -t perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR} perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} + sudo docker buildx imagetools create -t perconalab/percona-xtradb-cluster:latest perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} + ''' + } + } + } + } + stage('Check by trivy') { + agent { + label params.CLOUD == 'Hetzner' ? 'deb12-x64' : 'min-focal-x64' + } + steps { + catchError { + sh ''' + curl -O https://raw.githubusercontent.com/percona/percona-xtradb-cluster/${GIT_BRANCH}/MYSQL_VERSION + . ./MYSQL_VERSION + sudo apt-get update + sudo apt-get -y install wget apt-transport-https gnupg lsb-release + wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add - + echo deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list.d/trivy.list + sudo apt-get update + sudo apt-get -y install trivy + sudo trivy -q image --format table \ + --timeout 10m0s --ignore-unfixed --exit-code 1 --severity HIGH,CRITICAL perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-amd64 | tee -a trivy-hight-junit.xml + sudo trivy -q image --format table \ + --timeout 10m0s --ignore-unfixed --exit-code 1 --severity HIGH,CRITICAL perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-arm64 | tee -a trivy-hight-junit.xml + ''' + } + } + } + } + post { + success { + script { + slackNotify("${SLACKNOTIFY}", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH}") + } + deleteDir() + } + failure { + script { + slackNotify("${SLACKNOTIFY}", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH}]") + } + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + script { + currentBuild.description = "Built on ${GIT_BRANCH}" + } + deleteDir() + } + } +} diff --git a/pxc/jenkins/percona-xtradb-cluster-8.0-docker.yml b/pxc/jenkins/percona-xtradb-cluster-8.0-docker.yml new file mode 100644 index 0000000000..a4db063a58 --- /dev/null +++ b/pxc/jenkins/percona-xtradb-cluster-8.0-docker.yml @@ -0,0 +1,14 @@ +- job: + name: hetzner-pxc8.0-docker-build + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/adivinho/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy diff --git a/pxc/jenkins/percona-xtradb-cluster-8.0.groovy b/pxc/jenkins/percona-xtradb-cluster-8.0.groovy index 169d1e38ae..99037f149e 100644 --- a/pxc/jenkins/percona-xtradb-cluster-8.0.groovy +++ b/pxc/jenkins/percona-xtradb-cluster-8.0.groovy @@ -5,38 +5,41 @@ library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ void buildStage(String DOCKER_OS, String STAGE_PARAM) { withCredentials([string(credentialsId: 'GITHUB_API_TOKEN', variable: 'TOKEN')]) { - sh """ - set -o xtrace - mkdir -p test - if [ \${FIPSMODE} = "YES" ]; then - PXC_VERSION_MINOR=\$(curl -s -O \$(echo \${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/\${GIT_BRANCH}/MYSQL_VERSION && cat MYSQL_VERSION | grep MYSQL_VERSION_MINOR | awk -F= '{print \$2}') - if [ \${PXC_VERSION_MINOR} = "0" ]; then - PRO_BRANCH="8.0" - elif [ \${PXC_VERSION_MINOR} = "4" ]; then - PRO_BRANCH="8.4" - else - PRO_BRANCH="trunk" - fi - curl -L -H "Authorization: Bearer \${TOKEN}" \ - -H "Accept: application/vnd.github.v3.raw" \ - -o pxc_builder.sh \ - "https://api.github.com/repos/percona/percona-xtradb-cluster-private-build/contents/build-ps/pxc_builder.sh?ref=\${PRO_BRANCH}" - else - wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/build-ps/pxc_builder.sh -O pxc_builder.sh - fi - pwd -P - ls -laR - export build_dir=\$(pwd -P) - docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " - set -o xtrace - cd \${build_dir} - bash -x ./pxc_builder.sh --builddir=\${build_dir}/test --install_deps=1 - if [ \${FIPSMODE} = "YES" ]; then - git clone --depth 1 --branch \${PRO_BRANCH} https://x-access-token:${TOKEN}@github.com/percona/percona-xtradb-cluster-private-build.git percona-xtradb-cluster-private-build - mv -f \${build_dir}/percona-xtradb-cluster-private-build/build-ps \${build_dir}/test/. - fi - bash -x ./pxc_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --branch=${GIT_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} --bin_release=${BIN_RELEASE} ${STAGE_PARAM}" - """ + withCredentials([usernamePassword(credentialsId: 'PS_PRIVATE_REPO_ACCESS', passwordVariable: 'PASSWORD', usernameVariable: 'USERNAME')]) { + sh """ + set -o xtrace + mkdir -p test + if [ \${FIPSMODE} = "YES" ]; then + PXC_VERSION_MINOR=\$(curl -s -O \$(echo \${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/\${GIT_BRANCH}/MYSQL_VERSION && cat MYSQL_VERSION | grep MYSQL_VERSION_MINOR | awk -F= '{print \$2}') + if [ \${PXC_VERSION_MINOR} = "0" ]; then + PRO_BRANCH="8.0" + elif [ \${PXC_VERSION_MINOR} = "4" ]; then + PRO_BRANCH="8.4" + else + PRO_BRANCH="trunk" + fi + curl -L -H "Authorization: Bearer \${TOKEN}" \ + -H "Accept: application/vnd.github.v3.raw" \ + -o pxc_builder.sh \ + "https://api.github.com/repos/percona/percona-xtradb-cluster-private-build/contents/build-ps/pxc_builder.sh?ref=\${PRO_BRANCH}" + sed -i "s/PRIVATE_USERNAME/\${USERNAME}/g" pxc_builder.sh + sed -i "s/PRIVATE_TOKEN/\${PASSWORD}/g" pxc_builder.sh + else + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/build-ps/pxc_builder.sh -O pxc_builder.sh + fi + pwd -P + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./pxc_builder.sh --builddir=\${build_dir}/test --install_deps=1 + if [ \${FIPSMODE} = "YES" ]; then + git clone --depth 1 --branch \${PRO_BRANCH} https://x-access-token:${TOKEN}@github.com/percona/percona-xtradb-cluster-private-build.git percona-xtradb-cluster-private-build + mv -f \${build_dir}/percona-xtradb-cluster-private-build/build-ps \${build_dir}/test/. + fi + bash -x ./pxc_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --branch=${GIT_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} --bin_release=${BIN_RELEASE} ${STAGE_PARAM}" + """ + } } } @@ -77,10 +80,6 @@ pipeline { defaultValue: '1', description: 'BIN release value', name: 'BIN_RELEASE') - choice( - choices: 'pxc-80\npxc-8x-innovation\npxc-84-lts', - description: 'PXC repo name', - name: 'PXC_REPO') choice( choices: 'NO\nYES', description: 'Enable fipsmode', @@ -775,7 +774,7 @@ pipeline { perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-amd64 \ perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-arm64 sudo docker manifest annotate perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-arm64 --os linux --arch arm64 --variant v8 - sudo docker manifest annotate perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-multi perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-amd64 --os linux --arch amd64 + sudo docker manifest annotate perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-amd64 --os linux --arch amd64 sudo docker manifest inspect perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} ''' withCredentials([ diff --git a/pxc/jenkins/percona-xtradb-cluster-9.x.groovy b/pxc/jenkins/percona-xtradb-cluster-9.x.groovy new file mode 100644 index 0000000000..71062956be --- /dev/null +++ b/pxc/jenkins/percona-xtradb-cluster-9.x.groovy @@ -0,0 +1,733 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + withCredentials([string(credentialsId: 'GITHUB_API_TOKEN', variable: 'TOKEN')]) { + sh """ + set -o xtrace + mkdir -p test + if [ \${FIPSMODE} = "YES" ]; then + PXC_VERSION_MINOR=\$(curl -s -O \$(echo \${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/\${GIT_BRANCH}/MYSQL_VERSION && cat MYSQL_VERSION | grep MYSQL_VERSION_MINOR | awk -F= '{print \$2}') + if [ \${PXC_VERSION_MINOR} = "0" ]; then + PRO_BRANCH="8.0" + elif [ \${PXC_VERSION_MINOR} = "4" ]; then + PRO_BRANCH="8.4" + else + PRO_BRANCH="trunk" + fi + curl -L -H "Authorization: Bearer \${TOKEN}" \ + -H "Accept: application/vnd.github.v3.raw" \ + -o pxc_builder.sh \ + "https://api.github.com/repos/percona/percona-xtradb-cluster-private-build/contents/build-ps/pxc_builder.sh?ref=\${PRO_BRANCH}" + else + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/build-ps/pxc_builder.sh -O pxc_builder.sh + fi + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./pxc_builder.sh --builddir=\${build_dir}/test --install_deps=1 + if [ \${FIPSMODE} = "YES" ]; then + git clone --depth 1 --branch \${PRO_BRANCH} https://x-access-token:${TOKEN}@github.com/percona/percona-xtradb-cluster-private-build.git percona-xtradb-cluster-private-build + mv -f \${build_dir}/percona-xtradb-cluster-private-build/build-ps \${build_dir}/test/. + fi + bash -x ./pxc_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --branch=${GIT_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} --bin_release=${BIN_RELEASE} ${STAGE_PARAM}" + """ + } +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def AWS_STASH_PATH + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/percona/percona-xtradb-cluster.git', + description: 'URL for percona-xtradb-cluster repository', + name: 'GIT_REPO') + string( + defaultValue: '9.0', + description: 'Tag/Branch for percona-xtradb-cluster repository', + name: 'GIT_BRANCH') + string( + defaultValue: '1', + description: 'RPM release value', + name: 'RPM_RELEASE') + string( + defaultValue: '1', + description: 'DEB release value', + name: 'DEB_RELEASE') + string( + defaultValue: '1', + description: 'BIN release value', + name: 'BIN_RELEASE') + choice( + choices: 'pxc-9x-innovation\npxc-97-lts', + description: 'PXC repo name', + name: 'PXC_REPO') + choice( + choices: 'NO\nYES', + description: 'Enable fipsmode', + name: 'FIPSMODE') + choice( + choices: 'YES\nNO', + description: 'Experimental packages only', + name: 'EXPERIMENTALMODE') + choice( + choices: 'experimental\nlaboratory\ntesting', + description: 'Repo component to push packages to', + name: 'COMPONENT') + choice( + choices: '#releases-ci\n#releases', + description: 'Channel for notifications', + name: 'SLACKNOTIFY') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + timestamps () + } + stages { + stage('Create PXC source tarball') { + agent { + label params.CLOUD == 'Hetzner' ? 'deb12-x64' : 'min-focal-x64' + } + steps { + slackNotify("${SLACKNOTIFY}", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") + cleanUpWS() + script { + if (env.FIPSMODE == 'YES') { + buildStage("centos:7", "--get_sources=1 --enable_fipsmode=1") + } else { + buildStage("centos:7", "--get_sources=1") + } + } + sh ''' + REPO_UPLOAD_PATH=$(grep "DEST=UPLOAD" test/pxc-9x.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/pxc-9x.properties + cat uploadPath + cat awsUploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' + stash includes: 'uploadPath', name: 'uploadPath' + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') + } + } + stage('Build PXC generic source packages') { + parallel { + stage('Build PXC generic source rpm') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + cleanUpWS() + unstash 'pxc-9x.properties' + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + script { + if (env.FIPSMODE == 'YES') { + buildStage("centos:7", "--build_src_rpm=1 --enable_fipsmode=1") + } else { + buildStage("centos:7", "--build_src_rpm=1") + } + } + stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) + } + } + stage('Build PXC generic source deb') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + cleanUpWS() + unstash 'pxc-9x.properties' + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + script { + if (env.FIPSMODE == 'YES') { + buildStage("ubuntu:xenial", "--build_source_deb=1 --enable_fipsmode=1") + } else { + buildStage("ubuntu:xenial", "--build_source_deb=1") + } + } + stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) + } + } + } //parallel + } // stage + stage('Build PXC RPMs/DEBs/Binary tarballs') { + parallel { + stage('Centos 8') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + script { + if (env.FIPSMODE == 'YES') { + echo "The step is skipped" + } else { + cleanUpWS() + unstash 'pxc-9x.properties' + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("centos:8", "--build_rpm=1") + + stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' + if (env.EXPERIMENTALMODE == 'NO') { + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + } + } + } + stage('Centos 8 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + script { + if (env.FIPSMODE == 'YES') { + echo "The step is skipped" + } else { + cleanUpWS() + unstash 'pxc-9x.properties' + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("centos:8", "--build_rpm=1") + + stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' + if (env.EXPERIMENTALMODE == 'NO') { + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + } + } + } + stage('Oracle Linux 9') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + script { + cleanUpWS() + unstash 'pxc-9x.properties' + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + if (env.FIPSMODE == 'YES') { + buildStage("oraclelinux:9", "--build_rpm=1 --enable_fipsmode=1") + } else { + buildStage("oraclelinux:9", "--build_rpm=1") + } + stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' + if (env.EXPERIMENTALMODE == 'NO') { + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + } + } + stage('Oracle Linux 9 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + script { + cleanUpWS() + unstash 'pxc-9x.properties' + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + if (env.FIPSMODE == 'YES') { + buildStage("oraclelinux:9", "--build_rpm=1 --enable_fipsmode=1") + } else { + buildStage("oraclelinux:9", "--build_rpm=1") + } + stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' + if (env.EXPERIMENTALMODE == 'NO') { + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + } + } + stage('Amazon Linux 2023') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + script { + if (env.FIPSMODE == 'NO') { + echo "The step is skipped" + } else { + cleanUpWS() + unstash 'pxc-9x.properties' + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") + + stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' + if (env.EXPERIMENTALMODE == 'NO') { + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + } + } + } + stage('Amazon Linux 2023 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + script { + if (env.FIPSMODE == 'NO') { + echo "The step is skipped" + } else { + cleanUpWS() + unstash 'pxc-9x.properties' + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") + + stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' + if (env.EXPERIMENTALMODE == 'NO') { + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + } + } + } + stage('Ubuntu Focal(20.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + script { + if (env.FIPSMODE == 'YES') { + echo "The step is skipped" + } else { + cleanUpWS() + unstash 'pxc-9x.properties' + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' + if (env.EXPERIMENTALMODE == 'NO') { + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } + } + } + stage('Ubuntu Focal(20.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + script { + if (env.FIPSMODE == 'YES') { + echo "The step is skipped" + } else { + cleanUpWS() + unstash 'pxc-9x.properties' + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' + if (env.EXPERIMENTALMODE == 'NO') { + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } + } + } + stage('Ubuntu Jammy(22.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + script { + cleanUpWS() + unstash 'pxc-9x.properties' + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + if (env.FIPSMODE == 'YES') { + buildStage("ubuntu:jammy", "--build_deb=1 --enable_fipsmode=1") + } else { + buildStage("ubuntu:jammy", "--build_deb=1") + } + + stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } + stage('Ubuntu Jammy(22.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + script { + cleanUpWS() + unstash 'pxc-9x.properties' + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + if (env.FIPSMODE == 'YES') { + buildStage("ubuntu:jammy", "--build_deb=1 --enable_fipsmode=1") + } else { + buildStage("ubuntu:jammy", "--build_deb=1") + } + + stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } + stage('Ubuntu Noble(24.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + script { + cleanUpWS() + unstash 'pxc-9x.properties' + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + if (env.FIPSMODE == 'YES') { + buildStage("ubuntu:noble", "--build_deb=1 --enable_fipsmode=1") + } else { + buildStage("ubuntu:noble", "--build_deb=1") + } + + stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' + if (env.EXPERIMENTALMODE == 'NO') { + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } + } + stage('Ubuntu Noble(24.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + script { + cleanUpWS() + unstash 'pxc-9x.properties' + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + if (env.FIPSMODE == 'YES') { + buildStage("ubuntu:noble", "--build_deb=1 --enable_fipsmode=1") + } else { + buildStage("ubuntu:noble", "--build_deb=1") + } + + stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' + if (env.EXPERIMENTALMODE == 'NO') { + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } + } + stage('Debian Bullseye(11)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + script { + if (env.FIPSMODE == 'YES') { + echo "The step is skipped" + } else { + cleanUpWS() + unstash 'pxc-9x.properties' + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' + if (env.EXPERIMENTALMODE == 'NO') { + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } + } + } + stage('Debian Bullseye(11) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + script { + if (env.FIPSMODE == 'YES') { + echo "The step is skipped" + } else { + cleanUpWS() + unstash 'pxc-9x.properties' + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' + if (env.EXPERIMENTALMODE == 'NO') { + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } + } + } + stage('Debian Bookworm(12)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + script { + cleanUpWS() + unstash 'pxc-9x.properties' + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + if (env.FIPSMODE == 'YES') { + buildStage("debian:bookworm", "--build_deb=1 --enable_fipsmode=1") + } else { + buildStage("debian:bookworm", "--build_deb=1") + } + + stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' + if (env.EXPERIMENTALMODE == 'NO') { + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } + } + stage('Debian Bookworm(12) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + script { + cleanUpWS() + unstash 'pxc-9x.properties' + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + if (env.FIPSMODE == 'YES') { + buildStage("debian:bookworm", "--build_deb=1 --enable_fipsmode=1") + } else { + buildStage("debian:bookworm", "--build_deb=1") + } + + stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' + if (env.EXPERIMENTALMODE == 'NO') { + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } + } + stage('Centos 8 tarball') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + script { + if (env.FIPSMODE == 'YES') { + echo "The step is skipped" + } else { + cleanUpWS() + unstash 'pxc-9x.properties' + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("centos:8", "--build_tarball=1") + + stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' + if (env.EXPERIMENTALMODE == 'NO') { + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "test/tarball/", AWS_STASH_PATH, 'binary') + } + } + } + } + } + stage('Oracle Linux 9 tarball') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + script { + cleanUpWS() + unstash 'pxc-9x.properties' + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + if (env.FIPSMODE == 'YES') { + buildStage("oraclelinux:9", "--build_tarball=1 --enable_fipsmode=1") + } else { + buildStage("oraclelinux:9", "--build_tarball=1") + } + + stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' + if (env.EXPERIMENTALMODE == 'NO') { + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "test/tarball/", AWS_STASH_PATH, 'binary') + } + } + } + } + stage('Debian Bullseye(11) tarball') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + script { + if (env.FIPSMODE == 'YES') { + echo "The step is skipped" + } else { + cleanUpWS() + unstash 'pxc-9x.properties' + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_tarball=1") + + stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' + if (env.EXPERIMENTALMODE == 'NO') { + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "test/tarball/", AWS_STASH_PATH, 'binary') + } + } + } + } + } + stage('Ubuntu Jammy(22.04) tarball') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + cleanUpWS() + unstash 'pxc-9x.properties' + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + script { + if (env.FIPSMODE == 'YES') { + buildStage("ubuntu:jammy", "--build_tarball=1 --enable_fipsmode=1") + } else { + buildStage("ubuntu:jammy", "--build_tarball=1") + } + } + + stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "test/tarball/", AWS_STASH_PATH, 'binary') + } + } + } + } + + stage('Sign packages') { + steps { + script { + if (env.EXPERIMENTALMODE == 'NO') { + signRPM() + } + } + signDEB() + } + } + stage('Push to public repository') { + steps { + script { + PXC_VERSION_MINOR = sh(returnStdout: true, script: ''' curl -s -O $(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git$||')/${GIT_BRANCH}/MYSQL_VERSION; cat MYSQL_VERSION | grep MYSQL_VERSION_MINOR | awk -F= '{print $2}' ''').trim() + if ("${PXC_VERSION_MINOR}" == "0") { + // sync packages + if (env.FIPSMODE == 'YES') { + sync2PrivateProdAutoBuild(params.CLOUD, "pxc-90-pro", COMPONENT) + } else { + sync2ProdAutoBuild(params.CLOUD, "pxc-90", COMPONENT) + } + } else { + if (env.FIPSMODE == 'YES') { + if ("${PXC_VERSION_MINOR}" == "7") { + sync2PrivateProdAutoBuild(params.CLOUD, "pxc-97-pro", COMPONENT) + } else { + sync2PrivateProdAutoBuild(params.CLOUD, "pxc-9x-innovation-pro", COMPONENT) + } + } else { + if ("${PXC_VERSION_MINOR}" == "7") { + sync2ProdAutoBuild(params.CLOUD, "pxc-97-lts", COMPONENT) + } else { + sync2ProdAutoBuild(params.CLOUD, "pxc-9x-innovation", COMPONENT) + } + } + } + } + } + } + stage('Push Tarballs to TESTING download area') { + steps { + script { + try { + if (env.FIPSMODE == 'YES') { + uploadTarballToDownloadsTesting(params.CLOUD, "pxc-gated", "${GIT_BRANCH}") + } else { + uploadTarballToDownloadsTesting(params.CLOUD, "pxc", "${GIT_BRANCH}") + } + } + catch (err) { + echo "Caught: ${err}" + currentBuild.result = 'UNSTABLE' + } + } + } + } + } + post { + success { + script { + if (env.FIPSMODE == 'YES') { + slackNotify("${SLACKNOTIFY}", "#00FF00", "[${JOB_NAME}]: PRO build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + } else { + slackNotify("${SLACKNOTIFY}", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + } + } + deleteDir() + } + failure { + script { + if (env.FIPSMODE == 'YES') { + slackNotify("${SLACKNOTIFY}", "#FF0000", "[${JOB_NAME}]: PRO build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + } else { + slackNotify("${SLACKNOTIFY}", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + } + } + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + script { + if (env.FIPSMODE == 'YES') { + currentBuild.description = "PRO -> Built on ${GIT_BRANCH} - packages [${COMPONENT}/${AWS_STASH_PATH}]" + } else { + currentBuild.description = "Built on ${GIT_BRANCH} - packages [${COMPONENT}/${AWS_STASH_PATH}]" + } + } + deleteDir() + } + } +} diff --git a/pxc/jenkins/percona-xtradb-cluster-9.x.yml b/pxc/jenkins/percona-xtradb-cluster-9.x.yml new file mode 100644 index 0000000000..dadc4f5e76 --- /dev/null +++ b/pxc/jenkins/percona-xtradb-cluster-9.x.yml @@ -0,0 +1,15 @@ +- job: + name: pxc9x-autobuild-RELEASE + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: pxc/jenkins/percona-xtradb-cluster-9.x.groovy + From 7acdb0b5e32236aff4fff8c751e0d1b9203e937e Mon Sep 17 00:00:00 2001 From: Muhammad Aqeel Date: Mon, 7 Apr 2025 18:06:21 +0500 Subject: [PATCH 083/269] [PKG-561]: Updates jobs for hetzner plus adjusts tags. (#3250) --- ppg/ppg-pgbackrest-docker-arm.groovy | 47 +++++++++++++++++++-------- ppg/ppg-pgbackrest-docker.groovy | 29 +++++++++-------- ppg/ppg-pgbackrest-docker.yml | 4 +-- ppg/ppg-pgbouncer-docker-arm.groovy | 48 ++++++++++++++++++++-------- ppg/ppg-pgbouncer-docker.groovy | 27 ++++++++-------- ppg/ppg-pgbouncer-docker.yml | 4 +-- 6 files changed, 101 insertions(+), 58 deletions(-) diff --git a/ppg/ppg-pgbackrest-docker-arm.groovy b/ppg/ppg-pgbackrest-docker-arm.groovy index 13f717e40f..6444735afd 100644 --- a/ppg/ppg-pgbackrest-docker-arm.groovy +++ b/ppg/ppg-pgbackrest-docker-arm.groovy @@ -1,16 +1,17 @@ -library changelog: false, identifier: "lib@master", retriever: modernSCM([ +library changelog: false, identifier: "lib@hetzner", retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) pipeline { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } environment { PATH = '/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin' } parameters { + choice(name: 'CLOUD', choices: [ 'Hetzner','AWS' ], description: 'Cloud infra for build') string(name: 'PGBACKREST_VERSION', defaultValue: '2.51-1', description: 'pgBackrest version') choice(name: 'PPG_REPO', choices: ['testing','release','experimental'], description: 'Percona-release repo') string(name: 'PPG_VERSION', defaultValue: '17.0', description: 'PPG version') @@ -31,16 +32,36 @@ pipeline { stage ('Build image') { steps { sh """ - MAJ_VER=\$(echo ${params.PGBACKREST_VERSION} | cut -f1 -d'-') - echo \$MAJ_VER git clone https://github.com/percona/percona-docker cd percona-docker/percona-pgbackrest sed -E "s/ENV PG_VERSION (.+)/ENV PG_VERSION ${params.PPG_VERSION}/" -i Dockerfile sed -E "s/ENV PPG_REPO (.+)/ENV PPG_REPO ${params.PPG_REPO}/" -i Dockerfile - docker build . -t percona-pgbackrest -f Dockerfile + docker build . -t percona-pgbackrest """ } } + stage ('Push image to aws ecr') { + when { + environment name: 'TARGET_REPO', value: 'AWS_ECR' + } + steps { + withCredentials([aws(accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: '8468e4e0-5371-4741-a9bb-7c143140acea', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY')]) { + sh """ + curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" + if [ -f "/usr/bin/yum" ] ; then sudo yum install -y unzip ; else sudo apt-get update && apt-get -y install unzip ; fi + unzip -o awscliv2.zip + sudo ./aws/install + aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/e7j3v3n0 + docker tag percona-pgbackrest public.ecr.aws/e7j3v3n0/percona-pgbackrest-build:percona-pgbackrest:${params.PGBACKREST_VERSION} + docker push public.ecr.aws/e7j3v3n0/percona-pgbackrest-build:percona-pgbackrest:${params.PGBACKREST_VERSION} + if [ ${params.LATEST} = "yes" ]; then + docker tag percona-pgbackrest public.ecr.aws/e7j3v3n0/percona-pgbackrest:latest + docker push public.ecr.aws/e7j3v3n0/percona-pgbackrest:latest + fi + """ + } + } + } stage ('Push images to perconalab') { when { environment name: 'TARGET_REPO', value: 'PerconaLab' @@ -48,11 +69,11 @@ pipeline { steps { withCredentials([usernamePassword(credentialsId: 'hub.docker.com', passwordVariable: 'PASS', usernameVariable: 'USER')]) { sh """ + MAJ_VER=\$(echo ${params.PGBACKREST_VERSION} | cut -f1 -d'-') docker login -u '${USER}' -p '${PASS}' - MAJ_VER=\$(echo ${params.PGBACKREST_VERSION}) docker tag percona-pgbackrest perconalab/percona-pgbackrest:${params.PGBACKREST_VERSION}-arm64 - docker tag percona-pgbackrest perconalab/percona-pgbackrest:\$MAJ_VER-arm64 docker push perconalab/percona-pgbackrest:${params.PGBACKREST_VERSION}-arm64 + docker tag percona-pgbackrest perconalab/percona-pgbackrest:\$MAJ_VER-arm64 docker push perconalab/percona-pgbackrest:\$MAJ_VER-arm64 docker manifest create --amend perconalab/percona-pgbackrest:${params.PGBACKREST_VERSION} \ @@ -91,18 +112,18 @@ pipeline { } } } - stage ('Push images to percona') { + stage ('Push images to official percona docker registry') { when { environment name: 'TARGET_REPO', value: 'DockerHub' } steps { withCredentials([usernamePassword(credentialsId: 'hub.docker.com', passwordVariable: 'PASS', usernameVariable: 'USER')]) { sh """ - docker login -u '${USER}' -p '${PASS}' MAJ_VER=\$(echo ${params.PGBACKREST_VERSION} | cut -f1 -d'-') + docker login -u '${USER}' -p '${PASS}' docker tag percona-pgbackrest percona/percona-pgbackrest:${params.PGBACKREST_VERSION}-arm64 - docker tag percona-pgbackrest percona/percona-pgbackrest:\$MAJ_VER-arm64 docker push percona/percona-pgbackrest:${params.PGBACKREST_VERSION}-arm64 + docker tag percona-pgbackrest percona/percona-pgbackrest:\$MAJ_VER-arm64 docker push percona/percona-pgbackrest:\$MAJ_VER-arm64 docker manifest create --amend percona/percona-pgbackrest:${params.PGBACKREST_VERSION} \ @@ -150,13 +171,13 @@ pipeline { deleteDir() } success { - slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: Building of Percona pgBackrest ${PGBACKREST_VERSION} for ARM, repo ${PPG_REPO} succeed") + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: Building of Percona pgBackrest ${PGBACKREST_VERSION} repo ${PPG_REPO} succeed") } unstable { - slackNotify("#releases-ci", "#F6F930", "[${JOB_NAME}]: Building of Percona pgBackrest ${PGBACKREST_VERSION} fro ARM, repo ${PPG_REPO} unstable - [${BUILD_URL}testReport/]") + slackNotify("#releases-ci", "#F6F930", "[${JOB_NAME}]: Building of Percona pgBackrest ${PGBACKREST_VERSION} repo ${PPG_REPO} unstable - [${BUILD_URL}testReport/]") } failure { - slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: Building of Percona pgBackrest ${PGBACKREST_VERSION} for ARM, repo ${PPG_REPO} failed - [${BUILD_URL}]") + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: Building of Percona pgBackrest ${PGBACKREST_VERSION} repo ${PPG_REPO} failed - [${BUILD_URL}]") } } } diff --git a/ppg/ppg-pgbackrest-docker.groovy b/ppg/ppg-pgbackrest-docker.groovy index eef8f70697..f8597bd4df 100644 --- a/ppg/ppg-pgbackrest-docker.groovy +++ b/ppg/ppg-pgbackrest-docker.groovy @@ -1,17 +1,18 @@ -library changelog: false, identifier: "lib@master", retriever: modernSCM([ +library changelog: false, identifier: "lib@hetzner", retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) pipeline { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } environment { PATH = '/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin' } parameters { - string(name: 'PGBACKREST_VERSION', defaultValue: '2.51-1', description: 'pgBackrest version') + choice(name: 'CLOUD', choices: [ 'Hetzner','AWS' ], description: 'Cloud infra for build') + string(name: 'PGBACKREST_VERSION', defaultValue: '2.51-1', description: 'pgBackrest version') choice(name: 'PPG_REPO', choices: ['testing','release','experimental'], description: 'Percona-release repo') string(name: 'PPG_VERSION', defaultValue: '17.0', description: 'PPG version') choice(name: 'TARGET_REPO', choices: ['PerconaLab','AWS_ECR','DockerHub'], description: 'Target repo for docker image, use DockerHub for release only') @@ -35,7 +36,7 @@ pipeline { cd percona-docker/percona-pgbackrest sed -E "s/ENV PG_VERSION (.+)/ENV PG_VERSION ${params.PPG_VERSION}/" -i Dockerfile sed -E "s/ENV PPG_REPO (.+)/ENV PPG_REPO ${params.PPG_REPO}/" -i Dockerfile - docker build . -t percona-pgbackrest:${params.PGBACKREST_VERSION} + docker build . -t percona-pgbackrest """ } } @@ -48,10 +49,10 @@ pipeline { wget https://raw.githubusercontent.com/aquasecurity/trivy/v\${TRIVY_VERSION}/contrib/junit.tpl if [ ${params.PPG_REPO} = "release" ]; then /usr/local/bin/trivy -q image --format template --template @junit.tpl -o trivy-hight-junit.xml \ - --timeout 10m0s --ignore-unfixed --exit-code 1 --severity HIGH,CRITICAL percona-pgbackrest:${params.PGBACKREST_VERSION} + --timeout 10m0s --ignore-unfixed --exit-code 1 --severity HIGH,CRITICAL percona-pgbackrest else /usr/local/bin/trivy -q image --format template --template @junit.tpl -o trivy-hight-junit.xml \ - --timeout 10m0s --ignore-unfixed --exit-code 0 --severity HIGH,CRITICAL percona-pgbackrest:${params.PGBACKREST_VERSION} + --timeout 10m0s --ignore-unfixed --exit-code 0 --severity HIGH,CRITICAL percona-pgbackrest fi """ } @@ -73,10 +74,10 @@ pipeline { unzip -o awscliv2.zip sudo ./aws/install aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/e7j3v3n0 - docker tag percona-pgbackrest:${params.PGBACKREST_VERSION} public.ecr.aws/e7j3v3n0/percona-pgbackrest-build:percona-pgbackrest:${params.PGBACKREST_VERSION} + docker tag percona-pgbackrest public.ecr.aws/e7j3v3n0/percona-pgbackrest-build:percona-pgbackrest:${params.PGBACKREST_VERSION} docker push public.ecr.aws/e7j3v3n0/percona-pgbackrest-build:percona-pgbackrest:${params.PGBACKREST_VERSION} if [ ${params.LATEST} = "yes" ]; then - docker tag percona-pgbackrest:${params.PGBACKREST_VERSION} public.ecr.aws/e7j3v3n0/percona-pgbackrest:latest + docker tag percona-pgbackrest public.ecr.aws/e7j3v3n0/percona-pgbackrest:latest docker push public.ecr.aws/e7j3v3n0/percona-pgbackrest:latest fi """ @@ -92,12 +93,12 @@ pipeline { sh """ MAJ_VER=\$(echo ${params.PGBACKREST_VERSION} | cut -f1 -d'-') docker login -u '${USER}' -p '${PASS}' - docker tag percona-pgbackrest:${params.PGBACKREST_VERSION} perconalab/percona-pgbackrest:${params.PGBACKREST_VERSION}-amd64 + docker tag percona-pgbackrest perconalab/percona-pgbackrest:${params.PGBACKREST_VERSION}-amd64 docker push perconalab/percona-pgbackrest:${params.PGBACKREST_VERSION}-amd64 - docker tag percona-pgbackrest:${params.PGBACKREST_VERSION} perconalab/percona-pgbackrest:\$MAJ_VER-amd64 + docker tag percona-pgbackrest perconalab/percona-pgbackrest:\$MAJ_VER-amd64 docker push perconalab/percona-pgbackrest:\$MAJ_VER-amd64 if [ ${params.LATEST} = "yes" ]; then - docker tag percona-pgbackrest:${params.PGBACKREST_VERSION} perconalab/percona-pgbackrest:latest + docker tag percona-pgbackrest perconalab/percona-pgbackrest:latest docker push perconalab/percona-pgbackrest:latest fi """ @@ -113,12 +114,12 @@ pipeline { sh """ MAJ_VER=\$(echo ${params.PGBACKREST_VERSION} | cut -f1 -d'-') docker login -u '${USER}' -p '${PASS}' - docker tag percona-pgbackrest:${params.PGBACKREST_VERSION} percona/percona-pgbackrest:${params.PGBACKREST_VERSION}-amd64 + docker tag percona-pgbackrest percona/percona-pgbackrest:${params.PGBACKREST_VERSION}-amd64 docker push percona/percona-pgbackrest:${params.PGBACKREST_VERSION}-amd64 - docker tag percona-pgbackrest:${params.PGBACKREST_VERSION} percona/percona-pgbackrest:\$MAJ_VER-amd64 + docker tag percona-pgbackrest percona/percona-pgbackrest:\$MAJ_VER-amd64 docker push percona/percona-pgbackrest:\$MAJ_VER-amd64 if [ ${params.LATEST} = "yes" ]; then - docker tag percona-pgbackrest:${params.PGBACKREST_VERSION} percona/percona-pgbackrest:latest + docker tag percona-pgbackrest percona/percona-pgbackrest:latest docker push percona/percona-pgbackrest:latest fi """ diff --git a/ppg/ppg-pgbackrest-docker.yml b/ppg/ppg-pgbackrest-docker.yml index c584383a39..57bb7f9efd 100644 --- a/ppg/ppg-pgbackrest-docker.yml +++ b/ppg/ppg-pgbackrest-docker.yml @@ -1,5 +1,5 @@ - job: - name: percona-pgbackrest-docker + name: hetzner-percona-pgbackrest-docker project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ppg/ppg-pgbackrest-docker.groovy diff --git a/ppg/ppg-pgbouncer-docker-arm.groovy b/ppg/ppg-pgbouncer-docker-arm.groovy index ebf857a605..7f2bd68b0a 100644 --- a/ppg/ppg-pgbouncer-docker-arm.groovy +++ b/ppg/ppg-pgbouncer-docker-arm.groovy @@ -1,16 +1,17 @@ -library changelog: false, identifier: "lib@master", retriever: modernSCM([ +library changelog: false, identifier: "lib@hetzner", retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) pipeline { agent { - label 'docker-32gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } environment { PATH = '/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin' } parameters { + choice(name: 'CLOUD', choices: [ 'Hetzner','AWS' ], description: 'Cloud infra for build') string(name: 'PGBOUNCER_VERSION', defaultValue: '1.22.1-1', description: 'pgBouncer version') choice(name: 'PPG_REPO', choices: ['testing','release','experimental'], description: 'Percona-release repo') string(name: 'PPG_VERSION', defaultValue: '17.0', description: 'PPG version') @@ -31,16 +32,36 @@ pipeline { stage ('Build image') { steps { sh """ - MAJ_VER=\$(echo ${params.PGBOUNCER_VERSION} | cut -f1 -d'-') - echo \$MAJ_VER git clone https://github.com/percona/percona-docker cd percona-docker/percona-pgbouncer sed -E "s/ENV PG_VERSION (.+)/ENV PG_VERSION ${params.PPG_VERSION}/" -i Dockerfile sed -E "s/ENV PPG_REPO (.+)/ENV PPG_REPO ${params.PPG_REPO}/" -i Dockerfile - docker build . -t percona-pgbouncer -f Dockerfile + docker build . -t percona-pgbouncer """ } } + stage ('Push image to aws ecr') { + when { + environment name: 'TARGET_REPO', value: 'AWS_ECR' + } + steps { + withCredentials([aws(accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: '8468e4e0-5371-4741-a9bb-7c143140acea', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY')]) { + sh """ + curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" + if [ -f "/usr/bin/yum" ] ; then sudo yum install -y unzip ; else sudo apt-get update && apt-get -y install unzip ; fi + unzip -o awscliv2.zip + sudo ./aws/install + aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/e7j3v3n0 + docker tag percona-pgbouncer public.ecr.aws/e7j3v3n0/percona-pgbouncer-build:percona-pgbouncer:${params.PGBOUNCER_VERSION} + docker push public.ecr.aws/e7j3v3n0/percona-pgbouncer-build:percona-pgbouncer:${params.PGBOUNCER_VERSION} + if [ ${params.LATEST} = "yes" ]; then + docker tag percona-pgbouncer public.ecr.aws/e7j3v3n0/percona-pgbouncer:latest + docker push public.ecr.aws/e7j3v3n0/percona-pgbouncer:latest + fi + """ + } + } + } stage ('Push images to perconalab') { when { environment name: 'TARGET_REPO', value: 'PerconaLab' @@ -48,11 +69,11 @@ pipeline { steps { withCredentials([usernamePassword(credentialsId: 'hub.docker.com', passwordVariable: 'PASS', usernameVariable: 'USER')]) { sh """ + MAJ_VER=\$(echo ${params.PGBOUNCER_VERSION} | cut -f1 -d'-') docker login -u '${USER}' -p '${PASS}' - MAJ_VER=\$(echo ${params.PGBOUNCER_VERSION}) docker tag percona-pgbouncer perconalab/percona-pgbouncer:${params.PGBOUNCER_VERSION}-arm64 - docker tag percona-pgbouncer perconalab/percona-pgbouncer:\$MAJ_VER-arm64 docker push perconalab/percona-pgbouncer:${params.PGBOUNCER_VERSION}-arm64 + docker tag percona-pgbouncer perconalab/percona-pgbouncer:\$MAJ_VER-arm64 docker push perconalab/percona-pgbouncer:\$MAJ_VER-arm64 docker manifest create --amend perconalab/percona-pgbouncer:${params.PGBOUNCER_VERSION} \ @@ -86,23 +107,22 @@ pipeline { docker manifest inspect perconalab/percona-pgbouncer:latest docker manifest push perconalab/percona-pgbouncer:latest fi - """ } } } - stage ('Push images to percona') { + stage ('Push images to official percona docker registry') { when { environment name: 'TARGET_REPO', value: 'DockerHub' } steps { withCredentials([usernamePassword(credentialsId: 'hub.docker.com', passwordVariable: 'PASS', usernameVariable: 'USER')]) { sh """ - docker login -u '${USER}' -p '${PASS}' MAJ_VER=\$(echo ${params.PGBOUNCER_VERSION} | cut -f1 -d'-') + docker login -u '${USER}' -p '${PASS}' docker tag percona-pgbouncer percona/percona-pgbouncer:${params.PGBOUNCER_VERSION}-arm64 - docker tag percona-pgbouncer percona/percona-pgbouncer:\$MAJ_VER-arm64 docker push percona/percona-pgbouncer:${params.PGBOUNCER_VERSION}-arm64 + docker tag percona-pgbouncer percona/percona-pgbouncer:\$MAJ_VER-arm64 docker push percona/percona-pgbouncer:\$MAJ_VER-arm64 docker manifest create --amend percona/percona-pgbouncer:${params.PGBOUNCER_VERSION} \ @@ -150,13 +170,13 @@ pipeline { deleteDir() } success { - slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: Building of Percona pgBouncer ${PGBOUNCER_VERSION} for ARM, repo ${PPG_REPO} succeed") + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: Building of Percona pgBouncer ${PGBOUNCER_VERSION} repo ${PPG_REPO} succeed") } unstable { - slackNotify("#releases-ci", "#F6F930", "[${JOB_NAME}]: Building of Percona pgBouncer ${PGBOUNCER_VERSION} fro ARM, repo ${PPG_REPO} unstable - [${BUILD_URL}testReport/]") + slackNotify("#releases-ci", "#F6F930", "[${JOB_NAME}]: Building of Percona pgBouncer ${PGBOUNCER_VERSION} repo ${PPG_REPO} unstable - [${BUILD_URL}testReport/]") } failure { - slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: Building of Percona pgBouncer ${PGBOUNCER_VERSION} for ARM, repo ${PPG_REPO} failed - [${BUILD_URL}]") + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: Building of Percona pgBouncer ${PGBOUNCER_VERSION} repo ${PPG_REPO} failed - [${BUILD_URL}]") } } } diff --git a/ppg/ppg-pgbouncer-docker.groovy b/ppg/ppg-pgbouncer-docker.groovy index dfcc2097dd..f18dece44b 100644 --- a/ppg/ppg-pgbouncer-docker.groovy +++ b/ppg/ppg-pgbouncer-docker.groovy @@ -1,16 +1,17 @@ -library changelog: false, identifier: "lib@master", retriever: modernSCM([ +library changelog: false, identifier: "lib@hetzner", retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) pipeline { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } environment { PATH = '/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin' } parameters { + choice(name: 'CLOUD', choices: [ 'Hetzner','AWS' ], description: 'Cloud infra for build') string(name: 'PGBOUNCER_VERSION', defaultValue: '1.22.1-1', description: 'pgBouncer version') choice(name: 'PPG_REPO', choices: ['testing','release','experimental'], description: 'Percona-release repo') string(name: 'PPG_VERSION', defaultValue: '17.0', description: 'PPG version') @@ -35,7 +36,7 @@ pipeline { cd percona-docker/percona-pgbouncer sed -E "s/ENV PG_VERSION (.+)/ENV PG_VERSION ${params.PPG_VERSION}/" -i Dockerfile sed -E "s/ENV PPG_REPO (.+)/ENV PPG_REPO ${params.PPG_REPO}/" -i Dockerfile - docker build . -t percona-pgbouncer:${params.PGBOUNCER_VERSION} + docker build . -t percona-pgbouncer """ } } @@ -48,10 +49,10 @@ pipeline { wget https://raw.githubusercontent.com/aquasecurity/trivy/v\${TRIVY_VERSION}/contrib/junit.tpl if [ ${params.PPG_REPO} = "release" ]; then /usr/local/bin/trivy -q image --format template --template @junit.tpl -o trivy-hight-junit.xml \ - --timeout 10m0s --ignore-unfixed --exit-code 1 --severity HIGH,CRITICAL percona-pgbouncer:${params.PGBOUNCER_VERSION} + --timeout 10m0s --ignore-unfixed --exit-code 1 --severity HIGH,CRITICAL percona-pgbouncer else /usr/local/bin/trivy -q image --format template --template @junit.tpl -o trivy-hight-junit.xml \ - --timeout 10m0s --ignore-unfixed --exit-code 0 --severity HIGH,CRITICAL percona-pgbouncer:${params.PGBOUNCER_VERSION} + --timeout 10m0s --ignore-unfixed --exit-code 0 --severity HIGH,CRITICAL percona-pgbouncer fi """ } @@ -73,10 +74,10 @@ pipeline { unzip -o awscliv2.zip sudo ./aws/install aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/e7j3v3n0 - docker tag percona-pgbouncer:${params.PGBOUNCER_VERSION} public.ecr.aws/e7j3v3n0/percona-pgbouncer-build:percona-pgbouncer:${params.PGBOUNCER_VERSION} + docker tag percona-pgbouncer public.ecr.aws/e7j3v3n0/percona-pgbouncer-build:percona-pgbouncer:${params.PGBOUNCER_VERSION} docker push public.ecr.aws/e7j3v3n0/percona-pgbouncer-build:percona-pgbouncer:${params.PGBOUNCER_VERSION} if [ ${params.LATEST} = "yes" ]; then - docker tag percona-pgbouncer:${params.PGBOUNCER_VERSION} public.ecr.aws/e7j3v3n0/percona-pgbouncer:latest + docker tag percona-pgbouncer public.ecr.aws/e7j3v3n0/percona-pgbouncer:latest docker push public.ecr.aws/e7j3v3n0/percona-pgbouncer:latest fi """ @@ -92,12 +93,12 @@ pipeline { sh """ MAJ_VER=\$(echo ${params.PGBOUNCER_VERSION} | cut -f1 -d'-') docker login -u '${USER}' -p '${PASS}' - docker tag percona-pgbouncer:${params.PGBOUNCER_VERSION} perconalab/percona-pgbouncer:${params.PGBOUNCER_VERSION}-amd64 + docker tag percona-pgbouncer perconalab/percona-pgbouncer:${params.PGBOUNCER_VERSION}-amd64 docker push perconalab/percona-pgbouncer:${params.PGBOUNCER_VERSION}-amd64 - docker tag percona-pgbouncer:${params.PGBOUNCER_VERSION} perconalab/percona-pgbouncer:\$MAJ_VER-amd64 + docker tag percona-pgbouncer perconalab/percona-pgbouncer:\$MAJ_VER-amd64 docker push perconalab/percona-pgbouncer:\$MAJ_VER-amd64 if [ ${params.LATEST} = "yes" ]; then - docker tag percona-pgbouncer:${params.PGBOUNCER_VERSION} perconalab/percona-pgbouncer:latest + docker tag percona-pgbouncer perconalab/percona-pgbouncer:latest docker push perconalab/percona-pgbouncer:latest fi """ @@ -113,12 +114,12 @@ pipeline { sh """ MAJ_VER=\$(echo ${params.PGBOUNCER_VERSION} | cut -f1 -d'-') docker login -u '${USER}' -p '${PASS}' - docker tag percona-pgbouncer:${params.PGBOUNCER_VERSION} percona/percona-pgbouncer:${params.PGBOUNCER_VERSION}-amd64 + docker tag percona-pgbouncer percona/percona-pgbouncer:${params.PGBOUNCER_VERSION}-amd64 docker push percona/percona-pgbouncer:${params.PGBOUNCER_VERSION}-amd64 - docker tag percona-pgbouncer:${params.PGBOUNCER_VERSION} percona/percona-pgbouncer:\$MAJ_VER-amd64 + docker tag percona-pgbouncer percona/percona-pgbouncer:\$MAJ_VER-amd64 docker push percona/percona-pgbouncer:\$MAJ_VER-amd64 if [ ${params.LATEST} = "yes" ]; then - docker tag percona-pgbouncer:${params.PGBOUNCER_VERSION} percona/percona-pgbouncer:latest + docker tag percona-pgbouncer percona/percona-pgbouncer:latest docker push percona/percona-pgbouncer:latest fi """ diff --git a/ppg/ppg-pgbouncer-docker.yml b/ppg/ppg-pgbouncer-docker.yml index 1d988e6831..e34912d882 100644 --- a/ppg/ppg-pgbouncer-docker.yml +++ b/ppg/ppg-pgbouncer-docker.yml @@ -1,5 +1,5 @@ - job: - name: percona-pgbouncer-docker + name: hetzner-percona-pgbouncer-docker project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: ppg/ppg-pgbouncer-docker.groovy From abc56f3dc88e4c312dc2dba01b83ce6fe0c2e173 Mon Sep 17 00:00:00 2001 From: Muhammad Aqeel Date: Fri, 11 Apr 2025 17:40:28 +0500 Subject: [PATCH 084/269] [PKG-549]: Makes docker build conditional + Fixes tags + Adds missing stages (#3257) * [PKG-549]: Makes PBM docker images build conditional + fixes tags * [PKG-549]: Reduces sleep time * [PKG-549]: Removes unnecessary unstash step. * [PKG-549]: Adds --amend to manifest create command. * [PKG-549]: Adds parameter for docker packages repo type. * [PKG-549]: Makes PSMDB docker images build conditional + fixes tags * [PKG-549]: Builds PSMDB debug images + run tests * [PKG-549]: Adds debug statement * [PKG-549]: Run script as bash script * [PKG-549]: Removes params keyword before DEBUG variable * [PKG-549]: Makes PSMDB 6/7 docker images build conditional + fixes tags --- pbm/jenkins/percona-mongodb-backup.groovy | 175 +++++++++-- .../percona-server-for-mongodb-6.0.groovy | 275 ++++++++++++++++-- .../percona-server-for-mongodb-7.0.groovy | 275 ++++++++++++++++-- .../percona-server-for-mongodb-8.0.groovy | 275 ++++++++++++++++-- 4 files changed, 912 insertions(+), 88 deletions(-) diff --git a/pbm/jenkins/percona-mongodb-backup.groovy b/pbm/jenkins/percona-mongodb-backup.groovy index f41991f689..63ac6b92cf 100644 --- a/pbm/jenkins/percona-mongodb-backup.groovy +++ b/pbm/jenkins/percona-mongodb-backup.groovy @@ -64,6 +64,22 @@ pipeline { choices: 'experimental\nlaboratory\ntesting\nexperimental', description: 'Repo component to push packages to', name: 'COMPONENT') + choice( + name: 'BUILD_DOCKER', + choices: ['true', 'false'], + description: 'Build and push Docker images (default: true)') + choice( + name: 'BUILD_PACKAGES', + choices: ['true', 'false'], + description: 'Build packages (default: true)') + choice( + name: 'TARGET_REPO', + choices: ['PerconaLab','DockerHub'], + description: 'Target repo for docker image, use DockerHub for release only') + choice( + name: 'PBM_REPO_TYPE', + choices: ['testing','release','experimental'], + description: 'Packages repo for docker images') } options { skipDefaultCheckout() @@ -73,6 +89,9 @@ pipeline { } stages { stage('Create PBM source tarball') { + when { + expression { return params.BUILD_PACKAGES == 'true' } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' } @@ -97,6 +116,9 @@ pipeline { } } stage('Build PBM generic source packages') { + when { + expression { return params.BUILD_PACKAGES == 'true' } + } parallel { stage('Build PBM generic source rpm') { agent { @@ -127,6 +149,9 @@ pipeline { } //parallel } // stage stage('Build PBM RPMs/DEBs/Binary tarballs') { + when { + expression { return params.BUILD_PACKAGES == 'true' } + } parallel { stage('Oracle Linux 8(x86_64)') { agent { @@ -327,18 +352,30 @@ pipeline { } stage('Sign packages') { + when { + expression { return params.BUILD_PACKAGES == 'true' } + } steps { signRPM() signDEB() } } stage('Push to public repository') { + when { + expression { return params.BUILD_PACKAGES == 'true' } + } steps { // sync packages sync2ProdAutoBuild(params.CLOUD, PBM_REPO, COMPONENT) } } - stage('Build docker containers') { + stage('Build docker containers for PerconaLab') { + when { + allOf { + expression { return params.BUILD_DOCKER == 'true' } + environment name: 'TARGET_REPO', value: 'PerconaLab' + } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } @@ -348,9 +385,6 @@ pipeline { cleanUpWS() sh ''' sleep 1200 - ''' - unstash 'uploadPath' - sh ''' sudo apt-get -y install apparmor sudo aa-status sudo systemctl stop apparmor @@ -372,13 +406,14 @@ pipeline { git clone https://github.com/percona/percona-docker cd percona-docker/percona-backup-mongodb sed -i "s/ENV PBM_VERSION.*/ENV PBM_VERSION ${VERSION}-${RPM_RELEASE}/g" Dockerfile - sed -i "s/ENV PBM_REPO_CH.*/ENV PBM_REPO_CH ${COMPONENT}/g" Dockerfile - sudo docker build --no-cache --platform "linux/amd64" -t perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE} . + sed -i "s/ENV PBM_REPO_CH.*/ENV PBM_REPO_CH ${PBM_REPO_TYPE}/g" Dockerfile + sudo docker build --no-cache --platform "linux/amd64" -t percona-backup-mongodb-amd64 -f Dockerfile . + sudo docker tag percona-backup-mongodb-amd64 perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-amd64 sed -i "s/ENV PBM_VERSION.*/ENV PBM_VERSION ${VERSION}-${RPM_RELEASE}/g" Dockerfile.aarch64 - sed -i "s/ENV PBM_REPO_CH.*/ENV PBM_REPO_CH ${COMPONENT}/g" Dockerfile.aarch64 - sudo docker build --no-cache -t perconalab/percona-server-mongodb:percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-aarch64 --platform="linux/arm64" -f Dockerfile.aarch64 . - + sed -i "s/ENV PBM_REPO_CH.*/ENV PBM_REPO_CH ${PBM_REPO_TYPE}/g" Dockerfile.aarch64 + sudo docker build --no-cache --platform "linux/arm64" -t percona-backup-mongodb-arm64 -f Dockerfile.aarch64 . + sudo docker tag percona-backup-mongodb-arm64 perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-arm64 sudo docker images ''' withCredentials([ @@ -388,30 +423,30 @@ pipeline { )]) { sh ''' echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin - sudo docker push perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE} - sudo docker push perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-aarch64 + sudo docker push perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-amd64 + sudo docker push perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-arm64 PBM_MAJOR_VERSION=$(echo $VERSION | cut -d'.' -f1) PBM_MINOR_VERSION=$(echo $VERSION | cut -d'.' -f2) PBM_PATCH_VERSION=$(echo $VERSION | cut -d'.' -f3) - sudo docker manifest create perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION}.${PBM_MINOR_VERSION}.${PBM_PATCH_VERSION} \ - perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE} \ - perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-aarch64 - sudo docker manifest annotate perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION}.${PBM_MINOR_VERSION}.${PBM_PATCH_VERSION} perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-aarch64 --os linux --arch arm64 --variant v8 - sudo docker manifest annotate perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION}.${PBM_MINOR_VERSION}.${PBM_PATCH_VERSION} perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE} --os linux --arch amd64 + sudo docker manifest create --amend perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION}.${PBM_MINOR_VERSION}.${PBM_PATCH_VERSION} \ + perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-amd64 \ + perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-arm64 + sudo docker manifest annotate perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION}.${PBM_MINOR_VERSION}.${PBM_PATCH_VERSION} perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-arm64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION}.${PBM_MINOR_VERSION}.${PBM_PATCH_VERSION} perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-amd64 --os linux --arch amd64 sudo docker manifest inspect perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION}.${PBM_MINOR_VERSION}.${PBM_PATCH_VERSION} - sudo docker manifest create perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION}.${PBM_MINOR_VERSION} \ - perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE} \ - perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-aarch64 - sudo docker manifest annotate perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION}.${PBM_MINOR_VERSION} perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-aarch64 --os linux --arch arm64 --variant v8 - sudo docker manifest annotate perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION}.${PBM_MINOR_VERSION} perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE} --os linux --arch amd64 + sudo docker manifest create --amend perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION}.${PBM_MINOR_VERSION} \ + perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-amd64 \ + perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-arm64 + sudo docker manifest annotate perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION}.${PBM_MINOR_VERSION} perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-arm64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION}.${PBM_MINOR_VERSION} perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-amd64 --os linux --arch amd64 sudo docker manifest inspect perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION}.${PBM_MINOR_VERSION} - sudo docker manifest create perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION} \ - perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE} \ - perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-aarch64 - sudo docker manifest annotate perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION} perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-aarch64 --os linux --arch arm64 --variant v8 - sudo docker manifest annotate perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION} perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE} --os linux --arch amd64 + sudo docker manifest create --amend perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION} \ + perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-amd64 \ + perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-arm64 + sudo docker manifest annotate perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION} perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-arm64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION} perconalab/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-amd64 --os linux --arch amd64 sudo docker manifest inspect perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION} sudo docker manifest push perconalab/percona-backup-mongodb:${PBM_MAJOR_VERSION}.${PBM_MINOR_VERSION}.${PBM_PATCH_VERSION} @@ -422,6 +457,94 @@ pipeline { } } } + stage('Build docker containers for DockerHub registry') { + when { + allOf { + expression { return params.BUILD_DOCKER == 'true' } + environment name: 'TARGET_REPO', value: 'DockerHub' + } + } + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + script { + echo "====> Build docker containers" + cleanUpWS() + sh ''' + sleep 1200 + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor + sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor + sudo apt-get install -y docker-ce docker-ce-cli containerd.io + export DOCKER_CLI_EXPERIMENTAL=enabled + sudo mkdir -p /usr/libexec/docker/cli-plugins/ + sudo curl -L https://github.com/docker/buildx/releases/download/v0.21.2/buildx-v0.21.2.linux-amd64 -o /usr/libexec/docker/cli-plugins/docker-buildx + sudo chmod +x /usr/libexec/docker/cli-plugins/docker-buildx + sudo systemctl restart docker + sudo apt-get install -y qemu-system binfmt-support qemu-user-static + sudo qemu-system-x86_64 --version + sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + git clone https://github.com/percona/percona-docker + cd percona-docker/percona-backup-mongodb + sed -i "s/ENV PBM_VERSION.*/ENV PBM_VERSION ${VERSION}-${RPM_RELEASE}/g" Dockerfile + sed -i "s/ENV PBM_REPO_CH.*/ENV PBM_REPO_CH ${PBM_REPO_TYPE}/g" Dockerfile + sudo docker build --no-cache --platform "linux/amd64" -t percona-backup-mongodb-amd64 -f Dockerfile . + sudo docker tag percona-backup-mongodb-amd64 percona/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-amd64 + + sed -i "s/ENV PBM_VERSION.*/ENV PBM_VERSION ${VERSION}-${RPM_RELEASE}/g" Dockerfile.aarch64 + sed -i "s/ENV PBM_REPO_CH.*/ENV PBM_REPO_CH ${PBM_REPO_TYPE}/g" Dockerfile.aarch64 + sudo docker build --no-cache --platform "linux/arm64" -t percona-backup-mongodb-arm64 -f Dockerfile.aarch64 . + sudo docker tag percona-backup-mongodb-arm64 percona/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-arm64 + sudo docker images + ''' + withCredentials([ + usernamePassword(credentialsId: 'hub.docker.com', + passwordVariable: 'PASS', + usernameVariable: 'USER' + )]) { + sh ''' + echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin + sudo docker push percona/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-amd64 + sudo docker push percona/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-arm64 + PBM_MAJOR_VERSION=$(echo $VERSION | cut -d'.' -f1) + PBM_MINOR_VERSION=$(echo $VERSION | cut -d'.' -f2) + PBM_PATCH_VERSION=$(echo $VERSION | cut -d'.' -f3) + sudo docker manifest create --amend percona/percona-backup-mongodb:${PBM_MAJOR_VERSION}.${PBM_MINOR_VERSION}.${PBM_PATCH_VERSION} \ + percona/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-amd64 \ + percona/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-arm64 + sudo docker manifest annotate percona/percona-backup-mongodb:${PBM_MAJOR_VERSION}.${PBM_MINOR_VERSION}.${PBM_PATCH_VERSION} percona/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-arm64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate percona/percona-backup-mongodb:${PBM_MAJOR_VERSION}.${PBM_MINOR_VERSION}.${PBM_PATCH_VERSION} percona/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-amd64 --os linux --arch amd64 + sudo docker manifest inspect percona/percona-backup-mongodb:${PBM_MAJOR_VERSION}.${PBM_MINOR_VERSION}.${PBM_PATCH_VERSION} + + sudo docker manifest create --amend percona/percona-backup-mongodb:${PBM_MAJOR_VERSION}.${PBM_MINOR_VERSION} \ + percona/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-amd64 \ + percona/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-arm64 + sudo docker manifest annotate percona/percona-backup-mongodb:${PBM_MAJOR_VERSION}.${PBM_MINOR_VERSION} percona/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-arm64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate percona/percona-backup-mongodb:${PBM_MAJOR_VERSION}.${PBM_MINOR_VERSION} percona/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-amd64 --os linux --arch amd64 + sudo docker manifest inspect percona/percona-backup-mongodb:${PBM_MAJOR_VERSION}.${PBM_MINOR_VERSION} + + sudo docker manifest create --amend percona/percona-backup-mongodb:${PBM_MAJOR_VERSION} \ + percona/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-amd64 \ + percona/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-arm64 + sudo docker manifest annotate percona/percona-backup-mongodb:${PBM_MAJOR_VERSION} percona/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-arm64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate percona/percona-backup-mongodb:${PBM_MAJOR_VERSION} percona/percona-backup-mongodb:${VERSION}-${RPM_RELEASE}-amd64 --os linux --arch amd64 + sudo docker manifest inspect percona/percona-backup-mongodb:${PBM_MAJOR_VERSION} + + sudo docker manifest push percona/percona-backup-mongodb:${PBM_MAJOR_VERSION}.${PBM_MINOR_VERSION}.${PBM_PATCH_VERSION} + sudo docker manifest push percona/percona-backup-mongodb:${PBM_MAJOR_VERSION}.${PBM_MINOR_VERSION} + sudo docker manifest push percona/percona-backup-mongodb:${PBM_MAJOR_VERSION} + ''' + } + } + } + } } post { success { diff --git a/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy index d97eacf5f5..05ea0fba79 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy @@ -85,6 +85,30 @@ pipeline { choices: 'laboratory\ntesting\nexperimental', description: 'Repo component to push packages to', name: 'COMPONENT') + choice( + name: 'BUILD_DOCKER', + choices: ['true', 'false'], + description: 'Build and push Docker images (default: true)') + choice( + name: 'BUILD_PACKAGES', + choices: ['true', 'false'], + description: 'Build packages (default: true)') + choice( + name: 'TARGET_REPO', + choices: ['PerconaLab','DockerHub'], + description: 'Target repo for docker image, use DockerHub for release only') + choice( + name: 'PSMDB_REPO_TYPE', + choices: ['testing','release','experimental'], + description: 'Packages repo for docker images') + choice( + name: 'DEBUG', + choices: ['no','yes'], + description: 'Additionally build debug image') + choice( + name: 'TESTS', + choices: ['yes','no'], + description: 'Run tests after building') } options { skipDefaultCheckout() @@ -94,6 +118,9 @@ pipeline { } stages { stage('Create PSMDB source tarball') { + when { + expression { return params.BUILD_PACKAGES == 'true' } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' } @@ -125,6 +152,9 @@ pipeline { } } stage('Build PSMDB generic source packages') { + when { + expression { return params.BUILD_PACKAGES == 'true' } + } parallel { stage('Build PSMDB generic source rpm') { agent { @@ -166,6 +196,9 @@ pipeline { } //parallel } // stage stage('Build PSMDB RPMs/DEBs/Binary tarballs') { + when { + expression { return params.BUILD_PACKAGES == 'true' } + } parallel { stage('Oracle Linux 8(x86_64)') { agent { @@ -505,6 +538,9 @@ pipeline { } stage('Upload packages and tarballs from S3') { + when { + expression { return params.BUILD_PACKAGES == 'true' } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } @@ -518,12 +554,18 @@ pipeline { } stage('Sign packages') { + when { + expression { return params.BUILD_PACKAGES == 'true' } + } steps { signRPM() signDEB() } } stage('Push to public repository') { + when { + expression { return params.BUILD_PACKAGES == 'true' } + } steps { // sync packages script { @@ -537,6 +579,9 @@ pipeline { } } stage('Push Tarballs to TESTING download area') { + when { + expression { return params.BUILD_PACKAGES == 'true' } + } steps { script { if (env.FULL_FEATURED == 'yes') { @@ -559,7 +604,65 @@ pipeline { } } } - stage('Build docker containers') { + stage ('Build docker container for aws ecr') { + when { + allOf { + expression { return params.BUILD_DOCKER == 'true' } + environment name: 'TARGET_REPO', value: 'AWS_ECR' + } + } + steps { + withCredentials([aws(accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: '8468e4e0-5371-4741-a9bb-7c143140acea', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY')]) { + sh """ + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor + sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor + sudo apt-get install -y docker-ce docker-ce-cli containerd.io + export DOCKER_CLI_EXPERIMENTAL=enabled + sudo mkdir -p /usr/libexec/docker/cli-plugins/ + sudo curl -L https://github.com/docker/buildx/releases/download/v0.21.2/buildx-v0.21.2.linux-amd64 -o /usr/libexec/docker/cli-plugins/docker-buildx + sudo chmod +x /usr/libexec/docker/cli-plugins/docker-buildx + sudo systemctl restart docker + sudo apt-get install -y qemu-system binfmt-support qemu-user-static + sudo qemu-system-x86_64 --version + sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" + if [ -f "/usr/bin/yum" ] ; then sudo yum install -y unzip ; else sudo apt-get update && sudo apt-get -y install unzip ; fi + unzip -o awscliv2.zip + sudo ./aws/install + aws ecr-public get-login-password --region us-east-1 | sudo docker login --username AWS --password-stdin public.ecr.aws/e7j3v3n0 + git clone https://github.com/percona/percona-docker + cd percona-docker/percona-server-mongodb-6.0 + sed -i "s/ENV PSMDB_VERSION.*/ENV PSMDB_VERSION ${PSMDB_VERSION}-${PSMDB_RELEASE}/g" Dockerfile + sed -i "s/ENV PSMDB_REPO.*/ENV PSMDB_REPO ${PSMDB_REPO_TYPE}/g" Dockerfile + sudo docker build --no-cache --platform "linux/amd64" -t percona-server-mongodb-amd64 -f Dockerfile . + if [ ${DEBUG} = "yes" ]; then + sed -E "s/FROM percona(.+)/FROM percona-server-mongodb/" -i Dockerfile.debug + sudo docker build . -f Dockerfile.debug --no-cache --platform "linux/amd64" -t percona-server-mongodb-debug + fi + sudo docker tag percona-server-mongodb public.ecr.aws/e7j3v3n0/psmdb-build:psmdb-${PSMDB_VERSION}-amd64 + sudo docker push public.ecr.aws/e7j3v3n0/psmdb-build:psmdb-${PSMDB_VERSION}-amd64 + if [ ${DEBUG} = "yes" ]; then + sudo docker tag percona-server-mongodb-debug public.ecr.aws/e7j3v3n0/psmdb-build:psmdb-${PSMDB_VERSION}-debug + sudo docker push public.ecr.aws/e7j3v3n0/psmdb-build:psmdb-${PSMDB_VERSION}-debug + fi + """ + } + } + } + stage('Build docker containers for PerconaLab') { + when { + allOf { + expression { return params.BUILD_DOCKER == 'true' } + environment name: 'TARGET_REPO', value: 'PerconaLab' + } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } @@ -572,9 +675,6 @@ pipeline { cleanUpWS() sh ''' sleep 1200 - ''' - unstash 'uploadPath' - sh ''' sudo apt-get -y install apparmor sudo aa-status sudo systemctl stop apparmor @@ -596,12 +696,19 @@ pipeline { git clone https://github.com/percona/percona-docker cd percona-docker/percona-server-mongodb-6.0 sed -i "s/ENV PSMDB_VERSION.*/ENV PSMDB_VERSION ${PSMDB_VERSION}-${PSMDB_RELEASE}/g" Dockerfile - sed -i "s/ENV PSMDB_REPO.*/ENV PSMDB_REPO ${COMPONENT}/g" Dockerfile - sudo docker build --no-cache --platform "linux/amd64" -t perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} . + sed -i "s/ENV PSMDB_REPO.*/ENV PSMDB_REPO ${PSMDB_REPO_TYPE}/g" Dockerfile + sudo docker build --no-cache --platform "linux/amd64" -t percona-server-mongodb-amd64 -f Dockerfile . + sudo docker tag percona-server-mongodb-amd64 perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 + + if [ ${DEBUG} = "yes" ]; then + sed -E "s/FROM percona(.+)/FROM percona-server-mongodb/" -i Dockerfile.debug + sudo docker build . -f Dockerfile.debug --no-cache --platform "linux/amd64" -t percona-server-mongodb-debug + fi sed -i "s/ENV PSMDB_VERSION.*/ENV PSMDB_VERSION ${PSMDB_VERSION}-${PSMDB_RELEASE}/g" Dockerfile.aarch64 - sed -i "s/ENV PSMDB_REPO.*/ENV PSMDB_REPO ${COMPONENT}/g" Dockerfile.aarch64 - sudo docker build --no-cache -t perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 --platform="linux/arm64" -f Dockerfile.aarch64 . + sed -i "s/ENV PSMDB_REPO.*/ENV PSMDB_REPO ${PSMDB_REPO_TYPE}/g" Dockerfile.aarch64 + sudo docker build --no-cache --platform "linux/arm64" -t percona-server-mongodb-arm64 -f Dockerfile.aarch64 . + sudo docker tag percona-server-mongodb-arm64 perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 sudo docker images ''' @@ -612,34 +719,162 @@ pipeline { )]) { sh ''' echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin - sudo docker push perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} - sudo docker push perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 + sudo docker push perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 + sudo docker push perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 PSMDB_MAJOR_VERSION=$(echo $PSMDB_VERSION | cut -d'.' -f1) PSMDB_MINOR_VERSION=$(echo $PSMDB_VERSION | cut -d'.' -f2) PSMDB_PATCH_VERSION=$(echo $PSMDB_VERSION | cut -d'.' -f3) - sudo docker manifest create perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} \ - perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} \ - perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 - sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 --os linux --arch arm64 --variant v8 - sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} --os linux --arch amd64 + sudo docker manifest create --amend perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} \ + perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 \ + perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 + sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 --os linux --arch amd64 sudo docker manifest inspect perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} - sudo docker manifest create perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} \ - perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} \ - perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 - sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 --os linux --arch arm64 --variant v8 - sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} --os linux --arch amd64 + sudo docker manifest create --amend perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} \ + perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 \ + perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 + sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 --os linux --arch amd64 sudo docker manifest inspect perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} sudo docker manifest push perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} sudo docker manifest push perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} + + if [ ${DEBUG} = "yes" ]; then + sudo docker tag percona-server-mongodb-debug perconalab/percona-server-mongodb:${PSMDB_VERSION}-debug + sudo docker push perconalab/percona-server-mongodb:${PSMDB_VERSION}-debug + fi + + ''' + } + } + } + } + } + stage('Build docker containers for DockerHub registry') { + when { + allOf { + expression { return params.BUILD_DOCKER == 'true' } + environment name: 'TARGET_REPO', value: 'DockerHub' + } + } + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + script { + if (env.FULL_FEATURED == 'YES') { + echo "The step is skipped" + } else { + echo "====> Build docker containers" + cleanUpWS() + sh ''' + sleep 1200 + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor + sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor + sudo apt-get install -y docker-ce docker-ce-cli containerd.io + export DOCKER_CLI_EXPERIMENTAL=enabled + sudo mkdir -p /usr/libexec/docker/cli-plugins/ + sudo curl -L https://github.com/docker/buildx/releases/download/v0.21.2/buildx-v0.21.2.linux-amd64 -o /usr/libexec/docker/cli-plugins/docker-buildx + sudo chmod +x /usr/libexec/docker/cli-plugins/docker-buildx + sudo systemctl restart docker + sudo apt-get install -y qemu-system binfmt-support qemu-user-static + sudo qemu-system-x86_64 --version + sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + git clone https://github.com/percona/percona-docker + cd percona-docker/percona-server-mongodb-6.0 + sed -i "s/ENV PSMDB_VERSION.*/ENV PSMDB_VERSION ${PSMDB_VERSION}-${PSMDB_RELEASE}/g" Dockerfile + sed -i "s/ENV PSMDB_REPO.*/ENV PSMDB_REPO ${PSMDB_REPO_TYPE}/g" Dockerfile + sudo docker build --no-cache --platform "linux/amd64" -t percona-server-mongodb-amd64 -f Dockerfile . + sudo docker tag percona-server-mongodb-amd64 percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 + + sudo docker build --no-cache --platform "linux/amd64" -t percona-server-mongodb-amd64 -f Dockerfile . + sudo docker tag percona-server-mongodb-amd64 percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 + + if [ ${DEBUG} = "yes" ]; then + sed -E "s/FROM percona(.+)/FROM percona-server-mongodb/" -i Dockerfile.debug + sudo docker build . -f Dockerfile.debug --no-cache --platform "linux/amd64" -t percona-server-mongodb-debug + fi + + sed -i "s/ENV PSMDB_VERSION.*/ENV PSMDB_VERSION ${PSMDB_VERSION}-${PSMDB_RELEASE}/g" Dockerfile.aarch64 + sed -i "s/ENV PSMDB_REPO.*/ENV PSMDB_REPO ${PSMDB_REPO_TYPE}/g" Dockerfile.aarch64 + sudo docker build --no-cache --platform "linux/arm64" -t percona-server-mongodb-arm64 -f Dockerfile.aarch64 . + sudo docker tag percona-server-mongodb-arm64 percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 + withCredentials([ + usernamePassword(credentialsId: 'hub.docker.com', + passwordVariable: 'PASS', + usernameVariable: 'USER' + )]) { + sh ''' + echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin + sudo docker push percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 + sudo docker push percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 + + PSMDB_MAJOR_VERSION=$(echo $PSMDB_VERSION | cut -d'.' -f1) + PSMDB_MINOR_VERSION=$(echo $PSMDB_VERSION | cut -d'.' -f2) + PSMDB_PATCH_VERSION=$(echo $PSMDB_VERSION | cut -d'.' -f3) + sudo docker manifest create --amend percona/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} \ + percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 \ + percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 + --arch arm64 --variant v8 + --arch amd64 + sudo docker manifest inspect percona/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} + + sudo docker manifest create --amend percona/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} \ + percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 \ + percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 + v8 + sudo docker manifest annotate percona/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 --os linux --arch amd64 + sudo docker manifest inspect percona/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} + + sudo docker manifest push percona/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} + sudo docker manifest push percona/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} + + if [ ${DEBUG} = "yes" ]; then + sudo docker tag percona-server-mongodb-debug percona/percona-server-mongodb:${PSMDB_VERSION}-debug + sudo docker push percona/percona-server-mongodb:${PSMDB_VERSION}-debug + fi + ''' } } } } } + stage ('Run testing job') { + when { + allOf { + expression { return params.BUILD_DOCKER == 'true' } + environment name: 'TESTS', value: 'yes' + } + } + steps { + script { + def psmdb_image = 'percona/percona-server-mongodb:' + params.PSMDB_VERSION + '-amd64' + if ( params.PSMDB_REPO_TYPE == 'testing' ) { + psmdb_image = 'perconalab/percona-server-mongodb:' + params.PSMDB_VERSION + '-amd64' + } + if ( params.PSMDB_REPO_TYPE == 'experimental' ) { + psmdb_image = 'public.ecr.aws/e7j3v3n0/psmdb-build:psmdb-' + params.PSMDB_VERSION + '-amd64' + } + def pbm_branch = sh(returnStdout: true, script: """ + git clone https://github.com/percona/percona-backup-mongodb.git >/dev/null 2>/dev/null + PBM_RELEASE=\$(cd percona-backup-mongodb && git branch -r | grep release | sed 's|origin/||' | sort --version-sort | tail -1) + echo \$PBM_RELEASE + """).trim() + build job: 'pbm-functional-tests', propagate: false, wait: false, parameters: [string(name: 'PBM_BRANCH', value: pbm_branch ), string(name: 'PSMDB', value: psmdb_image ), string(name: 'TESTING_BRANCH', value: "pbm-${pbm_branch}")] + } + } + } } post { success { diff --git a/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy index 61e5eb55d4..e8e1499012 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy @@ -86,6 +86,30 @@ pipeline { choices: 'laboratory\ntesting\nexperimental', description: 'Repo component to push packages to', name: 'COMPONENT') + choice( + name: 'BUILD_DOCKER', + choices: ['true', 'false'], + description: 'Build and push Docker images (default: true)') + choice( + name: 'BUILD_PACKAGES', + choices: ['true', 'false'], + description: 'Build packages (default: true)') + choice( + name: 'TARGET_REPO', + choices: ['PerconaLab','DockerHub'], + description: 'Target repo for docker image, use DockerHub for release only') + choice( + name: 'PSMDB_REPO_TYPE', + choices: ['testing','release','experimental'], + description: 'Packages repo for docker images') + choice( + name: 'DEBUG', + choices: ['no','yes'], + description: 'Additionally build debug image') + choice( + name: 'TESTS', + choices: ['yes','no'], + description: 'Run tests after building') } options { skipDefaultCheckout() @@ -95,6 +119,9 @@ pipeline { } stages { stage('Create PSMDB source tarball') { + when { + expression { return params.BUILD_PACKAGES == 'true' } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' } @@ -126,6 +153,9 @@ pipeline { } } stage('Build PSMDB generic source packages') { + when { + expression { return params.BUILD_PACKAGES == 'true' } + } parallel { stage('Build PSMDB generic source rpm') { agent { @@ -167,6 +197,9 @@ pipeline { } //parallel } // stage stage('Build PSMDB RPMs/DEBs/Binary tarballs') { + when { + expression { return params.BUILD_PACKAGES == 'true' } + } parallel { stage('Oracle Linux 8(x86_64)') { agent { @@ -540,6 +573,9 @@ pipeline { } stage('Upload packages and tarballs from S3') { + when { + expression { return params.BUILD_PACKAGES == 'true' } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } @@ -553,12 +589,18 @@ pipeline { } stage('Sign packages') { + when { + expression { return params.BUILD_PACKAGES == 'true' } + } steps { signRPM() signDEB() } } stage('Push to public repository') { + when { + expression { return params.BUILD_PACKAGES == 'true' } + } steps { // sync packages script { @@ -571,6 +613,9 @@ pipeline { } } stage('Push Tarballs to TESTING download area') { + when { + expression { return params.BUILD_PACKAGES == 'true' } + } steps { script { if (env.FULL_FEATURED == 'yes') { @@ -593,8 +638,65 @@ pipeline { } } } - - stage('Build docker containers') { + stage ('Build docker containers for aws ecr') { + when { + allOf { + expression { return params.BUILD_DOCKER == 'true' } + environment name: 'TARGET_REPO', value: 'AWS_ECR' + } + } + steps { + withCredentials([aws(accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: '8468e4e0-5371-4741-a9bb-7c143140acea', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY')]) { + sh """ + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor + sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor + sudo apt-get install -y docker-ce docker-ce-cli containerd.io + export DOCKER_CLI_EXPERIMENTAL=enabled + sudo mkdir -p /usr/libexec/docker/cli-plugins/ + sudo curl -L https://github.com/docker/buildx/releases/download/v0.21.2/buildx-v0.21.2.linux-amd64 -o /usr/libexec/docker/cli-plugins/docker-buildx + sudo chmod +x /usr/libexec/docker/cli-plugins/docker-buildx + sudo systemctl restart docker + sudo apt-get install -y qemu-system binfmt-support qemu-user-static + sudo qemu-system-x86_64 --version + sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" + if [ -f "/usr/bin/yum" ] ; then sudo yum install -y unzip ; else sudo apt-get update && sudo apt-get -y install unzip ; fi + unzip -o awscliv2.zip + sudo ./aws/install + aws ecr-public get-login-password --region us-east-1 | sudo docker login --username AWS --password-stdin public.ecr.aws/e7j3v3n0 + git clone https://github.com/percona/percona-docker + cd percona-docker/percona-server-mongodb-7.0 + sed -i "s/ENV PSMDB_VERSION.*/ENV PSMDB_VERSION ${PSMDB_VERSION}-${PSMDB_RELEASE}/g" Dockerfile + sed -i "s/ENV PSMDB_REPO.*/ENV PSMDB_REPO ${PSMDB_REPO_TYPE}/g" Dockerfile + sudo docker build --no-cache --platform "linux/amd64" -t percona-server-mongodb-amd64 -f Dockerfile . + if [ ${DEBUG} = "yes" ]; then + sed -E "s/FROM percona(.+)/FROM percona-server-mongodb/" -i Dockerfile.debug + sudo docker build . -f Dockerfile.debug --no-cache --platform "linux/amd64" -t percona-server-mongodb-debug + fi + sudo docker tag percona-server-mongodb public.ecr.aws/e7j3v3n0/psmdb-build:psmdb-${PSMDB_VERSION}-amd64 + sudo docker push public.ecr.aws/e7j3v3n0/psmdb-build:psmdb-${PSMDB_VERSION}-amd64 + if [ ${DEBUG} = "yes" ]; then + sudo docker tag percona-server-mongodb-debug public.ecr.aws/e7j3v3n0/psmdb-build:psmdb-${PSMDB_VERSION}-debug + sudo docker push public.ecr.aws/e7j3v3n0/psmdb-build:psmdb-${PSMDB_VERSION}-debug + fi + """ + } + } + } + stage('Build docker containers for PerconaLab') { + when { + allOf { + expression { return params.BUILD_DOCKER == 'true' } + environment name: 'TARGET_REPO', value: 'PerconaLab' + } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } @@ -607,9 +709,6 @@ pipeline { cleanUpWS() sh ''' sleep 1200 - ''' - unstash 'uploadPath' - sh ''' sudo apt-get -y install apparmor sudo aa-status sudo systemctl stop apparmor @@ -631,12 +730,19 @@ pipeline { git clone https://github.com/percona/percona-docker cd percona-docker/percona-server-mongodb-7.0 sed -i "s/ENV PSMDB_VERSION.*/ENV PSMDB_VERSION ${PSMDB_VERSION}-${PSMDB_RELEASE}/g" Dockerfile - sed -i "s/ENV PSMDB_REPO.*/ENV PSMDB_REPO ${COMPONENT}/g" Dockerfile - sudo docker build --no-cache --platform "linux/amd64" -t perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} . + sed -i "s/ENV PSMDB_REPO.*/ENV PSMDB_REPO ${PSMDB_REPO_TYPE}/g" Dockerfile + sudo docker build --no-cache --platform "linux/amd64" -t percona-server-mongodb-amd64 -f Dockerfile . + sudo docker tag percona-server-mongodb-amd64 perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 + + if [ ${DEBUG} = "yes" ]; then + sed -E "s/FROM percona(.+)/FROM percona-server-mongodb/" -i Dockerfile.debug + sudo docker build . -f Dockerfile.debug --no-cache --platform "linux/amd64" -t percona-server-mongodb-debug + fi sed -i "s/ENV PSMDB_VERSION.*/ENV PSMDB_VERSION ${PSMDB_VERSION}-${PSMDB_RELEASE}/g" Dockerfile.aarch64 - sed -i "s/ENV PSMDB_REPO.*/ENV PSMDB_REPO ${COMPONENT}/g" Dockerfile.aarch64 - sudo docker build --no-cache -t perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 --platform="linux/arm64" -f Dockerfile.aarch64 . + sed -i "s/ENV PSMDB_REPO.*/ENV PSMDB_REPO ${PSMDB_REPO_TYPE}/g" Dockerfile.aarch64 + sudo docker build --no-cache --platform "linux/arm64" -t percona-server-mongodb-arm64 -f Dockerfile.aarch64 . + sudo docker tag percona-server-mongodb-arm64 perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 sudo docker images ''' @@ -647,28 +753,32 @@ pipeline { )]) { sh ''' echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin - sudo docker push perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} - sudo docker push perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 + sudo docker push perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 + sudo docker push perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 PSMDB_MAJOR_VERSION=$(echo $PSMDB_VERSION | cut -d'.' -f1) PSMDB_MINOR_VERSION=$(echo $PSMDB_VERSION | cut -d'.' -f2) PSMDB_PATCH_VERSION=$(echo $PSMDB_VERSION | cut -d'.' -f3) - sudo docker manifest create perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} \ - perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} \ - perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 - sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 --os linux --arch arm64 --variant v8 - sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} --os linux --arch amd64 + sudo docker manifest create --amend perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} \ + perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 \ + perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 + sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 --os linux --arch amd64 sudo docker manifest inspect perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} - sudo docker manifest create perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} \ - perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} \ - perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 - sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 --os linux --arch arm64 --variant v8 - sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} --os linux --arch amd64 + sudo docker manifest create --amend perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} \ + perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 \ + perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 + sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 --os linux --arch amd64 sudo docker manifest inspect perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} sudo docker manifest push perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} sudo docker manifest push perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} + if [ ${DEBUG} = "yes" ]; then + sudo docker tag percona-server-mongodb-debug perconalab/percona-server-mongodb:${PSMDB_VERSION}-debug + sudo docker push perconalab/percona-server-mongodb:${PSMDB_VERSION}-debug + fi ''' } @@ -676,7 +786,130 @@ pipeline { } } } + stage('Build docker containers for DockerHub registry') { + when { + allOf { + expression { return params.BUILD_DOCKER == 'true' } + environment name: 'TARGET_REPO', value: 'DockerHub' + } + } + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + script { + if (env.FULL_FEATURED == 'YES') { + echo "The step is skipped" + } else { + echo "====> Build docker containers" + cleanUpWS() + sh ''' + sleep 1200 + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor + sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor + sudo apt-get install -y docker-ce docker-ce-cli containerd.io + export DOCKER_CLI_EXPERIMENTAL=enabled + sudo mkdir -p /usr/libexec/docker/cli-plugins/ + sudo curl -L https://github.com/docker/buildx/releases/download/v0.21.2/buildx-v0.21.2.linux-amd64 -o /usr/libexec/docker/cli-plugins/docker-buildx + sudo chmod +x /usr/libexec/docker/cli-plugins/docker-buildx + sudo systemctl restart docker + sudo apt-get install -y qemu-system binfmt-support qemu-user-static + sudo qemu-system-x86_64 --version + sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + git clone https://github.com/percona/percona-docker + cd percona-docker/percona-server-mongodb-7.0 + sed -i "s/ENV PSMDB_VERSION.*/ENV PSMDB_VERSION ${PSMDB_VERSION}-${PSMDB_RELEASE}/g" Dockerfile + sed -i "s/ENV PSMDB_REPO.*/ENV PSMDB_REPO ${PSMDB_REPO_TYPE}/g" Dockerfile + sudo docker build --no-cache --platform "linux/amd64" -t percona-server-mongodb-amd64 -f Dockerfile . + sudo docker tag percona-server-mongodb-amd64 percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 + + if [ ${DEBUG} = "yes" ]; then + sed -E "s/FROM percona(.+)/FROM percona-server-mongodb/" -i Dockerfile.debug + sudo docker build . -f Dockerfile.debug --no-cache --platform "linux/amd64" -t percona-server-mongodb-debug + fi + + sed -i "s/ENV PSMDB_VERSION.*/ENV PSMDB_VERSION ${PSMDB_VERSION}-${PSMDB_RELEASE}/g" Dockerfile.aarch64 + sed -i "s/ENV PSMDB_REPO.*/ENV PSMDB_REPO ${PSMDB_REPO_TYPE}/g" Dockerfile.aarch64 + sudo docker build --no-cache --platform "linux/arm64" -t percona-server-mongodb-arm64 -f Dockerfile.aarch64 . + sudo docker tag percona-server-mongodb-arm64 percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 + + sudo docker images + ''' + withCredentials([ + usernamePassword(credentialsId: 'hub.docker.com', + passwordVariable: 'PASS', + usernameVariable: 'USER' + )]) { + sh ''' + echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin + sudo docker push percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 + sudo docker push percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 + + PSMDB_MAJOR_VERSION=$(echo $PSMDB_VERSION | cut -d'.' -f1) + PSMDB_MINOR_VERSION=$(echo $PSMDB_VERSION | cut -d'.' -f2) + PSMDB_PATCH_VERSION=$(echo $PSMDB_VERSION | cut -d'.' -f3) + sudo docker manifest create --amend percona/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} \ + percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 \ + percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 + sudo docker manifest annotate percona/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 --os linux + --arch arm64 --variant v8 + sudo docker manifest annotate percona/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 --os linux + --arch amd64 + sudo docker manifest inspect percona/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} + + sudo docker manifest create --amend percona/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} \ + percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 \ + percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 + sudo docker manifest annotate percona/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate percona/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 --os linux --arch amd64 + sudo docker manifest inspect percona/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} + + sudo docker manifest push percona/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} + sudo docker manifest push percona/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} + if [ ${DEBUG} = "yes" ]; then + sudo docker tag percona-server-mongodb-debug percona/percona-server-mongodb:${PSMDB_VERSION}-debug + sudo docker push percona/percona-server-mongodb:${PSMDB_VERSION}-debug + fi + + ''' + } + } + } + } + } + stage ('Run testing job') { + when { + allOf { + expression { return params.BUILD_DOCKER == 'true' } + environment name: 'TESTS', value: 'yes' + } + } + steps { + script { + def psmdb_image = 'percona/percona-server-mongodb:' + params.PSMDB_VERSION + '-amd64' + if ( params.PSMDB_REPO_TYPE == 'testing' ) { + psmdb_image = 'perconalab/percona-server-mongodb:' + params.PSMDB_VERSION + '-amd64' + } + if ( params.PSMDB_REPO_TYPE == 'experimental' ) { + psmdb_image = 'public.ecr.aws/e7j3v3n0/psmdb-build:psmdb-' + params.PSMDB_VERSION + '-amd64' + } + def pbm_branch = sh(returnStdout: true, script: """ + git clone https://github.com/percona/percona-backup-mongodb.git >/dev/null 2>/dev/null + PBM_RELEASE=\$(cd percona-backup-mongodb && git branch -r | grep release | sed 's|origin/||' | sort --version-sort | tail -1) + echo \$PBM_RELEASE + """).trim() + build job: 'pbm-functional-tests', propagate: false, wait: false, parameters: [string(name: 'PBM_BRANCH', value: pbm_branch ), string(name: 'PSMDB', value: psmdb_image ), string(name: 'TESTING_BRANCH', value: "pbm-${pbm_branch}")] + } + } + } } post { success { diff --git a/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy index 0daa2abdae..ce26acd009 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy @@ -83,6 +83,30 @@ pipeline { choices: 'laboratory\ntesting\nexperimental', description: 'Repo component to push packages to', name: 'COMPONENT') + choice( + name: 'BUILD_DOCKER', + choices: ['true', 'false'], + description: 'Build and push Docker images (default: true)') + choice( + name: 'BUILD_PACKAGES', + choices: ['true', 'false'], + description: 'Build packages (default: true)') + choice( + name: 'TARGET_REPO', + choices: ['PerconaLab','DockerHub'], + description: 'Target repo for docker image, use DockerHub for release only') + choice( + name: 'PSMDB_REPO_TYPE', + choices: ['testing','release','experimental'], + description: 'Packages repo for docker images') + choice( + name: 'DEBUG', + choices: ['no','yes'], + description: 'Additionally build debug image') + choice( + name: 'TESTS', + choices: ['yes','no'], + description: 'Run tests after building') } options { skipDefaultCheckout() @@ -92,6 +116,9 @@ pipeline { } stages { stage('Create PSMDB source tarball') { + when { + expression { return params.BUILD_PACKAGES == 'true' } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' } @@ -123,6 +150,9 @@ pipeline { } } stage('Build PSMDB generic source packages') { + when { + expression { return params.BUILD_PACKAGES == 'true' } + } parallel { stage('Build PSMDB generic source rpm') { agent { @@ -164,6 +194,9 @@ pipeline { } //parallel } // stage stage('Build PSMDB RPMs/DEBs/Binary tarballs') { + when { + expression { return params.BUILD_PACKAGES == 'true' } + } parallel { stage('Oracle Linux 8(x86_64)') { agent { @@ -509,6 +542,9 @@ pipeline { } stage('Upload packages and tarballs from S3') { + when { + expression { return params.BUILD_PACKAGES == 'true' } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } @@ -522,12 +558,18 @@ pipeline { } stage('Sign packages') { + when { + expression { return params.BUILD_PACKAGES == 'true' } + } steps { signRPM() signDEB() } } stage('Push to public repository') { + when { + expression { return params.BUILD_PACKAGES == 'true' } + } steps { // sync packages script { @@ -540,6 +582,9 @@ pipeline { } } stage('Push Tarballs to TESTING download area') { + when { + expression { return params.BUILD_PACKAGES == 'true' } + } steps { script { if (env.FULL_FEATURED == 'yes') { @@ -562,7 +607,65 @@ pipeline { } } } - stage('Build docker containers') { + stage ('Build docker container for aws ecr') { + when { + allOf { + expression { return params.BUILD_DOCKER == 'true' } + environment name: 'TARGET_REPO', value: 'AWS_ECR' + } + } + steps { + withCredentials([aws(accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: '8468e4e0-5371-4741-a9bb-7c143140acea', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY')]) { + sh """ + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor + sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor + sudo apt-get install -y docker-ce docker-ce-cli containerd.io + export DOCKER_CLI_EXPERIMENTAL=enabled + sudo mkdir -p /usr/libexec/docker/cli-plugins/ + sudo curl -L https://github.com/docker/buildx/releases/download/v0.21.2/buildx-v0.21.2.linux-amd64 -o /usr/libexec/docker/cli-plugins/docker-buildx + sudo chmod +x /usr/libexec/docker/cli-plugins/docker-buildx + sudo systemctl restart docker + sudo apt-get install -y qemu-system binfmt-support qemu-user-static + sudo qemu-system-x86_64 --version + sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" + if [ -f "/usr/bin/yum" ] ; then sudo yum install -y unzip ; else sudo apt-get update && sudo apt-get -y install unzip ; fi + unzip -o awscliv2.zip + sudo ./aws/install + aws ecr-public get-login-password --region us-east-1 | sudo docker login --username AWS --password-stdin public.ecr.aws/e7j3v3n0 + git clone https://github.com/percona/percona-docker + cd percona-docker/percona-server-mongodb-8.0 + sed -i "s/ENV PSMDB_VERSION.*/ENV PSMDB_VERSION ${PSMDB_VERSION}-${PSMDB_RELEASE}/g" Dockerfile + sed -i "s/ENV PSMDB_REPO.*/ENV PSMDB_REPO ${PSMDB_REPO_TYPE}/g" Dockerfile + sudo docker build --no-cache --platform "linux/amd64" -t percona-server-mongodb-amd64 -f Dockerfile . + if [ ${DEBUG} = "yes" ]; then + sed -E "s/FROM percona(.+)/FROM percona-server-mongodb/" -i Dockerfile.debug + sudo docker build . -f Dockerfile.debug --no-cache --platform "linux/amd64" -t percona-server-mongodb-debug + fi + sudo docker tag percona-server-mongodb public.ecr.aws/e7j3v3n0/psmdb-build:psmdb-${PSMDB_VERSION}-amd64 + sudo docker push public.ecr.aws/e7j3v3n0/psmdb-build:psmdb-${PSMDB_VERSION}-amd64 + if [ ${DEBUG} = "yes" ]; then + sudo docker tag percona-server-mongodb-debug public.ecr.aws/e7j3v3n0/psmdb-build:psmdb-${PSMDB_VERSION}-debug + sudo docker push public.ecr.aws/e7j3v3n0/psmdb-build:psmdb-${PSMDB_VERSION}-debug + fi + """ + } + } + } + stage('Build docker containers for PerconaLab') { + when { + allOf { + expression { return params.BUILD_DOCKER == 'true' } + environment name: 'TARGET_REPO', value: 'PerconaLab' + } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } @@ -574,10 +677,7 @@ pipeline { echo "====> Build docker containers" cleanUpWS() sh ''' - sleep 1200 - ''' - unstash 'uploadPath' - sh ''' + sleep 12 sudo apt-get -y install apparmor sudo aa-status sudo systemctl stop apparmor @@ -599,12 +699,19 @@ pipeline { git clone https://github.com/percona/percona-docker cd percona-docker/percona-server-mongodb-8.0 sed -i "s/ENV PSMDB_VERSION.*/ENV PSMDB_VERSION ${PSMDB_VERSION}-${PSMDB_RELEASE}/g" Dockerfile - sed -i "s/ENV PSMDB_REPO.*/ENV PSMDB_REPO ${COMPONENT}/g" Dockerfile - sudo docker build --no-cache --platform "linux/amd64" -t perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} . + sed -i "s/ENV PSMDB_REPO.*/ENV PSMDB_REPO ${PSMDB_REPO_TYPE}/g" Dockerfile + sudo docker build --no-cache --platform "linux/amd64" -t percona-server-mongodb-amd64 -f Dockerfile . + sudo docker tag percona-server-mongodb-amd64 perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 + if [ ${DEBUG} = "yes" ]; then + sed -E "s/FROM percona(.+)/FROM percona-server-mongodb/" -i Dockerfile.debug + sudo docker build . -f Dockerfile.debug --no-cache --platform "linux/amd64" -t percona-server-mongodb-debug + fi + echo "Building ARM image" sed -i "s/ENV PSMDB_VERSION.*/ENV PSMDB_VERSION ${PSMDB_VERSION}-${PSMDB_RELEASE}/g" Dockerfile.aarch64 - sed -i "s/ENV PSMDB_REPO.*/ENV PSMDB_REPO ${COMPONENT}/g" Dockerfile.aarch64 - sudo docker build --no-cache -t perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 --platform="linux/arm64" -f Dockerfile.aarch64 . + sed -i "s/ENV PSMDB_REPO.*/ENV PSMDB_REPO ${PSMDB_REPO_TYPE}/g" Dockerfile.aarch64 + sudo docker build --no-cache --platform "linux/arm64" -t percona-server-mongodb-arm64 -f Dockerfile.aarch64 . + sudo docker tag percona-server-mongodb-arm64 perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 sudo docker images ''' @@ -615,35 +722,161 @@ pipeline { )]) { sh ''' echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin - sudo docker push perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} - sudo docker push perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 + sudo docker push perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 + sudo docker push perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 PSMDB_MAJOR_VERSION=$(echo $PSMDB_VERSION | cut -d'.' -f1) PSMDB_MINOR_VERSION=$(echo $PSMDB_VERSION | cut -d'.' -f2) PSMDB_PATCH_VERSION=$(echo $PSMDB_VERSION | cut -d'.' -f3) - sudo docker manifest create perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} \ - perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} \ - perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 - sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 --os linux --arch arm64 --variant v8 - sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} --os linux --arch amd64 + sudo docker manifest create --amend perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} \ + perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 \ + perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 + sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 --os linux --arch amd64 sudo docker manifest inspect perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} - sudo docker manifest create perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} \ - perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} \ - perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 - sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-aarch64 --os linux --arch arm64 --variant v8 - sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE} --os linux --arch amd64 + sudo docker manifest create --amend perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} \ + perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 \ + perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 + sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} perconalab/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 --os linux --arch amd64 sudo docker manifest inspect perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} sudo docker manifest push perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} sudo docker manifest push perconalab/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} + if [ ${DEBUG} = "yes" ]; then + sudo docker tag percona-server-mongodb-debug perconalab/percona-server-mongodb:${PSMDB_VERSION}-debug + sudo docker push perconalab/percona-server-mongodb:${PSMDB_VERSION}-debug + fi + ''' + } + } + } + } + } + stage('Build docker containers for DockerHub registry') { + when { + allOf { + expression { return params.BUILD_DOCKER == 'true' } + environment name: 'TARGET_REPO', value: 'DockerHub' + } + } + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + script { + if (env.FULL_FEATURED == 'YES') { + echo "The step is skipped" + } else { + echo "====> Build docker containers" + cleanUpWS() + sh ''' + sleep 1200 + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor + sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor + sudo apt-get install -y docker-ce docker-ce-cli containerd.io + export DOCKER_CLI_EXPERIMENTAL=enabled + sudo mkdir -p /usr/libexec/docker/cli-plugins/ + sudo curl -L https://github.com/docker/buildx/releases/download/v0.21.2/buildx-v0.21.2.linux-amd64 -o /usr/libexec/docker/cli-plugins/docker-buildx + sudo chmod +x /usr/libexec/docker/cli-plugins/docker-buildx + sudo systemctl restart docker + sudo apt-get install -y qemu-system binfmt-support qemu-user-static + sudo qemu-system-x86_64 --version + sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + git clone https://github.com/percona/percona-docker + cd percona-docker/percona-server-mongodb-8.0 + sed -i "s/ENV PSMDB_VERSION.*/ENV PSMDB_VERSION ${PSMDB_VERSION}-${PSMDB_RELEASE}/g" Dockerfile + sed -i "s/ENV PSMDB_REPO.*/ENV PSMDB_REPO ${PSMDB_REPO_TYPE}/g" Dockerfile + sudo docker build --no-cache --platform "linux/amd64" -t percona-server-mongodb-amd64 -f Dockerfile . + sudo docker tag percona-server-mongodb-amd64 percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 + + if [ ${DEBUG} = "yes" ]; then + sed -E "s/FROM percona(.+)/FROM percona-server-mongodb/" -i Dockerfile.debug + sudo docker build . -f Dockerfile.debug --no-cache --platform "linux/amd64" -t percona-server-mongodb-debug + fi + + sed -i "s/ENV PSMDB_VERSION.*/ENV PSMDB_VERSION ${PSMDB_VERSION}-${PSMDB_RELEASE}/g" Dockerfile.aarch64 + sed -i "s/ENV PSMDB_REPO.*/ENV PSMDB_REPO ${PSMDB_REPO_TYPE}/g" Dockerfile.aarch64 + sudo docker build --no-cache --platform "linux/arm64" -t percona-server-mongodb-arm64 -f Dockerfile.aarch64 . + sudo docker tag percona-server-mongodb-arm64 percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 + + sudo docker images + ''' + withCredentials([ + usernamePassword(credentialsId: 'hub.docker.com', + passwordVariable: 'PASS', + usernameVariable: 'USER' + )]) { + sh ''' + echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin + sudo docker push percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 + sudo docker push percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 + + PSMDB_MAJOR_VERSION=$(echo $PSMDB_VERSION | cut -d'.' -f1) + PSMDB_MINOR_VERSION=$(echo $PSMDB_VERSION | cut -d'.' -f2) + PSMDB_PATCH_VERSION=$(echo $PSMDB_VERSION | cut -d'.' -f3) + sudo docker manifest create --amend percona/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} \ + percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 \ + percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 + sudo docker manifest annotate percona/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate percona/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 --os linux --arch amd64 + sudo docker manifest inspect percona/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} + + sudo docker manifest create --amend percona/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} \ + percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 \ + percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 + sudo docker manifest annotate percona/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate percona/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 --os linux --arch amd64 + sudo docker manifest inspect percona/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} + + sudo docker manifest push percona/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} + sudo docker manifest push percona/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} + + if [ ${DEBUG} = "yes" ]; then + sudo docker tag percona-server-mongodb-debug percona/percona-server-mongodb:${PSMDB_VERSION}-debug + sudo docker push percona/percona-server-mongodb:${PSMDB_VERSION}-debug + fi + ''' } } } } } + stage ('Run testing job') { + when { + allOf { + expression { return params.BUILD_DOCKER == 'true' } + environment name: 'TESTS', value: 'yes' + } + } + steps { + script { + def psmdb_image = 'percona/percona-server-mongodb:' + params.PSMDB_VERSION + '-amd64' + if ( params.PSMDB_REPO_TYPE == 'testing' ) { + psmdb_image = 'perconalab/percona-server-mongodb:' + params.PSMDB_VERSION + '-amd64' + } + if ( params.PSMDB_REPO_TYPE == 'experimental' ) { + psmdb_image = 'public.ecr.aws/e7j3v3n0/psmdb-build:psmdb-' + params.PSMDB_VERSION + '-amd64' + } + def pbm_branch = sh(returnStdout: true, script: """ + git clone https://github.com/percona/percona-backup-mongodb.git >/dev/null 2>/dev/null + PBM_RELEASE=\$(cd percona-backup-mongodb && git branch -r | grep release | sed 's|origin/||' | sort --version-sort | tail -1) + echo \$PBM_RELEASE + """).trim() + build job: 'pbm-functional-tests', propagate: false, wait: false, parameters: [string(name: 'PBM_BRANCH', value: pbm_branch ), string(name: 'PSMDB', value: psmdb_image ), string(name: 'TESTING_BRANCH', value: "pbm-${pbm_branch}")] + } + } + } } post { success { From b35acfda93104443b7445b30604a61041fe8e60b Mon Sep 17 00:00:00 2001 From: Oleksandr Havryliak <88387200+olexandr-havryliak@users.noreply.github.com> Date: Fri, 11 Apr 2025 16:09:06 +0300 Subject: [PATCH 085/269] PBM-1529 add PBM tests on hetzner (#3256) --- pbm/hetzner-pbm-functional-tests-full.groovy | 99 ++++++++++++++++++++ pbm/hetzner-pbm-functional-tests-full.yml | 14 +++ pbm/hetzner-pbm-functional-tests.groovy | 99 ++++++++++++++++++++ pbm/hetzner-pbm-functional-tests.yml | 14 +++ pbm/hetzner-pbm-site-check.groovy | 68 ++++++++++++++ pbm/hetzner-pbm-site-check.yml | 14 +++ 6 files changed, 308 insertions(+) create mode 100644 pbm/hetzner-pbm-functional-tests-full.groovy create mode 100644 pbm/hetzner-pbm-functional-tests-full.yml create mode 100644 pbm/hetzner-pbm-functional-tests.groovy create mode 100644 pbm/hetzner-pbm-functional-tests.yml create mode 100644 pbm/hetzner-pbm-site-check.groovy create mode 100644 pbm/hetzner-pbm-site-check.yml diff --git a/pbm/hetzner-pbm-functional-tests-full.groovy b/pbm/hetzner-pbm-functional-tests-full.groovy new file mode 100644 index 0000000000..3032225b45 --- /dev/null +++ b/pbm/hetzner-pbm-functional-tests-full.groovy @@ -0,0 +1,99 @@ +library changelog: false, identifier: "lib@hetzner", retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) + +pipeline { + agent { + label 'launcher-x64' + } + environment { + PATH = '/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin' + } + parameters { + string(name: 'PBM_BRANCH', defaultValue: 'main', description: 'PBM branch or commit') + string(name: 'GO_VER', defaultValue: '1.22-bullseye', description: 'GOLANG docker image for building PBM from sources') + choice(name: 'instance', choices: ['docker-x64','docker-aarch64'], description: 'Instance type for running tests') + string(name: 'TESTING_BRANCH', defaultValue: 'main', description: 'psmdb-testing repo branch') + string(name: 'PYTEST_PARAMS', defaultValue: '', description: 'Extra args passed to pytest') + } + stages { + stage('Set build name'){ + steps { + script { + currentBuild.displayName = "${params.PBM_BRANCH}" + } + } + } + stage ('Run tests') { + matrix { + agent { + label "${params.instance}" + } + axes { + axis { + name 'TEST' + values 'logical', 'physical', 'incremental', 'external', 'load' + } + axis { + name 'PSMDB' + values '6.0', '7.0', '8.0' + } + } + stages { + stage ('Run tests') { + steps { + withCredentials([string(credentialsId: 'olexandr_zephyr_token', variable: 'ZEPHYR_TOKEN')]) { + sh """ + docker kill \$(docker ps -a -q) || true + docker rm \$(docker ps -a -q) || true + docker rmi -f \$(docker images -q | uniq) || true + sudo rm -rf ./* + if [ ! -f "/usr/local/bin/docker-compose" ] ; then + if [ ${params.instance} = "docker-aarch64" ]; then + sudo curl -SL https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-aarch64 -o /usr/local/bin/docker-compose + else + sudo curl -SL https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose + fi + sudo chmod +x /usr/local/bin/docker-compose + fi + """ + git poll: false, branch: params.TESTING_BRANCH, url: 'https://github.com/Percona-QA/psmdb-testing.git' + sh """ + cd pbm-functional/pytest + PSMDB=perconalab/percona-server-mongodb:${PSMDB} docker-compose build --no-cache + docker-compose up -d + docker-compose run test pytest -s --junitxml=junit.xml -k ${TEST} ${params.PYTEST_PARAMS} || true + docker-compose down -v --remove-orphans + curl -H "Content-Type:multipart/form-data" -H "Authorization: Bearer ${ZEPHYR_TOKEN}" -F "file=@junit.xml;type=application/xml" 'https://api.zephyrscale.smartbear.com/v2/automations/executions/junit?projectKey=PBM' -F 'testCycle={"name":"${JOB_NAME}-${BUILD_NUMBER}","customFields": { "PBM branch": "${PBM_BRANCH}","PSMDB docker image": "percona/percona-server-mongodb:${PSMDB}","instance": "${instance}"}};type=application/json' -i || true + """ + } + } + post { + always { + junit testResults: "**/junit.xml", keepLongStdio: true, allowEmptyResults: true, skipPublishingChecks: true + sh """ + docker kill \$(docker ps -a -q) || true + docker rm \$(docker ps -a -q) || true + docker rmi -f \$(docker images -q | uniq) || true + sudo rm -rf ./* + """ + } + } + } + } + } + } + } + post { + success { + slackNotify("#mongodb_autofeed", "#00FF00", "[${JOB_NAME}]: PBM ${PBM_BRANCH} - all tests passed [${BUILD_URL}testReport/]") + } + unstable { + slackNotify("#mongodb_autofeed", "#F6F930", "[${JOB_NAME}]: PBM ${PBM_BRANCH} - some tests failed [${BUILD_URL}testReport/]") + } + failure { + slackNotify("#mongodb_autofeed", "#FF0000", "[${JOB_NAME}]: PBM ${PBM_BRANCH} - unexpected failure [${BUILD_URL}]") + } + } +} diff --git a/pbm/hetzner-pbm-functional-tests-full.yml b/pbm/hetzner-pbm-functional-tests-full.yml new file mode 100644 index 0000000000..d21a601da6 --- /dev/null +++ b/pbm/hetzner-pbm-functional-tests-full.yml @@ -0,0 +1,14 @@ +- job: + name: hetzner-pbm-functional-tests-full + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: pbm/hetzner-pbm-functional-tests-full.groovy diff --git a/pbm/hetzner-pbm-functional-tests.groovy b/pbm/hetzner-pbm-functional-tests.groovy new file mode 100644 index 0000000000..d89cc6eecc --- /dev/null +++ b/pbm/hetzner-pbm-functional-tests.groovy @@ -0,0 +1,99 @@ +library changelog: false, identifier: "lib@hetzner", retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) + +pipeline { + agent { + label 'launcher-x64' + } + environment { + PATH = '/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin' + } + parameters { + string(name: 'PBM_BRANCH', defaultValue: 'main', description: 'PBM branch') + string(name: 'PSMDB', defaultValue: 'percona/percona-server-mongodb', description: 'PSMDB docker image') + string(name: 'GO_VER', defaultValue: '1.22-bullseye', description: 'GOLANG docker image for building PBM from sources') + choice(name: 'instance', choices: ['docker-x64','docker-aarch64'], description: 'Instance type for running tests') + string(name: 'TESTING_BRANCH', defaultValue: 'main', description: 'psmdb-testing repo branch') + string(name: 'PYTEST_PARAMS', defaultValue: '', description: 'Extra args passed to pytest') + } + stages { + stage('Set build name'){ + steps { + script { + currentBuild.displayName = "${params.PBM_BRANCH}-${params.PSMDB}" + } + } + } + stage ('Run tests') { + matrix { + agent { + label "${params.instance}" + } + axes { + axis { + name 'TEST' + values 'logical', 'physical', 'incremental', 'external', 'load' + } + } + stages { + stage ('Run tests') { + steps { + withCredentials([string(credentialsId: 'olexandr_zephyr_token', variable: 'ZEPHYR_TOKEN')]) { + sh """ + docker kill \$(docker ps -a -q) || true + docker rm \$(docker ps -a -q) || true + docker rmi -f \$(docker images -q | uniq) || true + sudo rm -rf ./* + + if [ ! -f "/usr/local/bin/docker-compose" ] ; then + if [ ${params.instance} = "docker-aarch64" ]; then + sudo curl -SL https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-aarch64 -o /usr/local/bin/docker-compose + else + sudo curl -SL https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose + fi + sudo chmod +x /usr/local/bin/docker-compose + fi + + git clone https://github.com/Percona-QA/psmdb-testing + cd psmdb-testing + git checkout ${params.TESTING_BRANCH} + + cd pbm-functional/pytest + docker-compose build + docker-compose up -d + docker-compose run test pytest -s --junitxml=junit.xml -k ${TEST} ${params.PYTEST_PARAMS} || true + docker-compose down -v --remove-orphans + curl -H "Content-Type:multipart/form-data" -H "Authorization: Bearer ${ZEPHYR_TOKEN}" -F "file=@junit.xml;type=application/xml" 'https://api.zephyrscale.smartbear.com/v2/automations/executions/junit?projectKey=PBM' -F 'testCycle={"name":"${JOB_NAME}-${BUILD_NUMBER}","customFields": { "PBM branch": "${PBM_BRANCH}","PSMDB docker image": "${PSMDB}","instance": "${instance}"}};type=application/json' -i || true + """ + } + } + post { + always { + junit testResults: "**/junit.xml", keepLongStdio: true, allowEmptyResults: true, skipPublishingChecks: true + sh """ + docker kill \$(docker ps -a -q) || true + docker rm \$(docker ps -a -q) || true + docker rmi -f \$(docker images -q | uniq) || true + sudo rm -rf ./* + """ + } + } + } + } + } + } + } + post { + success { + slackNotify("#mongodb_autofeed", "#00FF00", "[${JOB_NAME}]: PBM ${PBM_BRANCH} with ${PSMDB} - all tests passed") + } + unstable { + slackNotify("#mongodb_autofeed", "#F6F930", "[${JOB_NAME}]: PBM ${PBM_BRANCH} with ${PSMDB} - some tests failed [${BUILD_URL}testReport/]") + } + failure { + slackNotify("#mongodb_autofeed", "#FF0000", "[${JOB_NAME}]: PBM ${PBM_BRANCH} with ${PSMDB} - unexpected failure [${BUILD_URL}]") + } + } +} diff --git a/pbm/hetzner-pbm-functional-tests.yml b/pbm/hetzner-pbm-functional-tests.yml new file mode 100644 index 0000000000..4749f20161 --- /dev/null +++ b/pbm/hetzner-pbm-functional-tests.yml @@ -0,0 +1,14 @@ +- job: + name: hetzner-pbm-functional-tests + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: pbm/hetzner-pbm-functional-tests.groovy diff --git a/pbm/hetzner-pbm-site-check.groovy b/pbm/hetzner-pbm-site-check.groovy new file mode 100644 index 0000000000..8a6267f84b --- /dev/null +++ b/pbm/hetzner-pbm-site-check.groovy @@ -0,0 +1,68 @@ +library changelog: false, identifier: "lib@hetzner", retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) + +pipeline { + agent { + label 'docker-x64' + } + environment { + PATH = '/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin' + } + parameters { + string( + defaultValue: '2.3.0', + description: 'PBM Version for tests', + name: 'PBM_VERSION') + string( + defaultValue: 'main', + description: 'Branch for testing repository', + name: 'TESTING_BRANCH') + } + stages { + stage('Set build name'){ + steps { + script { + currentBuild.displayName = "${params.PBM_VERSION}" + } + } + } + stage('Checkout') { + steps { + deleteDir() + git poll: false, branch: TESTING_BRANCH, url: 'https://github.com/Percona-QA/psmdb-testing.git' + } + } + stage('Test') { + steps { + script { + sh """ + cd site_checks + docker run --env PBM_VERSION=${params.PBM_VERSION} --rm -v `pwd`:/tmp -w /tmp python bash -c 'pip3 install requests pytest setuptools && pytest -s --junitxml=junit.xml test_pbm.py || [ \$? = 1 ] ' + """ + } + } + } + } + post { + success { + slackNotify("#mongodb_autofeed", "#00FF00", "[${JOB_NAME}]: checking packages on the main site for PBM ${PBM_VERSION} - ok [${BUILD_URL}testReport/]") + } + unstable { + slackNotify("#mongodb_autofeed", "#F6F930", "[${JOB_NAME}]: checking packages on the main site for PBM ${PBM_VERSION} - some links are broken [${BUILD_URL}testReport/]") + } + failure { + slackNotify("#mongodb_autofeed", "#FF0000", "[${JOB_NAME}]: checking packages on the main site for PBM ${PBM_VERSION} - failed [${BUILD_URL}]" ) + } + always { + script { + junit testResults: "**/junit.xml", keepLongStdio: true, allowEmptyResults: true, skipPublishingChecks: true + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } + } +} diff --git a/pbm/hetzner-pbm-site-check.yml b/pbm/hetzner-pbm-site-check.yml new file mode 100644 index 0000000000..07b2a3507f --- /dev/null +++ b/pbm/hetzner-pbm-site-check.yml @@ -0,0 +1,14 @@ +- job: + name: hetzner-pbm-site-check + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: pbm/hetzner-pbm-site-check.groovy From b588bed5cf7c77d311f4ff72ac00e6072e407adc Mon Sep 17 00:00:00 2001 From: Muhammad Aqeel Date: Mon, 14 Apr 2025 14:06:14 +0500 Subject: [PATCH 086/269] [PKG-549]: Adds missing docker manifest annotate statements (#3261) --- psmdb/jenkins/percona-server-for-mongodb-6.0.groovy | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy index 05ea0fba79..62196d79b8 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy @@ -825,14 +825,14 @@ pipeline { sudo docker manifest create --amend percona/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} \ percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 \ percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 - --arch arm64 --variant v8 - --arch amd64 + sudo docker manifest annotate percona/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate percona/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 --os linux --arch amd64 sudo docker manifest inspect percona/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION}.${PSMDB_PATCH_VERSION} sudo docker manifest create --amend percona/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} \ percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 \ percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 - v8 + sudo docker manifest annotate percona/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 --os linux --arch arm64 --variant v8 sudo docker manifest annotate percona/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-amd64 --os linux --arch amd64 sudo docker manifest inspect percona/percona-server-mongodb:${PSMDB_MAJOR_VERSION}.${PSMDB_MINOR_VERSION} From 492d8c8ed230ab85452733a7b643cc68f13ea2e7 Mon Sep 17 00:00:00 2001 From: Muhammad Aqeel Date: Mon, 14 Apr 2025 15:21:04 +0500 Subject: [PATCH 087/269] [PKG-549]: Adds missing closing quotes (#3262) --- psmdb/jenkins/percona-server-for-mongodb-6.0.groovy | 1 + 1 file changed, 1 insertion(+) diff --git a/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy index 62196d79b8..2f41bf486b 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy @@ -809,6 +809,7 @@ pipeline { sed -i "s/ENV PSMDB_REPO.*/ENV PSMDB_REPO ${PSMDB_REPO_TYPE}/g" Dockerfile.aarch64 sudo docker build --no-cache --platform "linux/arm64" -t percona-server-mongodb-arm64 -f Dockerfile.aarch64 . sudo docker tag percona-server-mongodb-arm64 percona/percona-server-mongodb:${PSMDB_VERSION}-${PSMDB_RELEASE}-arm64 + ''' withCredentials([ usernamePassword(credentialsId: 'hub.docker.com', passwordVariable: 'PASS', From 23aa5e512909c8b7d0f6e7f03b422bd174e0246c Mon Sep 17 00:00:00 2001 From: Vadim Yalovets Date: Mon, 14 Apr 2025 17:22:16 +0300 Subject: [PATCH 088/269] PKG-196 Misleading URL pattern for some downloads (#3263) --- pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy | 12 ------------ pxc/jenkins/percona-xtradb-cluster-8.0.groovy | 12 ------------ vars/uploadDEBfromAWS.groovy | 7 ++++++- 3 files changed, 6 insertions(+), 25 deletions(-) diff --git a/pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy b/pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy index 9bc531111d..b0f154feec 100644 --- a/pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy +++ b/pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy @@ -87,12 +87,6 @@ pipeline { if [ ${PXC_MAJOR_RELEASE} != "80" ]; then if [ ${PXC_MAJOR_RELEASE} != "84" ]; then sed -i "s/pxc-80/pxc-8x-innovation/g" Dockerfile - else - sed -i "s/pdpxc-8.0/pdpxc-84-lts/g" Dockerfile - sed -i "s/pxc-80/pxc-84-lts/g" Dockerfile - sed -i "s/default_authentication_plugin=mysql_native_password/mysql-native-password=ON\\nrequire_secure_transport=OFF/g" dockerdir/etc/mysql/node.cnf - sed -i "s/skip-host-cache/host_cache_size = 0/g" dockerdir/etc/mysql/node.cnf - sed -i "s/--skip-ssl//g" dockerdir/entrypoint.sh fi fi sudo docker build --no-cache --platform "linux/amd64" -t perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-amd64 . @@ -104,12 +98,6 @@ pipeline { if [ ${PXC_MAJOR_RELEASE} != "80" ]; then if [ ${PXC_MAJOR_RELEASE} != "84" ]; then sed -i "s/pxc-80/pxc-8x-innovation/g" Dockerfile.aarch64 - else - sed -i "s/pdpxc-8.0/pdpxc-84-lts/g" Dockerfile.aarch64 - sed -i "s/pxc-80/pxc-84-lts/g" Dockerfile.aarch64 - sed -i "s/default_authentication_plugin=mysql_native_password/mysql-native-password=ON\\nrequire_secure_transport=OFF/g" dockerdir/etc/mysql/node.cnf - sed -i "s/skip-host-cache/host_cache_size = 0/g" dockerdir/etc/mysql/node.cnf - sed -i "s/--skip-ssl//g" dockerdir/entrypoint.sh fi fi sudo docker build --no-cache -t perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-arm64 --platform="linux/arm64" -f Dockerfile.aarch64 . diff --git a/pxc/jenkins/percona-xtradb-cluster-8.0.groovy b/pxc/jenkins/percona-xtradb-cluster-8.0.groovy index 99037f149e..3407a79680 100644 --- a/pxc/jenkins/percona-xtradb-cluster-8.0.groovy +++ b/pxc/jenkins/percona-xtradb-cluster-8.0.groovy @@ -697,12 +697,6 @@ pipeline { if [ ${PXC_MAJOR_RELEASE} != "80" ]; then if [ ${PXC_MAJOR_RELEASE} != "84" ]; then sed -i "s/pxc-80/pxc-8x-innovation/g" Dockerfile - else - sed -i "s/pdpxc-8.0/pdpxc-84-lts/g" Dockerfile - sed -i "s/pxc-80/pxc-84-lts/g" Dockerfile - sed -i "s/default_authentication_plugin=mysql_native_password/mysql-native-password=ON\\nrequire_secure_transport=OFF/g" dockerdir/etc/mysql/node.cnf - sed -i "s/skip-host-cache/host_cache_size = 0/g" dockerdir/etc/mysql/node.cnf - sed -i "s/--skip-ssl//g" dockerdir/entrypoint.sh fi fi sudo docker build --no-cache --platform "linux/amd64" -t perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-amd64 . @@ -714,12 +708,6 @@ pipeline { if [ ${PXC_MAJOR_RELEASE} != "80" ]; then if [ ${PXC_MAJOR_RELEASE} != "84" ]; then sed -i "s/pxc-80/pxc-8x-innovation/g" Dockerfile.aarch64 - else - sed -i "s/pdpxc-8.0/pdpxc-84-lts/g" Dockerfile.aarch64 - sed -i "s/pxc-80/pxc-84-lts/g" Dockerfile.aarch64 - sed -i "s/default_authentication_plugin=mysql_native_password/mysql-native-password=ON\\nrequire_secure_transport=OFF/g" dockerdir/etc/mysql/node.cnf - sed -i "s/skip-host-cache/host_cache_size = 0/g" dockerdir/etc/mysql/node.cnf - sed -i "s/--skip-ssl//g" dockerdir/entrypoint.sh fi fi sudo docker build --no-cache -t perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-arm64 --platform="linux/arm64" -f Dockerfile.aarch64 . diff --git a/vars/uploadDEBfromAWS.groovy b/vars/uploadDEBfromAWS.groovy index 6c1248959e..9493feb9ea 100644 --- a/vars/uploadDEBfromAWS.groovy +++ b/vars/uploadDEBfromAWS.groovy @@ -26,7 +26,12 @@ def call(String CLOUD_NAME, String FOLDER_NAME, String AWS_STASH_PATH) { dist=`echo \${deb} | sed -re 's/.*\\.([^.]+)_(amd64|arm64|all).deb/\\1/'` package=`echo \${deb} | sed -re 's/\\.\\/deb\\/(.*)_(.*)\\.([^.]+)_(amd64|arm64|all).deb/\\1/'` version=`echo \${deb} | sed -re 's/\\.\\/deb\\/(.*)_(.*)\\.([^.]+)_(amd64|arm64|all).deb/\\2/'` - path_to_dist=\${path_to_build}/binary/debian/\${dist}/x86_64 + arch=`echo \${deb} | sed -re 's/\\.\\/deb\\/(.*)_(.*)\\.([^.]+)_(amd64|arm64|all).deb/\\4/'` + if [ "\${arch}" = "arm64" ]; then + path_to_dist=\${path_to_build}/binary/debian/\${dist}/aarch64 + else + path_to_dist=\${path_to_build}/binary/debian/\${dist}/x86_64 + fi ssh -o StrictHostKeyChecking=no -i ${KEY_PATH} ${USER}@repo.ci.percona.com \ mkdir -p \${path_to_dist} if [ "\${package}" = "percona-release" ]; then From ead69fbd1be47709e0256dbb20ee1303cffebb99 Mon Sep 17 00:00:00 2001 From: Sandra Romanchenko <53295797+sandraromanchenko@users.noreply.github.com> Date: Wed, 16 Apr 2025 13:47:32 +0300 Subject: [PATCH 089/269] PSMDB. Add missing RHEL8 arm stage (#3267) --- psmdb/jenkins/percona-mongodb-mongosh.groovy | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/psmdb/jenkins/percona-mongodb-mongosh.groovy b/psmdb/jenkins/percona-mongodb-mongosh.groovy index 2a235638ae..bf3da6f626 100644 --- a/psmdb/jenkins/percona-mongodb-mongosh.groovy +++ b/psmdb/jenkins/percona-mongodb-mongosh.groovy @@ -111,6 +111,18 @@ pipeline { pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 8(aarch64)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_mongosh=1 --build_variant=rpm-arm64") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Oracle Linux 9(x86_64)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' From c20070f213d20ec8fe263b52ae5980bd968f7718 Mon Sep 17 00:00:00 2001 From: Muhammad Aqeel Date: Fri, 18 Apr 2025 12:30:09 +0500 Subject: [PATCH 090/269] [PKG-549]: Fixes case sensitive value to FULL_FEATURED parameter + increased wait time for docker build stage. (#3273) --- psmdb/jenkins/percona-server-for-mongodb-6.0.groovy | 8 ++++---- psmdb/jenkins/percona-server-for-mongodb-7.0.groovy | 8 ++++---- psmdb/jenkins/percona-server-for-mongodb-8.0.groovy | 8 ++++---- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy index 2f41bf486b..ae5716cfa7 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy @@ -668,13 +668,13 @@ pipeline { } steps { script { - if (env.FULL_FEATURED == 'YES') { + if (env.FULL_FEATURED == 'yes') { echo "The step is skipped" } else { echo "====> Build docker containers" cleanUpWS() sh ''' - sleep 1200 + sleep 1500 sudo apt-get -y install apparmor sudo aa-status sudo systemctl stop apparmor @@ -765,13 +765,13 @@ pipeline { } steps { script { - if (env.FULL_FEATURED == 'YES') { + if (env.FULL_FEATURED == 'yes') { echo "The step is skipped" } else { echo "====> Build docker containers" cleanUpWS() sh ''' - sleep 1200 + sleep 1500 sudo apt-get -y install apparmor sudo aa-status sudo systemctl stop apparmor diff --git a/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy index e8e1499012..2d36e6091f 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy @@ -702,13 +702,13 @@ pipeline { } steps { script { - if (env.FULL_FEATURED == 'YES') { + if (env.FULL_FEATURED == 'yes') { echo "The step is skipped" } else { echo "====> Build docker containers" cleanUpWS() sh ''' - sleep 1200 + sleep 1500 sudo apt-get -y install apparmor sudo aa-status sudo systemctl stop apparmor @@ -798,13 +798,13 @@ pipeline { } steps { script { - if (env.FULL_FEATURED == 'YES') { + if (env.FULL_FEATURED == 'yes') { echo "The step is skipped" } else { echo "====> Build docker containers" cleanUpWS() sh ''' - sleep 1200 + sleep 1500 sudo apt-get -y install apparmor sudo aa-status sudo systemctl stop apparmor diff --git a/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy index ce26acd009..9f04f75b4d 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy @@ -671,13 +671,13 @@ pipeline { } steps { script { - if (env.FULL_FEATURED == 'YES') { + if (env.FULL_FEATURED == 'yes') { echo "The step is skipped" } else { echo "====> Build docker containers" cleanUpWS() sh ''' - sleep 12 + sleep 1500 sudo apt-get -y install apparmor sudo aa-status sudo systemctl stop apparmor @@ -767,13 +767,13 @@ pipeline { } steps { script { - if (env.FULL_FEATURED == 'YES') { + if (env.FULL_FEATURED == 'yes') { echo "The step is skipped" } else { echo "====> Build docker containers" cleanUpWS() sh ''' - sleep 1200 + sleep 1500 sudo apt-get -y install apparmor sudo aa-status sudo systemctl stop apparmor From 545f5cc25eaeab57d1c58ab8c4ee995449aee9b9 Mon Sep 17 00:00:00 2001 From: Sandra Romanchenko <53295797+sandraromanchenko@users.noreply.github.com> Date: Wed, 23 Apr 2025 14:18:22 +0300 Subject: [PATCH 091/269] PBM. Move e2e tests job to Hetzner (#3279) * PBM. Test HMAC keys for GCS (#3278) * PBM. Move e2e tests job to Hetzner --- pbm/pbm-e2e-tests.groovy | 52 +++++++++++++++++++++------------------- pbm/pbm-e2e-tests.yml | 4 ++-- 2 files changed, 30 insertions(+), 26 deletions(-) diff --git a/pbm/pbm-e2e-tests.groovy b/pbm/pbm-e2e-tests.groovy index 6dc8c6a99e..12e32ca3ea 100644 --- a/pbm/pbm-e2e-tests.groovy +++ b/pbm/pbm-e2e-tests.groovy @@ -30,17 +30,20 @@ void prepareCluster(String TEST_TYPE) { git poll: false, branch: params.PBM_BRANCH, url: 'https://github.com/percona/percona-backup-mongodb.git' - withCredentials([file(credentialsId: 'PBM-AWS-S3', variable: 'PBM_AWS_S3_YML'), file(credentialsId: 'PBM-GCS-S3', variable: 'PBM_GCS_S3_YML'), file(credentialsId: 'PBM-AZURE', variable: 'PBM_AZURE_YML')]) { + withCredentials([file(credentialsId: 'PBM-AWS-S3', variable: 'PBM_AWS_S3_YML'), file(credentialsId: 'PBM-GCS-S3', variable: 'PBM_GCS_S3_YML'), file(credentialsId: 'PBM-GCS-HMAC-S3', variable: 'PBM_GCS_HMAC_S3_YML'), file(credentialsId: 'PBM-AZURE', variable: 'PBM_AZURE_YML')]) { sh """ cp $PBM_AWS_S3_YML ./e2e-tests/docker/conf/aws.yaml cp $PBM_GCS_S3_YML ./e2e-tests/docker/conf/gcs.yaml + cp $PBM_GCS_HMAC_S3_YML ./e2e-tests/docker/conf/gcs_hmac.yaml cp $PBM_AZURE_YML ./e2e-tests/docker/conf/azure.yaml sed -i s:pbme2etest:pbme2etest-${TEST_TYPE}:g ./e2e-tests/docker/conf/aws.yaml sed -i s:pbme2etest:pbme2etest-${TEST_TYPE}:g ./e2e-tests/docker/conf/gcs.yaml + sed -i s:pbme2etest:pbme2etest-${TEST_TYPE}:g ./e2e-tests/docker/conf/gcs_hmac.yaml sed -i s:pbme2etest:pbme2etest-${TEST_TYPE}:g ./e2e-tests/docker/conf/azure.yaml chmod 664 ./e2e-tests/docker/conf/aws.yaml chmod 664 ./e2e-tests/docker/conf/gcs.yaml + chmod 664 ./e2e-tests/docker/conf/gcs_hmac.yaml chmod 664 ./e2e-tests/docker/conf/azure.yaml @@ -49,7 +52,7 @@ void prepareCluster(String TEST_TYPE) { } } -library changelog: false, identifier: "lib@master", retriever: modernSCM([ +library changelog: false, identifier: "lib@hetzner", retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) @@ -57,12 +60,13 @@ library changelog: false, identifier: "lib@master", retriever: modernSCM([ pipeline { agent { - label 'micro-amazon' + label params.CLOUD == 'Hetzner' ? 'launcher-x64' : 'micro-amazon' } environment { PATH = '/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin' } parameters { + choice(name: 'CLOUD', choices: [ 'Hetzner','AWS' ], description: 'Cloud infra for build') string(name: 'PBM_BRANCH', defaultValue: 'dev', description: 'PBM branch') } triggers { @@ -80,7 +84,7 @@ pipeline { parallel { stage('New cluster 8.0 logical') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { prepareCluster('80-newc-logic') @@ -89,7 +93,7 @@ pipeline { } stage('New cluster 6.0 logical') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { prepareCluster('60-newc-logic') @@ -98,7 +102,7 @@ pipeline { } stage('New cluster 7.0 logical') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { prepareCluster('70-newc-logic') @@ -107,7 +111,7 @@ pipeline { } stage('Sharded 8.0 logical') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { prepareCluster('80-shrd-logic') @@ -116,7 +120,7 @@ pipeline { } stage('Sharded 6.0 logical') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { prepareCluster('60-shrd-logic') @@ -125,7 +129,7 @@ pipeline { } stage('Sharded 7.0 logical') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { prepareCluster('70-shrd-logic') @@ -134,7 +138,7 @@ pipeline { } stage('Non-sharded 8.0 logical') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { prepareCluster('80-rs-logic') @@ -143,7 +147,7 @@ pipeline { } stage('Non-sharded 6.0 logical') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { prepareCluster('60-rs-logic') @@ -152,7 +156,7 @@ pipeline { } stage('Non-sharded 7.0 logical') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { prepareCluster('70-rs-logic') @@ -161,7 +165,7 @@ pipeline { } stage('Single-node 8.0 logical') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { prepareCluster('80-single-logic') @@ -170,7 +174,7 @@ pipeline { } stage('Single-node 6.0 logical') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { prepareCluster('60-single-logic') @@ -179,7 +183,7 @@ pipeline { } stage('Single-node 7.0 logical') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { prepareCluster('70-single-logic') @@ -188,7 +192,7 @@ pipeline { } stage('Sharded 8.0 physical') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { prepareCluster('80-shrd-phys') @@ -197,7 +201,7 @@ pipeline { } stage('Sharded 6.0 physical') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { prepareCluster('60-shrd-phys') @@ -206,7 +210,7 @@ pipeline { } stage('Sharded 7.0 physical') { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { prepareCluster('70-shrd-phys') @@ -215,7 +219,7 @@ pipeline { } stage('Non-sharded 8.0 physical') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { prepareCluster('80-rs-phys') @@ -224,7 +228,7 @@ pipeline { } stage('Non-sharded 6.0 physical') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { prepareCluster('60-rs-phys') @@ -233,7 +237,7 @@ pipeline { } stage('Non-sharded 7.0 physical') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { prepareCluster('70-rs-phys') @@ -242,7 +246,7 @@ pipeline { } stage('Single-node 8.0 physical') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { prepareCluster('80-single-phys') @@ -251,7 +255,7 @@ pipeline { } stage('Single-node 6.0 physical') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { prepareCluster('60-single-phys') @@ -260,7 +264,7 @@ pipeline { } stage('Single-node 7.0 physical') { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { prepareCluster('70-single-phys') diff --git a/pbm/pbm-e2e-tests.yml b/pbm/pbm-e2e-tests.yml index 0d62378029..da29844f9b 100644 --- a/pbm/pbm-e2e-tests.yml +++ b/pbm/pbm-e2e-tests.yml @@ -1,5 +1,5 @@ - job: - name: pbm-e2e-tests + name: hetzner-pbm-e2e-tests project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'PBM_psmdb_jenkins' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: pbm/pbm-e2e-tests.groovy From ccdaa163808bfb0e60b61565b22ccaefdf3ec631 Mon Sep 17 00:00:00 2001 From: Sandra Romanchenko <53295797+sandraromanchenko@users.noreply.github.com> Date: Wed, 23 Apr 2025 15:22:28 +0300 Subject: [PATCH 092/269] PML. Move functional tests job to Hetzner (#3280) --- .github/CODEOWNERS | 3 +- pml/pml-functional-tests.groovy | 126 ++++++++++++++++++++++++++++++++ pml/pml-functional-tests.yml | 14 ++++ 3 files changed, 142 insertions(+), 1 deletion(-) create mode 100644 pml/pml-functional-tests.groovy create mode 100644 pml/pml-functional-tests.yml diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 853a189cc9..fbfcaa5c41 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -2,7 +2,7 @@ * @Percona-Lab/build-engineers /cloud/gcp-functions/ @egegunes @inelpandzic -/cloud/ @hors @tplavcic @nmarukovich @ptankov @jvpasinatto @eleo007 +/cloud/ @hors @tplavcic @nmarukovich @jvpasinatto @eleo007 /pmm/ @talhabinrizwan @ademidoff @puneet0191 /IaC/pmm.cd/ @talhabinrizwan @ademidoff /pxb/ @mchawla16 @eleo007 @mohitj1988 @kaushikpuneet07 @panchal-yash @Percona-Lab/build-engineers @@ -14,3 +14,4 @@ /pdmdb/ @olexandr-havryliak @sandraromanchenko @Percona-Lab/build-engineers /pdps/ @eleo007 @kaushikpuneet07 @Percona-Lab/build-engineers /pdpxc/ @eleo007 @kaushikpuneet07 @Percona-Lab/build-engineers +/pml/ @olexandr-havryliak @sandraromanchenko @keithquinnpercona @Percona-Lab/build-engineers diff --git a/pml/pml-functional-tests.groovy b/pml/pml-functional-tests.groovy new file mode 100644 index 0000000000..fde04a0d23 --- /dev/null +++ b/pml/pml-functional-tests.groovy @@ -0,0 +1,126 @@ +library changelog: false, identifier: "lib@hetzner", retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) + +def set_agent(cloud, arch) { + if (arch == 'x86') { + if (cloud == 'Hetzner') { + return 'docker-x64' + } else { + return 'docker-64gb' + } + } else if (arch == 'arm') { + if (cloud == 'Hetzner') { + return 'docker-aarch64' + } else { + return 'docker-64gb-aarch64' + } + } +} + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'launcher-x64' : 'master' + } + environment { + PATH = '/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin' + } + parameters { + choice(name: 'CLOUD', choices: [ 'Hetzner','AWS' ], description: 'Cloud infra for build') + string(name: 'MLINK_BRANCH', defaultValue: 'main', description: 'Mongo Link Branch') + string(name: 'GO_VER', defaultValue: 'latest', description: 'GOLANG docker image for building PBM from sources') + choice(name: 'ARCH', choices: ['x86','arm'], description: 'Ec2 instance type for running tests') + string(name: 'PSMDB_TESTING_BRANCH', defaultValue: 'main', description: 'psmdb-testing repo branch') + string(name: 'TEST_FILTER', defaultValue: '', description: 'Optional pytest filter, f.e. T2 or T3') + } + stages { + stage('Set build name'){ + steps { + script { + currentBuild.displayName = "${params.MLINK_BRANCH}" + } + } + } + stage ('Run tests') { + matrix { + agent { + label set_agent(params.CLOUD, params.ARCH) + } + axes { + axis { + name 'MONGODB_IMAGE' + values 'percona/percona-server-mongodb:6.0', 'percona/percona-server-mongodb:7.0', 'percona/percona-server-mongodb:8.0' + } + } + stages { + stage ('Run tests') { + steps { + withCredentials([string(credentialsId: 'olexandr_zephyr_token', variable: 'ZEPHYR_TOKEN')]) { + sh """ + docker kill \$(docker ps -a -q) || true + docker rm \$(docker ps -a -q) || true + docker rmi -f \$(docker images -q | uniq) || true + sudo rm -rf ./* + if [ ! -f "/usr/local/bin/docker-compose" ] ; then + if [ ${params.INSTANCE} = "docker-64gb-aarch64" ]; then + sudo curl -SL https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-aarch64 -o /usr/local/bin/docker-compose + else + sudo curl -SL https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose + fi + sudo chmod +x /usr/local/bin/docker-compose + fi + """ + + dir('psmdb-testing') { + git poll: false, branch: params.PSMDB_TESTING_BRANCH, url: 'https://github.com/Percona-QA/psmdb-testing.git' + } + + dir('percona-mongolink') { + git credentialsId: 'JNKPercona_API_token', + url: 'https://github.com/Percona-Lab/percona-mongolink.git', + branch: params.MLINK_BRANCH + } + + sh """ + cd psmdb-testing/mlink + docker-compose build + docker-compose up -d + if [ -n "${params.TEST_FILTER}" ]; then + docker-compose run test pytest -v -s -k "${params.TEST_FILTER}" --junitxml=junit.xml || true + else + docker-compose run test pytest -v -s --junitxml=junit.xml || true + fi + docker-compose down -v --remove-orphans + curl -H "Content-Type:multipart/form-data" -H "Authorization: Bearer ${ZEPHYR_TOKEN}" -F "file=@junit.xml;type=application/xml" 'https://api.zephyrscale.smartbear.com/v2/automations/executions/junit?projectKey=PML' -F 'testCycle={"name":"${JOB_NAME}-${BUILD_NUMBER}","customFields": { "Mongo Link branch": "${MLINK_BRANCH}","PSMDB docker image": "${MONGODB_IMAGE}","Instance": "${params.INSTANCE}"}};type=application/json' -i || true + """ + } + } + post { + always { + junit testResults: "**/junit.xml", keepLongStdio: true, allowEmptyResults: true, skipPublishingChecks: true + sh """ + docker kill \$(docker ps -a -q) || true + docker rm \$(docker ps -a -q) || true + docker rmi -f \$(docker images -q | uniq) || true + sudo rm -rf ./* + """ + } + } + } + } + } + } + } + post { + success { + slackNotify("#mongodb_autofeed", "#00FF00", "[${JOB_NAME}]: PML ${MLINK_BRANCH} - all tests passed") + } + unstable { + slackNotify("#mongodb_autofeed", "#F6F930", "[${JOB_NAME}]: PML ${MLINK_BRANCH} - some tests failed [${BUILD_URL}testReport/]") + } + failure { + slackNotify("#mongodb_autofeed", "#FF0000", "[${JOB_NAME}]: PML ${MLINK_BRANCH} - unexpected failure [${BUILD_URL}]") + } + } +} diff --git a/pml/pml-functional-tests.yml b/pml/pml-functional-tests.yml new file mode 100644 index 0000000000..eb2cadf2b9 --- /dev/null +++ b/pml/pml-functional-tests.yml @@ -0,0 +1,14 @@ +- job: + name: hetzner-pml-functional-tests + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: pml/pml-functional-tests.groovy From a9706b2bdf33db58339193f45427b39760f4bc9d Mon Sep 17 00:00:00 2001 From: Vadim Yalovets Date: Wed, 23 Apr 2025 17:02:20 +0300 Subject: [PATCH 093/269] PKG-643 Add an additional tag for ps, pxc multi docker images (#3281) --- ps/jenkins/percona-server-for-mysql-8.0-docker.groovy | 2 ++ ps/jenkins/percona-server-for-mysql-8.0.groovy | 2 ++ pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy | 1 + pxc/jenkins/percona-xtradb-cluster-8.0.groovy | 1 + 4 files changed, 6 insertions(+) diff --git a/ps/jenkins/percona-server-for-mysql-8.0-docker.groovy b/ps/jenkins/percona-server-for-mysql-8.0-docker.groovy index 2dd948a992..d65c234347 100644 --- a/ps/jenkins/percona-server-for-mysql-8.0-docker.groovy +++ b/ps/jenkins/percona-server-for-mysql-8.0-docker.groovy @@ -375,10 +375,12 @@ parameters { sh ''' PS_RELEASE=$(echo ${BRANCH} | sed 's/release-//g') PS_MAJOR_RELEASE=$(echo ${BRANCH} | sed "s/release-//g" | sed "s/\\.//g" | awk '{print substr($0, 0, 2)}') + PS_MAJOR_FULL_RELEASE=$(echo ${BRANCH} | sed "s/release-//g" | sed "s/-.*//g") echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin PS_RELEASE=$(echo ${BRANCH} | sed 's/release-//g') sudo docker manifest push perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} sudo docker buildx imagetools create -t perconalab/percona-server:${PS_RELEASE} perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} + sudo docker buildx imagetools create -t perconalab/percona-server:${PS_MAJOR_FULL_RELEASE} perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} sudo docker buildx imagetools create -t perconalab/percona-server:${PS_MAJOR_RELEASE} perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} ''' } diff --git a/ps/jenkins/percona-server-for-mysql-8.0.groovy b/ps/jenkins/percona-server-for-mysql-8.0.groovy index db1324e874..e5df30f266 100644 --- a/ps/jenkins/percona-server-for-mysql-8.0.groovy +++ b/ps/jenkins/percona-server-for-mysql-8.0.groovy @@ -1122,10 +1122,12 @@ parameters { sh ''' PS_RELEASE=$(echo ${BRANCH} | sed 's/release-//g') PS_MAJOR_RELEASE=$(echo ${BRANCH} | sed "s/release-//g" | sed "s/\\.//g" | awk '{print substr($0, 0, 2)}') + PS_MAJOR_FULL_RELEASE=$(echo ${BRANCH} | sed "s/release-//g" | sed "s/-.*//g") echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin PS_RELEASE=$(echo ${BRANCH} | sed 's/release-//g') sudo docker manifest push perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} sudo docker buildx imagetools create -t perconalab/percona-server:${PS_RELEASE} perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} + sudo docker buildx imagetools create -t perconalab/percona-server:${PS_MAJOR_FULL_RELEASE} perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} sudo docker buildx imagetools create -t perconalab/percona-server:${PS_MAJOR_RELEASE} perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} ''' } diff --git a/pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy b/pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy index b0f154feec..bf0fe90084 100644 --- a/pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy +++ b/pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy @@ -166,6 +166,7 @@ pipeline { curl -O https://raw.githubusercontent.com/percona/percona-xtradb-cluster/${GIT_BRANCH}/MYSQL_VERSION . ./MYSQL_VERSION sudo docker manifest push perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} + sudo docker buildx imagetools create -t perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH} perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} sudo docker buildx imagetools create -t perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR} perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} sudo docker buildx imagetools create -t perconalab/percona-xtradb-cluster:latest perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} ''' diff --git a/pxc/jenkins/percona-xtradb-cluster-8.0.groovy b/pxc/jenkins/percona-xtradb-cluster-8.0.groovy index 3407a79680..6b5d5513b1 100644 --- a/pxc/jenkins/percona-xtradb-cluster-8.0.groovy +++ b/pxc/jenkins/percona-xtradb-cluster-8.0.groovy @@ -775,6 +775,7 @@ pipeline { curl -O https://raw.githubusercontent.com/percona/percona-xtradb-cluster/${GIT_BRANCH}/MYSQL_VERSION . ./MYSQL_VERSION sudo docker manifest push perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} + sudo docker buildx imagetools create -t perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH} perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} sudo docker buildx imagetools create -t perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR} perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} sudo docker buildx imagetools create -t perconalab/percona-xtradb-cluster:latest perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} ''' From 82ef48557e0b1bbcdc3e04daf1a0714f43b865de Mon Sep 17 00:00:00 2001 From: Muhammad Aqeel Date: Thu, 24 Apr 2025 13:51:07 +0500 Subject: [PATCH 094/269] [PKG-485]: Merges AMD and ARM jobs into one job. (#3283) --- ppg/etcd.groovy | 105 ++++++++++++++++++-- ppg/patroni.groovy | 30 +++++- ppg/percona-postgis.groovy | 107 +++++++++++++++++++-- ppg/pg_gather.groovy | 105 ++++++++++++++++++-- ppg/pg_percona_telemetry_autobuild.groovy | 112 ++++++++++++++++++++-- ppg/pg_stat_monitor-autobuild.groovy | 105 ++++++++++++++++++-- ppg/pgaudit.groovy | 105 ++++++++++++++++++-- ppg/pgaudit_set_user.groovy | 105 ++++++++++++++++++-- ppg/pgbackrest.groovy | 105 ++++++++++++++++++-- ppg/pgbadger.groovy | 105 ++++++++++++++++++-- ppg/pgbouncer.groovy | 105 ++++++++++++++++++-- ppg/pgpool2-build.groovy | 107 +++++++++++++++++++-- ppg/pgrepack.groovy | 105 ++++++++++++++++++-- ppg/pgvector.groovy | 105 ++++++++++++++++++-- ppg/postgresql_server.groovy | 105 ++++++++++++++++++-- ppg/ppg-server-ha.groovy | 105 ++++++++++++++++++-- ppg/ppg-server.groovy | 105 ++++++++++++++++++-- ppg/wal2json.groovy | 105 ++++++++++++++++++-- ppg/ydiff.groovy | 30 +++++- 19 files changed, 1731 insertions(+), 125 deletions(-) diff --git a/ppg/etcd.groovy b/ppg/etcd.groovy index a7f2aef683..fe2d377ba3 100644 --- a/ppg/etcd.groovy +++ b/ppg/etcd.groovy @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build etcd RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -137,7 +137,20 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Oracle Linux 9') { + stage('Oracle Linux 8 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -150,7 +163,20 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { + stage('Oracle Linux 9 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -163,7 +189,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Jammy(22.04)') { + stage('Ubuntu Focal(20.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -176,7 +215,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Noble(24.04)') { + stage('Ubuntu Jammy(22.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -189,7 +241,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian Bullseye(11)') { + stage('Ubuntu Noble(24.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -202,7 +267,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian bookworm(12)') { + stage('Debian Bullseye(11) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -211,6 +289,19 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } diff --git a/ppg/patroni.groovy b/ppg/patroni.groovy index eb01658724..ee57175c56 100644 --- a/ppg/patroni.groovy +++ b/ppg/patroni.groovy @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build PATRONI RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -137,7 +137,20 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Oracle Linux 9') { + stage('Oracle Linux 8 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -150,6 +163,19 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 9 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Focal(20.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/percona-postgis.groovy b/ppg/percona-postgis.groovy index f5c9c1d552..d537e4a767 100644 --- a/ppg/percona-postgis.groovy +++ b/ppg/percona-postgis.groovy @@ -131,7 +131,7 @@ pipeline { } // stage stage('Build POSTGIS RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -144,7 +144,20 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Oracle Linux 9') { + stage('Oracle Linux 8 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -156,8 +169,21 @@ pipeline { pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } - } - stage('Ubuntu Focal(20.04)') { + } + stage('Oracle Linux 9 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -170,7 +196,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Jammy(22.04)') { + stage('Ubuntu Focal(20.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -183,7 +222,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Noble(24.04)') { + stage('Ubuntu Jammy(22.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -196,7 +248,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian Bullseye(11)') { + stage('Ubuntu Noble(24.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -209,7 +274,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian Bookworm(12)') { + stage('Debian Bullseye(11) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bookworm(12) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -218,6 +296,19 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bookworm(12) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } diff --git a/ppg/pg_gather.groovy b/ppg/pg_gather.groovy index 720db29cab..8cd1093be4 100644 --- a/ppg/pg_gather.groovy +++ b/ppg/pg_gather.groovy @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build pg_gather RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -137,7 +137,20 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Oracle Linux 9') { + stage('Oracle Linux 8 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -150,7 +163,20 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { + stage('Oracle Linux 9 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -163,7 +189,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Jammy(22.04)') { + stage('Ubuntu Focal(20.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -176,7 +215,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Noble(24.04)') { + stage('Ubuntu Jammy(22.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -189,7 +241,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian Bullseye(11)') { + stage('Ubuntu Noble(24.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -202,7 +267,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian bookworm(12)') { + stage('Debian Bullseye(11) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -211,6 +289,19 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } diff --git a/ppg/pg_percona_telemetry_autobuild.groovy b/ppg/pg_percona_telemetry_autobuild.groovy index 7984b779cd..cf198f34d9 100644 --- a/ppg/pg_percona_telemetry_autobuild.groovy +++ b/ppg/pg_percona_telemetry_autobuild.groovy @@ -162,7 +162,7 @@ pipeline { } //stage stage('Build percona_pg_telemetry RPMs') { parallel { - stage('OL 8') { + stage('OL 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -176,7 +176,21 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } //stage - stage('OL 9') { + stage('OL 8 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + echo "====> Build percona_pg_telemetry rpm on OL 8 PG${PG_RELEASE}" + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } //stage + stage('OL 9 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -186,6 +200,20 @@ pipeline { popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } //stage + stage('OL 9 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + echo "====> Build percona_pg_telemetry rpm on OL 9 PG${PG_RELEASE}" + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } @@ -194,7 +222,7 @@ pipeline { } //stage stage('Build percona_pg_telemetry DEBs') { parallel { - stage('Ubuntu 20.04') { + stage('Ubuntu 20.04 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -208,7 +236,21 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } //stage - stage('Ubuntu 22.04') { + stage('Ubuntu 20.04 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + echo "====> Build percona_pg_telemetry deb on Ubuntu 20.04 PG${PG_RELEASE}" + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } //stage + stage('Ubuntu 22.04 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -222,7 +264,21 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } //stage - stage('Ubuntu Noble(24.04)') { + stage('Ubuntu 22.04 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + echo "====> Build percona_pg_telemetry deb on Ubuntu 22.04 PG${PG_RELEASE}" + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } //stage + stage('Ubuntu Noble(24.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -236,7 +292,21 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } //stage - stage('Debian 11') { + stage('Ubuntu Noble(24.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + echo "====> Build percona_pg_telemetry deb on Ubuntu 24.04 PG${PG_RELEASE}" + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } //stage + stage('Debian 11 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -250,7 +320,21 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } //stage - stage('Debian 12') { + stage('Debian 11 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + echo "====> Build percona_pg_telemetry deb on Debian 11 PG${PG_RELEASE}" + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } //stage + stage('Debian 12 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -260,6 +344,20 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } //stage + stage('Debian 12 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + echo "====> Build percona_pg_telemetry deb on Debian 12 PG${PG_RELEASE}" + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } diff --git a/ppg/pg_stat_monitor-autobuild.groovy b/ppg/pg_stat_monitor-autobuild.groovy index 9fc0fbd3e0..cc19f84f01 100644 --- a/ppg/pg_stat_monitor-autobuild.groovy +++ b/ppg/pg_stat_monitor-autobuild.groovy @@ -139,7 +139,7 @@ pipeline { } //stage stage('Build pg_stat_monitor RPMs') { parallel { - stage('Oracle Linux 8') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -152,7 +152,20 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Oracle Linux 9') { + stage('Oracle Linux 8 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -165,7 +178,20 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { + stage('Oracle Linux 9 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -178,7 +204,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Jammy(22.04)') { + stage('Ubuntu Focal(20.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -191,7 +230,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Noble(24.04)') { + stage('Ubuntu Jammy(22.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -204,7 +256,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian Bullseye(11)') { + stage('Ubuntu Noble(24.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -217,7 +282,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian bookworm(12)') { + stage('Debian Bullseye(11) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -226,6 +304,19 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } diff --git a/ppg/pgaudit.groovy b/ppg/pgaudit.groovy index a78a592078..e8ed275eb2 100644 --- a/ppg/pgaudit.groovy +++ b/ppg/pgaudit.groovy @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build PG_AUDIT RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -137,7 +137,20 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Oracle Linux 9') { + stage('Oracle Linux 8 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -150,7 +163,20 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { + stage('Oracle Linux 9 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -163,7 +189,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Jammy(22.04)') { + stage('Ubuntu Focal(20.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -176,7 +215,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Noble(24.04)') { + stage('Ubuntu Jammy(22.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -189,7 +241,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian Bullseye(11)') { + stage('Ubuntu Noble(24.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -202,7 +267,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian bookworm(12)') { + stage('Debian Bullseye(11) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -211,6 +289,19 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } diff --git a/ppg/pgaudit_set_user.groovy b/ppg/pgaudit_set_user.groovy index d9e197bebb..da112a1113 100644 --- a/ppg/pgaudit_set_user.groovy +++ b/ppg/pgaudit_set_user.groovy @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build PG_AUDIT RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -137,7 +137,20 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Oracle Linux 9') { + stage('Oracle Linux 8 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -150,7 +163,20 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { + stage('Oracle Linux 9 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -163,7 +189,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Jammy(22.04)') { + stage('Ubuntu Focal(20.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -176,7 +215,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Noble(24.04)') { + stage('Ubuntu Jammy(22.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -189,7 +241,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian Bullseye(11)') { + stage('Ubuntu Noble(24.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -202,7 +267,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian bookworm(12)') { + stage('Debian Bullseye(11) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -211,6 +289,19 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } diff --git a/ppg/pgbackrest.groovy b/ppg/pgbackrest.groovy index 9e66f7a7b3..fe933954f2 100644 --- a/ppg/pgbackrest.groovy +++ b/ppg/pgbackrest.groovy @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build PG_BACKREST RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -137,7 +137,20 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Oracle Linux 9') { + stage('Oracle Linux 8 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -150,7 +163,20 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { + stage('Oracle Linux 9 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -163,7 +189,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Jammy(22.04)') { + stage('Ubuntu Focal(20.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -176,7 +215,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Noble(24.04)') { + stage('Ubuntu Jammy(22.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -189,7 +241,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian Bullseye(11)') { + stage('Ubuntu Noble(24.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -202,7 +267,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian bookworm(12)') { + stage('Debian Bullseye(11) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -211,6 +289,19 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } diff --git a/ppg/pgbadger.groovy b/ppg/pgbadger.groovy index 1289363921..b742810d7f 100644 --- a/ppg/pgbadger.groovy +++ b/ppg/pgbadger.groovy @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build PG_badger RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -137,7 +137,20 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Oracle Linux 9') { + stage('Oracle Linux 8 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -150,7 +163,20 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { + stage('Oracle Linux 9 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -163,7 +189,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Jammy(22.04)') { + stage('Ubuntu Focal(20.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -176,7 +215,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Noble(24.04)') { + stage('Ubuntu Jammy(22.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -189,7 +241,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian Bullseye(11)') { + stage('Ubuntu Noble(24.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -202,7 +267,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian bookworm(12)') { + stage('Debian Bullseye(11) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -211,6 +289,19 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } diff --git a/ppg/pgbouncer.groovy b/ppg/pgbouncer.groovy index 6836909a7b..05ccfce8de 100644 --- a/ppg/pgbouncer.groovy +++ b/ppg/pgbouncer.groovy @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build PG_bouncer RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -137,7 +137,20 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Oracle Linux 9') { + stage('Oracle Linux 8 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -150,7 +163,20 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { + stage('Oracle Linux 9 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -163,7 +189,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Jammy(22.04)') { + stage('Ubuntu Focal(20.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -176,7 +215,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Noble(24.04)') { + stage('Ubuntu Jammy(22.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -189,7 +241,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian Bullseye(11)') { + stage('Ubuntu Noble(24.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -202,7 +267,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian bookworm(12)') { + stage('Debian Bullseye(11) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -211,6 +289,19 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } diff --git a/ppg/pgpool2-build.groovy b/ppg/pgpool2-build.groovy index 070393f181..6c4fb5d091 100644 --- a/ppg/pgpool2-build.groovy +++ b/ppg/pgpool2-build.groovy @@ -139,7 +139,7 @@ pipeline { } // stage stage('Build pgpool2 RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -152,7 +152,20 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Oracle Linux 9') { + stage('Oracle Linux 8 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -164,8 +177,21 @@ pipeline { pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } - } - stage('Ubuntu Focal(20.04)') { + } + stage('Oracle Linux 9 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -178,7 +204,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Jammy(22.04)') { + stage('Ubuntu Focal(20.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -191,7 +230,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Noble(24.04)') { + stage('Ubuntu Jammy(22.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -204,7 +256,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian Bullseye(11)') { + stage('Ubuntu Noble(24.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -217,7 +282,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian Bookworm(12)') { + stage('Debian Bullseye(11) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bookworm(12) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -226,6 +304,19 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bookworm(12) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } diff --git a/ppg/pgrepack.groovy b/ppg/pgrepack.groovy index 5fccdb90bb..031f4a3988 100644 --- a/ppg/pgrepack.groovy +++ b/ppg/pgrepack.groovy @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build PG_REPACK RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -137,7 +137,20 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Oracle Linux 9') { + stage('Oracle Linux 8 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -150,7 +163,20 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { + stage('Oracle Linux 9 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -163,7 +189,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Jammy(22.04)') { + stage('Ubuntu Focal(20.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -176,7 +215,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Noble(24.04)') { + stage('Ubuntu Jammy(22.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -189,7 +241,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian Bullseye(11)') { + stage('Ubuntu Noble(24.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -202,7 +267,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian bookworm(12)') { + stage('Debian Bullseye(11) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -211,6 +289,19 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } diff --git a/ppg/pgvector.groovy b/ppg/pgvector.groovy index 5074f05ad7..8eb335a262 100644 --- a/ppg/pgvector.groovy +++ b/ppg/pgvector.groovy @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build pgvector RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -137,7 +137,20 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Oracle Linux 9') { + stage('Oracle Linux 8 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -150,7 +163,20 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { + stage('Oracle Linux 9 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -163,7 +189,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Jammy(22.04)') { + stage('Ubuntu Focal(20.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -176,7 +215,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Noble(24.04)') { + stage('Ubuntu Jammy(22.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -189,7 +241,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian Bullseye(11)') { + stage('Ubuntu Noble(24.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -202,7 +267,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian bookworm(12)') { + stage('Debian Bullseye(11) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -211,6 +289,19 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } diff --git a/ppg/postgresql_server.groovy b/ppg/postgresql_server.groovy index 4057744adb..fa1825c928 100644 --- a/ppg/postgresql_server.groovy +++ b/ppg/postgresql_server.groovy @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build PPG-SERVER RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -137,7 +137,20 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Oracle Linux 9') { + stage('Oracle Linux 8 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -150,7 +163,20 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { + stage('Oracle Linux 9 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -163,7 +189,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Jammy(22.04)') { + stage('Ubuntu Focal(20.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -176,7 +215,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Noble(24.04)') { + stage('Ubuntu Jammy(22.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -189,7 +241,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian Bullseye(11)') { + stage('Ubuntu Noble(24.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -202,7 +267,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian bookworm(12)') { + stage('Debian Bullseye(11) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -211,6 +289,19 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } diff --git a/ppg/ppg-server-ha.groovy b/ppg/ppg-server-ha.groovy index bcff1ad4ce..cd33529b51 100644 --- a/ppg/ppg-server-ha.groovy +++ b/ppg/ppg-server-ha.groovy @@ -120,7 +120,7 @@ pipeline { } // stage stage('Build PPG-SERVER-HA RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -133,7 +133,20 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Oracle Linux 9') { + stage('Oracle Linux 8 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -146,7 +159,20 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { + stage('Oracle Linux 9 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -159,7 +185,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Jammy(22.04)') { + stage('Ubuntu Focal(20.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -172,7 +211,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Noble(24.04)') { + stage('Ubuntu Jammy(22.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -185,7 +237,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian Bullseye(11)') { + stage('Ubuntu Noble(24.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -198,7 +263,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian bookworm(12)') { + stage('Debian Bullseye(11) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -207,6 +285,19 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } diff --git a/ppg/ppg-server.groovy b/ppg/ppg-server.groovy index adb77016ae..6534d0c9a4 100644 --- a/ppg/ppg-server.groovy +++ b/ppg/ppg-server.groovy @@ -120,7 +120,7 @@ pipeline { } // stage stage('Build PPG-SERVER RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -133,7 +133,20 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Oracle Linux 9') { + stage('Oracle Linux 8 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -146,7 +159,20 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { + stage('Oracle Linux 9 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -159,7 +185,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Jammy(22.04)') { + stage('Ubuntu Focal(20.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -172,7 +211,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Noble(24.04)') { + stage('Ubuntu Jammy(22.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -185,7 +237,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian Bullseye(11)') { + stage('Ubuntu Noble(24.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -198,7 +263,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian bookworm(12)') { + stage('Debian Bullseye(11) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -207,6 +285,19 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } diff --git a/ppg/wal2json.groovy b/ppg/wal2json.groovy index def822fe71..0aeff2adb6 100644 --- a/ppg/wal2json.groovy +++ b/ppg/wal2json.groovy @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build wal2json RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -137,7 +137,20 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Oracle Linux 9') { + stage('Oracle Linux 8 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -150,7 +163,20 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { + stage('Oracle Linux 9 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -163,7 +189,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Jammy(22.04)') { + stage('Ubuntu Focal(20.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -176,7 +215,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Noble(24.04)') { + stage('Ubuntu Jammy(22.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -189,7 +241,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian Bullseye(11)') { + stage('Ubuntu Noble(24.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -202,7 +267,20 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian bookworm(12)') { + stage('Debian Bullseye(11) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -211,6 +289,19 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } diff --git a/ppg/ydiff.groovy b/ppg/ydiff.groovy index 543d443b50..9b5999d6b6 100644 --- a/ppg/ydiff.groovy +++ b/ppg/ydiff.groovy @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build YDIFF RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -137,7 +137,20 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Oracle Linux 9') { + stage('Oracle Linux 8 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -150,6 +163,19 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 9 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Focal(20.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' From aacf940d056cacd19d530138d020ba3685300022 Mon Sep 17 00:00:00 2001 From: Muhammad Aqeel Date: Fri, 25 Apr 2025 13:13:12 +0500 Subject: [PATCH 095/269] etcd native package build process is different than other components that causes problems to build packages of both architectures using one job. Temporarily commenting ARM stages until packaging script made consistent with other components. (#3287) --- ppg/etcd.groovy | 168 ++++++++++++++++++++++++------------------------ 1 file changed, 84 insertions(+), 84 deletions(-) diff --git a/ppg/etcd.groovy b/ppg/etcd.groovy index fe2d377ba3..971badfd7a 100644 --- a/ppg/etcd.groovy +++ b/ppg/etcd.groovy @@ -137,19 +137,19 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Oracle Linux 8 ARM') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) - buildStage("oraclelinux:8", "--build_rpm=1") + //stage('Oracle Linux 8 ARM') { + // agent { + // label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + // } + // steps { + // cleanUpWS() + // popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + // buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) - uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) - } - } + // pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + // uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + // } + //} stage('Oracle Linux 9 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -163,19 +163,19 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Oracle Linux 9 ARM') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) - buildStage("oraclelinux:9", "--build_rpm=1") + //stage('Oracle Linux 9 ARM') { + // agent { + // label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + // } + // steps { + // cleanUpWS() + // popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + // buildStage("oraclelinux:9", "--build_rpm=1") - pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) - uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) - } - } + // pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + // uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + // } + //} stage('Ubuntu Focal(20.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -189,19 +189,19 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04) ARM') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") + //stage('Ubuntu Focal(20.04) ARM') { + // agent { + // label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + // } + // steps { + // cleanUpWS() + // popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + // buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } + // pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + // uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + // } + //} stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -215,19 +215,19 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Jammy(22.04) ARM') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:jammy", "--build_deb=1") + //stage('Ubuntu Jammy(22.04) ARM') { + // agent { + // label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + // } + // steps { + // cleanUpWS() + // popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + // buildStage("ubuntu:jammy", "--build_deb=1") - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } + // pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + // uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + // } + //} stage('Ubuntu Noble(24.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -241,19 +241,19 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Ubuntu Noble(24.04) ARM') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:noble", "--build_deb=1") + //stage('Ubuntu Noble(24.04) ARM') { + // agent { + // label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + // } + // steps { + // cleanUpWS() + // popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + // buildStage("ubuntu:noble", "--build_deb=1") - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } + // pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + // uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + // } + //} stage('Debian Bullseye(11) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -267,19 +267,19 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian Bullseye(11) ARM') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("debian:bullseye", "--build_deb=1") + //stage('Debian Bullseye(11) ARM') { + // agent { + // label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + // } + // steps { + // cleanUpWS() + // popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + // buildStage("debian:bullseye", "--build_deb=1") - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } + // pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + // uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + // } + //} stage('Debian bookworm(12) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -293,19 +293,19 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian bookworm(12) ARM') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("debian:bookworm", "--build_deb=1") + //stage('Debian bookworm(12) ARM') { + // agent { + // label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + // } + // steps { + // cleanUpWS() + // popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + // buildStage("debian:bookworm", "--build_deb=1") - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } + // pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + // uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + // } + //} } } From 847c9d6041fe9580b0085859d7a2c34826dd3bc3 Mon Sep 17 00:00:00 2001 From: Sandra Romanchenko <53295797+sandraromanchenko@users.noreply.github.com> Date: Fri, 25 Apr 2025 17:47:35 +0300 Subject: [PATCH 096/269] PSMDB. PBM. Move jobs to hetzner (#3288) --- pbm/jenkins/get-pbm-branches.groovy | 2 +- pbm/pbm-docker-arm.groovy | 5 +++-- pbm/pbm-docker-arm.yml | 4 ++-- pbm/pbm-docker.groovy | 5 +++-- pbm/pbm-docker.yml | 4 ++-- pbm/pbm-release-test-run.groovy | 9 +++------ pdmdb/pdmdb-site-check.groovy | 6 +++++- pdmdb/pdmdb-site-check.yml | 4 ++-- psmdb/jenkins/get-psmdb-branches-6.0.groovy | 2 +- psmdb/jenkins/get-psmdb-branches-7.0.groovy | 2 +- psmdb/jenkins/get-psmdb-branches-8.0.groovy | 2 +- psmdb/psmdb-docker-arm.groovy | 3 ++- psmdb/psmdb-docker-arm.yml | 4 ++-- psmdb/psmdb-docker-cve.groovy | 2 +- psmdb/psmdb-docker-cve.yml | 4 ++-- psmdb/psmdb-docker.groovy | 3 ++- psmdb/psmdb-docker.yml | 4 ++-- psmdb/psmdb-integration.groovy | 3 ++- psmdb/psmdb-integration.yml | 4 ++-- psmdb/psmdb-multijob-testing.groovy | 11 ++++++----- psmdb/psmdb-multijob-testing.yml | 4 ++-- psmdb/psmdb-site-check.groovy | 6 +++++- psmdb/psmdb-site-check.yml | 4 ++-- 23 files changed, 54 insertions(+), 43 deletions(-) diff --git a/pbm/jenkins/get-pbm-branches.groovy b/pbm/jenkins/get-pbm-branches.groovy index 88dc584457..693d80c057 100644 --- a/pbm/jenkins/get-pbm-branches.groovy +++ b/pbm/jenkins/get-pbm-branches.groovy @@ -83,7 +83,7 @@ pipeline { } slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: new changes for branch ${BRANCH_NAME}[commit id: ${COMMIT_ID}] were detected, build will be started soon") build job: 'hetzner-pbm-autobuild-RELEASE', parameters: [string(name: 'CLOUD', value: CLOUD), string(name: 'GIT_BRANCH', value: BRANCH_NAME), string(name: 'VERSION', value: VERSION), string(name: 'COMPONENT', value: 'testing')] - build job: 'pbm-release-test-run', propagate: false, wait: false, parameters: [string(name: 'PBM_BRANCH', value: BRANCH_NAME), string(name: 'PBM_VERSION', value: VERSION)] + build job: 'hetzner-pbm-release-test-run', propagate: false, wait: false, parameters: [string(name: 'PBM_BRANCH', value: BRANCH_NAME), string(name: 'PBM_VERSION', value: VERSION)] } } stage('Build skipped') { diff --git a/pbm/pbm-docker-arm.groovy b/pbm/pbm-docker-arm.groovy index ae8198d04e..1e06e37d22 100644 --- a/pbm/pbm-docker-arm.groovy +++ b/pbm/pbm-docker-arm.groovy @@ -1,16 +1,17 @@ -library changelog: false, identifier: "lib@master", retriever: modernSCM([ +library changelog: false, identifier: "lib@hetzner", retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) pipeline { agent { - label 'docker-64gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' } environment { PATH = '/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin' } parameters { + choice(name: 'CLOUD', choices: [ 'Hetzner','AWS' ], description: 'Cloud infra for build') choice(name: 'PBM_REPO_CH', choices: ['testing','release','experimental'], description: 'Percona-release repo') string(name: 'PBM_VERSION', defaultValue: '2.3.0-1', description: 'PBM version') choice(name: 'TARGET_REPO', choices: ['PerconaLab','AWS_ECR','DockerHub'], description: 'Target repo for docker image, use DockerHub for release only') diff --git a/pbm/pbm-docker-arm.yml b/pbm/pbm-docker-arm.yml index 63f321df3a..00941cf881 100644 --- a/pbm/pbm-docker-arm.yml +++ b/pbm/pbm-docker-arm.yml @@ -1,5 +1,5 @@ - job: - name: pbm-docker-arm + name: hetzner-pbm-docker-arm project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: pbm/pbm-docker-arm.groovy diff --git a/pbm/pbm-docker.groovy b/pbm/pbm-docker.groovy index 5eee84ae00..80d75bc86c 100644 --- a/pbm/pbm-docker.groovy +++ b/pbm/pbm-docker.groovy @@ -1,16 +1,17 @@ -library changelog: false, identifier: "lib@master", retriever: modernSCM([ +library changelog: false, identifier: "lib@hetzner", retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) pipeline { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } environment { PATH = '/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin' } parameters { + choice(name: 'CLOUD', choices: [ 'Hetzner','AWS' ], description: 'Cloud infra for build') choice(name: 'PBM_REPO_CH', choices: ['testing','release','experimental'], description: 'Percona-release repo') string(name: 'PBM_VERSION', defaultValue: '2.0.2-1', description: 'PBM version') choice(name: 'TARGET_REPO', choices: ['PerconaLab','AWS_ECR','DockerHub'], description: 'Target repo for docker image, use DockerHub for release only') diff --git a/pbm/pbm-docker.yml b/pbm/pbm-docker.yml index e38b2cb68c..bca6a88408 100644 --- a/pbm/pbm-docker.yml +++ b/pbm/pbm-docker.yml @@ -1,5 +1,5 @@ - job: - name: pbm-docker + name: hetzner-pbm-docker project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: pbm/pbm-docker.groovy diff --git a/pbm/pbm-release-test-run.groovy b/pbm/pbm-release-test-run.groovy index 71a5dc7da5..ec966ffb82 100644 --- a/pbm/pbm-release-test-run.groovy +++ b/pbm/pbm-release-test-run.groovy @@ -11,10 +11,7 @@ pipeline { PATH = '/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin' } parameters { - choice( - choices: [ 'Hetzner','AWS' ], - description: 'Cloud infra for build', - name: 'CLOUD' ) + choice(name: 'CLOUD', choices: [ 'Hetzner','AWS' ], description: 'Cloud infra for build') string(name: 'PBM_VERSION', defaultValue: '2.0.5', description: 'PBM Version') string(name: 'PBM_BRANCH', defaultValue: 'release-2.0.5', description: 'PBM Branch') } @@ -24,7 +21,7 @@ pipeline { stages { stage ('Run e2e tests') { steps { - build job: 'pbm-functional-tests-full', propagate: false, wait: true, parameters: [ string(name: 'PBM_BRANCH', value: params.PBM_BRANCH) ] + build job: 'hetzner-pbm-functional-tests-full', propagate: false, wait: true, parameters: [ string(name: 'PBM_BRANCH', value: params.PBM_BRANCH) ] } } stage ('Run package tests') { @@ -36,7 +33,7 @@ pipeline { steps { script { def version = params.PBM_VERSION + '-1' - build job: 'pbm-docker', parameters: [string(name: 'PBM_REPO_CH', value: "testing"), string(name: 'PBM_VERSION', value: version ), string(name: 'LATEST', value: "no") ] + build job: 'hetzner-pbm-docker', parameters: [string(name: 'PBM_REPO_CH', value: "testing"), string(name: 'PBM_VERSION', value: version ), string(name: 'LATEST', value: "no") ] } } } diff --git a/pdmdb/pdmdb-site-check.groovy b/pdmdb/pdmdb-site-check.groovy index 30bba1c312..cc1d0dd23c 100644 --- a/pdmdb/pdmdb-site-check.groovy +++ b/pdmdb/pdmdb-site-check.groovy @@ -5,12 +5,16 @@ library changelog: false, identifier: "lib@master", retriever: modernSCM([ pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } environment { PATH = '/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin' } parameters { + choice( + name: 'CLOUD', + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build') string( defaultValue: '6.0.9-7', description: 'PSMDB Version for tests', diff --git a/pdmdb/pdmdb-site-check.yml b/pdmdb/pdmdb-site-check.yml index 255590420a..f9697e0834 100644 --- a/pdmdb/pdmdb-site-check.yml +++ b/pdmdb/pdmdb-site-check.yml @@ -1,5 +1,5 @@ - job: - name: pdmdb-site-check + name: hetzner-pdmdb-site-check project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: pdmdb/pdmdb-site-check.groovy diff --git a/psmdb/jenkins/get-psmdb-branches-6.0.groovy b/psmdb/jenkins/get-psmdb-branches-6.0.groovy index 8fcbd6ba17..73ec4be7d1 100644 --- a/psmdb/jenkins/get-psmdb-branches-6.0.groovy +++ b/psmdb/jenkins/get-psmdb-branches-6.0.groovy @@ -93,7 +93,7 @@ pipeline { } slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: new changes for branch ${BRANCH_NAME}[commit id: ${COMMIT_ID}] were detected, build will be started soon") build job: 'hetzner-psmdb60-autobuild-RELEASE', parameters: [string(name: 'CLOUD', value: CLOUD), string(name: 'GIT_BRANCH', value: BRANCH_NAME), string(name: 'PSMDB_VERSION', value: VERSION), string(name: 'PSMDB_RELEASE', value: RELEASE), string(name: 'MONGO_TOOLS_TAG', value: MONGO_TOOLS_TAG), string(name: 'COMPONENT', value: 'testing')] - build job: 'psmdb-multijob-testing', propagate: false, wait: false, parameters: [string(name: 'PSMDB_VERSION', value: VERSION), string(name: 'PSMDB_RELEASE', value: RELEASE)] + build job: 'hetzner-psmdb-multijob-testing', propagate: false, wait: false, parameters: [string(name: 'PSMDB_VERSION', value: VERSION), string(name: 'PSMDB_RELEASE', value: RELEASE)] } } stage('Build skipped') { diff --git a/psmdb/jenkins/get-psmdb-branches-7.0.groovy b/psmdb/jenkins/get-psmdb-branches-7.0.groovy index 01b48bba67..b5345cb733 100644 --- a/psmdb/jenkins/get-psmdb-branches-7.0.groovy +++ b/psmdb/jenkins/get-psmdb-branches-7.0.groovy @@ -93,7 +93,7 @@ pipeline { } slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: new changes for branch ${BRANCH_NAME}[commit id: ${COMMIT_ID}] were detected, build will be started soon") build job: 'hetzner-psmdb70-autobuild-RELEASE', parameters: [string(name: 'CLOUD', value: CLOUD), string(name: 'GIT_BRANCH', value: BRANCH_NAME), string(name: 'PSMDB_VERSION', value: VERSION), string(name: 'PSMDB_RELEASE', value: RELEASE), string(name: 'MONGO_TOOLS_TAG', value: MONGO_TOOLS_TAG), string(name: 'COMPONENT', value: 'testing')] - build job: 'psmdb-multijob-testing', propagate: false, wait: false, parameters: [string(name: 'PSMDB_VERSION', value: VERSION), string(name: 'PSMDB_RELEASE', value: RELEASE)] + build job: 'hetzner-psmdb-multijob-testing', propagate: false, wait: false, parameters: [string(name: 'PSMDB_VERSION', value: VERSION), string(name: 'PSMDB_RELEASE', value: RELEASE)] } } stage('Build skipped') { diff --git a/psmdb/jenkins/get-psmdb-branches-8.0.groovy b/psmdb/jenkins/get-psmdb-branches-8.0.groovy index 55668f8ce5..c631df0e0f 100644 --- a/psmdb/jenkins/get-psmdb-branches-8.0.groovy +++ b/psmdb/jenkins/get-psmdb-branches-8.0.groovy @@ -93,7 +93,7 @@ pipeline { } slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: new changes for branch ${BRANCH_NAME}[commit id: ${COMMIT_ID}] were detected, build will be started soon") build job: 'hetzner-psmdb80-autobuild-RELEASE', parameters: [string(name: 'CLOUD', value: CLOUD), string(name: 'GIT_BRANCH', value: BRANCH_NAME), string(name: 'PSMDB_VERSION', value: VERSION), string(name: 'PSMDB_RELEASE', value: RELEASE), string(name: 'MONGO_TOOLS_TAG', value: MONGO_TOOLS_TAG), string(name: 'COMPONENT', value: 'testing')] - build job: 'psmdb-multijob-testing', propagate: false, wait: false, parameters: [string(name: 'PSMDB_VERSION', value: VERSION), string(name: 'PSMDB_RELEASE', value: RELEASE)] + build job: 'hetzner-psmdb-multijob-testing', propagate: false, wait: false, parameters: [string(name: 'PSMDB_VERSION', value: VERSION), string(name: 'PSMDB_RELEASE', value: RELEASE)] } } stage('Build skipped') { diff --git a/psmdb/psmdb-docker-arm.groovy b/psmdb/psmdb-docker-arm.groovy index a35ffdae21..1afa6fae7e 100644 --- a/psmdb/psmdb-docker-arm.groovy +++ b/psmdb/psmdb-docker-arm.groovy @@ -5,12 +5,13 @@ library changelog: false, identifier: "lib@master", retriever: modernSCM([ pipeline { agent { - label 'docker-64gb-aarch64' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' } environment { PATH = '/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin' } parameters { + choice(name: 'CLOUD', choices: [ 'Hetzner','AWS' ], description: 'Cloud infra for build') choice(name: 'PSMDB_REPO', choices: ['testing','release','experimental'], description: 'Percona-release repo') string(name: 'PSMDB_VERSION', defaultValue: '6.0.2-1', description: 'PSMDB version') choice(name: 'TARGET_REPO', choices: ['PerconaLab','AWS_ECR','DockerHub'], description: 'Target repo for docker image, use DockerHub for release only') diff --git a/psmdb/psmdb-docker-arm.yml b/psmdb/psmdb-docker-arm.yml index 1c2c82a79d..ae1c4ac69c 100644 --- a/psmdb/psmdb-docker-arm.yml +++ b/psmdb/psmdb-docker-arm.yml @@ -1,5 +1,5 @@ - job: - name: psmdb-docker-arm + name: hetzner-psmdb-docker-arm project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: psmdb/psmdb-docker-arm.groovy diff --git a/psmdb/psmdb-docker-cve.groovy b/psmdb/psmdb-docker-cve.groovy index 477ff63785..a51eb7a2a7 100644 --- a/psmdb/psmdb-docker-cve.groovy +++ b/psmdb/psmdb-docker-cve.groovy @@ -5,7 +5,7 @@ library changelog: false, identifier: "lib@master", retriever: modernSCM([ pipeline { agent { - label 'master' + label 'launcher-x64' } environment { PATH = '/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin' diff --git a/psmdb/psmdb-docker-cve.yml b/psmdb/psmdb-docker-cve.yml index 003b98c628..501b6e11b3 100644 --- a/psmdb/psmdb-docker-cve.yml +++ b/psmdb/psmdb-docker-cve.yml @@ -1,5 +1,5 @@ - job: - name: psmdb-docker-cve + name: hetzner-psmdb-docker-cve project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: psmdb/psmdb-docker-cve.groovy diff --git a/psmdb/psmdb-docker.groovy b/psmdb/psmdb-docker.groovy index cd545bda8a..c99f914093 100644 --- a/psmdb/psmdb-docker.groovy +++ b/psmdb/psmdb-docker.groovy @@ -5,12 +5,13 @@ library changelog: false, identifier: "lib@master", retriever: modernSCM([ pipeline { agent { - label 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } environment { PATH = '/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin' } parameters { + choice(name: 'CLOUD', choices: [ 'Hetzner','AWS' ], description: 'Cloud infra for build') choice(name: 'PSMDB_REPO', choices: ['testing','release','experimental'], description: 'Percona-release repo') string(name: 'PSMDB_VERSION', defaultValue: '6.0.2-1', description: 'PSMDB version') choice(name: 'TARGET_REPO', choices: ['PerconaLab','AWS_ECR','DockerHub'], description: 'Target repo for docker image, use DockerHub for release only') diff --git a/psmdb/psmdb-docker.yml b/psmdb/psmdb-docker.yml index ed4f6d22eb..79ae959506 100644 --- a/psmdb/psmdb-docker.yml +++ b/psmdb/psmdb-docker.yml @@ -1,5 +1,5 @@ - job: - name: psmdb-docker + name: hetzner-psmdb-docker project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: psmdb/psmdb-docker.groovy diff --git a/psmdb/psmdb-integration.groovy b/psmdb/psmdb-integration.groovy index a3549e276e..0c08d732a6 100644 --- a/psmdb/psmdb-integration.groovy +++ b/psmdb/psmdb-integration.groovy @@ -5,12 +5,13 @@ library changelog: false, identifier: "lib@master", retriever: modernSCM([ pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } environment { PATH = '/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin' } parameters { + choice(name: 'CLOUD', choices: [ 'Hetzner','AWS' ], description: 'Cloud infra for build') string(name: 'PSMDB_VERSION', defaultValue: 'latest', description: 'PSMDB version') string(name: 'PBM_VERSION', defaultValue: 'latest', description: 'PBM version') string(name: 'PMM_VERSION', defaultValue: 'latest', description: 'PMM2 agent version') diff --git a/psmdb/psmdb-integration.yml b/psmdb/psmdb-integration.yml index dcc0aee5a6..4e61b72568 100644 --- a/psmdb/psmdb-integration.yml +++ b/psmdb/psmdb-integration.yml @@ -1,5 +1,5 @@ - job: - name: psmdb-integration + name: hetzner-psmdb-integration project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: psmdb/psmdb-integration.groovy diff --git a/psmdb/psmdb-multijob-testing.groovy b/psmdb/psmdb-multijob-testing.groovy index 98e94bd052..42a3270834 100644 --- a/psmdb/psmdb-multijob-testing.groovy +++ b/psmdb/psmdb-multijob-testing.groovy @@ -5,12 +5,13 @@ library changelog: false, identifier: "lib@master", retriever: modernSCM([ pipeline { agent { - label 'master' + label params.CLOUD == 'Hetzner' ? 'launcher-x64' : 'master' } environment { PATH = '/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin' } parameters { + choice(name: 'CLOUD', choices: [ 'Hetzner','AWS' ], description: 'Cloud infra for build') string(name: 'PSMDB_VERSION', defaultValue: '4.4.17', description: 'PSMDB Version') string(name: 'PSMDB_RELEASE', defaultValue: '17', description: 'PSMDB Release') } @@ -36,8 +37,8 @@ pipeline { steps { script { def version = params.PSMDB_VERSION + '-' + params.PSMDB_RELEASE - build job: 'psmdb-docker', parameters: [string(name: 'PSMDB_REPO', value: "testing"), string(name: 'PSMDB_VERSION', value: version ), string(name: 'TARGET_REPO', value: "PerconaLab") ] - build job: 'psmdb-docker-arm', parameters: [string(name: 'PSMDB_REPO', value: "testing"), string(name: 'PSMDB_VERSION', value: version ), string(name: 'TARGET_REPO', value: "PerconaLab") ] + build job: 'hetzner-psmdb-docker', parameters: [string(name: 'PSMDB_REPO', value: "testing"), string(name: 'PSMDB_VERSION', value: version ), string(name: 'TARGET_REPO', value: "PerconaLab") ] + build job: 'hetzner-psmdb-docker-arm', parameters: [string(name: 'PSMDB_REPO', value: "testing"), string(name: 'PSMDB_VERSION', value: version ), string(name: 'TARGET_REPO', value: "PerconaLab") ] } } } @@ -45,8 +46,8 @@ pipeline { steps { script { def version = params.PSMDB_VERSION + '-' + params.PSMDB_RELEASE - build job: 'psmdb-integration', parameters: [string(name: 'PSMDB_VERSION', value: version), string(name: 'PBM_VERSION', value: "latest" ), string(name: 'PMM_VERSION', value: "latest"), string(name: 'PMM_REPO', value: "release"), string(name: 'PMM_IMAGE', value: "percona/pmm-server:latest") ] - build job: 'psmdb-integration', parameters: [string(name: 'PSMDB_VERSION', value: version), string(name: 'PBM_VERSION', value: "latest" ), string(name: 'PMM_VERSION', value: "latest"), string(name: 'PMM_REPO', value: "experimental"), string(name: 'PMM_IMAGE', value: "perconalab/pmm-server:dev-latest") ] + build job: 'hetzner-psmdb-integration', parameters: [string(name: 'PSMDB_VERSION', value: version), string(name: 'PBM_VERSION', value: "latest" ), string(name: 'PMM_VERSION', value: "latest"), string(name: 'PMM_REPO', value: "release"), string(name: 'PMM_IMAGE', value: "percona/pmm-server:latest") ] + build job: 'hetzner-psmdb-integration', parameters: [string(name: 'PSMDB_VERSION', value: version), string(name: 'PBM_VERSION', value: "latest" ), string(name: 'PMM_VERSION', value: "latest"), string(name: 'PMM_REPO', value: "experimental"), string(name: 'PMM_IMAGE', value: "perconalab/pmm-server:dev-latest") ] } } } diff --git a/psmdb/psmdb-multijob-testing.yml b/psmdb/psmdb-multijob-testing.yml index 8e38ceaf9f..c2c79ee26c 100644 --- a/psmdb/psmdb-multijob-testing.yml +++ b/psmdb/psmdb-multijob-testing.yml @@ -1,5 +1,5 @@ - job: - name: psmdb-multijob-testing + name: hetzner-psmdb-multijob-testing project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: psmdb/psmdb-multijob-testing.groovy diff --git a/psmdb/psmdb-site-check.groovy b/psmdb/psmdb-site-check.groovy index 6f27c7dfae..fe5d4ccbcf 100644 --- a/psmdb/psmdb-site-check.groovy +++ b/psmdb/psmdb-site-check.groovy @@ -5,12 +5,16 @@ library changelog: false, identifier: "lib@master", retriever: modernSCM([ pipeline { agent { - label 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } environment { PATH = '/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin' } parameters { + choice( + name: 'CLOUD', + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build') string( defaultValue: '7.0.2-1', description: 'PSMDB Version for tests', diff --git a/psmdb/psmdb-site-check.yml b/psmdb/psmdb-site-check.yml index e866533389..844ae07295 100644 --- a/psmdb/psmdb-site-check.yml +++ b/psmdb/psmdb-site-check.yml @@ -1,5 +1,5 @@ - job: - name: psmdb-site-check + name: hetzner-psmdb-site-check project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: psmdb/psmdb-site-check.groovy From 796c3b162f839d07df44220319a82723d79d8442 Mon Sep 17 00:00:00 2001 From: Sandra Romanchenko <53295797+sandraromanchenko@users.noreply.github.com> Date: Mon, 28 Apr 2025 11:29:15 +0300 Subject: [PATCH 097/269] PSMDB. PBM. Switch missing automation to hetzner, add missing changes from master (#3290) * PSMDB. Add missing change from master for integration tests with PMM * PBM. Switch missing automation to hetzner --- psmdb/jenkins/percona-server-for-mongodb-6.0.groovy | 2 +- psmdb/jenkins/percona-server-for-mongodb-7.0.groovy | 2 +- psmdb/jenkins/percona-server-for-mongodb-8.0.groovy | 2 +- psmdb/psmdb-docker-arm.groovy | 2 +- psmdb/psmdb-docker.groovy | 2 +- psmdb/psmdb-integration.groovy | 3 ++- psmdb/psmdb-multijob-testing.groovy | 11 ++++++----- 7 files changed, 13 insertions(+), 11 deletions(-) diff --git a/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy index ae5716cfa7..794e1b8f03 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy @@ -872,7 +872,7 @@ pipeline { PBM_RELEASE=\$(cd percona-backup-mongodb && git branch -r | grep release | sed 's|origin/||' | sort --version-sort | tail -1) echo \$PBM_RELEASE """).trim() - build job: 'pbm-functional-tests', propagate: false, wait: false, parameters: [string(name: 'PBM_BRANCH', value: pbm_branch ), string(name: 'PSMDB', value: psmdb_image ), string(name: 'TESTING_BRANCH', value: "pbm-${pbm_branch}")] + build job: 'hetzner-pbm-functional-tests', propagate: false, wait: false, parameters: [string(name: 'PBM_BRANCH', value: pbm_branch ), string(name: 'PSMDB', value: psmdb_image ), string(name: 'TESTING_BRANCH', value: "pbm-${pbm_branch}")] } } } diff --git a/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy index 2d36e6091f..87b12c3fae 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy @@ -906,7 +906,7 @@ pipeline { PBM_RELEASE=\$(cd percona-backup-mongodb && git branch -r | grep release | sed 's|origin/||' | sort --version-sort | tail -1) echo \$PBM_RELEASE """).trim() - build job: 'pbm-functional-tests', propagate: false, wait: false, parameters: [string(name: 'PBM_BRANCH', value: pbm_branch ), string(name: 'PSMDB', value: psmdb_image ), string(name: 'TESTING_BRANCH', value: "pbm-${pbm_branch}")] + build job: 'hetzner-pbm-functional-tests', propagate: false, wait: false, parameters: [string(name: 'PBM_BRANCH', value: pbm_branch ), string(name: 'PSMDB', value: psmdb_image ), string(name: 'TESTING_BRANCH', value: "pbm-${pbm_branch}")] } } } diff --git a/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy index 9f04f75b4d..2fcdf8a8c1 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy @@ -873,7 +873,7 @@ pipeline { PBM_RELEASE=\$(cd percona-backup-mongodb && git branch -r | grep release | sed 's|origin/||' | sort --version-sort | tail -1) echo \$PBM_RELEASE """).trim() - build job: 'pbm-functional-tests', propagate: false, wait: false, parameters: [string(name: 'PBM_BRANCH', value: pbm_branch ), string(name: 'PSMDB', value: psmdb_image ), string(name: 'TESTING_BRANCH', value: "pbm-${pbm_branch}")] + build job: 'hetzner-pbm-functional-tests', propagate: false, wait: false, parameters: [string(name: 'PBM_BRANCH', value: pbm_branch ), string(name: 'PSMDB', value: psmdb_image ), string(name: 'TESTING_BRANCH', value: "pbm-${pbm_branch}")] } } } diff --git a/psmdb/psmdb-docker-arm.groovy b/psmdb/psmdb-docker-arm.groovy index 1afa6fae7e..ad281270a0 100644 --- a/psmdb/psmdb-docker-arm.groovy +++ b/psmdb/psmdb-docker-arm.groovy @@ -235,7 +235,7 @@ pipeline { PBM_RELEASE=\$(cd percona-backup-mongodb && git branch -r | grep release | sed 's|origin/||' | sort --version-sort | tail -1) echo \$PBM_RELEASE """).trim() - build job: 'pbm-functional-tests', propagate: false, wait: false, parameters: [string(name: 'PBM_BRANCH', value: pbm_branch ), string(name: 'PSMDB', value: psmdb_image ), string(name: 'instance', value: 'docker-64gb-aarch64'), string(name: 'TESTING_BRANCH', value: "pbm-${pbm_branch}")] + build job: 'hetzner-pbm-functional-tests', propagate: false, wait: false, parameters: [string(name: 'PBM_BRANCH', value: pbm_branch ), string(name: 'PSMDB', value: psmdb_image ), string(name: 'instance', value: 'docker-64gb-aarch64'), string(name: 'TESTING_BRANCH', value: "pbm-${pbm_branch}")] } } } diff --git a/psmdb/psmdb-docker.groovy b/psmdb/psmdb-docker.groovy index c99f914093..00a45a7573 100644 --- a/psmdb/psmdb-docker.groovy +++ b/psmdb/psmdb-docker.groovy @@ -169,7 +169,7 @@ pipeline { PBM_RELEASE=\$(cd percona-backup-mongodb && git branch -r | grep release | sed 's|origin/||' | sort --version-sort | tail -1) echo \$PBM_RELEASE """).trim() - build job: 'pbm-functional-tests', propagate: false, wait: false, parameters: [string(name: 'PBM_BRANCH', value: pbm_branch ), string(name: 'PSMDB', value: psmdb_image ), string(name: 'TESTING_BRANCH', value: "pbm-${pbm_branch}")] + build job: 'hetzner-pbm-functional-tests', propagate: false, wait: false, parameters: [string(name: 'PBM_BRANCH', value: pbm_branch ), string(name: 'PSMDB', value: psmdb_image ), string(name: 'TESTING_BRANCH', value: "pbm-${pbm_branch}")] } } } diff --git a/psmdb/psmdb-integration.groovy b/psmdb/psmdb-integration.groovy index 0c08d732a6..d0fe888ace 100644 --- a/psmdb/psmdb-integration.groovy +++ b/psmdb/psmdb-integration.groovy @@ -12,6 +12,7 @@ pipeline { } parameters { choice(name: 'CLOUD', choices: [ 'Hetzner','AWS' ], description: 'Cloud infra for build') + string(name: 'TEST_VERSION', defaultValue: 'main', description: 'Integration tests version: main, v3') string(name: 'PSMDB_VERSION', defaultValue: 'latest', description: 'PSMDB version') string(name: 'PBM_VERSION', defaultValue: 'latest', description: 'PBM version') string(name: 'PMM_VERSION', defaultValue: 'latest', description: 'PMM2 agent version') @@ -30,7 +31,7 @@ pipeline { -H "Accept: application/vnd.github.v3+json" \ -H "Authorization: token ${GITHUB_API_TOKEN}" \ "https://api.github.com/repos/Percona-Lab/qa-integration/actions/workflows/PMM_PSMDB_PBM.yml/dispatches" \ - -d '{"ref":"main","inputs":{"psmdb_version":"${params.PSMDB_VERSION}","pbm_version":"${params.PBM_VERSION}","pmm_version":"${params.PMM_VERSION}","pmm_repo":"${params.PMM_REPO}","pmm_image":"${params.PMM_IMAGE}"}}' + -d '{"ref":"${params.TEST_VERSION}","inputs":{"psmdb_version":"${params.PSMDB_VERSION}","pbm_version":"${params.PBM_VERSION}","pmm_version":"${params.PMM_VERSION}","pmm_repo":"${params.PMM_REPO}","pmm_image":"${params.PMM_IMAGE}"}}' """ } } diff --git a/psmdb/psmdb-multijob-testing.groovy b/psmdb/psmdb-multijob-testing.groovy index 42a3270834..bf78448c52 100644 --- a/psmdb/psmdb-multijob-testing.groovy +++ b/psmdb/psmdb-multijob-testing.groovy @@ -33,10 +33,10 @@ pipeline { build job: 'psmdb-parallel', parameters: [ string(name: 'REPO', value: "testing"), string(name: 'PSMDB_VERSION', value: params.PSMDB_VERSION ), string(name: 'ENABLE_TOOLKIT', value: "false"), string(name: 'TESTING_BRANCH', value: "main") ] } } - stage ('Build docker images and check for vulnerabilities') { - steps { + stage ('Build docker images and check for vulnerabilities') { + steps { script { - def version = params.PSMDB_VERSION + '-' + params.PSMDB_RELEASE + def version = params.PSMDB_VERSION + '-' + params.PSMDB_RELEASE build job: 'hetzner-psmdb-docker', parameters: [string(name: 'PSMDB_REPO', value: "testing"), string(name: 'PSMDB_VERSION', value: version ), string(name: 'TARGET_REPO', value: "PerconaLab") ] build job: 'hetzner-psmdb-docker-arm', parameters: [string(name: 'PSMDB_REPO', value: "testing"), string(name: 'PSMDB_VERSION', value: version ), string(name: 'TARGET_REPO', value: "PerconaLab") ] } @@ -46,8 +46,9 @@ pipeline { steps { script { def version = params.PSMDB_VERSION + '-' + params.PSMDB_RELEASE - build job: 'hetzner-psmdb-integration', parameters: [string(name: 'PSMDB_VERSION', value: version), string(name: 'PBM_VERSION', value: "latest" ), string(name: 'PMM_VERSION', value: "latest"), string(name: 'PMM_REPO', value: "release"), string(name: 'PMM_IMAGE', value: "percona/pmm-server:latest") ] - build job: 'hetzner-psmdb-integration', parameters: [string(name: 'PSMDB_VERSION', value: version), string(name: 'PBM_VERSION', value: "latest" ), string(name: 'PMM_VERSION', value: "latest"), string(name: 'PMM_REPO', value: "experimental"), string(name: 'PMM_IMAGE', value: "perconalab/pmm-server:dev-latest") ] + build job: 'hetzner-psmdb-integration', parameters: [string(name: 'TEST_VERSION', value: "main"), string(name: 'PSMDB_VERSION', value: version), string(name: 'PBM_VERSION', value: "latest" ), string(name: 'PMM_VERSION', value: "latest"), string(name: 'PMM_REPO', value: "release"), string(name: 'PMM_IMAGE', value: "percona/pmm-server:2") ] + build job: 'hetzner-psmdb-integration', parameters: [string(name: 'TEST_VERSION', value: "v3"), string(name: 'PSMDB_VERSION', value: version), string(name: 'PBM_VERSION', value: "latest" ), string(name: 'PMM_VERSION', value: "latest"), string(name: 'PMM_REPO', value: "release"), string(name: 'PMM_IMAGE', value: "percona/pmm-server:latest") ] + build job: 'hetzner-psmdb-integration', parameters: [string(name: 'TEST_VERSION', value: "v3"), string(name: 'PSMDB_VERSION', value: version), string(name: 'PBM_VERSION', value: "latest" ), string(name: 'PMM_VERSION', value: "latest"), string(name: 'PMM_REPO', value: "experimental"), string(name: 'PMM_IMAGE', value: "perconalab/pmm-server:dev-latest") ] } } } From a9ed281c6e67c3d6d922c9b3d7d64617c91cda4e Mon Sep 17 00:00:00 2001 From: Sandra Romanchenko <53295797+sandraromanchenko@users.noreply.github.com> Date: Tue, 29 Apr 2025 15:23:13 +0300 Subject: [PATCH 098/269] PSMDB. Fix PBM test start (#3293) --- psmdb/psmdb-docker-arm.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/psmdb/psmdb-docker-arm.groovy b/psmdb/psmdb-docker-arm.groovy index ad281270a0..a23fd2d20b 100644 --- a/psmdb/psmdb-docker-arm.groovy +++ b/psmdb/psmdb-docker-arm.groovy @@ -235,7 +235,7 @@ pipeline { PBM_RELEASE=\$(cd percona-backup-mongodb && git branch -r | grep release | sed 's|origin/||' | sort --version-sort | tail -1) echo \$PBM_RELEASE """).trim() - build job: 'hetzner-pbm-functional-tests', propagate: false, wait: false, parameters: [string(name: 'PBM_BRANCH', value: pbm_branch ), string(name: 'PSMDB', value: psmdb_image ), string(name: 'instance', value: 'docker-64gb-aarch64'), string(name: 'TESTING_BRANCH', value: "pbm-${pbm_branch}")] + build job: 'hetzner-pbm-functional-tests', propagate: false, wait: false, parameters: [string(name: 'PBM_BRANCH', value: pbm_branch ), string(name: 'PSMDB', value: psmdb_image ), string(name: 'instance', value: 'docker-aarch64'), string(name: 'TESTING_BRANCH', value: "pbm-${pbm_branch}")] } } } From da3262f5177125114d1b94c3566f1b97a6da9bfb Mon Sep 17 00:00:00 2001 From: Muhammad Aqeel Date: Wed, 30 Apr 2025 12:50:06 +0500 Subject: [PATCH 099/269] [PKG-639]: Jenkins job to generate PG SBOM json files. (#3295) --- ppg/pg_generate_sbom.groovy | 412 +++++++++++++++++++++ ppg/pg_generate_sbom.yml | 15 + vars/uploadPGSBOMToDownloadsTesting.groovy | 29 ++ vars/uploadPGSBOMfromAWS.groovy | 26 ++ 4 files changed, 482 insertions(+) create mode 100644 ppg/pg_generate_sbom.groovy create mode 100644 ppg/pg_generate_sbom.yml create mode 100644 vars/uploadPGSBOMToDownloadsTesting.groovy create mode 100644 vars/uploadPGSBOMfromAWS.groovy diff --git a/ppg/pg_generate_sbom.groovy b/ppg/pg_generate_sbom.groovy new file mode 100644 index 0000000000..9b21e8a790 --- /dev/null +++ b/ppg/pg_generate_sbom.groovy @@ -0,0 +1,412 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + sh """ + set -o xtrace + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/pg_sbom/pg_generate_sbom.sh -O pg_generate_sbom.sh + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./pg_generate_sbom.sh --pg_version=${PG_VERSION} --repo_type=${REPO_TYPE}" + """ +} + +void uploadPGSBOMToTestingDownloadServer(String productName, String packageVersion, String SBOMType) { + + script { + try { + uploadPGSBOMToDownloadsTesting(params.CLOUD, productName, packageVersion, SBOMType) + } catch (err) { + echo "Caught: ${err}" + currentBuild.result = 'UNSTABLE' + } + } +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def TIMESTAMP + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/percona/postgres-packaging.git', + description: 'URL for pg_sbom repository', + name: 'GIT_REPO') + string( + defaultValue: '17.4', + description: 'Version of PostgreSQL server', + name: 'PG_VERSION') + string( + defaultValue: 'main', + description: 'Tag/Branch for postgres packaging repository', + name: 'GIT_BRANCH') + choice( + choices: 'laboratory\ntesting\nexperimental\nrelease', + description: 'Packaging repository type', + name: 'REPO_TYPE') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + stages { + + stage('Create timestamp') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") + cleanUpWS() + script { + TIMESTAMP = sh(script: 'date +%Y%m%d%H%M%S', returnStdout: true).trim() + sh """ + echo ${TIMESTAMP} > timestamp + cat timestamp + """ + TIMESTAMP = sh(returnStdout: true, script: "cat timestamp").trim() + } + stash includes: 'timestamp', name: 'timestamp' + } + } + + stage('Generate SBOM') { + parallel { + stage('Generate PG SBOM OL/8 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${DESTINATION}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PG_VERSION} + cat uploadPath-${PG_VERSION} + """ + stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" + buildStage("oraclelinux:8") + pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) + uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") + uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") + } + } + } + stage('Generate PG SBOM OL/8 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${DESTINATION}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PG_VERSION} + cat uploadPath-${PG_VERSION} + """ + stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" + buildStage("oraclelinux:8") + pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) + uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") + uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") + } + } + } + stage('Generate PG SBOM OL/9 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${DESTINATION}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PG_VERSION} + cat uploadPath-${PG_VERSION} + """ + stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" + buildStage("oraclelinux:9") + pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) + uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") + uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") + } + } + } + stage('Generate PG SBOM OL/9 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${DESTINATION}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PG_VERSION} + cat uploadPath-${PG_VERSION} + """ + stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" + buildStage("oraclelinux:9") + pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) + uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") + uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") + } + } + } + stage('Generate PG SBOM Focal AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${DESTINATION}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PG_VERSION} + cat uploadPath-${PG_VERSION} + """ + stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" + buildStage("ubuntu:focal") + pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) + uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") + uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") + } + } + } + stage('Generate PG SBOM Focal ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${DESTINATION}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PG_VERSION} + cat uploadPath-${PG_VERSION} + """ + stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" + buildStage("ubuntu:focal") + pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) + uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") + uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") + } + } + } + stage('Generate PG SBOM Jammy AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${DESTINATION}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PG_VERSION} + cat uploadPath-${PG_VERSION} + """ + stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" + buildStage("ubuntu:jammy") + pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) + uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") + uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") + } + } + } + stage('Generate PG SBOM Jammy ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${DESTINATION}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PG_VERSION} + cat uploadPath-${PG_VERSION} + """ + stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" + buildStage("ubuntu:jammy") + pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) + uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") + uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") + } + } + } + stage('Generate PG SBOM Noble AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${DESTINATION}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PG_VERSION} + cat uploadPath-${PG_VERSION} + """ + stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" + buildStage("ubuntu:noble") + pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) + uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") + uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") + } + } + } + stage('Generate PG SBOM Noble ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${DESTINATION}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PG_VERSION} + cat uploadPath-${PG_VERSION} + """ + stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" + buildStage("ubuntu:noble") + pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) + uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") + uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") + } + } + } + stage('Generate PG SBOM Bullseye AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${DESTINATION}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PG_VERSION} + cat uploadPath-${PG_VERSION} + """ + stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" + buildStage("debian:bullseye") + pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) + uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") + uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") + } + } + } + stage('Generate PG SBOM Bullseye ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${DESTINATION}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PG_VERSION} + cat uploadPath-${PG_VERSION} + """ + stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" + buildStage("debian:bullseye") + pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) + uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") + uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") + } + } + } + stage('Generate PG SBOM Bookworm AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${DESTINATION}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PG_VERSION} + cat uploadPath-${PG_VERSION} + """ + stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" + buildStage("debian:bookworm") + pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) + uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") + uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") + } + } + } + stage('Generate PG SBOM Bookworm ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${DESTINATION}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PG_VERSION} + cat uploadPath-${PG_VERSION} + """ + stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" + buildStage("debian:bookworm") + pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) + uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") + uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") + } + } + } + } //parallel + } // stage + + } + post { + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}" + } + deleteDir() + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/ppg/pg_generate_sbom.yml b/ppg/pg_generate_sbom.yml new file mode 100644 index 0000000000..32966dd55c --- /dev/null +++ b/ppg/pg_generate_sbom.yml @@ -0,0 +1,15 @@ +- job: + name: hetzner-pg_generate_sbom + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/pg_generate_sbom.groovy + diff --git a/vars/uploadPGSBOMToDownloadsTesting.groovy b/vars/uploadPGSBOMToDownloadsTesting.groovy new file mode 100644 index 0000000000..b1c286bb98 --- /dev/null +++ b/vars/uploadPGSBOMToDownloadsTesting.groovy @@ -0,0 +1,29 @@ +def call(String CLOUD_NAME, String PRODUCT_NAME, String PRODUCT_VERSION, String SBOMType) { + def nodeLabel = (CLOUD_NAME == 'Hetzner') ? 'launcher-x64' : 'master' + node(nodeLabel) { + deleteDir() + unstash "uploadPath-${PRODUCT_VERSION}" + def path_to_build = sh(returnStdout: true, script: "cat uploadPath-${PRODUCT_VERSION}").trim() + withCredentials([sshUserPrivateKey(credentialsId: 'repo.ci.percona.com', keyFileVariable: 'KEY_PATH', usernameVariable: 'USER')]) { + sh """ + set -o xtrace + + cat /etc/hosts > hosts + echo '10.30.6.9 repo.ci.percona.com' >> hosts + sudo cp ./hosts /etc || true + + # Cut prefix if it's provided + cutProductVersion=\$(echo ${PRODUCT_VERSION} | sed 's/release-//g'); + + ssh -o StrictHostKeyChecking=no -i ${KEY_PATH} ${USER}@repo.ci.percona.com \ + ssh -p 2222 jenkins-deploy.jenkins-deploy.web.r.int.percona.com mkdir -p /data/downloads/TESTING/${PRODUCT_NAME}-\${cutProductVersion} + + ssh -o StrictHostKeyChecking=no -i ${KEY_PATH} ${USER}@repo.ci.percona.com \ + rsync -avt -e '"ssh -p 2222"' --bwlimit=50000 --progress ${path_to_build}/${SBOMType}/* jenkins-deploy.jenkins-deploy.web.r.int.percona.com:/data/downloads/TESTING/${PRODUCT_NAME}-\${cutProductVersion}/ + + curl https://www.percona.com/admin/config/percona/percona_downloads/crawl_directory + """ + } + deleteDir() + } +} diff --git a/vars/uploadPGSBOMfromAWS.groovy b/vars/uploadPGSBOMfromAWS.groovy new file mode 100644 index 0000000000..37b4ef7fd1 --- /dev/null +++ b/vars/uploadPGSBOMfromAWS.groovy @@ -0,0 +1,26 @@ +def call(String CLOUD_NAME, String FOLDER_NAME, String AWS_STASH_PATH, String SBOMType, String PRODUCT_VERSION) { + def nodeLabel = (CLOUD_NAME == 'Hetzner') ? 'launcher-x64' : 'micro-amazon' + node(nodeLabel) { + deleteDir() + popArtifactFolder(CLOUD_NAME, FOLDER_NAME, AWS_STASH_PATH) + unstash "uploadPath-${PRODUCT_VERSION}" + withCredentials([sshUserPrivateKey(credentialsId: 'repo.ci.percona.com', keyFileVariable: 'KEY_PATH', usernameVariable: 'USER')]) { + sh """ + export path_to_build=`cat uploadPath-${PRODUCT_VERSION}` + + cat /etc/hosts > hosts + echo '10.30.6.9 repo.ci.percona.com' >> hosts + sudo cp ./hosts /etc || true + + ssh -o StrictHostKeyChecking=no -i ${KEY_PATH} ${USER}@repo.ci.percona.com \ + mkdir -p \${path_to_build}/${SBOMType}/ + + scp -o StrictHostKeyChecking=no -i ${KEY_PATH} \ + `find . -name '*.tar.*'` \ + ${USER}@repo.ci.percona.com:\${path_to_build}/${SBOMType}/ + + """ + } + deleteDir() + } +} From b91d6719a07b9a7c3bedfbabc3c778177269e8b4 Mon Sep 17 00:00:00 2001 From: Sandra Romanchenko <53295797+sandraromanchenko@users.noreply.github.com> Date: Wed, 30 Apr 2025 10:52:21 +0300 Subject: [PATCH 100/269] PSMDB. Change integration run parameters (#3296) --- psmdb/psmdb-multijob-testing.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/psmdb/psmdb-multijob-testing.groovy b/psmdb/psmdb-multijob-testing.groovy index bf78448c52..fc5acc2f66 100644 --- a/psmdb/psmdb-multijob-testing.groovy +++ b/psmdb/psmdb-multijob-testing.groovy @@ -48,7 +48,7 @@ pipeline { def version = params.PSMDB_VERSION + '-' + params.PSMDB_RELEASE build job: 'hetzner-psmdb-integration', parameters: [string(name: 'TEST_VERSION', value: "main"), string(name: 'PSMDB_VERSION', value: version), string(name: 'PBM_VERSION', value: "latest" ), string(name: 'PMM_VERSION', value: "latest"), string(name: 'PMM_REPO', value: "release"), string(name: 'PMM_IMAGE', value: "percona/pmm-server:2") ] build job: 'hetzner-psmdb-integration', parameters: [string(name: 'TEST_VERSION', value: "v3"), string(name: 'PSMDB_VERSION', value: version), string(name: 'PBM_VERSION', value: "latest" ), string(name: 'PMM_VERSION', value: "latest"), string(name: 'PMM_REPO', value: "release"), string(name: 'PMM_IMAGE', value: "percona/pmm-server:latest") ] - build job: 'hetzner-psmdb-integration', parameters: [string(name: 'TEST_VERSION', value: "v3"), string(name: 'PSMDB_VERSION', value: version), string(name: 'PBM_VERSION', value: "latest" ), string(name: 'PMM_VERSION', value: "latest"), string(name: 'PMM_REPO', value: "experimental"), string(name: 'PMM_IMAGE', value: "perconalab/pmm-server:dev-latest") ] + build job: 'hetzner-psmdb-integration', parameters: [string(name: 'TEST_VERSION', value: "v3"), string(name: 'PSMDB_VERSION', value: version), string(name: 'PBM_VERSION', value: "latest" ), string(name: 'PMM_VERSION', value: "latest"), string(name: 'PMM_REPO', value: "experimental"), string(name: 'PMM_IMAGE', value: "perconalab/pmm-server:3-dev-latest") ] } } } From 5175e3196002cda7af852533072c95ce75e048c9 Mon Sep 17 00:00:00 2001 From: Muhammad Aqeel Date: Wed, 30 Apr 2025 14:09:26 +0500 Subject: [PATCH 101/269] [PKG-639]: Fixes variable name issue. (#3297) --- ppg/pg_generate_sbom.groovy | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/ppg/pg_generate_sbom.groovy b/ppg/pg_generate_sbom.groovy index 9b21e8a790..0202d23f10 100644 --- a/ppg/pg_generate_sbom.groovy +++ b/ppg/pg_generate_sbom.groovy @@ -100,7 +100,7 @@ pipeline { cleanUpWS() script { unstash 'timestamp' - AWS_STASH_PATH="/srv/UPLOAD/${DESTINATION}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" sh """ echo ${AWS_STASH_PATH} > uploadPath-${PG_VERSION} cat uploadPath-${PG_VERSION} @@ -121,7 +121,7 @@ pipeline { cleanUpWS() script { unstash 'timestamp' - AWS_STASH_PATH="/srv/UPLOAD/${DESTINATION}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" sh """ echo ${AWS_STASH_PATH} > uploadPath-${PG_VERSION} cat uploadPath-${PG_VERSION} @@ -142,7 +142,7 @@ pipeline { cleanUpWS() script { unstash 'timestamp' - AWS_STASH_PATH="/srv/UPLOAD/${DESTINATION}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" sh """ echo ${AWS_STASH_PATH} > uploadPath-${PG_VERSION} cat uploadPath-${PG_VERSION} @@ -163,7 +163,7 @@ pipeline { cleanUpWS() script { unstash 'timestamp' - AWS_STASH_PATH="/srv/UPLOAD/${DESTINATION}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" sh """ echo ${AWS_STASH_PATH} > uploadPath-${PG_VERSION} cat uploadPath-${PG_VERSION} @@ -184,7 +184,7 @@ pipeline { cleanUpWS() script { unstash 'timestamp' - AWS_STASH_PATH="/srv/UPLOAD/${DESTINATION}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" sh """ echo ${AWS_STASH_PATH} > uploadPath-${PG_VERSION} cat uploadPath-${PG_VERSION} @@ -205,7 +205,7 @@ pipeline { cleanUpWS() script { unstash 'timestamp' - AWS_STASH_PATH="/srv/UPLOAD/${DESTINATION}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" sh """ echo ${AWS_STASH_PATH} > uploadPath-${PG_VERSION} cat uploadPath-${PG_VERSION} @@ -226,7 +226,7 @@ pipeline { cleanUpWS() script { unstash 'timestamp' - AWS_STASH_PATH="/srv/UPLOAD/${DESTINATION}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" sh """ echo ${AWS_STASH_PATH} > uploadPath-${PG_VERSION} cat uploadPath-${PG_VERSION} @@ -247,7 +247,7 @@ pipeline { cleanUpWS() script { unstash 'timestamp' - AWS_STASH_PATH="/srv/UPLOAD/${DESTINATION}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" sh """ echo ${AWS_STASH_PATH} > uploadPath-${PG_VERSION} cat uploadPath-${PG_VERSION} @@ -268,7 +268,7 @@ pipeline { cleanUpWS() script { unstash 'timestamp' - AWS_STASH_PATH="/srv/UPLOAD/${DESTINATION}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" sh """ echo ${AWS_STASH_PATH} > uploadPath-${PG_VERSION} cat uploadPath-${PG_VERSION} @@ -289,7 +289,7 @@ pipeline { cleanUpWS() script { unstash 'timestamp' - AWS_STASH_PATH="/srv/UPLOAD/${DESTINATION}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" sh """ echo ${AWS_STASH_PATH} > uploadPath-${PG_VERSION} cat uploadPath-${PG_VERSION} @@ -310,7 +310,7 @@ pipeline { cleanUpWS() script { unstash 'timestamp' - AWS_STASH_PATH="/srv/UPLOAD/${DESTINATION}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" sh """ echo ${AWS_STASH_PATH} > uploadPath-${PG_VERSION} cat uploadPath-${PG_VERSION} @@ -331,7 +331,7 @@ pipeline { cleanUpWS() script { unstash 'timestamp' - AWS_STASH_PATH="/srv/UPLOAD/${DESTINATION}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" sh """ echo ${AWS_STASH_PATH} > uploadPath-${PG_VERSION} cat uploadPath-${PG_VERSION} @@ -352,7 +352,7 @@ pipeline { cleanUpWS() script { unstash 'timestamp' - AWS_STASH_PATH="/srv/UPLOAD/${DESTINATION}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" sh """ echo ${AWS_STASH_PATH} > uploadPath-${PG_VERSION} cat uploadPath-${PG_VERSION} @@ -373,7 +373,7 @@ pipeline { cleanUpWS() script { unstash 'timestamp' - AWS_STASH_PATH="/srv/UPLOAD/${DESTINATION}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" sh """ echo ${AWS_STASH_PATH} > uploadPath-${PG_VERSION} cat uploadPath-${PG_VERSION} From f45977ce437a234354ac1d6b18b66b20d7093927 Mon Sep 17 00:00:00 2001 From: Muhammad Aqeel Date: Wed, 30 Apr 2025 14:25:40 +0500 Subject: [PATCH 102/269] [PKG-639]: Adds missing parameter to build function. (#3299) --- ppg/pg_generate_sbom.groovy | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/ppg/pg_generate_sbom.groovy b/ppg/pg_generate_sbom.groovy index 0202d23f10..973c4c4ffc 100644 --- a/ppg/pg_generate_sbom.groovy +++ b/ppg/pg_generate_sbom.groovy @@ -13,7 +13,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " set -o xtrace cd \${build_dir} - bash -x ./pg_generate_sbom.sh --pg_version=${PG_VERSION} --repo_type=${REPO_TYPE}" + bash -x ./pg_generate_sbom.sh --pg_version=${PG_VERSION} --repo_type=${REPO_TYPE} ${STAGE_PARAM}" """ } @@ -106,7 +106,7 @@ pipeline { cat uploadPath-${PG_VERSION} """ stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" - buildStage("oraclelinux:8") + buildStage("oraclelinux:8", "") pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") @@ -127,7 +127,7 @@ pipeline { cat uploadPath-${PG_VERSION} """ stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" - buildStage("oraclelinux:8") + buildStage("oraclelinux:8", "") pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") @@ -148,7 +148,7 @@ pipeline { cat uploadPath-${PG_VERSION} """ stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" - buildStage("oraclelinux:9") + buildStage("oraclelinux:9", "") pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") @@ -169,7 +169,7 @@ pipeline { cat uploadPath-${PG_VERSION} """ stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" - buildStage("oraclelinux:9") + buildStage("oraclelinux:9", "") pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") @@ -190,7 +190,7 @@ pipeline { cat uploadPath-${PG_VERSION} """ stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" - buildStage("ubuntu:focal") + buildStage("ubuntu:focal", "") pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") @@ -211,7 +211,7 @@ pipeline { cat uploadPath-${PG_VERSION} """ stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" - buildStage("ubuntu:focal") + buildStage("ubuntu:focal", "") pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") @@ -232,7 +232,7 @@ pipeline { cat uploadPath-${PG_VERSION} """ stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" - buildStage("ubuntu:jammy") + buildStage("ubuntu:jammy", "") pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") @@ -253,7 +253,7 @@ pipeline { cat uploadPath-${PG_VERSION} """ stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" - buildStage("ubuntu:jammy") + buildStage("ubuntu:jammy", "") pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") @@ -274,7 +274,7 @@ pipeline { cat uploadPath-${PG_VERSION} """ stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" - buildStage("ubuntu:noble") + buildStage("ubuntu:noble", "") pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") @@ -295,7 +295,7 @@ pipeline { cat uploadPath-${PG_VERSION} """ stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" - buildStage("ubuntu:noble") + buildStage("ubuntu:noble", "") pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") @@ -316,7 +316,7 @@ pipeline { cat uploadPath-${PG_VERSION} """ stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" - buildStage("debian:bullseye") + buildStage("debian:bullseye", "") pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") @@ -337,7 +337,7 @@ pipeline { cat uploadPath-${PG_VERSION} """ stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" - buildStage("debian:bullseye") + buildStage("debian:bullseye", "") pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") @@ -358,7 +358,7 @@ pipeline { cat uploadPath-${PG_VERSION} """ stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" - buildStage("debian:bookworm") + buildStage("debian:bookworm", "") pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") @@ -379,7 +379,7 @@ pipeline { cat uploadPath-${PG_VERSION} """ stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" - buildStage("debian:bookworm") + buildStage("debian:bookworm", "") pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") From ffac0644a70b3321cf4305ce7bb2f9de34937b42 Mon Sep 17 00:00:00 2001 From: Muhammad Aqeel Date: Wed, 30 Apr 2025 14:38:39 +0500 Subject: [PATCH 103/269] [PKG-639]: Fixes the issue with upload command (#3300) --- vars/uploadPGSBOMfromAWS.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vars/uploadPGSBOMfromAWS.groovy b/vars/uploadPGSBOMfromAWS.groovy index 37b4ef7fd1..289a85ef03 100644 --- a/vars/uploadPGSBOMfromAWS.groovy +++ b/vars/uploadPGSBOMfromAWS.groovy @@ -16,7 +16,7 @@ def call(String CLOUD_NAME, String FOLDER_NAME, String AWS_STASH_PATH, String SB mkdir -p \${path_to_build}/${SBOMType}/ scp -o StrictHostKeyChecking=no -i ${KEY_PATH} \ - `find . -name '*.tar.*'` \ + `find . -name '*.json'` \ ${USER}@repo.ci.percona.com:\${path_to_build}/${SBOMType}/ """ From a96e4ad68cc85ba7475553a2ab66e0c1893092f7 Mon Sep 17 00:00:00 2001 From: Muhammad Aqeel Date: Wed, 30 Apr 2025 15:24:35 +0500 Subject: [PATCH 104/269] [PKG-639]: Fixes the path issue with upload command (#3301) --- ppg/pg_generate_sbom.groovy | 56 ++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/ppg/pg_generate_sbom.groovy b/ppg/pg_generate_sbom.groovy index 973c4c4ffc..38decca78d 100644 --- a/ppg/pg_generate_sbom.groovy +++ b/ppg/pg_generate_sbom.groovy @@ -107,8 +107,8 @@ pipeline { """ stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" buildStage("oraclelinux:8", "") - pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) - uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") + pushArtifactFolder(params.CLOUD, "pg_sbom/", AWS_STASH_PATH) + uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") } } @@ -128,8 +128,8 @@ pipeline { """ stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" buildStage("oraclelinux:8", "") - pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) - uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") + pushArtifactFolder(params.CLOUD, "pg_sbom/", AWS_STASH_PATH) + uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") } } @@ -149,8 +149,8 @@ pipeline { """ stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" buildStage("oraclelinux:9", "") - pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) - uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") + pushArtifactFolder(params.CLOUD, "pg_sbom/", AWS_STASH_PATH) + uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") } } @@ -170,8 +170,8 @@ pipeline { """ stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" buildStage("oraclelinux:9", "") - pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) - uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") + pushArtifactFolder(params.CLOUD, "pg_sbom/", AWS_STASH_PATH) + uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") } } @@ -191,8 +191,8 @@ pipeline { """ stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" buildStage("ubuntu:focal", "") - pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) - uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") + pushArtifactFolder(params.CLOUD, "pg_sbom/", AWS_STASH_PATH) + uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") } } @@ -212,8 +212,8 @@ pipeline { """ stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" buildStage("ubuntu:focal", "") - pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) - uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") + pushArtifactFolder(params.CLOUD, "pg_sbom/", AWS_STASH_PATH) + uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") } } @@ -233,8 +233,8 @@ pipeline { """ stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" buildStage("ubuntu:jammy", "") - pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) - uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") + pushArtifactFolder(params.CLOUD, "pg_sbom/", AWS_STASH_PATH) + uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") } } @@ -254,8 +254,8 @@ pipeline { """ stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" buildStage("ubuntu:jammy", "") - pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) - uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") + pushArtifactFolder(params.CLOUD, "pg_sbom/", AWS_STASH_PATH) + uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") } } @@ -275,8 +275,8 @@ pipeline { """ stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" buildStage("ubuntu:noble", "") - pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) - uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") + pushArtifactFolder(params.CLOUD, "pg_sbom/", AWS_STASH_PATH) + uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") } } @@ -296,8 +296,8 @@ pipeline { """ stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" buildStage("ubuntu:noble", "") - pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) - uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") + pushArtifactFolder(params.CLOUD, "pg_sbom/", AWS_STASH_PATH) + uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") } } @@ -317,8 +317,8 @@ pipeline { """ stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" buildStage("debian:bullseye", "") - pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) - uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") + pushArtifactFolder(params.CLOUD, "pg_sbom/", AWS_STASH_PATH) + uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") } } @@ -338,8 +338,8 @@ pipeline { """ stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" buildStage("debian:bullseye", "") - pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) - uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") + pushArtifactFolder(params.CLOUD, "pg_sbom/", AWS_STASH_PATH) + uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") } } @@ -359,8 +359,8 @@ pipeline { """ stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" buildStage("debian:bookworm", "") - pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) - uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") + pushArtifactFolder(params.CLOUD, "pg_sbom/", AWS_STASH_PATH) + uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") } } @@ -380,8 +380,8 @@ pipeline { """ stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" buildStage("debian:bookworm", "") - pushArtifactFolder(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH) - uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom-${PG_VERSION}/", AWS_STASH_PATH, "json", "${PG_VERSION}") + pushArtifactFolder(params.CLOUD, "pg_sbom/", AWS_STASH_PATH) + uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") } } From 6ea8c91b9a91f273daa322c9e873e80cd1c7cf25 Mon Sep 17 00:00:00 2001 From: Oleksandr Havryliak <88387200+olexandr-havryliak@users.noreply.github.com> Date: Thu, 8 May 2025 13:31:48 +0300 Subject: [PATCH 105/269] PBM update default golang image (#3310) --- pbm/pbm-functional-tests-full.groovy | 2 +- pbm/pbm-functional-tests.groovy | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pbm/pbm-functional-tests-full.groovy b/pbm/pbm-functional-tests-full.groovy index 0affd472e8..a69f93e60a 100644 --- a/pbm/pbm-functional-tests-full.groovy +++ b/pbm/pbm-functional-tests-full.groovy @@ -12,7 +12,7 @@ pipeline { } parameters { string(name: 'PBM_BRANCH', defaultValue: 'main', description: 'PBM branch or commit') - string(name: 'GO_VER', defaultValue: '1.22-bullseye', description: 'GOLANG docker image for building PBM from sources') + string(name: 'GO_VER', defaultValue: 'bullseye', description: 'GOLANG docker image for building PBM from sources') choice(name: 'instance', choices: ['docker-64gb','docker-64gb-aarch64'], description: 'Ec2 instance type for running tests') string(name: 'TESTING_BRANCH', defaultValue: 'main', description: 'psmdb-testing repo branch') } diff --git a/pbm/pbm-functional-tests.groovy b/pbm/pbm-functional-tests.groovy index 6c10d447d4..685e316dec 100644 --- a/pbm/pbm-functional-tests.groovy +++ b/pbm/pbm-functional-tests.groovy @@ -13,7 +13,7 @@ pipeline { parameters { string(name: 'PBM_BRANCH', defaultValue: 'main', description: 'PBM branch') string(name: 'PSMDB', defaultValue: 'percona/percona-server-mongodb', description: 'PSMDB docker image') - string(name: 'GO_VER', defaultValue: '1.22-bullseye', description: 'GOLANG docker image for building PBM from sources') + string(name: 'GO_VER', defaultValue: 'bullseye', description: 'GOLANG docker image for building PBM from sources') choice(name: 'instance', choices: ['docker-64gb','docker-64gb-aarch64'], description: 'Ec2 instance type for running tests') string(name: 'TESTING_BRANCH', defaultValue: 'main', description: 'psmdb-testing repo branch') } From a207480c3fafc7045a99e2d13c7dd3bab0995e5b Mon Sep 17 00:00:00 2001 From: Oleksandr Havryliak <88387200+olexandr-havryliak@users.noreply.github.com> Date: Thu, 8 May 2025 13:32:34 +0300 Subject: [PATCH 106/269] PSMDB regression tests to Hetzner (#3289) --- psmdb/psmdb-regression.groovy | 6 +++--- psmdb/psmdb-regression.yml | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/psmdb/psmdb-regression.groovy b/psmdb/psmdb-regression.groovy index 387fba2469..8e2c72f817 100644 --- a/psmdb/psmdb-regression.groovy +++ b/psmdb/psmdb-regression.groovy @@ -1,11 +1,11 @@ -library changelog: false, identifier: "lib@master", retriever: modernSCM([ +library changelog: false, identifier: "lib@hetzner", retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' ]) pipeline { agent { - label 'master' + label 'launcher-x64' } environment { PATH = '/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin' @@ -22,7 +22,7 @@ pipeline { string(name: 'parallelexecutors', defaultValue: '1', description: 'Number of parallel executors') string(name: 'testsuites', defaultValue: 'core,unittests,dbtest', description: 'Comma-separated list of testuites') string(name: 'listsuites', defaultValue: '', description: 'URL with list of testuites') - choice(name: 'instance', choices: ['docker-64gb','docker-64gb-aarch64'], description: 'Ec2 instance type for running suites') + choice(name: 'instance', choices: ['docker-x64','docker-aarch64'], description: 'Hetzner instance type for running suites') string(name: 'paralleljobs', defaultValue: '4', description: 'Number of parallel jobs passed to resmoke.py') booleanParam(name: 'unittests',defaultValue: true, description: 'Check if list of suites contains unittests') booleanParam(name: 'integrationtests',defaultValue: false, description: 'Check if list of suites contains integration tests') diff --git a/psmdb/psmdb-regression.yml b/psmdb/psmdb-regression.yml index 16682a50c4..c8098e9e41 100644 --- a/psmdb/psmdb-regression.yml +++ b/psmdb/psmdb-regression.yml @@ -1,5 +1,5 @@ - job: - name: psmdb-regression + name: hetzner-psmdb-regression project-type: pipeline description: | Do not edit this job through the web! @@ -8,7 +8,7 @@ - git: url: https://github.com/Percona-Lab/jenkins-pipelines.git branches: - - 'master' + - 'hetzner' wipe-workspace: false lightweight-checkout: true script-path: psmdb/psmdb-regression.groovy From 1dcff39a2039d80d4d6d010d042f1cccba2f669c Mon Sep 17 00:00:00 2001 From: Oleksandr Havryliak <88387200+olexandr-havryliak@users.noreply.github.com> Date: Tue, 13 May 2025 11:55:04 +0300 Subject: [PATCH 107/269] PBM update golang (#3317) --- pbm/hetzner-pbm-functional-tests-full.groovy | 2 +- pbm/hetzner-pbm-functional-tests.groovy | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pbm/hetzner-pbm-functional-tests-full.groovy b/pbm/hetzner-pbm-functional-tests-full.groovy index 3032225b45..0fbe2efb95 100644 --- a/pbm/hetzner-pbm-functional-tests-full.groovy +++ b/pbm/hetzner-pbm-functional-tests-full.groovy @@ -12,7 +12,7 @@ pipeline { } parameters { string(name: 'PBM_BRANCH', defaultValue: 'main', description: 'PBM branch or commit') - string(name: 'GO_VER', defaultValue: '1.22-bullseye', description: 'GOLANG docker image for building PBM from sources') + string(name: 'GO_VER', defaultValue: 'bullseye', description: 'GOLANG docker image for building PBM from sources') choice(name: 'instance', choices: ['docker-x64','docker-aarch64'], description: 'Instance type for running tests') string(name: 'TESTING_BRANCH', defaultValue: 'main', description: 'psmdb-testing repo branch') string(name: 'PYTEST_PARAMS', defaultValue: '', description: 'Extra args passed to pytest') diff --git a/pbm/hetzner-pbm-functional-tests.groovy b/pbm/hetzner-pbm-functional-tests.groovy index d89cc6eecc..1bf634cc11 100644 --- a/pbm/hetzner-pbm-functional-tests.groovy +++ b/pbm/hetzner-pbm-functional-tests.groovy @@ -13,7 +13,7 @@ pipeline { parameters { string(name: 'PBM_BRANCH', defaultValue: 'main', description: 'PBM branch') string(name: 'PSMDB', defaultValue: 'percona/percona-server-mongodb', description: 'PSMDB docker image') - string(name: 'GO_VER', defaultValue: '1.22-bullseye', description: 'GOLANG docker image for building PBM from sources') + string(name: 'GO_VER', defaultValue: 'bullseye', description: 'GOLANG docker image for building PBM from sources') choice(name: 'instance', choices: ['docker-x64','docker-aarch64'], description: 'Instance type for running tests') string(name: 'TESTING_BRANCH', defaultValue: 'main', description: 'psmdb-testing repo branch') string(name: 'PYTEST_PARAMS', defaultValue: '', description: 'Extra args passed to pytest') From 0b78c7373914fea588a29fb98c1bd305ad197e7b Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Mon, 12 May 2025 21:30:27 +0300 Subject: [PATCH 108/269] PKG-683 htz.cloud: add launcher-x64 to nbg1, hel1, fsn1 EU regions --- IaC/ps3.cd/init.groovy.d/htz.cloud.groovy | 188 ++++++++++++++++++++ IaC/ps57.cd/init.groovy.d/htz.cloud.groovy | 13 +- IaC/ps80.cd/init.groovy.d/htz.cloud.groovy | 13 +- IaC/psmdb.cd/init.groovy.d/htz.cloud.groovy | 13 +- IaC/pxb.cd/init.groovy.d/htz.cloud.groovy | 13 +- IaC/pxc.cd/init.groovy.d/htz.cloud.groovy | 13 +- IaC/rel.cd/init.groovy.d/htz.cloud.groovy | 13 +- 7 files changed, 254 insertions(+), 12 deletions(-) create mode 100644 IaC/ps3.cd/init.groovy.d/htz.cloud.groovy diff --git a/IaC/ps3.cd/init.groovy.d/htz.cloud.groovy b/IaC/ps3.cd/init.groovy.d/htz.cloud.groovy new file mode 100644 index 0000000000..dc232edb35 --- /dev/null +++ b/IaC/ps3.cd/init.groovy.d/htz.cloud.groovy @@ -0,0 +1,188 @@ +import cloud.dnation.jenkins.plugins.hetzner.* +import cloud.dnation.jenkins.plugins.hetzner.launcher.* +import hudson.model.* +import jenkins.model.Jenkins +import java.util.logging.Logger + +def cloudName = "ps3-htz" + +imageMap = [:] // ID TYPE NAME DESCRIPTION ARCHITECTURE IMAGE SIZE DISK SIZE CREATED DEPRECATED +imageMap['deb12-x64'] = '114690387' // 114690387 system debian-12 Debian 12 x86 - 5 GB Tue Jun 13 09:00:02 EEST 2023 - +imageMap['deb12-aarch64'] = '114690389' // 114690389 system debian-12 Debian 12 arm - 5 GB Tue Jun 13 09:00:03 EEST 2023 - +imageMap['launcher-x64'] = imageMap['deb12-x64'] + +execMap = [:] +execMap['deb'] = 1 +execMap['deb12-x64-nbg1'] = execMap['deb'] +execMap['deb12-x64-hel1'] = execMap['deb'] +execMap['deb12-x64-fsn1'] = execMap['deb'] +execMap['deb12-aarch64-nbg1'] = execMap['deb'] +execMap['deb12-aarch64-hel1'] = execMap['deb'] +execMap['deb12-aarch64-fsn1'] = execMap['deb'] +execMap['deb12-x64-nbg1-min'] = execMap['deb'] +execMap['deb12-x64-hel1-min'] = execMap['deb'] +execMap['deb12-x64-fsn1-min'] = execMap['deb'] +execMap['deb12-aarch64-nbg1-min'] = execMap['deb'] +execMap['deb12-aarch64-hel1-min'] = execMap['deb'] +execMap['deb12-aarch64-fsn1-min'] = execMap['deb'] +execMap['launcher-x64-nbg1'] = 30 +execMap['launcher-x64-hel1'] = 30 +execMap['launcher-x64-fsn1'] = 30 + +bootDeadlineMap =[:] +bootDeadlineMap['default'] = 3 +bootDeadlineMap['deb12-x64-nbg1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-hel1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-fsn1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-nbg1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-hel1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-fsn1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-nbg1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-hel1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-fsn1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-nbg1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-hel1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-fsn1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['launcher-x64-nbg1'] = bootDeadlineMap['default'] +bootDeadlineMap['launcher-x64-hel1'] = bootDeadlineMap['default'] +bootDeadlineMap['launcher-x64-fsn1'] = bootDeadlineMap['default'] + +jvmOptsMap = [:] +jvmOptsMap['deb12'] = '-Xmx512m -Xms512m --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED' +jvmOptsMap['deb12-x64-nbg1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-hel1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-fsn1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-nbg1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-hel1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-fsn1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-nbg1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-hel1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-fsn1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-nbg1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-hel1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-fsn1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['launcher-x64-nbg1'] = jvmOptsMap['deb12'] +jvmOptsMap['launcher-x64-hel1'] = jvmOptsMap['deb12'] +jvmOptsMap['launcher-x64-fsn1'] = jvmOptsMap['deb12'] + +labelMap = [:] +labelMap['deb12-x64-min'] = 'docker-x64-min docker-deb12-x64-min deb12-x64-min' +labelMap['deb12-aarch64-min'] = 'docker-aarch64-min docker-deb12-aarch64-min deb12-aarch64-min' +labelMap['deb12-x64'] = 'docker-x64 docker-deb12-x64 deb12-x64' +labelMap['deb12-aarch64'] = 'docker-aarch64 docker-deb12-aarch64 deb12-aarch64' +labelMap['launcher-x64'] = 'launcher-x64' + +networkMap = [:] +networkMap['percona-vpc-eu'] = '10442325' // percona-vpc-eu + +initMap = [:] +initMap['deb-docker'] = '''#!/bin/bash -x + set -o xtrace + sudo fallocate -l 32G /swapfile + sudo chmod 600 /swapfile + sudo mkswap /swapfile + sudo swapon /swapfile + + export DEBIAN_FRONTEND=noninteractive + until sudo apt-get update; do + sleep 1 + echo try again + done + until sudo apt-get -y install openjdk-17-jre-headless apt-transport-https ca-certificates curl gnupg lsb-release unzip git; do + sleep 1 + echo try again + done + curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg + echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null + until sudo apt-get update; do + sleep 1 + echo try again + done + until sudo apt-get -y install docker-ce docker-ce-cli containerd.io; do + sleep 1 + echo try again + done + if ! $(aws --version | grep -q 'aws-cli/2'); then + find /tmp -maxdepth 1 -name "*aws*" | xargs sudo rm -rf + until curl "https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m)-2.22.35.zip" -o "/tmp/awscliv2.zip"; do + sleep 1 + echo try again + done + unzip -o /tmp/awscliv2.zip -d /tmp + cd /tmp/aws && sudo ./install + fi + sudo install -o $(id -u -n) -g $(id -g -n) -d /mnt/jenkins + sudo sysctl net.ipv4.tcp_fin_timeout=15 + sudo sysctl net.ipv4.tcp_tw_reuse=1 + sudo sysctl net.ipv6.conf.all.disable_ipv6=1 + sudo sysctl net.ipv6.conf.default.disable_ipv6=1 + sudo sysctl -w fs.inotify.max_user_watches=10000000 || true + sudo sysctl -w fs.aio-max-nr=1048576 || true + sudo sysctl -w fs.file-max=6815744 || true + echo "* soft core unlimited" | sudo tee -a /etc/security/limits.conf + sudo sed -i.bak -e 's^ExecStart=.*^ExecStart=/usr/bin/dockerd --data-root=/mnt/docker --default-ulimit nofile=900000:900000^' /lib/systemd/system/docker.service + sudo systemctl daemon-reload + sudo install -o root -g root -d /mnt/docker + sudo usermod -aG docker $(id -u -n) + sudo mkdir -p /etc/docker + echo '{"experimental": true, "ipv6": true, "fixed-cidr-v6": "fd3c:a8b0:18eb:5c06::/64"}' | sudo tee /etc/docker/daemon.json + sudo systemctl restart docker + echo "* * * * * root /usr/sbin/route add default gw 10.177.1.1 eth0" | sudo tee /etc/cron.d/fix-default-route +''' +initMap['deb12-x64-nbg1'] = initMap['deb-docker'] +initMap['deb12-x64-hel1'] = initMap['deb-docker'] +initMap['deb12-x64-fsn1'] = initMap['deb-docker'] +initMap['deb12-aarch64-nbg1'] = initMap['deb-docker'] +initMap['deb12-aarch64-hel1'] = initMap['deb-docker'] +initMap['deb12-aarch64-fsn1'] = initMap['deb-docker'] +initMap['deb12-x64-nbg1-min'] = initMap['deb-docker'] +initMap['deb12-x64-hel1-min'] = initMap['deb-docker'] +initMap['deb12-x64-fsn1-min'] = initMap['deb-docker'] +initMap['deb12-aarch64-nbg1-min'] = initMap['deb-docker'] +initMap['deb12-aarch64-hel1-min'] = initMap['deb-docker'] +initMap['deb12-aarch64-fsn1-min'] = initMap['deb-docker'] +initMap['launcher-x64-nbg1'] = initMap['deb-docker'] +initMap['launcher-x64-hel1'] = initMap['deb-docker'] +initMap['launcher-x64-fsn1'] = initMap['deb-docker'] + +def templates = [ + /* new HetznerServerTemplate("ubuntu20-cx21", "java", "name=ubuntu20-docker", "fsn1", "cx21"), */ + // tmplName tmplLabels tmplImage region server type + new HetznerServerTemplate("deb12-x64-nbg1-min", labelMap['deb12-x64-min'], imageMap['deb12-x64'], "nbg1", "cpx41"), + new HetznerServerTemplate("deb12-aarch64-nbg1-min", labelMap['deb12-aarch64-min'], imageMap['deb12-aarch64'], "nbg1", "cax31"), + new HetznerServerTemplate("deb12-x64-hel1-min", labelMap['deb12-x64-min'], imageMap['deb12-x64'], "hel1", "cpx41"), + new HetznerServerTemplate("deb12-aarch64-hel1-min", labelMap['deb12-aarch64-min'], imageMap['deb12-aarch64'], "hel1", "cax31"), + new HetznerServerTemplate("deb12-x64-fsn1-min", labelMap['deb12-x64-min'], imageMap['deb12-x64'], "fsn1", "cpx41"), + new HetznerServerTemplate("deb12-aarch64-fsn1-min", labelMap['deb12-aarch64-min'], imageMap['deb12-aarch64'], "fsn1", "cax31"), + new HetznerServerTemplate("deb12-x64-nbg1", labelMap['deb12-x64'], imageMap['deb12-x64'], "nbg1", "cpx51"), + new HetznerServerTemplate("deb12-aarch64-nbg1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "nbg1", "cax41"), + new HetznerServerTemplate("deb12-x64-hel1", labelMap['deb12-x64'], imageMap['deb12-x64'], "hel1", "cpx51"), + new HetznerServerTemplate("deb12-aarch64-hel1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "hel1", "cax41"), + new HetznerServerTemplate("deb12-x64-fsn1", labelMap['deb12-x64'], imageMap['deb12-x64'], "fsn1", "cpx51"), + new HetznerServerTemplate("deb12-aarch64-fsn1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "fsn1", "cax41"), + new HetznerServerTemplate("launcher-x64-nbg1", labelMap['launcher-x64'], imageMap['launcher-x64'], "nbg1", "cpx21"), + new HetznerServerTemplate("launcher-x64-hel1", labelMap['launcher-x64'], imageMap['launcher-x64'], "hel1", "cpx21"), + new HetznerServerTemplate("launcher-x64-fsn1", labelMap['launcher-x64'], imageMap['launcher-x64'], "fsn1", "cpx21") +] + +templates.each { it -> + def sshConnector = new SshConnectorAsRoot("htz.cd.key") + sshConnector.setConnectionMethod(new PublicAddressOnly()) // Replace with the desired method + it.setConnector(sshConnector) + def tmplName = it.name + it.setNumExecutors(execMap[tmplName]) + it.bootDeadline = bootDeadlineMap[tmplName] + it.remoteFs = "/mnt/jenkins/" + it.jvmOpts = jvmOptsMap[tmplName] + it.network = networkMap['percona-vpc-eu'] + it.userData = initMap[tmplName] + } + +// public HetznerCloud(String name, String credentialsId, String instanceCapStr, List serverTemplates) +def cloud = new HetznerCloud(cloudName, "htz.cd.token", "100", templates) + +def jenkins = Jenkins.get() + +jenkins.clouds.remove(jenkins.clouds.getByName(cloudName)) +jenkins.clouds.add(cloud) +jenkins.save() diff --git a/IaC/ps57.cd/init.groovy.d/htz.cloud.groovy b/IaC/ps57.cd/init.groovy.d/htz.cloud.groovy index c0c0105a31..1712b5d300 100644 --- a/IaC/ps57.cd/init.groovy.d/htz.cloud.groovy +++ b/IaC/ps57.cd/init.groovy.d/htz.cloud.groovy @@ -25,7 +25,9 @@ execMap['deb12-x64-fsn1-min'] = execMap['deb'] execMap['deb12-aarch64-nbg1-min'] = execMap['deb'] execMap['deb12-aarch64-hel1-min'] = execMap['deb'] execMap['deb12-aarch64-fsn1-min'] = execMap['deb'] -execMap['launcher-x64-fsn1'] = 10 +execMap['launcher-x64-nbg1'] = 30 +execMap['launcher-x64-hel1'] = 30 +execMap['launcher-x64-fsn1'] = 30 bootDeadlineMap =[:] bootDeadlineMap['default'] = 3 @@ -41,6 +43,8 @@ bootDeadlineMap['deb12-x64-fsn1-min'] = bootDeadlineMap['default'] bootDeadlineMap['deb12-aarch64-nbg1-min'] = bootDeadlineMap['default'] bootDeadlineMap['deb12-aarch64-hel1-min'] = bootDeadlineMap['default'] bootDeadlineMap['deb12-aarch64-fsn1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['launcher-x64-nbg1'] = bootDeadlineMap['default'] +bootDeadlineMap['launcher-x64-hel1'] = bootDeadlineMap['default'] bootDeadlineMap['launcher-x64-fsn1'] = bootDeadlineMap['default'] jvmOptsMap = [:] @@ -57,6 +61,8 @@ jvmOptsMap['deb12-x64-fsn1-min'] = jvmOptsMap['deb12'] jvmOptsMap['deb12-aarch64-nbg1-min'] = jvmOptsMap['deb12'] jvmOptsMap['deb12-aarch64-hel1-min'] = jvmOptsMap['deb12'] jvmOptsMap['deb12-aarch64-fsn1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['launcher-x64-nbg1'] = jvmOptsMap['deb12'] +jvmOptsMap['launcher-x64-hel1'] = jvmOptsMap['deb12'] jvmOptsMap['launcher-x64-fsn1'] = jvmOptsMap['deb12'] labelMap = [:] @@ -135,6 +141,8 @@ initMap['deb12-x64-fsn1-min'] = initMap['deb-docker'] initMap['deb12-aarch64-nbg1-min'] = initMap['deb-docker'] initMap['deb12-aarch64-hel1-min'] = initMap['deb-docker'] initMap['deb12-aarch64-fsn1-min'] = initMap['deb-docker'] +initMap['launcher-x64-nbg1'] = initMap['deb-docker'] +initMap['launcher-x64-hel1'] = initMap['deb-docker'] initMap['launcher-x64-fsn1'] = initMap['deb-docker'] def templates = [ @@ -152,6 +160,8 @@ def templates = [ new HetznerServerTemplate("deb12-aarch64-hel1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "hel1", "cax41"), new HetznerServerTemplate("deb12-x64-fsn1", labelMap['deb12-x64'], imageMap['deb12-x64'], "fsn1", "cpx51"), new HetznerServerTemplate("deb12-aarch64-fsn1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "fsn1", "cax41"), + new HetznerServerTemplate("launcher-x64-nbg1", labelMap['launcher-x64'], imageMap['launcher-x64'], "nbg1", "cpx21"), + new HetznerServerTemplate("launcher-x64-hel1", labelMap['launcher-x64'], imageMap['launcher-x64'], "hel1", "cpx21"), new HetznerServerTemplate("launcher-x64-fsn1", labelMap['launcher-x64'], imageMap['launcher-x64'], "fsn1", "cpx21") ] @@ -159,7 +169,6 @@ templates.each { it -> def sshConnector = new SshConnectorAsRoot("htz.cd.key") sshConnector.setConnectionMethod(new PublicAddressOnly()) // Replace with the desired method it.setConnector(sshConnector) - // it.setConnector(new SshConnectorAsRoot("hz.psmdb.cd")) def tmplName = it.name it.setNumExecutors(execMap[tmplName]) it.bootDeadline = bootDeadlineMap[tmplName] diff --git a/IaC/ps80.cd/init.groovy.d/htz.cloud.groovy b/IaC/ps80.cd/init.groovy.d/htz.cloud.groovy index 4cc9f1a33b..9f46e8fcde 100644 --- a/IaC/ps80.cd/init.groovy.d/htz.cloud.groovy +++ b/IaC/ps80.cd/init.groovy.d/htz.cloud.groovy @@ -25,7 +25,9 @@ execMap['deb12-x64-fsn1-min'] = execMap['deb'] execMap['deb12-aarch64-nbg1-min'] = execMap['deb'] execMap['deb12-aarch64-hel1-min'] = execMap['deb'] execMap['deb12-aarch64-fsn1-min'] = execMap['deb'] -execMap['launcher-x64-fsn1'] = 10 +execMap['launcher-x64-nbg1'] = 30 +execMap['launcher-x64-hel1'] = 30 +execMap['launcher-x64-fsn1'] = 30 bootDeadlineMap =[:] bootDeadlineMap['default'] = 3 @@ -41,6 +43,8 @@ bootDeadlineMap['deb12-x64-fsn1-min'] = bootDeadlineMap['default'] bootDeadlineMap['deb12-aarch64-nbg1-min'] = bootDeadlineMap['default'] bootDeadlineMap['deb12-aarch64-hel1-min'] = bootDeadlineMap['default'] bootDeadlineMap['deb12-aarch64-fsn1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['launcher-x64-nbg1'] = bootDeadlineMap['default'] +bootDeadlineMap['launcher-x64-hel1'] = bootDeadlineMap['default'] bootDeadlineMap['launcher-x64-fsn1'] = bootDeadlineMap['default'] jvmOptsMap = [:] @@ -57,6 +61,8 @@ jvmOptsMap['deb12-x64-fsn1-min'] = jvmOptsMap['deb12'] jvmOptsMap['deb12-aarch64-nbg1-min'] = jvmOptsMap['deb12'] jvmOptsMap['deb12-aarch64-hel1-min'] = jvmOptsMap['deb12'] jvmOptsMap['deb12-aarch64-fsn1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['launcher-x64-nbg1'] = jvmOptsMap['deb12'] +jvmOptsMap['launcher-x64-hel1'] = jvmOptsMap['deb12'] jvmOptsMap['launcher-x64-fsn1'] = jvmOptsMap['deb12'] labelMap = [:] @@ -135,6 +141,8 @@ initMap['deb12-x64-fsn1-min'] = initMap['deb-docker'] initMap['deb12-aarch64-nbg1-min'] = initMap['deb-docker'] initMap['deb12-aarch64-hel1-min'] = initMap['deb-docker'] initMap['deb12-aarch64-fsn1-min'] = initMap['deb-docker'] +initMap['launcher-x64-nbg1'] = initMap['deb-docker'] +initMap['launcher-x64-hel1'] = initMap['deb-docker'] initMap['launcher-x64-fsn1'] = initMap['deb-docker'] def templates = [ @@ -152,6 +160,8 @@ def templates = [ new HetznerServerTemplate("deb12-aarch64-hel1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "hel1", "cax41"), new HetznerServerTemplate("deb12-x64-fsn1", labelMap['deb12-x64'], imageMap['deb12-x64'], "fsn1", "cpx51"), new HetznerServerTemplate("deb12-aarch64-fsn1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "fsn1", "cax41"), + new HetznerServerTemplate("launcher-x64-nbg1", labelMap['launcher-x64'], imageMap['launcher-x64'], "nbg1", "cpx21"), + new HetznerServerTemplate("launcher-x64-hel1", labelMap['launcher-x64'], imageMap['launcher-x64'], "hel1", "cpx21"), new HetznerServerTemplate("launcher-x64-fsn1", labelMap['launcher-x64'], imageMap['launcher-x64'], "fsn1", "cpx21") ] @@ -159,7 +169,6 @@ templates.each { it -> def sshConnector = new SshConnectorAsRoot("htz.cd.key") sshConnector.setConnectionMethod(new PublicAddressOnly()) // Replace with the desired method it.setConnector(sshConnector) - // it.setConnector(new SshConnectorAsRoot("hz.psmdb.cd")) def tmplName = it.name it.setNumExecutors(execMap[tmplName]) it.bootDeadline = bootDeadlineMap[tmplName] diff --git a/IaC/psmdb.cd/init.groovy.d/htz.cloud.groovy b/IaC/psmdb.cd/init.groovy.d/htz.cloud.groovy index aad61fff99..243fd80920 100644 --- a/IaC/psmdb.cd/init.groovy.d/htz.cloud.groovy +++ b/IaC/psmdb.cd/init.groovy.d/htz.cloud.groovy @@ -25,7 +25,9 @@ execMap['deb12-x64-fsn1-min'] = execMap['deb'] execMap['deb12-aarch64-nbg1-min'] = execMap['deb'] execMap['deb12-aarch64-hel1-min'] = execMap['deb'] execMap['deb12-aarch64-fsn1-min'] = execMap['deb'] -execMap['launcher-x64-fsn1'] = 10 +execMap['launcher-x64-nbg1'] = 30 +execMap['launcher-x64-hel1'] = 30 +execMap['launcher-x64-fsn1'] = 30 bootDeadlineMap =[:] bootDeadlineMap['default'] = 3 @@ -41,6 +43,8 @@ bootDeadlineMap['deb12-x64-fsn1-min'] = bootDeadlineMap['default'] bootDeadlineMap['deb12-aarch64-nbg1-min'] = bootDeadlineMap['default'] bootDeadlineMap['deb12-aarch64-hel1-min'] = bootDeadlineMap['default'] bootDeadlineMap['deb12-aarch64-fsn1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['launcher-x64-nbg1'] = bootDeadlineMap['default'] +bootDeadlineMap['launcher-x64-hel1'] = bootDeadlineMap['default'] bootDeadlineMap['launcher-x64-fsn1'] = bootDeadlineMap['default'] jvmOptsMap = [:] @@ -57,6 +61,8 @@ jvmOptsMap['deb12-x64-fsn1-min'] = jvmOptsMap['deb12'] jvmOptsMap['deb12-aarch64-nbg1-min'] = jvmOptsMap['deb12'] jvmOptsMap['deb12-aarch64-hel1-min'] = jvmOptsMap['deb12'] jvmOptsMap['deb12-aarch64-fsn1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['launcher-x64-nbg1'] = jvmOptsMap['deb12'] +jvmOptsMap['launcher-x64-hel1'] = jvmOptsMap['deb12'] jvmOptsMap['launcher-x64-fsn1'] = jvmOptsMap['deb12'] labelMap = [:] @@ -135,6 +141,8 @@ initMap['deb12-x64-fsn1-min'] = initMap['deb-docker'] initMap['deb12-aarch64-nbg1-min'] = initMap['deb-docker'] initMap['deb12-aarch64-hel1-min'] = initMap['deb-docker'] initMap['deb12-aarch64-fsn1-min'] = initMap['deb-docker'] +initMap['launcher-x64-nbg1'] = initMap['deb-docker'] +initMap['launcher-x64-hel1'] = initMap['deb-docker'] initMap['launcher-x64-fsn1'] = initMap['deb-docker'] def templates = [ @@ -152,6 +160,8 @@ def templates = [ new HetznerServerTemplate("deb12-aarch64-hel1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "hel1", "cax41"), new HetznerServerTemplate("deb12-x64-fsn1", labelMap['deb12-x64'], imageMap['deb12-x64'], "fsn1", "cpx51"), new HetznerServerTemplate("deb12-aarch64-fsn1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "fsn1", "cax41"), + new HetznerServerTemplate("launcher-x64-nbg1", labelMap['launcher-x64'], imageMap['launcher-x64'], "nbg1", "cpx21"), + new HetznerServerTemplate("launcher-x64-hel1", labelMap['launcher-x64'], imageMap['launcher-x64'], "hel1", "cpx21"), new HetznerServerTemplate("launcher-x64-fsn1", labelMap['launcher-x64'], imageMap['launcher-x64'], "fsn1", "cpx21") ] @@ -159,7 +169,6 @@ templates.each { it -> def sshConnector = new SshConnectorAsRoot("htz.cd.key") sshConnector.setConnectionMethod(new PublicAddressOnly()) // Replace with the desired method it.setConnector(sshConnector) - // it.setConnector(new SshConnectorAsRoot("hz.psmdb.cd")) def tmplName = it.name it.setNumExecutors(execMap[tmplName]) it.bootDeadline = bootDeadlineMap[tmplName] diff --git a/IaC/pxb.cd/init.groovy.d/htz.cloud.groovy b/IaC/pxb.cd/init.groovy.d/htz.cloud.groovy index 2b810854b5..17f9b285ac 100644 --- a/IaC/pxb.cd/init.groovy.d/htz.cloud.groovy +++ b/IaC/pxb.cd/init.groovy.d/htz.cloud.groovy @@ -25,7 +25,9 @@ execMap['deb12-x64-fsn1-min'] = execMap['deb'] execMap['deb12-aarch64-nbg1-min'] = execMap['deb'] execMap['deb12-aarch64-hel1-min'] = execMap['deb'] execMap['deb12-aarch64-fsn1-min'] = execMap['deb'] -execMap['launcher-x64-fsn1'] = 10 +execMap['launcher-x64-nbg1'] = 30 +execMap['launcher-x64-hel1'] = 30 +execMap['launcher-x64-fsn1'] = 30 bootDeadlineMap =[:] bootDeadlineMap['default'] = 3 @@ -41,6 +43,8 @@ bootDeadlineMap['deb12-x64-fsn1-min'] = bootDeadlineMap['default'] bootDeadlineMap['deb12-aarch64-nbg1-min'] = bootDeadlineMap['default'] bootDeadlineMap['deb12-aarch64-hel1-min'] = bootDeadlineMap['default'] bootDeadlineMap['deb12-aarch64-fsn1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['launcher-x64-nbg1'] = bootDeadlineMap['default'] +bootDeadlineMap['launcher-x64-hel1'] = bootDeadlineMap['default'] bootDeadlineMap['launcher-x64-fsn1'] = bootDeadlineMap['default'] jvmOptsMap = [:] @@ -57,6 +61,8 @@ jvmOptsMap['deb12-x64-fsn1-min'] = jvmOptsMap['deb12'] jvmOptsMap['deb12-aarch64-nbg1-min'] = jvmOptsMap['deb12'] jvmOptsMap['deb12-aarch64-hel1-min'] = jvmOptsMap['deb12'] jvmOptsMap['deb12-aarch64-fsn1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['launcher-x64-nbg1'] = jvmOptsMap['deb12'] +jvmOptsMap['launcher-x64-hel1'] = jvmOptsMap['deb12'] jvmOptsMap['launcher-x64-fsn1'] = jvmOptsMap['deb12'] labelMap = [:] @@ -135,6 +141,8 @@ initMap['deb12-x64-fsn1-min'] = initMap['deb-docker'] initMap['deb12-aarch64-nbg1-min'] = initMap['deb-docker'] initMap['deb12-aarch64-hel1-min'] = initMap['deb-docker'] initMap['deb12-aarch64-fsn1-min'] = initMap['deb-docker'] +initMap['launcher-x64-nbg1'] = initMap['deb-docker'] +initMap['launcher-x64-hel1'] = initMap['deb-docker'] initMap['launcher-x64-fsn1'] = initMap['deb-docker'] def templates = [ @@ -152,6 +160,8 @@ def templates = [ new HetznerServerTemplate("deb12-aarch64-hel1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "hel1", "cax41"), new HetznerServerTemplate("deb12-x64-fsn1", labelMap['deb12-x64'], imageMap['deb12-x64'], "fsn1", "cpx51"), new HetznerServerTemplate("deb12-aarch64-fsn1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "fsn1", "cax41"), + new HetznerServerTemplate("launcher-x64-nbg1", labelMap['launcher-x64'], imageMap['launcher-x64'], "nbg1", "cpx21"), + new HetznerServerTemplate("launcher-x64-hel1", labelMap['launcher-x64'], imageMap['launcher-x64'], "hel1", "cpx21"), new HetznerServerTemplate("launcher-x64-fsn1", labelMap['launcher-x64'], imageMap['launcher-x64'], "fsn1", "cpx21") ] @@ -159,7 +169,6 @@ templates.each { it -> def sshConnector = new SshConnectorAsRoot("htz.cd.key") sshConnector.setConnectionMethod(new PublicAddressOnly()) // Replace with the desired method it.setConnector(sshConnector) - // it.setConnector(new SshConnectorAsRoot("hz.psmdb.cd")) def tmplName = it.name it.setNumExecutors(execMap[tmplName]) it.bootDeadline = bootDeadlineMap[tmplName] diff --git a/IaC/pxc.cd/init.groovy.d/htz.cloud.groovy b/IaC/pxc.cd/init.groovy.d/htz.cloud.groovy index c3ad5efba3..af7919c977 100644 --- a/IaC/pxc.cd/init.groovy.d/htz.cloud.groovy +++ b/IaC/pxc.cd/init.groovy.d/htz.cloud.groovy @@ -25,7 +25,9 @@ execMap['deb12-x64-fsn1-min'] = execMap['deb'] execMap['deb12-aarch64-nbg1-min'] = execMap['deb'] execMap['deb12-aarch64-hel1-min'] = execMap['deb'] execMap['deb12-aarch64-fsn1-min'] = execMap['deb'] -execMap['launcher-x64-fsn1'] = 10 +execMap['launcher-x64-nbg1'] = 30 +execMap['launcher-x64-hel1'] = 30 +execMap['launcher-x64-fsn1'] = 30 bootDeadlineMap =[:] bootDeadlineMap['default'] = 3 @@ -41,6 +43,8 @@ bootDeadlineMap['deb12-x64-fsn1-min'] = bootDeadlineMap['default'] bootDeadlineMap['deb12-aarch64-nbg1-min'] = bootDeadlineMap['default'] bootDeadlineMap['deb12-aarch64-hel1-min'] = bootDeadlineMap['default'] bootDeadlineMap['deb12-aarch64-fsn1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['launcher-x64-nbg1'] = bootDeadlineMap['default'] +bootDeadlineMap['launcher-x64-hel1'] = bootDeadlineMap['default'] bootDeadlineMap['launcher-x64-fsn1'] = bootDeadlineMap['default'] jvmOptsMap = [:] @@ -57,6 +61,8 @@ jvmOptsMap['deb12-x64-fsn1-min'] = jvmOptsMap['deb12'] jvmOptsMap['deb12-aarch64-nbg1-min'] = jvmOptsMap['deb12'] jvmOptsMap['deb12-aarch64-hel1-min'] = jvmOptsMap['deb12'] jvmOptsMap['deb12-aarch64-fsn1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['launcher-x64-nbg1'] = jvmOptsMap['deb12'] +jvmOptsMap['launcher-x64-hel1'] = jvmOptsMap['deb12'] jvmOptsMap['launcher-x64-fsn1'] = jvmOptsMap['deb12'] labelMap = [:] @@ -135,6 +141,8 @@ initMap['deb12-x64-fsn1-min'] = initMap['deb-docker'] initMap['deb12-aarch64-nbg1-min'] = initMap['deb-docker'] initMap['deb12-aarch64-hel1-min'] = initMap['deb-docker'] initMap['deb12-aarch64-fsn1-min'] = initMap['deb-docker'] +initMap['launcher-x64-nbg1'] = initMap['deb-docker'] +initMap['launcher-x64-hel1'] = initMap['deb-docker'] initMap['launcher-x64-fsn1'] = initMap['deb-docker'] def templates = [ @@ -152,6 +160,8 @@ def templates = [ new HetznerServerTemplate("deb12-aarch64-hel1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "hel1", "cax41"), new HetznerServerTemplate("deb12-x64-fsn1", labelMap['deb12-x64'], imageMap['deb12-x64'], "fsn1", "cpx51"), new HetznerServerTemplate("deb12-aarch64-fsn1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "fsn1", "cax41"), + new HetznerServerTemplate("launcher-x64-nbg1", labelMap['launcher-x64'], imageMap['launcher-x64'], "nbg1", "cpx21"), + new HetznerServerTemplate("launcher-x64-hel1", labelMap['launcher-x64'], imageMap['launcher-x64'], "hel1", "cpx21"), new HetznerServerTemplate("launcher-x64-fsn1", labelMap['launcher-x64'], imageMap['launcher-x64'], "fsn1", "cpx21") ] @@ -159,7 +169,6 @@ templates.each { it -> def sshConnector = new SshConnectorAsRoot("htz.cd.key") sshConnector.setConnectionMethod(new PublicAddressOnly()) // Replace with the desired method it.setConnector(sshConnector) - // it.setConnector(new SshConnectorAsRoot("hz.psmdb.cd")) def tmplName = it.name it.setNumExecutors(execMap[tmplName]) it.bootDeadline = bootDeadlineMap[tmplName] diff --git a/IaC/rel.cd/init.groovy.d/htz.cloud.groovy b/IaC/rel.cd/init.groovy.d/htz.cloud.groovy index 754e23b0fe..74eef04fc6 100644 --- a/IaC/rel.cd/init.groovy.d/htz.cloud.groovy +++ b/IaC/rel.cd/init.groovy.d/htz.cloud.groovy @@ -25,7 +25,9 @@ execMap['deb12-x64-fsn1-min'] = execMap['deb'] execMap['deb12-aarch64-nbg1-min'] = execMap['deb'] execMap['deb12-aarch64-hel1-min'] = execMap['deb'] execMap['deb12-aarch64-fsn1-min'] = execMap['deb'] -execMap['launcher-x64-fsn1'] = 10 +execMap['launcher-x64-nbg1'] = 30 +execMap['launcher-x64-hel1'] = 30 +execMap['launcher-x64-fsn1'] = 30 bootDeadlineMap =[:] bootDeadlineMap['default'] = 3 @@ -41,6 +43,8 @@ bootDeadlineMap['deb12-x64-fsn1-min'] = bootDeadlineMap['default'] bootDeadlineMap['deb12-aarch64-nbg1-min'] = bootDeadlineMap['default'] bootDeadlineMap['deb12-aarch64-hel1-min'] = bootDeadlineMap['default'] bootDeadlineMap['deb12-aarch64-fsn1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['launcher-x64-nbg1'] = bootDeadlineMap['default'] +bootDeadlineMap['launcher-x64-hel1'] = bootDeadlineMap['default'] bootDeadlineMap['launcher-x64-fsn1'] = bootDeadlineMap['default'] jvmOptsMap = [:] @@ -57,6 +61,8 @@ jvmOptsMap['deb12-x64-fsn1-min'] = jvmOptsMap['deb12'] jvmOptsMap['deb12-aarch64-nbg1-min'] = jvmOptsMap['deb12'] jvmOptsMap['deb12-aarch64-hel1-min'] = jvmOptsMap['deb12'] jvmOptsMap['deb12-aarch64-fsn1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['launcher-x64-nbg1'] = jvmOptsMap['deb12'] +jvmOptsMap['launcher-x64-hel1'] = jvmOptsMap['deb12'] jvmOptsMap['launcher-x64-fsn1'] = jvmOptsMap['deb12'] labelMap = [:] @@ -135,6 +141,8 @@ initMap['deb12-x64-fsn1-min'] = initMap['deb-docker'] initMap['deb12-aarch64-nbg1-min'] = initMap['deb-docker'] initMap['deb12-aarch64-hel1-min'] = initMap['deb-docker'] initMap['deb12-aarch64-fsn1-min'] = initMap['deb-docker'] +initMap['launcher-x64-nbg1'] = initMap['deb-docker'] +initMap['launcher-x64-hel1'] = initMap['deb-docker'] initMap['launcher-x64-fsn1'] = initMap['deb-docker'] def templates = [ @@ -152,6 +160,8 @@ def templates = [ new HetznerServerTemplate("deb12-aarch64-hel1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "hel1", "cax41"), new HetznerServerTemplate("deb12-x64-fsn1", labelMap['deb12-x64'], imageMap['deb12-x64'], "fsn1", "cpx51"), new HetznerServerTemplate("deb12-aarch64-fsn1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "fsn1", "cax41"), + new HetznerServerTemplate("launcher-x64-nbg1", labelMap['launcher-x64'], imageMap['launcher-x64'], "nbg1", "cpx21"), + new HetznerServerTemplate("launcher-x64-hel1", labelMap['launcher-x64'], imageMap['launcher-x64'], "hel1", "cpx21"), new HetznerServerTemplate("launcher-x64-fsn1", labelMap['launcher-x64'], imageMap['launcher-x64'], "fsn1", "cpx21") ] @@ -159,7 +169,6 @@ templates.each { it -> def sshConnector = new SshConnectorAsRoot("htz.cd.key") sshConnector.setConnectionMethod(new PublicAddressOnly()) // Replace with the desired method it.setConnector(sshConnector) - // it.setConnector(new SshConnectorAsRoot("hz.psmdb.cd")) def tmplName = it.name it.setNumExecutors(execMap[tmplName]) it.bootDeadline = bootDeadlineMap[tmplName] From 9b9ee424212ddf45071526cb8f84ca3fba26cf23 Mon Sep 17 00:00:00 2001 From: Vadim Yalovets Date: Fri, 16 May 2025 17:36:30 +0300 Subject: [PATCH 109/269] PKG-551 Packaging tasks for release - PS 8.0.42-33 (#3326) --- ps/jenkins/mysql-shell.groovy | 48 ++-- .../percona-server-for-mysql-5.7.groovy | 126 ++++----- ...percona-server-for-mysql-8.0-docker.groovy | 146 +++++----- .../percona-server-for-mysql-8.0.groovy | 20 +- pxb/jenkins/pxb-80-docker.groovy | 255 ++++++++++++++++++ pxb/jenkins/pxb-80-docker.yml | 15 ++ pxb/jenkins/pxb-80.groovy | 113 ++++---- .../percona-xtradb-cluster-8.0-docker.groovy | 74 +++++ 8 files changed, 563 insertions(+), 234 deletions(-) create mode 100644 pxb/jenkins/pxb-80-docker.groovy create mode 100644 pxb/jenkins/pxb-80-docker.yml diff --git a/ps/jenkins/mysql-shell.groovy b/ps/jenkins/mysql-shell.groovy index 06df3dda2d..06b7d885fe 100644 --- a/ps/jenkins/mysql-shell.groovy +++ b/ps/jenkins/mysql-shell.groovy @@ -114,7 +114,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("centos:7", "--build_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) @@ -127,7 +127,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_source_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) @@ -145,7 +145,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("centos:7", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -159,7 +159,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -172,7 +172,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -185,7 +185,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -198,7 +198,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -211,7 +211,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -227,7 +227,7 @@ pipeline { PS_MAJOR_RELEASE = sh(returnStdout: true, script: ''' echo ${PS_BRANCH} | sed "s/release-//g" | sed "s/\\.//g" | awk '{print substr($0, 0, 2)}' ''').trim() if ("${PS_MAJOR_RELEASE}" == "80") { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -244,7 +244,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -257,7 +257,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -270,7 +270,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -283,7 +283,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -296,7 +296,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -312,7 +312,7 @@ pipeline { PS_MAJOR_RELEASE = sh(returnStdout: true, script: ''' echo ${PS_BRANCH} | sed "s/release-//g" | sed "s/\\.//g" | awk '{print substr($0, 0, 2)}' ''').trim() if ("${PS_MAJOR_RELEASE}" == "80") { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -329,7 +329,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -342,7 +342,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -355,7 +355,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("centos:7", "--build_tarball=1") pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) @@ -368,7 +368,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_tarball=1") pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) @@ -381,7 +381,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_tarball=1") pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) @@ -400,7 +400,7 @@ pipeline { stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild('mysql-shell', COMPONENT) + sync2ProdAutoBuild(params.CLOUD, 'mysql-shell', COMPONENT) } } @@ -408,9 +408,6 @@ pipeline { post { success { // slackNotify("", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") - script { - currentBuild.description = "Built on ${SHELL_BRANCH}, path to packages: experimental/${AWS_STASH_PATH}" - } deleteDir() } failure { @@ -421,6 +418,9 @@ pipeline { sh ''' sudo rm -rf ./* ''' + script { + currentBuild.description = "Built on SHELL ${SHELL_BRANCH}, PS ${PS_BRANCH} path to packages: experimental/${AWS_STASH_PATH}" + } deleteDir() } } diff --git a/ps/jenkins/percona-server-for-mysql-5.7.groovy b/ps/jenkins/percona-server-for-mysql-5.7.groovy index 4d8a6e2fb1..575bb4c660 100644 --- a/ps/jenkins/percona-server-for-mysql-5.7.groovy +++ b/ps/jenkins/percona-server-for-mysql-5.7.groovy @@ -100,7 +100,7 @@ parameters { stages { stage('Create PS source tarball') { agent { - label 'min-bionic-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'min-bionic-x64' } steps { slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${BRANCH} - [${BUILD_URL}]") @@ -129,13 +129,13 @@ parameters { parallel { stage('Build PS generic source rpm') { agent { - label 'min-centos-7-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'min-centos-7-x64' } steps { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("centos:7", "--build_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) @@ -144,13 +144,13 @@ parameters { } stage('Build PS generic source deb') { agent { - label 'min-bionic-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'min-bionic-x64' } steps { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:bionic", "--build_source_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) @@ -163,13 +163,13 @@ parameters { parallel { stage('Centos 7') { agent { - label 'min-centos-7-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'min-centos-7-x64' } steps { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("centos:7", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -177,13 +177,13 @@ parameters { } stage('Centos 8') { agent { - label 'min-ol-8-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'min-ol-8-x64' } steps { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("centos:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -191,13 +191,13 @@ parameters { } stage('Oracle Linux 9') { agent { - label 'min-ol-9-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'min-ol-9-x64' } steps { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -205,13 +205,13 @@ parameters { } stage('Ubuntu Bionic(18.04)') { agent { - label 'min-bionic-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'min-bionic-x64' } steps { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:bionic", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -219,13 +219,13 @@ parameters { } stage('Ubuntu Focal(20.04)') { agent { - label 'min-focal-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'min-focal-x64' } steps { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -233,13 +233,13 @@ parameters { } stage('Ubuntu Jammy(22.04)') { agent { - label 'min-jammy-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'min-jammy-x64' } steps { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -247,7 +247,7 @@ parameters { } stage('Ubuntu Noble(24.04)') { agent { - label 'min-noble-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'min-noble-x64' } steps { script { @@ -257,7 +257,7 @@ parameters { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -267,13 +267,13 @@ parameters { } stage('Debian Buster(10)') { agent { - label 'min-buster-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'min-buster-x64' } steps { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:buster", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -281,13 +281,13 @@ parameters { } stage('Debian Bullseye(11)') { agent { - label 'min-bullseye-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'min-bullseye-x64' } steps { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -295,13 +295,13 @@ parameters { } stage('Debian Bookworm(12)') { agent { - label 'min-bookworm-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'min-bookworm-x64' } steps { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -309,234 +309,234 @@ parameters { } stage('Centos 7 tarball') { agent { - label 'min-centos-7-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'min-centos-7-x64' } steps { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("centos:7", "--build_tarball=1 ") pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Centos 7 debug tarball') { agent { - label 'min-centos-7-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'min-centos-7-x64' } steps { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("centos:7", "--debug=1 --build_tarball=1 ") pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Centos 8 tarball') { agent { - label 'min-ol-8-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'min-ol-8-x64' } steps { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("centos:8", "--build_tarball=1 ") pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Centos 8 debug tarball') { agent { - label 'min-ol-8-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'min-ol-8-x64' } steps { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("centos:8", "--debug=1 --build_tarball=1 ") pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Oracle Linux 9 tarball') { agent { - label 'min-ol-9-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'min-ol-9-x64' } steps { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_tarball=1 ") pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Oracle Linux 9 debug tarball') { agent { - label 'min-ol-9-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'min-ol-9-x64' } steps { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--debug=1 --build_tarball=1 ") pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Ubuntu Bionic tarball') { agent { - label 'min-bionic-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'min-bionic-x64' } steps { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:bionic", "--build_tarball=1 ") pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Ubuntu Bionic debug tarball') { agent { - label 'min-bionic-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'min-bionic-x64' } steps { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:bionic", "--debug=1 --build_tarball=1 ") pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Ubuntu Focal tarball') { agent { - label 'min-focal-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'min-focal-x64' } steps { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_tarball=1 ") pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Ubuntu Focal debug tarball') { agent { - label 'min-focal-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'min-focal-x64' } steps { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--debug=1 --build_tarball=1 ") pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Ubuntu Jammy tarball') { agent { - label 'min-jammy-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'min-jammy-x64' } steps { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_tarball=1 ") pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Ubuntu Jammy debug tarball') { agent { - label 'min-jammy-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'min-jammy-x64' } steps { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--debug=1 --build_tarball=1 ") pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Debian Buster tarball') { agent { - label 'min-buster-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'min-buster-x64' } steps { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("debian:buster", "--build_tarball=1 ") pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Debian Buster debug tarball') { agent { - label 'min-buster-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'min-buster-x64' } steps { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("debian:buster", "--debug=1 --build_tarball=1 ") pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Debian Bullseye tarball') { agent { - label 'min-bullseye-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'min-bullseye-x64' } steps { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_tarball=1 ") pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Debian Bullseye debug tarball') { agent { - label 'min-bullseye-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'min-bullseye-x64' } steps { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("debian:bullseye", "--debug=1 --build_tarball=1 ") pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Debian Bookworm tarball') { agent { - label 'min-bookworm-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'min-bookworm-x64' } steps { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_tarball=1 ") pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Debian Bookworm debug tarball') { agent { - label 'min-bookworm-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'min-bookworm-x64' } steps { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("debian:bookworm", "--debug=1 --build_tarball=1 ") pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } @@ -545,7 +545,7 @@ parameters { } stage('Upload packages and tarballs from S3') { agent { - label 'min-jammy-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'min-jammy-x64' } steps { cleanUpWS() @@ -565,7 +565,7 @@ parameters { } stage('Build docker container') { agent { - label 'min-buster-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'min-buster-x64' } steps { script { diff --git a/ps/jenkins/percona-server-for-mysql-8.0-docker.groovy b/ps/jenkins/percona-server-for-mysql-8.0-docker.groovy index d65c234347..4a2cd6260e 100644 --- a/ps/jenkins/percona-server-for-mysql-8.0-docker.groovy +++ b/ps/jenkins/percona-server-for-mysql-8.0-docker.groovy @@ -34,69 +34,6 @@ void installCli(String PLATFORM) { """ } -void buildStage(String DOCKER_OS, String STAGE_PARAM) { - withCredentials([string(credentialsId: 'GITHUB_API_TOKEN', variable: 'TOKEN')]) { - sh """ - set -o xtrace - mkdir -p test - if [ \${FIPSMODE} = "YES" ]; then - MYSQL_VERSION_MINOR=\$(curl -s -O \$(echo \${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/\${BRANCH}/MYSQL_VERSION && grep MYSQL_VERSION_MINOR MYSQL_VERSION | awk -F= '{print \$2}') - if [ \${MYSQL_VERSION_MINOR} = "0" ]; then - PRO_BRANCH="8.0" - elif [ \${MYSQL_VERSION_MINOR} = "4" ]; then - PRO_BRANCH="8.4" - else - PRO_BRANCH="trunk" - fi - curl -L -H "Authorization: Bearer \${TOKEN}" \ - -H "Accept: application/vnd.github.v3.raw" \ - -o ps_builder.sh \ - "https://api.github.com/repos/percona/percona-server-private-build/contents/build-ps/percona-server-8.0_builder.sh?ref=\${PRO_BRANCH}" - sed -i 's|percona-server-server/usr|percona-server-server-pro/usr|g' ps_builder.sh - sed -i 's|dbg-package=percona-server-dbg|dbg-package=percona-server-pro-dbg|g' ps_builder.sh - else - wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${BRANCH}/build-ps/percona-server-8.0_builder.sh -O ps_builder.sh || curl \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${BRANCH}/build-ps/percona-server-8.0_builder.sh -o ps_builder.sh - fi - grep "percona-server-server" ps_builder.sh - export build_dir=\$(pwd -P) - if [ "$DOCKER_OS" = "none" ]; then - set -o xtrace - cd \${build_dir} - if [ \${FIPSMODE} = "YES" ]; then - git clone --depth 1 --branch \${PRO_BRANCH} https://x-access-token:${TOKEN}@github.com/percona/percona-server-private-build.git percona-server-private-build - mv -f \${build_dir}/percona-server-private-build/build-ps \${build_dir}/test/. - fi - if [ -f ./test/percona-server-8.0.properties ]; then - . ./test/percona-server-8.0.properties - fi - sudo bash -x ./ps_builder.sh --builddir=\${build_dir}/test --install_deps=1 - if [ ${BUILD_TOKUDB_TOKUBACKUP} = "ON" ]; then - bash -x ./ps_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --branch=${BRANCH} --build_tokudb_tokubackup=1 --perconaft_branch=${PERCONAFT_BRANCH} --tokubackup_branch=${TOKUBACKUP_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM} - else - bash -x ./ps_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --branch=${BRANCH} --perconaft_branch=${PERCONAFT_BRANCH} --tokubackup_branch=${TOKUBACKUP_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM} - fi - else - docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " - set -o xtrace - cd \${build_dir} - if [ \${FIPSMODE} = "YES" ]; then - git clone --depth 1 --branch \${PRO_BRANCH} https://x-access-token:${TOKEN}@github.com/percona/percona-server-private-build.git percona-server-private-build - mv -f \${build_dir}/percona-server-private-build/build-ps \${build_dir}/test/. - fi - if [ -f ./test/percona-server-8.0.properties ]; then - . ./test/percona-server-8.0.properties - fi - bash -x ./ps_builder.sh --builddir=\${build_dir}/test --install_deps=1 - if [ ${BUILD_TOKUDB_TOKUBACKUP} = \"ON\" ]; then - bash -x ./ps_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --branch=${BRANCH} --build_tokudb_tokubackup=1 --perconaft_branch=${PERCONAFT_BRANCH} --tokubackup_branch=${TOKUBACKUP_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM} - else - bash -x ./ps_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --branch=${BRANCH} --perconaft_branch=${PERCONAFT_BRANCH} --tokubackup_branch=${TOKUBACKUP_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM} - fi" - fi - """ - } -} - void cleanUpWS() { sh """ sudo rm -rf ./* @@ -194,22 +131,6 @@ def minitestNodes = [ "min-bullseye-x64", "min-noble-x64", "min-ol-9-x64" ] -def package_tests_ps80(def nodes) { - def stepsForParallel = [:] - for (int i = 0; i < nodes.size(); i++) { - def nodeName = nodes[i] - stepsForParallel[nodeName] = { - stage("Minitest run on ${nodeName}") { - node(nodeName) { - installDependencies(nodeName) - runPlaybook(nodeName) - } - } - } - } - parallel stepsForParallel -} - @Field def mini_test_error = "False" def AWS_STASH_PATH def PS8_RELEASE_VERSION @@ -287,13 +208,12 @@ parameters { sudo qemu-system-x86_64 --version sudo lscpu | grep -q 'sse4_2' && grep -q 'popcnt' /proc/cpuinfo && echo "Supports x86-64-v2" || echo "Does NOT support x86-64-v2" sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + rm -rf percona-docker git clone https://github.com/percona/percona-docker cd percona-docker/percona-server-8.0 sed -i "s/ENV PS_VERSION.*/ENV PS_VERSION ${PS_RELEASE}.${RPM_RELEASE}/g" Dockerfile sed -i "s/ENV PS_TELEMETRY_VERSION.*/ENV PS_TELEMETRY_VERSION ${PS_RELEASE}-${RPM_RELEASE}/g" Dockerfile - if [ ${PS_MAJOR_RELEASE} != "80" ]; then - sed -i "s/ENV MYSQL_SHELL_VERSION.*/ENV MYSQL_SHELL_VERSION ${MYSQL_SHELL_RELEASE}-${RPM_RELEASE}/g" Dockerfile - fi + sed -i "s/ENV MYSQL_SHELL_VERSION.*/ENV MYSQL_SHELL_VERSION ${MYSQL_SHELL_RELEASE}-${RPM_RELEASE}/g" Dockerfile sed -i "s/ENV PS_REPO .*/ENV PS_REPO testing/g" Dockerfile if [ ${PS_MAJOR_RELEASE} != "80" ]; then if [ ${PS_MAJOR_RELEASE} = "84" ]; then @@ -374,10 +294,9 @@ parameters { )]) { sh ''' PS_RELEASE=$(echo ${BRANCH} | sed 's/release-//g') - PS_MAJOR_RELEASE=$(echo ${BRANCH} | sed "s/release-//g" | sed "s/\\.//g" | awk '{print substr($0, 0, 2)}') + PS_MAJOR_RELEASE=$(echo ${BRANCH} | sed "s/release-//g" | awk '{print substr($0, 0, 3)}') PS_MAJOR_FULL_RELEASE=$(echo ${BRANCH} | sed "s/release-//g" | sed "s/-.*//g") echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin - PS_RELEASE=$(echo ${BRANCH} | sed 's/release-//g') sudo docker manifest push perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} sudo docker buildx imagetools create -t perconalab/percona-server:${PS_RELEASE} perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} sudo docker buildx imagetools create -t perconalab/percona-server:${PS_MAJOR_FULL_RELEASE} perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} @@ -388,6 +307,63 @@ parameters { } } } + stage('Check by Trivy') { + agent { + label params.CLOUD == 'Hetzner' ? 'deb12-x64' : 'min-focal-x64' + } + environment { + TRIVY_LOG = "trivy-high-junit.xml" + } + steps { + script { + try { + // 🔹 Install Trivy if not present + sh ''' + if ! command -v trivy &> /dev/null; then + echo "🔄 Installing Trivy..." + sudo apt-get update + sudo apt-get -y install wget apt-transport-https gnupg lsb-release + wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add - + echo deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list.d/trivy.list + sudo apt-get update + sudo apt-get -y install trivy + else + echo "✅ Trivy is already installed." + fi + ''' + + // 🔹 Define the image tags + def PS_RELEASE = "${BRANCH}".replace('release-', '') + def imageList = [ + "perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64", + "perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-arm64" + ] + + // 🔹 Scan images and store logs + imageList.each { image -> + echo "🔍 Scanning ${image}..." + def result = sh(script: """#!/bin/bash + sudo trivy image --quiet \ + --format table \ + --timeout 10m0s \ + --ignore-unfixed \ + --exit-code 1 \ + --severity HIGH,CRITICAL ${image} | tee -a ${TRIVY_LOG} + """, returnStatus: true) + + // 🔴 Fail the build if vulnerabilities are found + if (result != 0) { + error "❌ Trivy detected vulnerabilities in ${image}. See ${TRIVY_LOG} for details." + } else { + echo "✅ No critical vulnerabilities found in ${image}." + } + } + } catch (Exception e) { + error "❌ Trivy scan failed: ${e.message}" + } // try + } // script + } // steps + } // stage } post { success { @@ -398,8 +374,6 @@ parameters { slackNotify("${SLACKNOTIFY}", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${BRANCH} - [${BUILD_URL}]") } } - slackNotify("${SLACKNOTIFY}", "#00FF00", "[${JOB_NAME}]: Triggering Builds for Package Testing for ${BRANCH} - [${BUILD_URL}]") - unstash 'properties' deleteDir() } failure { diff --git a/ps/jenkins/percona-server-for-mysql-8.0.groovy b/ps/jenkins/percona-server-for-mysql-8.0.groovy index e5df30f266..8391cd3fb2 100644 --- a/ps/jenkins/percona-server-for-mysql-8.0.groovy +++ b/ps/jenkins/percona-server-for-mysql-8.0.groovy @@ -1038,9 +1038,7 @@ parameters { cd percona-docker/percona-server-8.0 sed -i "s/ENV PS_VERSION.*/ENV PS_VERSION ${PS_RELEASE}.${RPM_RELEASE}/g" Dockerfile sed -i "s/ENV PS_TELEMETRY_VERSION.*/ENV PS_TELEMETRY_VERSION ${PS_RELEASE}-${RPM_RELEASE}/g" Dockerfile - if [ ${PS_MAJOR_RELEASE} != "80" ]; then - sed -i "s/ENV MYSQL_SHELL_VERSION.*/ENV MYSQL_SHELL_VERSION ${MYSQL_SHELL_RELEASE}-${RPM_RELEASE}/g" Dockerfile - fi + sed -i "s/ENV MYSQL_SHELL_VERSION.*/ENV MYSQL_SHELL_VERSION ${MYSQL_SHELL_RELEASE}-${RPM_RELEASE}/g" Dockerfile sed -i "s/ENV PS_REPO .*/ENV PS_REPO testing/g" Dockerfile if [ ${PS_MAJOR_RELEASE} != "80" ]; then if [ ${PS_MAJOR_RELEASE} = "84" ]; then @@ -1121,10 +1119,9 @@ parameters { )]) { sh ''' PS_RELEASE=$(echo ${BRANCH} | sed 's/release-//g') - PS_MAJOR_RELEASE=$(echo ${BRANCH} | sed "s/release-//g" | sed "s/\\.//g" | awk '{print substr($0, 0, 2)}') + PS_MAJOR_RELEASE=$(echo ${BRANCH} | sed "s/release-//g" | awk '{print substr($0, 0, 3)}') PS_MAJOR_FULL_RELEASE=$(echo ${BRANCH} | sed "s/release-//g" | sed "s/-.*//g") echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin - PS_RELEASE=$(echo ${BRANCH} | sed 's/release-//g') sudo docker manifest push perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} sudo docker buildx imagetools create -t perconalab/percona-server:${PS_RELEASE} perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} sudo docker buildx imagetools create -t perconalab/percona-server:${PS_MAJOR_FULL_RELEASE} perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} @@ -1140,7 +1137,7 @@ parameters { success { script { if (env.FIPSMODE == 'YES') { - slackNotify("${SLACKNOTIFY}", "#00FF00", "[${JOB_NAME}]: PRO build has been finished successfully for ${BRANCH} - [${BUILD_URL}]") + slackNotify("${SLACKNOTIFY}", "#00FF00", "[${JOB_NAME}]: PRO -> build has been finished successfully for ${BRANCH} - [${BUILD_URL}]") } else { slackNotify("${SLACKNOTIFY}", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${BRANCH} - [${BUILD_URL}]") } @@ -1216,16 +1213,19 @@ parameters { deleteDir() } failure { - slackNotify("${SLACKNOTIFY}", "#FF0000", "[${JOB_NAME}]: build failed for ${BRANCH} - [${BUILD_URL}]") - script { - currentBuild.description = "Built on ${BRANCH}" - } deleteDir() } always { sh ''' sudo rm -rf ./* ''' + script { + if (env.FIPSMODE == 'YES') { + currentBuild.description = "Pro -> Build on ${BRANCH}" + } else { + currentBuild.description = "Build on ${BRANCH}" + } + } deleteDir() } } diff --git a/pxb/jenkins/pxb-80-docker.groovy b/pxb/jenkins/pxb-80-docker.groovy new file mode 100644 index 0000000000..cc0451ab6a --- /dev/null +++ b/pxb/jenkins/pxb-80-docker.groovy @@ -0,0 +1,255 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +import groovy.transform.Field + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def minitestNodes = [ "min-bullseye-x64", + "min-bookworm-x64", + "min-centos-7-x64", + "min-ol-8-x64", + "min-focal-x64", + "min-jammy-x64", + "min-ol-9-x64" ] + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/percona/percona-xtrabackup.git', + description: 'URL for PXB git repository', + name: 'GIT_REPO') + string( + defaultValue: '8.0', + description: 'Tag/Branch for PXB repository', + name: 'BRANCH') + string( + defaultValue: '1', + description: 'RPM release value', + name: 'RPM_RELEASE') + choice( + choices: 'testing\nlaboratory\nexperimental', + description: 'Repo component to push packages to', + name: 'COMPONENT') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + stages { + stage('Build docker containers') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + script { + echo "====> Build docker containers" + sh ''' + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor + sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor + sudo apt-get install -y docker-ce docker-ce-cli containerd.io + export DOCKER_CLI_EXPERIMENTAL=enabled + sudo mkdir -p /usr/libexec/docker/cli-plugins/ + sudo curl -L https://github.com/docker/buildx/releases/download/v0.21.2/buildx-v0.21.2.linux-amd64 -o /usr/libexec/docker/cli-plugins/docker-buildx + sudo chmod +x /usr/libexec/docker/cli-plugins/docker-buildx + sudo systemctl restart docker + sudo apt-get install -y qemu-system binfmt-support qemu-user-static + sudo qemu-system-x86_64 --version + sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + curl -O https://raw.githubusercontent.com/percona/percona-xtrabackup/${BRANCH}/XB_VERSION + . ./XB_VERSION + curl -O https://raw.githubusercontent.com/percona/percona-server/refs/heads/${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}/MYSQL_VERSION + . ./MYSQL_VERSION + rm -rf percona-docker + git clone https://github.com/percona/percona-docker + if [ \${MYSQL_VERSION_MINOR} = "0" ]; then + cd percona-docker/percona-xtrabackup-8.0 + else + cd percona-docker/percona-xtrabackup-8.x + fi + sed -i "s/ENV XTRABACKUP_VERSION.*/ENV XTRABACKUP_VERSION ${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}/g" Dockerfile + sed -i "s/ENV PS_VERSION.*/ENV PS_VERSION ${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.1/g" Dockerfile + if [ \${MYSQL_VERSION_MINOR} = "0" ]; then + sed -i "s/pxb-80 testing/pxb-80 ${COMPONENT}/g" Dockerfile + else + sed -i "s/pxb-84-lts testing/pxb-84-lts ${COMPONENT}/g" Dockerfile + fi + sudo docker build --no-cache -t perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-amd64 --platform "linux/amd64" . + sudo docker build --no-cache -t perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-arm64 --platform="linux/arm64" . + + sudo docker images + ''' + withCredentials([ + usernamePassword(credentialsId: 'hub.docker.com', + passwordVariable: 'PASS', + usernameVariable: 'USER' + )]) { + sh ''' + echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin + curl -O https://raw.githubusercontent.com/percona/percona-xtrabackup/${BRANCH}/XB_VERSION + . ./XB_VERSION + sudo docker push perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-amd64 + sudo docker push perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-arm64 + + sudo docker manifest create perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} \ + perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-amd64 \ + perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-arm64 + sudo docker manifest annotate perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-arm64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-amd64 --os linux --arch amd64 + sudo docker manifest inspect perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} + + sudo docker manifest push perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} + sudo docker buildx imagetools create -t perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA} perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} + sudo docker buildx imagetools create -t perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH} perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} + sudo docker buildx imagetools create -t perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR} perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} + sudo docker buildx imagetools create -t perconalab/percona-xtrabackup:latest perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} + ''' + } + } // scripts + } // steps + } // stage +stage('Check by Trivy') { + agent { + label params.CLOUD == 'Hetzner' ? 'deb12-x64' : 'min-focal-x64' + } + environment { + TRIVY_LOG = "trivy-high-junit.xml" + } + steps { + script { + try { + // 🔹 Fetch XtraBackup Version + echo "🔄 Fetching XtraBackup version..." + sh ''' + curl -O https://raw.githubusercontent.com/percona/percona-xtrabackup/${BRANCH}/XB_VERSION + cat XB_VERSION + ''' + + // ✅ Read the version file and parse it manually (CPS-compatible way) + def versionEnv = [:] + def versionContent = readFile('XB_VERSION') + + // 🔹 Manually split lines and process them + versionContent.split("\n").each { line -> + def parts = line.split('=') + if (parts.length == 2) { + versionEnv[parts[0].trim()] = parts[1].trim() + } + } + + // 🔹 Extract version components + def XB_VERSION_MAJOR = versionEnv['XB_VERSION_MAJOR'] + def XB_VERSION_MINOR = versionEnv['XB_VERSION_MINOR'] + def XB_VERSION_PATCH = versionEnv['XB_VERSION_PATCH'] + def XB_VERSION_EXTRA = versionEnv['XB_VERSION_EXTRA'] + + // 🔹 Install Trivy if not already installed + sh ''' + if ! command -v trivy &> /dev/null; then + echo "🔄 Installing Trivy..." + sudo apt-get update + sudo apt-get -y install wget apt-transport-https gnupg lsb-release + wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add - + echo deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list.d/trivy.list + sudo apt-get update + sudo apt-get -y install trivy + else + echo "✅ Trivy is already installed." + fi + ''' + + // 🔹 Define the image tags + def imageList = [ + "perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-amd64", + "perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-arm64" + ] + + // 🔹 Scan images and store logs + imageList.each { image -> + echo "🔍 Scanning ${image}..." + def result = sh(script: """#!/bin/bash + LANG=C.UTF-8 sudo trivy image --quiet \ + --format table \ + --timeout 10m0s \ + --ignore-unfixed \ + --exit-code 1 \ + --severity HIGH,CRITICAL ${image} | tee -a ${TRIVY_LOG} + """, returnStatus: true) + + if (result != 0) { + error "❌ Trivy detected vulnerabilities in ${image}. See ${TRIVY_LOG} for details." + } else { + echo "✅ No critical vulnerabilities found in ${image}." + } + } + } catch (Exception e) { + error "❌ Trivy scan failed: ${e.message}" + } + } + } + post { + always { + // 🔹 Archive the report + archiveArtifacts artifacts: "${TRIVY_LOG}", allowEmptyArchive: true + } + } +} +/* + stage('Check by trivy') { + agent { + label params.CLOUD == 'Hetzner' ? 'deb12-x64' : 'min-focal-x64' + } + steps { + catchError { + sh ''' + curl -O https://raw.githubusercontent.com/percona/percona-xtrabackup/${BRANCH}/XB_VERSION + . ./XB_VERSION + sudo apt-get update + sudo apt-get -y install wget apt-transport-https gnupg lsb-release + wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add - + echo deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list.d/trivy.list + sudo apt-get update + sudo apt-get -y install trivy + sudo trivy -q image --format table \ + --timeout 10m0s --ignore-unfixed --exit-code 1 --severity HIGH,CRITICAL perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-amd64 | tee -a trivy-hight-junit.xml + sudo trivy -q image --format table \ + --timeout 10m0s --ignore-unfixed --exit-code 1 --severity HIGH,CRITICAL perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-arm64 | tee -a trivy-hight-junit.xml + ''' + } + } + } +*/ + } + post { + always { + sh ''' + sudo rm -rf ./* + ''' + script { + currentBuild.description = "Built on ${BRANCH}" + } + deleteDir() + } + } +} diff --git a/pxb/jenkins/pxb-80-docker.yml b/pxb/jenkins/pxb-80-docker.yml new file mode 100644 index 0000000000..5021470d0b --- /dev/null +++ b/pxb/jenkins/pxb-80-docker.yml @@ -0,0 +1,15 @@ +- job: + name: hetzner-pxb8.0-docker-build + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: pxb/jenkins/pxb-80-docker.groovy + diff --git a/pxb/jenkins/pxb-80.groovy b/pxb/jenkins/pxb-80.groovy index 31c2da50c7..cba53a0568 100644 --- a/pxb/jenkins/pxb-80.groovy +++ b/pxb/jenkins/pxb-80.groovy @@ -191,7 +191,7 @@ pipeline { description: 'Enable fipsmode', name: 'FIPSMODE') choice( - choices: 'laboratory\ntesting\nexperimental', + choices: 'testing\nlaboratory\nexperimental', description: 'Repo component to push packages to', name: 'COMPONENT') } @@ -205,7 +205,13 @@ pipeline { steps { // slackNotify("", "#00FF00", "[${JOB_NAME}]: starting build for ${BRANCH} - [${BUILD_URL}]") cleanUpWS() - buildStage("ubuntu:focal", "--get_sources=1") + script { + if (env.FIPSMODE == 'YES') { + buildStage("ubuntu:focal", "--get_sources=1 --enable_fipsmode=1") + } else { + buildStage("ubuntu:focal", "--get_sources=1") + } + } sh ''' REPO_UPLOAD_PATH=$(grep "UPLOAD" test/percona-xtrabackup-8.0.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") @@ -716,7 +722,23 @@ pipeline { signDEB() } } - + stage('Push Tarballs to TESTING download area') { + steps { + script { + try { + if (env.FIPSMODE == 'YES') { + uploadTarballToDownloadsTesting(params.CLOUD, "pxb-gated", "${BRANCH}") + } else { + uploadTarballToDownloadsTesting(params.CLOUD, "pxb", "${BRANCH}") + } + } + catch (err) { + echo "Caught: ${err}" + currentBuild.result = 'UNSTABLE' + } + } + } + } stage('Push to public repository') { steps { script { @@ -781,26 +803,26 @@ pipeline { sudo apt-get install -y qemu-system binfmt-support qemu-user-static sudo qemu-system-x86_64 --version sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - curl -O https://raw.githubusercontent.com/percona/percona-xtrabackup/${BRANCH}/MYSQL_VERSION + curl -O https://raw.githubusercontent.com/percona/percona-xtrabackup/${BRANCH}/XB_VERSION + . ./XB_VERSION + curl -O https://raw.githubusercontent.com/percona/percona-server/refs/heads/${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}/MYSQL_VERSION . ./MYSQL_VERSION - XB_VERSION_MAJOR = sh(returnStdout: true, script: "grep 'XB_VERSION_MAJOR' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 ").trim() - XB_VERSION_MINOR = sh(returnStdout: true, script: "grep 'XB_VERSION_MINOR' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 ").trim() - XB_VERSION_PATCH = sh(returnStdout: true, script: "grep 'XB_VERSION_PATCH' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 ").trim() - XB_VERSION_EXTRA = sh(returnStdout: true, script: "grep 'XB_VERSION_EXTRA' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 | sed 's/-//g'").trim() - XB_REVISION = sh(returnStdout: true, script: "grep 'REVISION' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 ").trim() - PXB_RELEASE_VERSION = sh(returnStdout: true, script: """ echo ${BRANCH} | sed -nE '/release-(8\\.[0-9]{1})\\..*/s//\\1/p' """).trim() + rm -rf percona-docker git clone https://github.com/percona/percona-docker - cd percona-docker/percona-xtrabackup-8.0 - sed -i "s/ENV XTRABACKUP_VERSION.*/ENV XTRABACKUP_VERSION ${PXB_RELEASE_VERSION}/g" Dockerfile - sed -i "s/ENV PS_VERSION.*/ENV PS_VERSION ${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}/g" Dockerfile - sed -i "s/pxb-80 testing/pxb-80 ${COMPONENT}/g" Dockerfile - sudo docker build --no-cache --platform "linux/amd64" -t perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION} . - - sed -i "s/ENV XTRABACKUP_VERSION.*/ENV XTRABACKUP_VERSION ${PXB_RELEASE_VERSION}/g" Dockerfile.aarch64 - sed -i "s/ENV PS_VERSION.*/ENV PS_VERSION ${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}/g" Dockerfile.aarch64 - sed -i "s/pxb-80 testing/pxb-80 ${COMPONENT}/g" Dockerfile.aarch64 - sudo docker build --no-cache -t perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION}-aarch64 --platform="linux/arm64" -f Dockerfile.aarch64 . - + if [ \${MYSQL_VERSION_MINOR} = "0" ]; then + cd percona-docker/percona-xtrabackup-8.0 + else + cd percona-docker/percona-xtrabackup-8.x + fi + sed -i "s/ENV XTRABACKUP_VERSION.*/ENV XTRABACKUP_VERSION ${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}/g" Dockerfile + sed -i "s/ENV PS_VERSION.*/ENV PS_VERSION ${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.1/g" Dockerfile + if [ \${MYSQL_VERSION_MINOR} = "0" ]; then + sed -i "s/pxb-80 testing/pxb-80 ${COMPONENT}/g" Dockerfile + else + sed -i "s/pxb-84-lts testing/pxb-84-lts ${COMPONENT}/g" Dockerfile + fi + sudo docker build --no-cache -t perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-amd64 --platform "linux/amd64" . + sudo docker build --no-cache -t perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-arm64 --platform="linux/arm64" . sudo docker images ''' withCredentials([ @@ -810,38 +832,27 @@ pipeline { )]) { sh ''' echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin - #curl -O https://raw.githubusercontent.com/percona/percona-xtrabackup/${BRANCH}/MYSQL_VERSION - #. ./MYSQL_VERSION - XB_VERSION_MAJOR = sh(returnStdout: true, script: "grep 'XB_VERSION_MAJOR' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 ").trim() - XB_VERSION_MINOR = sh(returnStdout: true, script: "grep 'XB_VERSION_MINOR' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 ").trim() - XB_VERSION_PATCH = sh(returnStdout: true, script: "grep 'XB_VERSION_PATCH' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 ").trim() - XB_VERSION_EXTRA = sh(returnStdout: true, script: "grep 'XB_VERSION_EXTRA' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 | sed 's/-//g'").trim() - XB_REVISION = sh(returnStdout: true, script: "grep 'REVISION' ./test/percona-xtrabackup-8.0.properties | cut -d = -f 2 ").trim() - PXB_RELEASE_VERSION = sh(returnStdout: true, script: """ echo ${BRANCH} | sed -nE '/release-(8\\.[0-9]{1})\\..*/s//\\1/p' """).trim() - sudo docker push perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION} - sudo docker push perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION}-aarch64 - - sudo docker manifest create perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH} \ - perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION} \ - perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION}-aarch64 - sudo docker manifest annotate perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH} perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION}-aarch64 --os linux --arch arm64 --varia -t v8 - sudo docker manifest annotate perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH} perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION} --os linux --arch amd64 - sudo docker manifest inspect perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH} - - sudo docker manifest create perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR} \ - perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION} \ - perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION}-aarch64 - sudo docker manifest annotate perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR} perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION}-aarch64 --os linux --arch arm64 --variant v8 - sudo docker manifest annotate perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR} perconalab/percona-xtrabackup:${PXB_RELEASE_VERSION} --os linux --arch amd64 - sudo docker manifest inspect perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR} - - sudo docker manifest push perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH} - sudo docker manifest push perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR} + curl -O https://raw.githubusercontent.com/percona/percona-xtrabackup/${BRANCH}/XB_VERSION + . ./XB_VERSION + sudo docker push perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-amd64 + sudo docker push perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-arm64 + + sudo docker manifest create perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} \ + perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-amd64 \ + perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-arm64 + sudo docker manifest annotate perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-arm64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-amd64 --os linux --arch amd64 + sudo docker manifest inspect perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} + + sudo docker manifest push perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} + sudo docker buildx imagetools create -t perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA} perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} + sudo docker buildx imagetools create -t perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH} perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} + sudo docker buildx imagetools create -t perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR} perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} + sudo docker buildx imagetools create -t perconalab/percona-xtrabackup:latest perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} ''' } - } - } + } // if + } // scripts } } } diff --git a/pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy b/pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy index bf0fe90084..b64d89dbeb 100644 --- a/pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy +++ b/pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy @@ -174,6 +174,79 @@ pipeline { } } } +stage('Check by Trivy') { + agent { + label params.CLOUD == 'Hetzner' ? 'deb12-x64' : 'min-focal-x64' + } + environment { + TRIVY_LOG = "trivy-high-junit.xml" + } + steps { + script { + try { + // 🔹 Fetch MySQL Version + echo "🔄 Fetching MySQL version..." + sh 'curl -O https://raw.githubusercontent.com/percona/percona-xtradb-cluster/${GIT_BRANCH}/MYSQL_VERSION' + + // ✅ Source the version file + def mysqlVersion = readFile('MYSQL_VERSION').trim() + def versionMatcher = mysqlVersion =~ /(\d+)\.(\d+)\.(\d+)(.*)/ + + if (!versionMatcher) { + error "❌ Failed to parse MySQL version from MYSQL_VERSION file." + } + + def MYSQL_VERSION_MAJOR = versionMatcher[0][1] + def MYSQL_VERSION_MINOR = versionMatcher[0][2] + def MYSQL_VERSION_PATCH = versionMatcher[0][3] + def MYSQL_VERSION_EXTRA = versionMatcher[0][4] + + // 🔹 Install Trivy if not already installed + sh ''' + if ! command -v trivy &> /dev/null; then + echo "🔄 Installing Trivy..." + sudo apt-get update + sudo apt-get -y install wget apt-transport-https gnupg lsb-release + wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add - + echo deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list.d/trivy.list + sudo apt-get update + sudo apt-get -y install trivy + else + echo "✅ Trivy is already installed." + fi + ''' + + // 🔹 Define the image tags + def imageList = [ + "perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-amd64", + "perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-arm64" + ] + + // 🔹 Scan images and store logs + imageList.each { image -> + echo "🔍 Scanning ${image}..." + def result = sh(script: """#!/bin/bash + sudo trivy image --quiet \ + --format table \ + --timeout 10m0s \ + --ignore-unfixed \ + --exit-code 1 \ + --severity HIGH,CRITICAL ${image} | tee -a ${TRIVY_LOG} + """, returnStatus: true) + + if (result != 0) { + error "❌ Trivy detected vulnerabilities in ${image}. See ${TRIVY_LOG} for details." + } else { + echo "✅ No critical vulnerabilities found in ${image}." + } + } + } catch (Exception e) { + error "❌ Trivy scan failed: ${e.message}" + } // try + } // script + } // steps + } // stage +/* stage('Check by trivy') { agent { label params.CLOUD == 'Hetzner' ? 'deb12-x64' : 'min-focal-x64' @@ -197,6 +270,7 @@ pipeline { } } } +*/ } post { success { From acffbca756da47f6fb7ce5f66be916d8fc7423d7 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Mon, 19 May 2025 15:43:12 +0300 Subject: [PATCH 110/269] Fix PG build (#3336) --- ppg/pg_tarballs-arm.groovy | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ppg/pg_tarballs-arm.groovy b/ppg/pg_tarballs-arm.groovy index 5a4c0c74ae..fba2908dc3 100644 --- a/ppg/pg_tarballs-arm.groovy +++ b/ppg/pg_tarballs-arm.groovy @@ -135,7 +135,7 @@ pipeline { cat uploadPath-${PACKAGE_VERSION} """ stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" - buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") + buildStage("oraclelinux:9", "--version=${PACKAGE_VERSION}") pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17) uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") @@ -187,7 +187,7 @@ pipeline { cat uploadPath-${PACKAGE_VERSION} """ stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" - buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") + buildStage("oraclelinux:9", "--version=${PACKAGE_VERSION}") pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_16) uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_16, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") @@ -239,7 +239,7 @@ pipeline { cat uploadPath-${PACKAGE_VERSION} """ stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" - buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") + buildStage("oraclelinux:9", "--version=${PACKAGE_VERSION}") pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_15) uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_15, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") @@ -291,7 +291,7 @@ pipeline { cat uploadPath-${PACKAGE_VERSION} """ stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" - buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") + buildStage("oraclelinux:9", "--version=${PACKAGE_VERSION}") pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_14) uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_14, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") @@ -343,7 +343,7 @@ pipeline { cat uploadPath-${PACKAGE_VERSION} """ stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" - buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") + buildStage("oraclelinux:9", "--version=${PACKAGE_VERSION}") pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_13) uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_13, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") From fd9b2d2b39655f561894838f9f1ea6a641cf8aab Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Tue, 20 May 2025 10:23:04 +0300 Subject: [PATCH 111/269] Update pg_tarballs.groovy (#3339) --- ppg/pg_tarballs.groovy | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ppg/pg_tarballs.groovy b/ppg/pg_tarballs.groovy index ab4cc0d04e..41b7943b28 100644 --- a/ppg/pg_tarballs.groovy +++ b/ppg/pg_tarballs.groovy @@ -135,7 +135,7 @@ pipeline { cat uploadPath-${PACKAGE_VERSION} """ stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" - buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") + buildStage("oraclelinux:9", "--version=${PACKAGE_VERSION}") pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17) uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") @@ -187,7 +187,7 @@ pipeline { cat uploadPath-${PACKAGE_VERSION} """ stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" - buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") + buildStage("oraclelinux:9", "--version=${PACKAGE_VERSION}") pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_16) uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_16, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") @@ -239,7 +239,7 @@ pipeline { cat uploadPath-${PACKAGE_VERSION} """ stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" - buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") + buildStage("oraclelinux:9", "--version=${PACKAGE_VERSION}") pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_15) uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_15, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") @@ -291,7 +291,7 @@ pipeline { cat uploadPath-${PACKAGE_VERSION} """ stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" - buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") + buildStage("oraclelinux:9", "--version=${PACKAGE_VERSION}") pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_14) uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_14, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") @@ -343,7 +343,7 @@ pipeline { cat uploadPath-${PACKAGE_VERSION} """ stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" - buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") + buildStage("oraclelinux:9", "--version=${PACKAGE_VERSION}") pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_13) uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_13, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") From 1438acd4a99b7ccd42fffdba4ae8ed4f4503afbb Mon Sep 17 00:00:00 2001 From: Sandra Romanchenko <53295797+sandraromanchenko@users.noreply.github.com> Date: Thu, 22 May 2025 12:25:56 +0300 Subject: [PATCH 112/269] PML. Download code from github on docker build stage (#3343) --- pml/pml-functional-tests.groovy | 6 ------ 1 file changed, 6 deletions(-) diff --git a/pml/pml-functional-tests.groovy b/pml/pml-functional-tests.groovy index fde04a0d23..31d4619613 100644 --- a/pml/pml-functional-tests.groovy +++ b/pml/pml-functional-tests.groovy @@ -76,12 +76,6 @@ pipeline { git poll: false, branch: params.PSMDB_TESTING_BRANCH, url: 'https://github.com/Percona-QA/psmdb-testing.git' } - dir('percona-mongolink') { - git credentialsId: 'JNKPercona_API_token', - url: 'https://github.com/Percona-Lab/percona-mongolink.git', - branch: params.MLINK_BRANCH - } - sh """ cd psmdb-testing/mlink docker-compose build From b4f20155ae5f7beb469f1521fc1a1bbaa4f50d16 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Thu, 22 May 2025 14:03:56 +0300 Subject: [PATCH 113/269] Update version --- ppg/pg_tarballs-arm.groovy | 4 ++-- ppg/pg_tarballs.groovy | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ppg/pg_tarballs-arm.groovy b/ppg/pg_tarballs-arm.groovy index fba2908dc3..595abefa9b 100644 --- a/ppg/pg_tarballs-arm.groovy +++ b/ppg/pg_tarballs-arm.groovy @@ -124,7 +124,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = "release-17.4.1" + def BRANCH_NAME = "release-17.5.1" def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl3") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" @@ -150,7 +150,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = 'release-17.4.1' + def BRANCH_NAME = 'release-17.5.1' def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl1.1") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" diff --git a/ppg/pg_tarballs.groovy b/ppg/pg_tarballs.groovy index 41b7943b28..6f0aef5409 100644 --- a/ppg/pg_tarballs.groovy +++ b/ppg/pg_tarballs.groovy @@ -124,7 +124,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = "release-17.4.1" + def BRANCH_NAME = "release-17.5.1" def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl3") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" @@ -150,7 +150,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = 'release-17.4.1' + def BRANCH_NAME = 'release-17.5.1' def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl1.1") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" From 6a187b1b209824c7edba5ff5c5b0c29db1e8f680 Mon Sep 17 00:00:00 2001 From: Surabhi Bhat Date: Thu, 22 May 2025 17:01:25 +0530 Subject: [PATCH 114/269] PKG-733 Add autobuild and release jenkins jobs for Percona Mongolink --- pml/get-pml-branches.groovy | 109 ++++++++++ pml/get-pml-branches.yml | 17 ++ pml/percona-mongolink.groovy | 371 +++++++++++++++++++++++++++++++++++ pml/percona-mongolink.yml | 15 ++ 4 files changed, 512 insertions(+) create mode 100644 pml/get-pml-branches.groovy create mode 100644 pml/get-pml-branches.yml create mode 100644 pml/percona-mongolink.groovy create mode 100644 pml/percona-mongolink.yml diff --git a/pml/get-pml-branches.groovy b/pml/get-pml-branches.groovy new file mode 100644 index 0000000000..6cd86a3f9d --- /dev/null +++ b/pml/get-pml-branches.groovy @@ -0,0 +1,109 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'launcher-x64' : 'micro-amazon' + } + parameters { + choice( + choices: ['Hetzner','AWS'], + description: 'Cloud infra for build', + name: 'CLOUD') + string( + defaultValue: 'https://github.com/percona/percona-mongolink.git', + description: 'URL for percona-mongolink repository', + name: 'GIT_REPO') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + timestamps () + } + stages { + stage('Get release branches') { + steps { + script { + String S3_STASH = (params.CLOUD == 'Hetzner') ? 'HTZ_STASH' : 'AWS_STASH' + String S3_ENDPOINT = (params.CLOUD == 'Hetzner') ? '--endpoint-url https://fsn1.your-objectstorage.com' : '--endpoint-url https://s3.amazonaws.com' + withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: S3_STASH, secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { + sh """ + EC=0 + AWS_RETRY_MODE=standard AWS_MAX_ATTEMPTS=10 aws s3 ls s3://percona-jenkins-artifactory/percona-mongolink/branch_commit_id.properties ${S3_ENDPOINT} --cli-connect-timeout 60 --cli-read-timeout 120 || EC=\$? + + if [ \${EC} = 1 ]; then + LATEST_RELEASE_BRANCH=\$(git -c 'versionsort.suffix=-' ls-remote --heads --sort='v:refname' ${GIT_REPO} release\\* | tail -1) + BRANCH_NAME=\$(echo \${LATEST_RELEASE_BRANCH} | cut -d "/" -f 3) + COMMIT_ID=\$(echo \${LATEST_RELEASE_BRANCH} | cut -d " " -f 1) + + echo "BRANCH_NAME=\${BRANCH_NAME}" > branch_commit_id.properties + echo "COMMIT_ID=\${COMMIT_ID}" >> branch_commit_id.properties + + AWS_RETRY_MODE=standard AWS_MAX_ATTEMPTS=10 aws s3 cp branch_commit_id.properties s3://percona-jenkins-artifactory/percona-mongolink/ ${S3_ENDPOINT} --cli-connect-timeout 60 --cli-read-timeout 120 + echo "START_NEW_BUILD=NO" > startBuild + else + AWS_RETRY_MODE=standard AWS_MAX_ATTEMPTS=10 aws s3 cp s3://percona-jenkins-artifactory/percona-mongolink/branch_commit_id.properties . ${S3_ENDPOINT} --cli-connect-timeout 60 --cli-read-timeout 120 + source branch_commit_id.properties + + LATEST_RELEASE_BRANCH=\$(git -c 'versionsort.suffix=-' ls-remote --heads --sort='v:refname' ${GIT_REPO} release\\* | tail -1) + LATEST_BRANCH_NAME=\$(echo \${LATEST_RELEASE_BRANCH} | cut -d "/" -f 3) + LATEST_COMMIT_ID=\$(echo \${LATEST_RELEASE_BRANCH} | cut -d " " -f 1) + + if [ "x\${COMMIT_ID}" != "x\${LATEST_COMMIT_ID}" ] || [ "x\${BRANCH_NAME}" != "x\${LATEST_BRANCH_NAME}" ]; then + echo "START_NEW_BUILD=YES" > startBuild + else + echo "START_NEW_BUILD=NO" > startBuild + fi + + echo "BRANCH_NAME=\${LATEST_BRANCH_NAME}" > branch_commit_id.properties + echo "COMMIT_ID=\${LATEST_COMMIT_ID}" >> branch_commit_id.properties + AWS_RETRY_MODE=standard AWS_MAX_ATTEMPTS=10 aws s3 cp branch_commit_id.properties s3://percona-jenkins-artifactory/percona-mongolink/ ${S3_ENDPOINT} --cli-connect-timeout 60 --cli-read-timeout 120 + fi + """ + } + START_NEW_BUILD = sh(returnStdout: true, script: "source startBuild; echo \${START_NEW_BUILD}").trim() + BRANCH_NAME = sh(returnStdout: true, script: "source branch_commit_id.properties; echo \${BRANCH_NAME}").trim() + COMMIT_ID = sh(returnStdout: true, script: "source branch_commit_id.properties; echo \${COMMIT_ID}").trim() + VERSION = sh(returnStdout: true, script: "source branch_commit_id.properties; echo \${BRANCH_NAME} | sed s:release\\-::").trim() + } + } + } + stage('Build needed') { + when { + expression { START_NEW_BUILD == 'YES' } + } + steps { + withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: 'AWS_STASH', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { + sh """ + echo ${START_NEW_BUILD}: build required + """ + } + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: new changes for branch ${BRANCH_NAME}[commit id: ${COMMIT_ID}] were detected, build will be started soon") + build job: 'hetzner-pml-autobuild-RELEASE', parameters: [string(name: 'CLOUD', value: CLOUD), string(name: 'GIT_BRANCH', value: BRANCH_NAME), string(name: 'VERSION', value: VERSION), string(name: 'COMPONENT', value: 'testing')] + } + } + stage('Build skipped') { + when { + expression { START_NEW_BUILD == 'NO' } + } + steps { + withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: 'AWS_STASH', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { + sh """ + echo ${START_NEW_BUILD} build required + """ + } + } + } + } + post { + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/pml/get-pml-branches.yml b/pml/get-pml-branches.yml new file mode 100644 index 0000000000..a3f56d802a --- /dev/null +++ b/pml/get-pml-branches.yml @@ -0,0 +1,17 @@ +- job: + name: hetzner-pml-autobuild + project-type: pipeline + description: | + Do not edit this job through the web! + Check PML repo for new release branches to build packages + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: pml/get-pml-branches.groovy + triggers: + - timed: "H/15 * * * *" diff --git a/pml/percona-mongolink.groovy b/pml/percona-mongolink.groovy new file mode 100644 index 0000000000..9f3f105a4d --- /dev/null +++ b/pml/percona-mongolink.groovy @@ -0,0 +1,371 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + sh """ + set -o xtrace + mkdir test + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/packaging/scripts/percona-mongolink_builder.sh -O percona-mongolink_builder.sh + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./percona-mongolink_builder.sh --builddir=\${build_dir}/test --install_deps=1 + bash -x ./percona-mongolink_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --version=${VERSION} --branch=${GIT_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + """ +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def AWS_STASH_PATH + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'launcher-x64' : 'micro-amazon' + } + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/percona/percona-mongolink.git', + description: 'URL for percona-mongolink repository', + name: 'GIT_REPO') + string( + defaultValue: 'main', + description: 'Tag/Branch for percona-mongolink repository', + name: 'GIT_BRANCH') + string( + defaultValue: '1', + description: 'RPM/DEB release value', + name: 'RELEASE') + string( + defaultValue: '1.0.1', + description: 'VERSION value', + name: 'VERSION') + string( + defaultValue: 'pml', + description: 'PTA repo name', + name: 'PTA_REPO') + choice( + choices: 'laboratory\ntesting\nexperimental', + description: 'Repo component to push packages to', + name: 'COMPONENT') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + timestamps () + } + stages { + stage('Create Percona MongoLink source tarball') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + //slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") + cleanUpWS() + buildStage("oraclelinux:8", "--get_sources=1") + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/percona-mongolink.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/percona-mongolink.properties + cat uploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') + } + } + stage('Build Percona MongoLink generic source packages') { + parallel { + stage('Build Percona MongoLink generic source rpm') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_src_rpm=1") + + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) + } + } + stage('Build Percona MongoLink generic source deb') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("debian:buster", "--build_src_deb=1") + + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) + } + } + } //parallel + } // stage + stage('Build Percona MongoLink RPMs/DEBs/Binary tarballs') { + parallel { + stage('Oracle Linux 8') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 8 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Amazon Linux 2023') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("amazonlinux:2023", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Amazon Linux 2023 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("amazonlinux:2023", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bookworm(12)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bookworm(12) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } + } + + stage('Sign packages') { + steps { + signRPM(params.CLOUD) + signDEB(params.CLOUD) + } + } + stage('Push to public repository') { + steps { + // sync packages + sync2ProdAutoBuild(params.CLOUD, PTA_REPO, COMPONENT) + } + } + + } + post { + success { + //slackNotify("#releases", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}. Path to packages: experimental/${AWS_STASH_PATH}" + } + deleteDir() + } + failure { + //slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/pml/percona-mongolink.yml b/pml/percona-mongolink.yml new file mode 100644 index 0000000000..4f4202f063 --- /dev/null +++ b/pml/percona-mongolink.yml @@ -0,0 +1,15 @@ +- job: + name: hetzner-pml-autobuild-RELEASE + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: pml/percona-mongolink.groovy + From 3cb3b10287bb1637328beecafba37166e3a055b4 Mon Sep 17 00:00:00 2001 From: Sandra Romanchenko <53295797+sandraromanchenko@users.noreply.github.com> Date: Thu, 22 May 2025 18:11:32 +0300 Subject: [PATCH 115/269] PML. Fix build pipeline (#3348) --- pml/percona-mongolink.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pml/percona-mongolink.groovy b/pml/percona-mongolink.groovy index 9f3f105a4d..f86664cc3d 100644 --- a/pml/percona-mongolink.groovy +++ b/pml/percona-mongolink.groovy @@ -15,7 +15,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace cd \${build_dir} bash -x ./percona-mongolink_builder.sh --builddir=\${build_dir}/test --install_deps=1 - bash -x ./percona-mongolink_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --version=${VERSION} --branch=${GIT_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + bash -x ./percona-mongolink_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --version=${VERSION} --branch=${GIT_BRANCH} --rpm_release=${RELEASE} --deb_release=${RELEASE} ${STAGE_PARAM}" """ } From 52fe71153fb44c9a4bc7d4e4b0d61f1209f9c9a9 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Fri, 23 May 2025 19:05:35 +0300 Subject: [PATCH 116/269] make build on OL8 --- ppg/pg_tarballs.groovy | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ppg/pg_tarballs.groovy b/ppg/pg_tarballs.groovy index 6f0aef5409..c578b3cf4a 100644 --- a/ppg/pg_tarballs.groovy +++ b/ppg/pg_tarballs.groovy @@ -135,7 +135,7 @@ pipeline { cat uploadPath-${PACKAGE_VERSION} """ stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" - buildStage("oraclelinux:9", "--version=${PACKAGE_VERSION}") + buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17) uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") @@ -187,7 +187,7 @@ pipeline { cat uploadPath-${PACKAGE_VERSION} """ stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" - buildStage("oraclelinux:9", "--version=${PACKAGE_VERSION}") + buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_16) uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_16, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") @@ -239,7 +239,7 @@ pipeline { cat uploadPath-${PACKAGE_VERSION} """ stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" - buildStage("oraclelinux:9", "--version=${PACKAGE_VERSION}") + buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_15) uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_15, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") @@ -291,7 +291,7 @@ pipeline { cat uploadPath-${PACKAGE_VERSION} """ stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" - buildStage("oraclelinux:9", "--version=${PACKAGE_VERSION}") + buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_14) uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_14, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") @@ -343,7 +343,7 @@ pipeline { cat uploadPath-${PACKAGE_VERSION} """ stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" - buildStage("oraclelinux:9", "--version=${PACKAGE_VERSION}") + buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_13) uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_13, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") From 99cda4e91580a9375a79a7267627f71972fa87ce Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Sat, 24 May 2025 09:44:42 +0300 Subject: [PATCH 117/269] fix build --- ppg/pg_tarballs-arm.groovy | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ppg/pg_tarballs-arm.groovy b/ppg/pg_tarballs-arm.groovy index 595abefa9b..144eb0c78c 100644 --- a/ppg/pg_tarballs-arm.groovy +++ b/ppg/pg_tarballs-arm.groovy @@ -135,7 +135,7 @@ pipeline { cat uploadPath-${PACKAGE_VERSION} """ stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" - buildStage("oraclelinux:9", "--version=${PACKAGE_VERSION}") + buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17) uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") @@ -187,7 +187,7 @@ pipeline { cat uploadPath-${PACKAGE_VERSION} """ stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" - buildStage("oraclelinux:9", "--version=${PACKAGE_VERSION}") + buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_16) uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_16, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") @@ -239,7 +239,7 @@ pipeline { cat uploadPath-${PACKAGE_VERSION} """ stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" - buildStage("oraclelinux:9", "--version=${PACKAGE_VERSION}") + buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_15) uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_15, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") @@ -291,7 +291,7 @@ pipeline { cat uploadPath-${PACKAGE_VERSION} """ stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" - buildStage("oraclelinux:9", "--version=${PACKAGE_VERSION}") + buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_14) uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_14, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") @@ -343,7 +343,7 @@ pipeline { cat uploadPath-${PACKAGE_VERSION} """ stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" - buildStage("oraclelinux:9", "--version=${PACKAGE_VERSION}") + buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_13) uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_13, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") From 80c449b68f2b8ac5c9aef7482e4e5512a42d93ff Mon Sep 17 00:00:00 2001 From: Sandra Date: Tue, 27 May 2025 17:06:02 +0300 Subject: [PATCH 118/269] Test --- pml/pml-functional-tests.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pml/pml-functional-tests.groovy b/pml/pml-functional-tests.groovy index 31d4619613..459589d0f4 100644 --- a/pml/pml-functional-tests.groovy +++ b/pml/pml-functional-tests.groovy @@ -78,7 +78,7 @@ pipeline { sh """ cd psmdb-testing/mlink - docker-compose build + docker-compose build --no-cache docker-compose up -d if [ -n "${params.TEST_FILTER}" ]; then docker-compose run test pytest -v -s -k "${params.TEST_FILTER}" --junitxml=junit.xml || true From 44901f3b772b858b17563ae5c506924b59111abe Mon Sep 17 00:00:00 2001 From: Vadim Yalovets Date: Sun, 1 Jun 2025 15:33:15 +0300 Subject: [PATCH 119/269] Hetzner (#3363) --- proxysql/proxysql.groovy | 12 ++ .../percona-server-for-mysql-5.7.groovy | 105 ++++++++++++------ ...percona-server-for-mysql-8.0-docker.groovy | 29 +++-- pxb/jenkins/pxb-80-docker.groovy | 2 + 4 files changed, 105 insertions(+), 43 deletions(-) diff --git a/proxysql/proxysql.groovy b/proxysql/proxysql.groovy index 11e466dd2c..0c9b852519 100644 --- a/proxysql/proxysql.groovy +++ b/proxysql/proxysql.groovy @@ -349,7 +349,19 @@ pipeline { uploadTarballfromAWS(params.CLOUD, "test/tarball/", AWS_STASH_PATH, 'binary') } } + stage('Ubuntu Noble tarball') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_tarball=1") + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "test/tarball/", AWS_STASH_PATH, 'binary') + } + } } } diff --git a/ps/jenkins/percona-server-for-mysql-5.7.groovy b/ps/jenkins/percona-server-for-mysql-5.7.groovy index 575bb4c660..d0779c7669 100644 --- a/ps/jenkins/percona-server-for-mysql-5.7.groovy +++ b/ps/jenkins/percona-server-for-mysql-5.7.groovy @@ -6,19 +6,29 @@ library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ void installCli(String PLATFORM) { sh """ - set -o xtrace - if [ -d aws ]; then - rm -rf aws - fi - if [ ${PLATFORM} = "deb" ]; then - sudo apt-get update - sudo apt-get -y install wget curl unzip - elif [ ${PLATFORM} = "rpm" ]; then - sudo yum -y install wget curl unzip - fi - curl https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip -o awscliv2.zip - unzip awscliv2.zip - sudo ./aws/install || true + if [ \${CLOUD} = "AWS" ]; then + set -o xtrace + if [ -d aws ]; then + rm -rf aws + fi + if [ ${PLATFORM} = "deb" ]; then + sudo apt-get update + sudo apt-get -y install wget curl unzip + elif [ ${PLATFORM} = "rpm" ]; then + export RHVER=\$(rpm --eval %rhel) + if [ \${RHVER} = "7" ]; then + sudo sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* || true + sudo sed -i 's|#\\s*baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* || true + if [ -e "/etc/yum.repos.d/CentOS-SCLo-scl.repo" ]; then + cat /etc/yum.repos.d/CentOS-SCLo-scl.repo + fi + fi + sudo yum -y install wget curl unzip + fi + curl https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip -o awscliv2.zip + unzip awscliv2.zip + sudo ./aws/install || true + fi """ } @@ -43,16 +53,28 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { mkdir -p test wget --header="Authorization: token ${TOKEN}" --header="Accept: application/vnd.github.v3.raw" -O ps_builder.sh \$(echo ${GIT_REPO} | sed -re 's|github.com|api.github.com/repos|; s|\\.git\$||')/contents/build-ps/percona-server-5.7_builder.sh?ref=${BRANCH} sed -i "s|git clone \\\"\\\$REPO\\\"|git clone \$(echo ${GIT_REPO}| sed -re 's|github.com|${TOKEN}@github.com|') percona-server|g" ps_builder.sh - grep "git clone" ps_builder.sh pwd -P export build_dir=\$(pwd -P) set -o xtrace - cd \${build_dir} - if [ -f ./test/percona-server-5.7.properties ]; then - . ./test/percona-server-5.7.properties + if [ "$DOCKER_OS" = "none" ]; then + cd \${build_dir} + if [ -f ./test/percona-server-5.7.properties ]; then + . ./test/percona-server-5.7.properties + fi + sudo bash -x ./ps_builder.sh --builddir=\${build_dir}/test --install_deps=1 + bash -x ./ps_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --branch=${BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM} + else + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + export build_dir=\$(pwd -P) + set -o xtrace + cd \${build_dir} + if [ -f ./test/percona-server-5.7.properties ]; then + . ./test/percona-server-5.7.properties + fi + bash -x ./ps_builder.sh --builddir=\${build_dir}/test --install_deps=1 + bash -x ./ps_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --branch=${BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM} + " fi - sudo bash -x ./ps_builder.sh --builddir=\${build_dir}/test --install_deps=1 - bash -x ./ps_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --branch=${BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM} """ } } @@ -563,9 +585,15 @@ parameters { signDEB() } } + stage('Push to public repository') { + steps { + // sync packages + sync2PrivateProdAutoBuild(params.CLOUD, "ps-57-eol", COMPONENT) + } + } stage('Build docker container') { agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'min-buster-x64' + label params.CLOUD == 'Hetzner' ? 'launcher-x64' : 'min-buster-x64' } steps { script { @@ -583,11 +611,23 @@ parameters { PS_RELEASE=$(echo ${BRANCH} | sed 's/release-//g') PS_MAJOR_RELEASE=$(echo ${BRANCH} | sed "s/release-//g" | awk '{print substr($0, 0, 4)}') PS_MAJOR_MINOR_RELEASE=$(echo ${BRANCH} | sed "s/release-//g" | awk '{print substr($0, 0, 7)}' | sed "s/-//g") + sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common - sudo apt-get install -y docker.io - sudo systemctl status docker - sudo apt-get install -y qemu binfmt-support qemu-user-static + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor + sudo apt-get install -y docker-ce docker-ce-cli containerd.io + export DOCKER_CLI_EXPERIMENTAL=enabled + sudo mkdir -p /usr/libexec/docker/cli-plugins/ + sudo curl -L https://github.com/docker/buildx/releases/download/v0.21.2/buildx-v0.21.2.linux-amd64 -o /usr/libexec/docker/cli-plugins/docker-buildx + sudo chmod +x /usr/libexec/docker/cli-plugins/docker-buildx + sudo systemctl restart docker + sudo apt-get install -y qemu-system binfmt-support qemu-user-static + sudo qemu-system-x86_64 --version + sudo lscpu | grep -q 'sse4_2' && grep -q 'popcnt' /proc/cpuinfo && echo "Supports x86-64-v2" || echo "Does NOT support x86-64-v2" sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + git clone https://github.com/percona/percona-docker cd percona-docker/percona-server-5.7 mv /tmp/*.rpm . @@ -599,6 +639,8 @@ parameters { sudo docker tag percona/percona-server:${PS_RELEASE}.${RPM_RELEASE} percona/percona-server:${PS_MAJOR_MINOR_RELEASE} sudo docker images sudo docker save -o percona-server-${PS_RELEASE}-${RPM_RELEASE}.docker.tar percona/percona-server:${PS_RELEASE}.${RPM_RELEASE} percona/percona-server:${PS_RELEASE} percona/percona-server:${PS_MAJOR_RELEASE} percona/percona-server:${PS_MAJOR_MINOR_RELEASE} + sudo addgroup admin + sudo useradd -m -s /bin/bash -g admin -G admin admin sudo chown admin:admin percona-server-${PS_RELEASE}-${RPM_RELEASE}.docker.tar sudo chmod a+r percona-server-${PS_RELEASE}-${RPM_RELEASE}.docker.tar ls -la @@ -613,18 +655,11 @@ parameters { } } } - stage('Push to public repository') { - steps { - // sync packages - //sync2ProdAutoBuild('ps-57', COMPONENT) - sync2PrivateProdAutoBuild("ps-57-eol", COMPONENT) - } - } stage('Push Tarballs to TESTING download area') { steps { script { try { - uploadTarballToDownloadsTesting("ps-gated", "${BRANCH}") + uploadTarballToDownloadsTesting(params.CLOUD, "ps-gated", "${BRANCH}") } catch (err) { echo "Caught: ${err}" @@ -636,11 +671,8 @@ parameters { } post { success { - slackNotify("#releases", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${BRANCH} - [${BUILD_URL}]") + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${BRANCH} - [${BUILD_URL}]") unstash 'properties' - script { - currentBuild.description = "Built on ${BRANCH}; path to packages: ${COMPONENT}/${AWS_STASH_PATH}" - } deleteDir() } failure { @@ -651,6 +683,9 @@ parameters { sh ''' sudo rm -rf ./* ''' + script { + currentBuild.description = "Built on ${BRANCH}; path to packages: ${COMPONENT}/${AWS_STASH_PATH}" + } deleteDir() } } diff --git a/ps/jenkins/percona-server-for-mysql-8.0-docker.groovy b/ps/jenkins/percona-server-for-mysql-8.0-docker.groovy index 4a2cd6260e..dc65516575 100644 --- a/ps/jenkins/percona-server-for-mysql-8.0-docker.groovy +++ b/ps/jenkins/percona-server-for-mysql-8.0-docker.groovy @@ -343,16 +343,29 @@ parameters { imageList.each { image -> echo "🔍 Scanning ${image}..." def result = sh(script: """#!/bin/bash + set -e sudo trivy image --quiet \ - --format table \ - --timeout 10m0s \ - --ignore-unfixed \ - --exit-code 1 \ - --severity HIGH,CRITICAL ${image} | tee -a ${TRIVY_LOG} + --format table \ + --timeout 10m0s \ + --ignore-unfixed \ + --exit-code 1 \ + --scanners vuln \ + --severity HIGH,CRITICAL ${image} + echo "TRIVY_EXIT_CODE=\$?" """, returnStatus: true) + echo "Actual Trivy exit code: ${result}" // 🔴 Fail the build if vulnerabilities are found if (result != 0) { + sh """ + sudo trivy image --quiet \ + --format table \ + --timeout 10m0s \ + --ignore-unfixed \ + --exit-code 0 \ + --scanners vuln \ + --severity HIGH,CRITICAL ${image} | tee -a ${TRIVY_LOG} + """ error "❌ Trivy detected vulnerabilities in ${image}. See ${TRIVY_LOG} for details." } else { echo "✅ No critical vulnerabilities found in ${image}." @@ -378,15 +391,15 @@ parameters { } failure { slackNotify("${SLACKNOTIFY}", "#FF0000", "[${JOB_NAME}]: build failed for ${BRANCH} - [${BUILD_URL}]") - script { - currentBuild.description = "Built on ${BRANCH}" - } deleteDir() } always { sh ''' sudo rm -rf ./* ''' + script { + currentBuild.description = "Built on ${BRANCH}" + } deleteDir() } } diff --git a/pxb/jenkins/pxb-80-docker.groovy b/pxb/jenkins/pxb-80-docker.groovy index cc0451ab6a..fed079b2af 100644 --- a/pxb/jenkins/pxb-80-docker.groovy +++ b/pxb/jenkins/pxb-80-docker.groovy @@ -92,8 +92,10 @@ pipeline { sed -i "s/ENV PS_VERSION.*/ENV PS_VERSION ${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.1/g" Dockerfile if [ \${MYSQL_VERSION_MINOR} = "0" ]; then sed -i "s/pxb-80 testing/pxb-80 ${COMPONENT}/g" Dockerfile + sed -i "s/ps-80;/ps-80 ${COMPONENT};/g" Dockerfile else sed -i "s/pxb-84-lts testing/pxb-84-lts ${COMPONENT}/g" Dockerfile + sed -i "s/ps-84-lts release/ps-84-lts ${COMPONENT}/g" Dockerfile fi sudo docker build --no-cache -t perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-amd64 --platform "linux/amd64" . sudo docker build --no-cache -t perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-arm64 --platform="linux/arm64" . From db4df2c08e7bd8da9cf7d71a3bb6a72db0937d9f Mon Sep 17 00:00:00 2001 From: Sandra Romanchenko <53295797+sandraromanchenko@users.noreply.github.com> Date: Thu, 5 Jun 2025 09:57:34 +0300 Subject: [PATCH 120/269] PLM rename (#3372) --- ...al-tests.groovy => plm-functional-tests.groovy} | 14 +++++++------- ...nctional-tests.yml => plm-functional-tests.yml} | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) rename pml/{pml-functional-tests.groovy => plm-functional-tests.groovy} (90%) rename pml/{pml-functional-tests.yml => plm-functional-tests.yml} (78%) diff --git a/pml/pml-functional-tests.groovy b/pml/plm-functional-tests.groovy similarity index 90% rename from pml/pml-functional-tests.groovy rename to pml/plm-functional-tests.groovy index 459589d0f4..c6b9b5897a 100644 --- a/pml/pml-functional-tests.groovy +++ b/pml/plm-functional-tests.groovy @@ -28,7 +28,7 @@ pipeline { } parameters { choice(name: 'CLOUD', choices: [ 'Hetzner','AWS' ], description: 'Cloud infra for build') - string(name: 'MLINK_BRANCH', defaultValue: 'main', description: 'Mongo Link Branch') + string(name: 'PLM_BRANCH', defaultValue: 'main', description: 'PLM branch') string(name: 'GO_VER', defaultValue: 'latest', description: 'GOLANG docker image for building PBM from sources') choice(name: 'ARCH', choices: ['x86','arm'], description: 'Ec2 instance type for running tests') string(name: 'PSMDB_TESTING_BRANCH', defaultValue: 'main', description: 'psmdb-testing repo branch') @@ -38,7 +38,7 @@ pipeline { stage('Set build name'){ steps { script { - currentBuild.displayName = "${params.MLINK_BRANCH}" + currentBuild.displayName = "${params.PLM_BRANCH}" } } } @@ -77,7 +77,7 @@ pipeline { } sh """ - cd psmdb-testing/mlink + cd psmdb-testing/plm-pytest docker-compose build --no-cache docker-compose up -d if [ -n "${params.TEST_FILTER}" ]; then @@ -86,7 +86,7 @@ pipeline { docker-compose run test pytest -v -s --junitxml=junit.xml || true fi docker-compose down -v --remove-orphans - curl -H "Content-Type:multipart/form-data" -H "Authorization: Bearer ${ZEPHYR_TOKEN}" -F "file=@junit.xml;type=application/xml" 'https://api.zephyrscale.smartbear.com/v2/automations/executions/junit?projectKey=PML' -F 'testCycle={"name":"${JOB_NAME}-${BUILD_NUMBER}","customFields": { "Mongo Link branch": "${MLINK_BRANCH}","PSMDB docker image": "${MONGODB_IMAGE}","Instance": "${params.INSTANCE}"}};type=application/json' -i || true + curl -H "Content-Type:multipart/form-data" -H "Authorization: Bearer ${ZEPHYR_TOKEN}" -F "file=@junit.xml;type=application/xml" 'https://api.zephyrscale.smartbear.com/v2/automations/executions/junit?projectKey=PML' -F 'testCycle={"name":"${JOB_NAME}-${BUILD_NUMBER}","customFields": { "PML branch": "${PLM_BRANCH}","PSMDB docker image": "${MONGODB_IMAGE}","Instance": "${params.INSTANCE}"}};type=application/json' -i || true """ } } @@ -108,13 +108,13 @@ pipeline { } post { success { - slackNotify("#mongodb_autofeed", "#00FF00", "[${JOB_NAME}]: PML ${MLINK_BRANCH} - all tests passed") + slackNotify("#mongodb_autofeed", "#00FF00", "[${JOB_NAME}]: PML ${PLM_BRANCH} - all tests passed") } unstable { - slackNotify("#mongodb_autofeed", "#F6F930", "[${JOB_NAME}]: PML ${MLINK_BRANCH} - some tests failed [${BUILD_URL}testReport/]") + slackNotify("#mongodb_autofeed", "#F6F930", "[${JOB_NAME}]: PML ${PLM_BRANCH} - some tests failed [${BUILD_URL}testReport/]") } failure { - slackNotify("#mongodb_autofeed", "#FF0000", "[${JOB_NAME}]: PML ${MLINK_BRANCH} - unexpected failure [${BUILD_URL}]") + slackNotify("#mongodb_autofeed", "#FF0000", "[${JOB_NAME}]: PML ${PLM_BRANCH} - unexpected failure [${BUILD_URL}]") } } } diff --git a/pml/pml-functional-tests.yml b/pml/plm-functional-tests.yml similarity index 78% rename from pml/pml-functional-tests.yml rename to pml/plm-functional-tests.yml index eb2cadf2b9..6996ed44b1 100644 --- a/pml/pml-functional-tests.yml +++ b/pml/plm-functional-tests.yml @@ -1,5 +1,5 @@ - job: - name: hetzner-pml-functional-tests + name: hetzner-plm-functional-tests project-type: pipeline description: | Do not edit this job through the web! @@ -11,4 +11,4 @@ - 'hetzner' wipe-workspace: false lightweight-checkout: true - script-path: pml/pml-functional-tests.groovy + script-path: pml/plm-functional-tests.groovy From 3cf8c0fe93d34a1633aff7171296f15df30a77f1 Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Wed, 4 Jun 2025 14:27:38 +0300 Subject: [PATCH 121/269] PKG-776 pmm.cd: add hetzner cloud config --- IaC/pmm.cd/init.groovy.d/htz.cloud.groovy | 188 ++++++++++++++++++++++ 1 file changed, 188 insertions(+) create mode 100644 IaC/pmm.cd/init.groovy.d/htz.cloud.groovy diff --git a/IaC/pmm.cd/init.groovy.d/htz.cloud.groovy b/IaC/pmm.cd/init.groovy.d/htz.cloud.groovy new file mode 100644 index 0000000000..5a9c8b60f5 --- /dev/null +++ b/IaC/pmm.cd/init.groovy.d/htz.cloud.groovy @@ -0,0 +1,188 @@ +import cloud.dnation.jenkins.plugins.hetzner.* +import cloud.dnation.jenkins.plugins.hetzner.launcher.* +import hudson.model.* +import jenkins.model.Jenkins +import java.util.logging.Logger + +def cloudName = "pmm-htz" + +imageMap = [:] // ID TYPE NAME DESCRIPTION ARCHITECTURE IMAGE SIZE DISK SIZE CREATED DEPRECATED +imageMap['deb12-x64'] = '114690387' // 114690387 system debian-12 Debian 12 x86 - 5 GB Tue Jun 13 09:00:02 EEST 2023 - +imageMap['deb12-aarch64'] = '114690389' // 114690389 system debian-12 Debian 12 arm - 5 GB Tue Jun 13 09:00:03 EEST 2023 - +imageMap['launcher-x64'] = imageMap['deb12-x64'] + +execMap = [:] +execMap['deb'] = 1 +execMap['deb12-x64-nbg1'] = execMap['deb'] +execMap['deb12-x64-hel1'] = execMap['deb'] +execMap['deb12-x64-fsn1'] = execMap['deb'] +execMap['deb12-aarch64-nbg1'] = execMap['deb'] +execMap['deb12-aarch64-hel1'] = execMap['deb'] +execMap['deb12-aarch64-fsn1'] = execMap['deb'] +execMap['deb12-x64-nbg1-min'] = execMap['deb'] +execMap['deb12-x64-hel1-min'] = execMap['deb'] +execMap['deb12-x64-fsn1-min'] = execMap['deb'] +execMap['deb12-aarch64-nbg1-min'] = execMap['deb'] +execMap['deb12-aarch64-hel1-min'] = execMap['deb'] +execMap['deb12-aarch64-fsn1-min'] = execMap['deb'] +execMap['launcher-x64-nbg1'] = 30 +execMap['launcher-x64-hel1'] = 30 +execMap['launcher-x64-fsn1'] = 30 + +bootDeadlineMap =[:] +bootDeadlineMap['default'] = 3 +bootDeadlineMap['deb12-x64-nbg1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-hel1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-fsn1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-nbg1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-hel1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-fsn1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-nbg1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-hel1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-fsn1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-nbg1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-hel1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-fsn1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['launcher-x64-nbg1'] = bootDeadlineMap['default'] +bootDeadlineMap['launcher-x64-hel1'] = bootDeadlineMap['default'] +bootDeadlineMap['launcher-x64-fsn1'] = bootDeadlineMap['default'] + +jvmOptsMap = [:] +jvmOptsMap['deb12'] = '-Xmx512m -Xms512m --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED' +jvmOptsMap['deb12-x64-nbg1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-hel1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-fsn1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-nbg1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-hel1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-fsn1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-nbg1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-hel1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-fsn1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-nbg1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-hel1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-fsn1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['launcher-x64-nbg1'] = jvmOptsMap['deb12'] +jvmOptsMap['launcher-x64-hel1'] = jvmOptsMap['deb12'] +jvmOptsMap['launcher-x64-fsn1'] = jvmOptsMap['deb12'] + +labelMap = [:] +labelMap['deb12-x64-min'] = 'docker-x64-min docker-deb12-x64-min deb12-x64-min' +labelMap['deb12-aarch64-min'] = 'docker-aarch64-min docker-deb12-aarch64-min deb12-aarch64-min' +labelMap['deb12-x64'] = 'docker-x64 docker-deb12-x64 deb12-x64' +labelMap['deb12-aarch64'] = 'docker-aarch64 docker-deb12-aarch64 deb12-aarch64' +labelMap['launcher-x64'] = 'launcher-x64' + +networkMap = [:] +networkMap['percona-vpc-eu'] = '10442325' // percona-vpc-eu + +initMap = [:] +initMap['deb-docker'] = '''#!/bin/bash -x + set -o xtrace + sudo fallocate -l 32G /swapfile + sudo chmod 600 /swapfile + sudo mkswap /swapfile + sudo swapon /swapfile + + export DEBIAN_FRONTEND=noninteractive + until sudo apt-get update; do + sleep 1 + echo try again + done + until sudo apt-get -y install openjdk-17-jre-headless apt-transport-https ca-certificates curl gnupg lsb-release unzip git; do + sleep 1 + echo try again + done + curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg + echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null + until sudo apt-get update; do + sleep 1 + echo try again + done + until sudo apt-get -y install docker-ce docker-ce-cli containerd.io; do + sleep 1 + echo try again + done + if ! $(aws --version | grep -q 'aws-cli/2'); then + find /tmp -maxdepth 1 -name "*aws*" | xargs sudo rm -rf + until curl "https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m)-2.22.35.zip" -o "/tmp/awscliv2.zip"; do + sleep 1 + echo try again + done + unzip -o /tmp/awscliv2.zip -d /tmp + cd /tmp/aws && sudo ./install + fi + sudo install -o $(id -u -n) -g $(id -g -n) -d /mnt/jenkins + sudo sysctl net.ipv4.tcp_fin_timeout=15 + sudo sysctl net.ipv4.tcp_tw_reuse=1 + sudo sysctl net.ipv6.conf.all.disable_ipv6=1 + sudo sysctl net.ipv6.conf.default.disable_ipv6=1 + sudo sysctl -w fs.inotify.max_user_watches=10000000 || true + sudo sysctl -w fs.aio-max-nr=1048576 || true + sudo sysctl -w fs.file-max=6815744 || true + echo "* soft core unlimited" | sudo tee -a /etc/security/limits.conf + sudo sed -i.bak -e 's^ExecStart=.*^ExecStart=/usr/bin/dockerd --data-root=/mnt/docker --default-ulimit nofile=900000:900000^' /lib/systemd/system/docker.service + sudo systemctl daemon-reload + sudo install -o root -g root -d /mnt/docker + sudo usermod -aG docker $(id -u -n) + sudo mkdir -p /etc/docker + echo '{"experimental": true, "ipv6": true, "fixed-cidr-v6": "fd3c:a8b0:18eb:5c06::/64"}' | sudo tee /etc/docker/daemon.json + sudo systemctl restart docker + echo "* * * * * root /usr/sbin/route add default gw 10.177.1.1 eth0" | sudo tee /etc/cron.d/fix-default-route +''' +initMap['deb12-x64-nbg1'] = initMap['deb-docker'] +initMap['deb12-x64-hel1'] = initMap['deb-docker'] +initMap['deb12-x64-fsn1'] = initMap['deb-docker'] +initMap['deb12-aarch64-nbg1'] = initMap['deb-docker'] +initMap['deb12-aarch64-hel1'] = initMap['deb-docker'] +initMap['deb12-aarch64-fsn1'] = initMap['deb-docker'] +initMap['deb12-x64-nbg1-min'] = initMap['deb-docker'] +initMap['deb12-x64-hel1-min'] = initMap['deb-docker'] +initMap['deb12-x64-fsn1-min'] = initMap['deb-docker'] +initMap['deb12-aarch64-nbg1-min'] = initMap['deb-docker'] +initMap['deb12-aarch64-hel1-min'] = initMap['deb-docker'] +initMap['deb12-aarch64-fsn1-min'] = initMap['deb-docker'] +initMap['launcher-x64-nbg1'] = initMap['deb-docker'] +initMap['launcher-x64-hel1'] = initMap['deb-docker'] +initMap['launcher-x64-fsn1'] = initMap['deb-docker'] + +def templates = [ + /* new HetznerServerTemplate("ubuntu20-cx21", "java", "name=ubuntu20-docker", "fsn1", "cx21"), */ + // tmplName tmplLabels tmplImage region server type + new HetznerServerTemplate("deb12-x64-nbg1-min", labelMap['deb12-x64-min'], imageMap['deb12-x64'], "nbg1", "cpx41"), + new HetznerServerTemplate("deb12-aarch64-nbg1-min", labelMap['deb12-aarch64-min'], imageMap['deb12-aarch64'], "nbg1", "cax31"), + new HetznerServerTemplate("deb12-x64-hel1-min", labelMap['deb12-x64-min'], imageMap['deb12-x64'], "hel1", "cpx41"), + new HetznerServerTemplate("deb12-aarch64-hel1-min", labelMap['deb12-aarch64-min'], imageMap['deb12-aarch64'], "hel1", "cax31"), + new HetznerServerTemplate("deb12-x64-fsn1-min", labelMap['deb12-x64-min'], imageMap['deb12-x64'], "fsn1", "cpx41"), + new HetznerServerTemplate("deb12-aarch64-fsn1-min", labelMap['deb12-aarch64-min'], imageMap['deb12-aarch64'], "fsn1", "cax31"), + new HetznerServerTemplate("deb12-x64-nbg1", labelMap['deb12-x64'], imageMap['deb12-x64'], "nbg1", "cpx51"), + new HetznerServerTemplate("deb12-aarch64-nbg1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "nbg1", "cax41"), + new HetznerServerTemplate("deb12-x64-hel1", labelMap['deb12-x64'], imageMap['deb12-x64'], "hel1", "cpx51"), + new HetznerServerTemplate("deb12-aarch64-hel1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "hel1", "cax41"), + new HetznerServerTemplate("deb12-x64-fsn1", labelMap['deb12-x64'], imageMap['deb12-x64'], "fsn1", "cpx51"), + new HetznerServerTemplate("deb12-aarch64-fsn1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "fsn1", "cax41"), + new HetznerServerTemplate("launcher-x64-nbg1", labelMap['launcher-x64'], imageMap['launcher-x64'], "nbg1", "cpx21"), + new HetznerServerTemplate("launcher-x64-hel1", labelMap['launcher-x64'], imageMap['launcher-x64'], "hel1", "cpx21"), + new HetznerServerTemplate("launcher-x64-fsn1", labelMap['launcher-x64'], imageMap['launcher-x64'], "fsn1", "cpx21") +] + +templates.each { it -> + def sshConnector = new SshConnectorAsRoot("htz.cd.key") + sshConnector.setConnectionMethod(new PublicAddressOnly()) // Replace with the desired method + it.setConnector(sshConnector) + def tmplName = it.name + it.setNumExecutors(execMap[tmplName]) + it.bootDeadline = bootDeadlineMap[tmplName] + it.remoteFs = "/mnt/jenkins/" + it.jvmOpts = jvmOptsMap[tmplName] + it.network = networkMap['percona-vpc-eu'] + it.userData = initMap[tmplName] + } + +// public HetznerCloud(String name, String credentialsId, String instanceCapStr, List serverTemplates) +def cloud = new HetznerCloud(cloudName, "htz.cd.token", "100", templates) + +def jenkins = Jenkins.get() + +jenkins.clouds.remove(jenkins.clouds.getByName(cloudName)) +jenkins.clouds.add(cloud) +jenkins.save() From e22927de0facef65bdba864a48241ca5f853e890 Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Thu, 5 Jun 2025 17:44:54 +0300 Subject: [PATCH 122/269] PKG-777 PLM: rename pml to plm --- .../get-plm-branches.groovy | 14 +++++----- .../get-plm-branches.yml | 6 ++-- .../percona-link-mongodb.groovy | 28 +++++++++---------- .../percona-link-mongodb.yml | 4 +-- {pml => plm}/plm-functional-tests.groovy | 8 +++--- {pml => plm}/plm-functional-tests.yml | 2 +- 6 files changed, 31 insertions(+), 31 deletions(-) rename pml/get-pml-branches.groovy => plm/get-plm-branches.groovy (87%) rename pml/get-pml-branches.yml => plm/get-plm-branches.yml (72%) rename pml/percona-mongolink.groovy => plm/percona-link-mongodb.groovy (92%) rename pml/percona-mongolink.yml => plm/percona-link-mongodb.yml (78%) rename {pml => plm}/plm-functional-tests.groovy (94%) rename {pml => plm}/plm-functional-tests.yml (87%) diff --git a/pml/get-pml-branches.groovy b/plm/get-plm-branches.groovy similarity index 87% rename from pml/get-pml-branches.groovy rename to plm/get-plm-branches.groovy index 6cd86a3f9d..42ff411cee 100644 --- a/pml/get-pml-branches.groovy +++ b/plm/get-plm-branches.groovy @@ -13,8 +13,8 @@ pipeline { description: 'Cloud infra for build', name: 'CLOUD') string( - defaultValue: 'https://github.com/percona/percona-mongolink.git', - description: 'URL for percona-mongolink repository', + defaultValue: 'https://github.com/percona/percona-link-mongodb.git', + description: 'URL for percona-link-mongodb repository', name: 'GIT_REPO') } options { @@ -32,7 +32,7 @@ pipeline { withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: S3_STASH, secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { sh """ EC=0 - AWS_RETRY_MODE=standard AWS_MAX_ATTEMPTS=10 aws s3 ls s3://percona-jenkins-artifactory/percona-mongolink/branch_commit_id.properties ${S3_ENDPOINT} --cli-connect-timeout 60 --cli-read-timeout 120 || EC=\$? + AWS_RETRY_MODE=standard AWS_MAX_ATTEMPTS=10 aws s3 ls s3://percona-jenkins-artifactory/percona-link-mongodb/branch_commit_id.properties ${S3_ENDPOINT} --cli-connect-timeout 60 --cli-read-timeout 120 || EC=\$? if [ \${EC} = 1 ]; then LATEST_RELEASE_BRANCH=\$(git -c 'versionsort.suffix=-' ls-remote --heads --sort='v:refname' ${GIT_REPO} release\\* | tail -1) @@ -42,10 +42,10 @@ pipeline { echo "BRANCH_NAME=\${BRANCH_NAME}" > branch_commit_id.properties echo "COMMIT_ID=\${COMMIT_ID}" >> branch_commit_id.properties - AWS_RETRY_MODE=standard AWS_MAX_ATTEMPTS=10 aws s3 cp branch_commit_id.properties s3://percona-jenkins-artifactory/percona-mongolink/ ${S3_ENDPOINT} --cli-connect-timeout 60 --cli-read-timeout 120 + AWS_RETRY_MODE=standard AWS_MAX_ATTEMPTS=10 aws s3 cp branch_commit_id.properties s3://percona-jenkins-artifactory/percona-link-mongodb/ ${S3_ENDPOINT} --cli-connect-timeout 60 --cli-read-timeout 120 echo "START_NEW_BUILD=NO" > startBuild else - AWS_RETRY_MODE=standard AWS_MAX_ATTEMPTS=10 aws s3 cp s3://percona-jenkins-artifactory/percona-mongolink/branch_commit_id.properties . ${S3_ENDPOINT} --cli-connect-timeout 60 --cli-read-timeout 120 + AWS_RETRY_MODE=standard AWS_MAX_ATTEMPTS=10 aws s3 cp s3://percona-jenkins-artifactory/percona-link-mongodb/branch_commit_id.properties . ${S3_ENDPOINT} --cli-connect-timeout 60 --cli-read-timeout 120 source branch_commit_id.properties LATEST_RELEASE_BRANCH=\$(git -c 'versionsort.suffix=-' ls-remote --heads --sort='v:refname' ${GIT_REPO} release\\* | tail -1) @@ -60,7 +60,7 @@ pipeline { echo "BRANCH_NAME=\${LATEST_BRANCH_NAME}" > branch_commit_id.properties echo "COMMIT_ID=\${LATEST_COMMIT_ID}" >> branch_commit_id.properties - AWS_RETRY_MODE=standard AWS_MAX_ATTEMPTS=10 aws s3 cp branch_commit_id.properties s3://percona-jenkins-artifactory/percona-mongolink/ ${S3_ENDPOINT} --cli-connect-timeout 60 --cli-read-timeout 120 + AWS_RETRY_MODE=standard AWS_MAX_ATTEMPTS=10 aws s3 cp branch_commit_id.properties s3://percona-jenkins-artifactory/percona-link-mongodb/ ${S3_ENDPOINT} --cli-connect-timeout 60 --cli-read-timeout 120 fi """ } @@ -82,7 +82,7 @@ pipeline { """ } slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: new changes for branch ${BRANCH_NAME}[commit id: ${COMMIT_ID}] were detected, build will be started soon") - build job: 'hetzner-pml-autobuild-RELEASE', parameters: [string(name: 'CLOUD', value: CLOUD), string(name: 'GIT_BRANCH', value: BRANCH_NAME), string(name: 'VERSION', value: VERSION), string(name: 'COMPONENT', value: 'testing')] + build job: 'hetzner-plm-autobuild-RELEASE', parameters: [string(name: 'CLOUD', value: CLOUD), string(name: 'GIT_BRANCH', value: BRANCH_NAME), string(name: 'VERSION', value: VERSION), string(name: 'COMPONENT', value: 'testing')] } } stage('Build skipped') { diff --git a/pml/get-pml-branches.yml b/plm/get-plm-branches.yml similarity index 72% rename from pml/get-pml-branches.yml rename to plm/get-plm-branches.yml index a3f56d802a..d63d994de9 100644 --- a/pml/get-pml-branches.yml +++ b/plm/get-plm-branches.yml @@ -1,9 +1,9 @@ - job: - name: hetzner-pml-autobuild + name: hetzner-plm-autobuild project-type: pipeline description: | Do not edit this job through the web! - Check PML repo for new release branches to build packages + Check PLM repo for new release branches to build packages pipeline-scm: scm: - git: @@ -12,6 +12,6 @@ - 'hetzner' wipe-workspace: false lightweight-checkout: true - script-path: pml/get-pml-branches.groovy + script-path: plm/get-plm-branches.groovy triggers: - timed: "H/15 * * * *" diff --git a/pml/percona-mongolink.groovy b/plm/percona-link-mongodb.groovy similarity index 92% rename from pml/percona-mongolink.groovy rename to plm/percona-link-mongodb.groovy index f86664cc3d..5766d9a0c7 100644 --- a/pml/percona-mongolink.groovy +++ b/plm/percona-link-mongodb.groovy @@ -7,15 +7,15 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { sh """ set -o xtrace mkdir test - wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/packaging/scripts/percona-mongolink_builder.sh -O percona-mongolink_builder.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/packaging/scripts/percona-link-mongodb_builder.sh -O percona-link-mongodb_builder.sh pwd -P ls -laR export build_dir=\$(pwd -P) docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " set -o xtrace cd \${build_dir} - bash -x ./percona-mongolink_builder.sh --builddir=\${build_dir}/test --install_deps=1 - bash -x ./percona-mongolink_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --version=${VERSION} --branch=${GIT_BRANCH} --rpm_release=${RELEASE} --deb_release=${RELEASE} ${STAGE_PARAM}" + bash -x ./percona-link-mongodb_builder.sh --builddir=\${build_dir}/test --install_deps=1 + bash -x ./percona-link-mongodb_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --version=${VERSION} --branch=${GIT_BRANCH} --rpm_release=${RELEASE} --deb_release=${RELEASE} ${STAGE_PARAM}" """ } @@ -37,12 +37,12 @@ pipeline { description: 'Cloud infra for build', name: 'CLOUD' ) string( - defaultValue: 'https://github.com/percona/percona-mongolink.git', - description: 'URL for percona-mongolink repository', + defaultValue: 'https://github.com/percona/percona-link-mongodb.git', + description: 'URL for percona-link-mongodb repository', name: 'GIT_REPO') string( defaultValue: 'main', - description: 'Tag/Branch for percona-mongolink repository', + description: 'Tag/Branch for percona-link-mongodb repository', name: 'GIT_BRANCH') string( defaultValue: '1', @@ -53,7 +53,7 @@ pipeline { description: 'VERSION value', name: 'VERSION') string( - defaultValue: 'pml', + defaultValue: 'plm', description: 'PTA repo name', name: 'PTA_REPO') choice( @@ -68,7 +68,7 @@ pipeline { timestamps () } stages { - stage('Create Percona MongoLink source tarball') { + stage('Create Percona Link for MongoDB source tarball') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -77,11 +77,11 @@ pipeline { cleanUpWS() buildStage("oraclelinux:8", "--get_sources=1") sh ''' - REPO_UPLOAD_PATH=$(grep "UPLOAD" test/percona-mongolink.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/percona-link-mongodb.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") echo ${REPO_UPLOAD_PATH} > uploadPath echo ${AWS_STASH_PATH} > awsUploadPath - cat test/percona-mongolink.properties + cat test/percona-link-mongodb.properties cat uploadPath ''' script { @@ -92,9 +92,9 @@ pipeline { uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') } } - stage('Build Percona MongoLink generic source packages') { + stage('Build Percona Link for MongoDB generic source packages') { parallel { - stage('Build Percona MongoLink generic source rpm') { + stage('Build Percona Link for MongoDB generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -107,7 +107,7 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } - stage('Build Percona MongoLink generic source deb') { + stage('Build Percona Link for MongoDB generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -122,7 +122,7 @@ pipeline { } } //parallel } // stage - stage('Build Percona MongoLink RPMs/DEBs/Binary tarballs') { + stage('Build Percona Link for MongoDB RPMs/DEBs/Binary tarballs') { parallel { stage('Oracle Linux 8') { agent { diff --git a/pml/percona-mongolink.yml b/plm/percona-link-mongodb.yml similarity index 78% rename from pml/percona-mongolink.yml rename to plm/percona-link-mongodb.yml index 4f4202f063..3c8f70b8ee 100644 --- a/pml/percona-mongolink.yml +++ b/plm/percona-link-mongodb.yml @@ -1,5 +1,5 @@ - job: - name: hetzner-pml-autobuild-RELEASE + name: hetzner-plm-autobuild-RELEASE project-type: pipeline description: | Do not edit this job through the web! @@ -11,5 +11,5 @@ - 'hetzner' wipe-workspace: false lightweight-checkout: true - script-path: pml/percona-mongolink.groovy + script-path: plm/percona-link-mongodb.groovy diff --git a/pml/plm-functional-tests.groovy b/plm/plm-functional-tests.groovy similarity index 94% rename from pml/plm-functional-tests.groovy rename to plm/plm-functional-tests.groovy index c6b9b5897a..bed2f67e30 100644 --- a/pml/plm-functional-tests.groovy +++ b/plm/plm-functional-tests.groovy @@ -86,7 +86,7 @@ pipeline { docker-compose run test pytest -v -s --junitxml=junit.xml || true fi docker-compose down -v --remove-orphans - curl -H "Content-Type:multipart/form-data" -H "Authorization: Bearer ${ZEPHYR_TOKEN}" -F "file=@junit.xml;type=application/xml" 'https://api.zephyrscale.smartbear.com/v2/automations/executions/junit?projectKey=PML' -F 'testCycle={"name":"${JOB_NAME}-${BUILD_NUMBER}","customFields": { "PML branch": "${PLM_BRANCH}","PSMDB docker image": "${MONGODB_IMAGE}","Instance": "${params.INSTANCE}"}};type=application/json' -i || true + curl -H "Content-Type:multipart/form-data" -H "Authorization: Bearer ${ZEPHYR_TOKEN}" -F "file=@junit.xml;type=application/xml" 'https://api.zephyrscale.smartbear.com/v2/automations/executions/junit?projectKey=PLM' -F 'testCycle={"name":"${JOB_NAME}-${BUILD_NUMBER}","customFields": { "PLM branch": "${PLM_BRANCH}","PSMDB docker image": "${MONGODB_IMAGE}","Instance": "${params.INSTANCE}"}};type=application/json' -i || true """ } } @@ -108,13 +108,13 @@ pipeline { } post { success { - slackNotify("#mongodb_autofeed", "#00FF00", "[${JOB_NAME}]: PML ${PLM_BRANCH} - all tests passed") + slackNotify("#mongodb_autofeed", "#00FF00", "[${JOB_NAME}]: PLM ${PLM_BRANCH} - all tests passed") } unstable { - slackNotify("#mongodb_autofeed", "#F6F930", "[${JOB_NAME}]: PML ${PLM_BRANCH} - some tests failed [${BUILD_URL}testReport/]") + slackNotify("#mongodb_autofeed", "#F6F930", "[${JOB_NAME}]: PLM ${PLM_BRANCH} - some tests failed [${BUILD_URL}testReport/]") } failure { - slackNotify("#mongodb_autofeed", "#FF0000", "[${JOB_NAME}]: PML ${PLM_BRANCH} - unexpected failure [${BUILD_URL}]") + slackNotify("#mongodb_autofeed", "#FF0000", "[${JOB_NAME}]: PLM ${PLM_BRANCH} - unexpected failure [${BUILD_URL}]") } } } diff --git a/pml/plm-functional-tests.yml b/plm/plm-functional-tests.yml similarity index 87% rename from pml/plm-functional-tests.yml rename to plm/plm-functional-tests.yml index 6996ed44b1..bd1023ffeb 100644 --- a/pml/plm-functional-tests.yml +++ b/plm/plm-functional-tests.yml @@ -11,4 +11,4 @@ - 'hetzner' wipe-workspace: false lightweight-checkout: true - script-path: pml/plm-functional-tests.groovy + script-path: plm/plm-functional-tests.groovy From 46c23745bda5dab044d5612db37f80cb0d6a22ac Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Mon, 9 Jun 2025 14:00:06 +0300 Subject: [PATCH 123/269] PKG-775 psmdb60: build focal olny for PRO --- .../percona-server-for-mongodb-6.0.groovy | 40 +++++-------------- 1 file changed, 10 insertions(+), 30 deletions(-) diff --git a/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy index 794e1b8f03..a94677cc5d 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy @@ -184,9 +184,9 @@ pipeline { popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FULL_FEATURED == 'yes') { - buildStage("ubuntu:focal", "--build_src_deb=1 --full_featured=1") + buildStage("ubuntu:jammy", "--build_src_deb=1 --full_featured=1") } else { - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") } } pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) @@ -303,36 +303,30 @@ pipeline { } } stage('Ubuntu Focal(20.04)(x86_64)') { + when { + expression { env.FULL_FEATURED == 'yes' } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' } steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - script { - if (env.FULL_FEATURED == 'yes') { - buildStage("ubuntu:focal", "--build_deb=1 --full_featured=1") - } else { - buildStage("ubuntu:focal", "--build_deb=1") - } - } + buildStage("ubuntu:focal", "--build_deb=1 --full_featured=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Focal(20.04)(aarch64)') { + when { + expression { env.FULL_FEATURED == 'yes' } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' } steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - script { - if (env.FULL_FEATURED == 'yes') { - buildStage("ubuntu:focal", "--build_deb=1 --full_featured=1") - } else { - buildStage("ubuntu:focal", "--build_deb=1") - } - } + buildStage("ubuntu:focal", "--build_deb=1 --full_featured=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } @@ -472,20 +466,6 @@ pipeline { } } } - stage('Ubuntu Focal(20.04) binary tarball(glibc2.31)') { - when { - expression { env.FULL_FEATURED != 'yes' } - } - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_tarball=1") - pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) - } - } stage('Debian Bullseye(11) binary tarball(glibc2.31)') { when { expression { env.FULL_FEATURED != 'yes' } From 88f411d15eba689da947ec572f1aefba830c2d8d Mon Sep 17 00:00:00 2001 From: Vadim Yalovets Date: Tue, 10 Jun 2025 18:57:21 +0300 Subject: [PATCH 124/269] Hetzner (#3380) --- ps/jenkins/percona-server-for-mysql-9.0.groovy | 9 ++++----- pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy | 7 +++++-- pxc/jenkins/percona-xtradb-cluster-8.0.groovy | 1 + 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/ps/jenkins/percona-server-for-mysql-9.0.groovy b/ps/jenkins/percona-server-for-mysql-9.0.groovy index 2377d0ca52..bd59243f4c 100644 --- a/ps/jenkins/percona-server-for-mysql-9.0.groovy +++ b/ps/jenkins/percona-server-for-mysql-9.0.groovy @@ -419,8 +419,9 @@ parameters { buildStage("none", "--build_deb=1 --with_zenfs=1") } } - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + if (env.EXPERIMENTALMODE == 'NO') { + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + } } } stage('Ubuntu Noble(24.04)') { @@ -438,9 +439,7 @@ parameters { } else { buildStage("none", "--build_deb=1 --with_zenfs=1") } - if (env.EXPERIMENTALMODE == 'NO') { - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - } + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } } diff --git a/pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy b/pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy index b64d89dbeb..589a63b10e 100644 --- a/pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy +++ b/pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy @@ -174,7 +174,7 @@ pipeline { } } } -stage('Check by Trivy') { +stage('Check by trivy') { agent { label params.CLOUD == 'Hetzner' ? 'deb12-x64' : 'min-focal-x64' } @@ -186,7 +186,10 @@ stage('Check by Trivy') { try { // 🔹 Fetch MySQL Version echo "🔄 Fetching MySQL version..." - sh 'curl -O https://raw.githubusercontent.com/percona/percona-xtradb-cluster/${GIT_BRANCH}/MYSQL_VERSION' + sh ''' + curl -O https://raw.githubusercontent.com/percona/percona-xtradb-cluster/${GIT_BRANCH}/MYSQL_VERSION + cut MYSQL_VERSION + ''' // ✅ Source the version file def mysqlVersion = readFile('MYSQL_VERSION').trim() diff --git a/pxc/jenkins/percona-xtradb-cluster-8.0.groovy b/pxc/jenkins/percona-xtradb-cluster-8.0.groovy index 6b5d5513b1..85719d0f81 100644 --- a/pxc/jenkins/percona-xtradb-cluster-8.0.groovy +++ b/pxc/jenkins/percona-xtradb-cluster-8.0.groovy @@ -24,6 +24,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { "https://api.github.com/repos/percona/percona-xtradb-cluster-private-build/contents/build-ps/pxc_builder.sh?ref=\${PRO_BRANCH}" sed -i "s/PRIVATE_USERNAME/\${USERNAME}/g" pxc_builder.sh sed -i "s/PRIVATE_TOKEN/\${PASSWORD}/g" pxc_builder.sh + grep "percona-release enable pxb-80-pro" pxc_builder.sh else wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/build-ps/pxc_builder.sh -O pxc_builder.sh fi From d8d3b39b3761d7245128098e9d214d1f79fbc791 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Wed, 11 Jun 2025 12:52:29 +0300 Subject: [PATCH 125/269] Fix builds (#3382) --- ppg/pg_tde_arm_nightly.groovy | 6 +++--- ppg/pg_tde_nightly.groovy | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/ppg/pg_tde_arm_nightly.groovy b/ppg/pg_tde_arm_nightly.groovy index 650b42899f..2e6f43c89c 100644 --- a/ppg/pg_tde_arm_nightly.groovy +++ b/ppg/pg_tde_arm_nightly.groovy @@ -45,15 +45,15 @@ pipeline { description: 'Tag/Branch for pg_tde repository', name: 'PG_BRANCH') string( - defaultValue: '17.0', + defaultValue: '17.5.2', description: 'Tag/Branch for pg_tde packaging repository', name: 'GIT_BRANCH') string( - defaultValue: '1', + defaultValue: '2', description: 'RPM release value', name: 'RPM_RELEASE') string( - defaultValue: '1', + defaultValue: '2', description: 'DEB release value', name: 'DEB_RELEASE') string( diff --git a/ppg/pg_tde_nightly.groovy b/ppg/pg_tde_nightly.groovy index 320678e446..ada5128f1b 100644 --- a/ppg/pg_tde_nightly.groovy +++ b/ppg/pg_tde_nightly.groovy @@ -45,23 +45,23 @@ pipeline { description: 'Tag/Branch for pg_tde repository', name: 'PG_BRANCH') string( - defaultValue: '17.0', + defaultValue: '17.5.2', description: 'Tag/Branch for pg_tde packaging repository', name: 'GIT_BRANCH') string( - defaultValue: '1', + defaultValue: '2', description: 'RPM release value', name: 'RPM_RELEASE') string( - defaultValue: '1', + defaultValue: '2', description: 'DEB release value', name: 'DEB_RELEASE') string( - defaultValue: 'ppg-17.0', + defaultValue: 'ppg-17.5', description: 'PPG repo name', name: 'PPG_REPO') choice( - choices: 'experimental\nlaboratory\ntesting', + choices: 'experimental\nlaboratory\ntestinh', description: 'Repo component to push packages to', name: 'COMPONENT') } From 395ae6a04a40022d1d72e0cfdb1201a4900326c6 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Wed, 11 Jun 2025 12:53:30 +0300 Subject: [PATCH 126/269] Fix typo --- ppg/pg_tde_nightly.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ppg/pg_tde_nightly.groovy b/ppg/pg_tde_nightly.groovy index ada5128f1b..b67272d8fd 100644 --- a/ppg/pg_tde_nightly.groovy +++ b/ppg/pg_tde_nightly.groovy @@ -61,7 +61,7 @@ pipeline { description: 'PPG repo name', name: 'PPG_REPO') choice( - choices: 'experimental\nlaboratory\ntestinh', + choices: 'experimental\nlaboratory\ntesting', description: 'Repo component to push packages to', name: 'COMPONENT') } From 3b29779202ae05ab9be8ce0911ffbdf28649053a Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Wed, 11 Jun 2025 13:46:08 +0300 Subject: [PATCH 127/269] Add pg nightly (#3383) --- ppg/pg_tarballs_17_nightly.groovy | 244 +++++++++++++++++ ppg/pg_tarballs_17_nightly.yml | 17 ++ ppg/postgresql_server_17_nightly.groovy | 345 ++++++++++++++++++++++++ ppg/postgresql_server_17_nightly.yml | 17 ++ ppg/postgresql_server_nightly.groovy | 10 +- 5 files changed, 628 insertions(+), 5 deletions(-) create mode 100644 ppg/pg_tarballs_17_nightly.groovy create mode 100644 ppg/pg_tarballs_17_nightly.yml create mode 100644 ppg/postgresql_server_17_nightly.groovy create mode 100644 ppg/postgresql_server_17_nightly.yml diff --git a/ppg/pg_tarballs_17_nightly.groovy b/ppg/pg_tarballs_17_nightly.groovy new file mode 100644 index 0000000000..e47808e4f1 --- /dev/null +++ b/ppg/pg_tarballs_17_nightly.groovy @@ -0,0 +1,244 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + sh """ + set -o xtrace + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/pg_tarballs/pg_tarballs_builder.sh -O builder.sh + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./builder.sh --build_dependencies=${BUILD_DEPENDENCIES} ${STAGE_PARAM}" + """ +} + +String getPostgreSQLVersion(String BRANCH_NAME, String configureFileName) { + def packageVersion = sh(script: """ + # Download the configure file + if echo "${BRANCH_NAME}" | grep -q "release-"; then + wget https://raw.githubusercontent.com/Percona-Lab/postgres/${BRANCH_NAME}/configure -O ${configureFileName} + else + wget https://raw.githubusercontent.com/postgres/postgres/${BRANCH_NAME}/configure -O ${configureFileName} + fi + # Read the PACKAGE_VERSION value from the configure file + packageVersion=\$(grep -r 'PACKAGE_VERSION=' ${configureFileName} | tr -dc '[. [:digit:]]') + + # Delete configure file + rm -f ${configureFileName} + + echo "\$packageVersion" + """, returnStdout: true).trim() + + return packageVersion +} + +void uploadTarballToTestingDownloadServer(String tarballDirectory, String packageVersion) { + + script { + try { + uploadPGTarballToDownloadsTesting(params.CLOUD, tarballDirectory, packageVersion) + } catch (err) { + echo "Caught: ${err}" + currentBuild.result = 'UNSTABLE' + } + } +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def TIMESTAMP + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/percona/postgres-packaging.git', + description: 'URL for pg_tarballs repository', + name: 'GIT_REPO') +/* string( + defaultValue: '16.1', + description: 'Version of PostgreSQL server', + name: 'PG_VERSION')*/ + string( + defaultValue: 'main', + description: 'Tag/Branch for pg_tarballs packaging repository', + name: 'GIT_BRANCH') + choice( + choices: '1\n0', + description: 'Build third party dependencies', + name: 'BUILD_DEPENDENCIES') + choice( + choices: 'testing\nlaboratory\nexperimental', + description: 'Repo destination to push packages to', + name: 'DESTINATION') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + stages { + + stage('Create timestamp') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") + cleanUpWS() + script { + TIMESTAMP = sh(script: 'date +%Y%m%d%H%M%S', returnStdout: true).trim() + sh """ + echo ${TIMESTAMP} > timestamp + cat timestamp + """ + TIMESTAMP = sh(returnStdout: true, script: "cat timestamp").trim() + } + stash includes: 'timestamp', name: 'timestamp' + } + } + + stage('Build pg_tarballs') { + parallel { + stage('Build pg_tarball 17 for OpenSSL 3') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + script { + def PG_VERSION=17 + def BRANCH_NAME = "TDE_REL_17_STABLE" + def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl3") + println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" + def PRODUCT="Percona-PostgreSQL-Tarballs" + unstash 'timestamp' + AWS_STASH_PATH_17="/srv/UPLOAD/${DESTINATION}/BUILDS/${PRODUCT}/${PRODUCT}-${PACKAGE_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH_17} > uploadPath-${PACKAGE_VERSION} + cat uploadPath-${PACKAGE_VERSION} + """ + stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" + buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17, "binary", "${PACKAGE_VERSION}") + uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") + } + } + } + stage('Build pg_tarball 17 for OpenSSL 1.1') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + script { + def PG_VERSION=17 + def BRANCH_NAME = 'TDE_REL_17_STABLE' + def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl1.1") + println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" + def PRODUCT="Percona-PostgreSQL-Tarballs" + unstash 'timestamp' + AWS_STASH_PATH_17="/srv/UPLOAD/${DESTINATION}/BUILDS/${PRODUCT}/${PRODUCT}-${PACKAGE_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH_17} > uploadPath-${PACKAGE_VERSION} + cat uploadPath-${PACKAGE_VERSION} + """ + stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" + buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION} --use_system_ssl=1") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17, "binary", "${PACKAGE_VERSION}") + uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") + } + } + } + stage('Build pg_tarball 17 for OpenSSL 3 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + def PG_VERSION=17 + def BRANCH_NAME = "TDE_REL_17_STABLE" + def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl3") + println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" + def PRODUCT="Percona-PostgreSQL-Tarballs" + unstash 'timestamp' + AWS_STASH_PATH_17="/srv/UPLOAD/${DESTINATION}/BUILDS/${PRODUCT}/${PRODUCT}-${PACKAGE_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH_17} > uploadPath-${PACKAGE_VERSION} + cat uploadPath-${PACKAGE_VERSION} + """ + stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" + buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION}") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17, "binary", "${PACKAGE_VERSION}") + uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") + } + } + } + stage('Build pg_tarball 17 for OpenSSL 1.1 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + def PG_VERSION=17 + def BRANCH_NAME = 'TDE_REL_17_STABLE' + def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl1.1") + println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" + def PRODUCT="Percona-PostgreSQL-Tarballs" + unstash 'timestamp' + AWS_STASH_PATH_17="/srv/UPLOAD/${DESTINATION}/BUILDS/${PRODUCT}/${PRODUCT}-${PACKAGE_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH_17} > uploadPath-${PACKAGE_VERSION} + cat uploadPath-${PACKAGE_VERSION} + """ + stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" + buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION} --use_system_ssl=1") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17, "binary", "${PACKAGE_VERSION}") + uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") + } + } //parallel + } // stage + + } + post { + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}" + } + deleteDir() + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/ppg/pg_tarballs_17_nightly.yml b/ppg/pg_tarballs_17_nightly.yml new file mode 100644 index 0000000000..5c4d328cf5 --- /dev/null +++ b/ppg/pg_tarballs_17_nightly.yml @@ -0,0 +1,17 @@ +- job: + name: hetzner-pg_tarballs-nightly + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/pg_tarballs_17_nightly.groovy + triggers: + - timed: "0 0 * * *" + diff --git a/ppg/postgresql_server_17_nightly.groovy b/ppg/postgresql_server_17_nightly.groovy new file mode 100644 index 0000000000..30db424ca3 --- /dev/null +++ b/ppg/postgresql_server_17_nightly.groovy @@ -0,0 +1,345 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + sh """ + set -o xtrace + mkdir test + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/postgres/ppg_builder.sh -O ppg-server_builder.sh + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./ppg-server_builder.sh --builddir=\${build_dir}/test --install_deps=1 + bash -x ./ppg-server_builder.sh --builddir=\${build_dir}/test --branch=${PG_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + """ +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def AWS_STASH_PATH + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/percona/postgres-packaging.git', + description: 'URL for ppg-server repository', + name: 'GIT_REPO') + string( + defaultValue: 'TDE_REL_17_STABLE', + description: 'Tag/Branch for postgresql', + name: 'PG_BRANCH') + string( + defaultValue: '17.5.2', + description: 'Tag/Branch for ppg-server repository', + name: 'GIT_BRANCH') + string( + defaultValue: '2', + description: 'RPM release value', + name: 'RPM_RELEASE') + string( + defaultValue: '2', + description: 'DEB release value', + name: 'DEB_RELEASE') + string( + defaultValue: 'ppg-17.5', + description: 'PPG repo name', + name: 'PPG_REPO') + choice( + choices: 'testing\nlaboratory\nexperimental', + description: 'Repo component to push packages to', + name: 'COMPONENT') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + stages { + stage('Create PPG_SERVER source tarball') { + steps { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") + cleanUpWS() + buildStage("oraclelinux:8", "--get_sources=1") + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/percona-postgresql.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/percona-postgresql.properties + cat uploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') + } + } + stage('Build PPG-SERVER generic source packages') { + parallel { + stage('Build PPG-SERVER generic source rpm') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_src_rpm=1") + + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) + } + } + stage('Build PPG-SERVER generic source deb') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_src_deb=1") + + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) + } + } + } //parallel + } // stage + stage('Build PPG-SERVER RPMs/DEBs/Binary tarballs') { + parallel { + stage('Oracle Linux 8 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 8 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04) AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04) AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04) AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11) AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bullseye(11) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12) AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian bookworm(12) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + } + } + + stage('Sign packages') { + steps { + signRPM(params.CLOUD) + signDEB(params.CLOUD) + } + } + stage('Push to public repository') { + steps { + // sync packages + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) + } + } + + } + post { + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}" + } + deleteDir() + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/ppg/postgresql_server_17_nightly.yml b/ppg/postgresql_server_17_nightly.yml new file mode 100644 index 0000000000..93556dd19f --- /dev/null +++ b/ppg/postgresql_server_17_nightly.yml @@ -0,0 +1,17 @@ +- job: + name: hetzner-postgresql-server-17_nightly + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/postgresql_server_17_nightly.groovy + triggers: + - timed: "0 0 * * *" + diff --git a/ppg/postgresql_server_nightly.groovy b/ppg/postgresql_server_nightly.groovy index 0b2e9dec1a..a7f53948b2 100644 --- a/ppg/postgresql_server_nightly.groovy +++ b/ppg/postgresql_server_nightly.groovy @@ -41,23 +41,23 @@ pipeline { description: 'URL for ppg-server repository', name: 'GIT_REPO') string( - defaultValue: 'release-17.4', + defaultValue: 'TDE_REL_17_STABLE', description: 'Tag/Branch for postgresql', name: 'PG_BRANCH') string( - defaultValue: '17.4', + defaultValue: '17.5.2', description: 'Tag/Branch for ppg-server repository', name: 'GIT_BRANCH') string( - defaultValue: '1', + defaultValue: '2', description: 'RPM release value', name: 'RPM_RELEASE') string( - defaultValue: '1', + defaultValue: '2', description: 'DEB release value', name: 'DEB_RELEASE') string( - defaultValue: 'ppg-17.0', + defaultValue: 'ppg-17.5', description: 'PPG repo name', name: 'PPG_REPO') choice( From 570f411c4340be13b086b5adc445d69441fb4a60 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Wed, 11 Jun 2025 15:31:13 +0300 Subject: [PATCH 128/269] Fix --- ppg/pg_tarballs_17_nightly.groovy | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ppg/pg_tarballs_17_nightly.groovy b/ppg/pg_tarballs_17_nightly.groovy index e47808e4f1..e46005f8a6 100644 --- a/ppg/pg_tarballs_17_nightly.groovy +++ b/ppg/pg_tarballs_17_nightly.groovy @@ -218,6 +218,8 @@ pipeline { uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17, "binary", "${PACKAGE_VERSION}") uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } + } + } } //parallel } // stage From ceee9ba3a1cf459a773714d0a3dd1a239cd361be Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Wed, 11 Jun 2025 18:03:18 +0300 Subject: [PATCH 129/269] fix ver --- ppg/pg_tarballs_17_nightly.groovy | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ppg/pg_tarballs_17_nightly.groovy b/ppg/pg_tarballs_17_nightly.groovy index e46005f8a6..787f7f228c 100644 --- a/ppg/pg_tarballs_17_nightly.groovy +++ b/ppg/pg_tarballs_17_nightly.groovy @@ -124,7 +124,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = "TDE_REL_17_STABLE" + def BRANCH_NAME = "release-17.5.1" def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl3") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" @@ -150,7 +150,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = 'TDE_REL_17_STABLE' + def BRANCH_NAME = 'release-17.5.1' def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl1.1") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" @@ -176,7 +176,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = "TDE_REL_17_STABLE" + def BRANCH_NAME = "release-17.5.1" def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl3") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" @@ -202,7 +202,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = 'TDE_REL_17_STABLE' + def BRANCH_NAME = 'release-17.5.1' def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl1.1") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" From 53c6c7215e7f3d2b3a57d74411ff1d55f3046131 Mon Sep 17 00:00:00 2001 From: Vadim Yalovets Date: Mon, 16 Jun 2025 13:46:00 +0300 Subject: [PATCH 130/269] Hetzner (#3386) --- .../percona-xtradb-cluster-8.0-docker.groovy | 44 +++++++++++-------- 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy b/pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy index 589a63b10e..a232848e51 100644 --- a/pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy +++ b/pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy @@ -171,7 +171,7 @@ pipeline { sudo docker buildx imagetools create -t perconalab/percona-xtradb-cluster:latest perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} ''' } - } + } } } stage('Check by trivy') { @@ -184,26 +184,34 @@ stage('Check by trivy') { steps { script { try { - // 🔹 Fetch MySQL Version echo "🔄 Fetching MySQL version..." - sh ''' - curl -O https://raw.githubusercontent.com/percona/percona-xtradb-cluster/${GIT_BRANCH}/MYSQL_VERSION - cut MYSQL_VERSION - ''' - - // ✅ Source the version file - def mysqlVersion = readFile('MYSQL_VERSION').trim() - def versionMatcher = mysqlVersion =~ /(\d+)\.(\d+)\.(\d+)(.*)/ - - if (!versionMatcher) { - error "❌ Failed to parse MySQL version from MYSQL_VERSION file." + + // 🔹 Capture the file content directly from curl + def mysqlVersion = sh( + script: "curl -s https://raw.githubusercontent.com/percona/percona-xtradb-cluster/${GIT_BRANCH}/MYSQL_VERSION", + returnStdout: true + ).trim() + + echo "🔎 Raw MYSQL_VERSION: '${mysqlVersion}'" + + if (!mysqlVersion) { + error "❌ MYSQL_VERSION file is empty or not found!" } - - def MYSQL_VERSION_MAJOR = versionMatcher[0][1] - def MYSQL_VERSION_MINOR = versionMatcher[0][2] - def MYSQL_VERSION_PATCH = versionMatcher[0][3] - def MYSQL_VERSION_EXTRA = versionMatcher[0][4] + def versionMap = [:] + mysqlVersion.split('\n').each { line -> + def (key, value) = line.tokenize('=') + versionMap[key.trim()] = value.trim().replaceAll('"', '') + } + + def MYSQL_VERSION_MAJOR = versionMap['MYSQL_VERSION_MAJOR'] + def MYSQL_VERSION_MINOR = versionMap['MYSQL_VERSION_MINOR'] + def MYSQL_VERSION_PATCH = versionMap['MYSQL_VERSION_PATCH'] + def MYSQL_VERSION_EXTRA = versionMap['MYSQL_VERSION_EXTRA'] + def fullVersion = "${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}" + + echo "✅ Parsed MySQL version: ${fullVersion}" + // 🔹 Install Trivy if not already installed sh ''' if ! command -v trivy &> /dev/null; then From 504925d105ac2e2b5a1bdc7ee076f5be2f3a5a48 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Mon, 16 Jun 2025 15:17:04 +0300 Subject: [PATCH 131/269] Update nightly jobs --- ppg/pg_tarballs-arm.groovy | 4 ++-- ppg/pg_tarballs.groovy | 4 ++-- ppg/pg_tarballs_17_nightly.groovy | 8 ++++---- ppg/postgresql_server_17_nightly.groovy | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/ppg/pg_tarballs-arm.groovy b/ppg/pg_tarballs-arm.groovy index 144eb0c78c..0b1eeb803d 100644 --- a/ppg/pg_tarballs-arm.groovy +++ b/ppg/pg_tarballs-arm.groovy @@ -124,7 +124,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = "release-17.5.1" + def BRANCH_NAME = "release-17.5.2" def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl3") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" @@ -150,7 +150,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = 'release-17.5.1' + def BRANCH_NAME = 'release-17.5.2' def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl1.1") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" diff --git a/ppg/pg_tarballs.groovy b/ppg/pg_tarballs.groovy index c578b3cf4a..73b1c75f4b 100644 --- a/ppg/pg_tarballs.groovy +++ b/ppg/pg_tarballs.groovy @@ -124,7 +124,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = "release-17.5.1" + def BRANCH_NAME = "release-17.5.2" def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl3") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" @@ -150,7 +150,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = 'release-17.5.1' + def BRANCH_NAME = 'release-17.5.2' def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl1.1") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" diff --git a/ppg/pg_tarballs_17_nightly.groovy b/ppg/pg_tarballs_17_nightly.groovy index 787f7f228c..41b6a293ae 100644 --- a/ppg/pg_tarballs_17_nightly.groovy +++ b/ppg/pg_tarballs_17_nightly.groovy @@ -124,7 +124,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = "release-17.5.1" + def BRANCH_NAME = "release-17.5.2" def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl3") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" @@ -150,7 +150,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = 'release-17.5.1' + def BRANCH_NAME = 'release-17.5.2' def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl1.1") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" @@ -176,7 +176,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = "release-17.5.1" + def BRANCH_NAME = "release-17.5.2" def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl3") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" @@ -202,7 +202,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = 'release-17.5.1' + def BRANCH_NAME = 'release-17.5.2' def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl1.1") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" diff --git a/ppg/postgresql_server_17_nightly.groovy b/ppg/postgresql_server_17_nightly.groovy index 30db424ca3..cefea961b4 100644 --- a/ppg/postgresql_server_17_nightly.groovy +++ b/ppg/postgresql_server_17_nightly.groovy @@ -41,7 +41,7 @@ pipeline { description: 'URL for ppg-server repository', name: 'GIT_REPO') string( - defaultValue: 'TDE_REL_17_STABLE', + defaultValue: 'release-17.5.2', description: 'Tag/Branch for postgresql', name: 'PG_BRANCH') string( From 56a92d59f351f7a5f065a55b5b0471ac9ae6e8b5 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Tue, 17 Jun 2025 13:17:36 +0300 Subject: [PATCH 132/269] PG17 builds on commit (#3388) --- ppg/pg17_autobuild.groovy | 110 ++++++++++++++++++++++++++++++++++++++ ppg/pg17_autobuild.yml | 17 ++++++ 2 files changed, 127 insertions(+) create mode 100644 ppg/pg17_autobuild.groovy create mode 100644 ppg/pg17_autobuild.yml diff --git a/ppg/pg17_autobuild.groovy b/ppg/pg17_autobuild.groovy new file mode 100644 index 0000000000..fa3dc01742 --- /dev/null +++ b/ppg/pg17_autobuild.groovy @@ -0,0 +1,110 @@ +library changelog: false, identifier: 'lib@master', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +pipeline { + agent { + label 'docker' + } + parameters { + string( + defaultValue: 'https://github.com/percona/postgres.git', + description: 'URL for pg repository', + name: 'GIT_REPO') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + timestamps () + } + stages { + stage('Get release branches') { + steps { + withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: 'AWS_STASH', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { + sh """ + EC=0 + aws s3 ls s3://percona-jenkins-artifactory/pg17/branch_commit_id_17.properties || EC=\$? + + if [ \${EC} = 1 ]; then + LATEST_RELEASE_BRANCH=\$(git -c 'versionsort.suffix=-' ls-remote --heads --sort='v:refname' ${GIT_REPO} release-17\\* | tail -1) + BRANCH_NAME=\$(echo \${LATEST_RELEASE_BRANCH} | cut -d "/" -f 3) + COMMIT_ID=\$(echo \${LATEST_RELEASE_BRANCH} | cut -d " " -f 1) + + echo "BRANCH_NAME=\${BRANCH_NAME}" > branch_commit_id_17.properties + echo "COMMIT_ID=\${COMMIT_ID}" >> branch_commit_id_17.properties + + aws s3 cp branch_commit_id_17.properties s3://percona-jenkins-artifactory/pg17/ + echo "START_NEW_BUILD=NO" > startBuild + else + aws s3 cp s3://percona-jenkins-artifactory/pg17/branch_commit_id_17.properties . + source ./branch_commit_id_17.properties + cat ./branch_commit_id_17.properties + + LATEST_RELEASE_BRANCH=\$(git -c 'versionsort.suffix=-' ls-remote --heads --sort='v:refname' ${GIT_REPO} release-17\\* | tail -1) + LATEST_BRANCH_NAME=\$(echo \${LATEST_RELEASE_BRANCH} | cut -d "/" -f 3) + LATEST_COMMIT_ID=\$(echo \${LATEST_RELEASE_BRANCH} | cut -d " " -f 1) + VERSION=\$(echo \${LATEST_RELEASE_BRANCH} | cut -d - -f 2-3) + + if [ "x\${COMMIT_ID}" != "x\${LATEST_COMMIT_ID}" ] || [ "x\${BRANCH_NAME}" != "x\${LATEST_BRANCH_NAME}" ]; then + echo "START_NEW_BUILD=YES" > startBuild + else + echo "START_NEW_BUILD=NO" > startBuild + fi + + echo "BRANCH_NAME=\${LATEST_BRANCH_NAME}" > branch_commit_id_17.properties + echo "COMMIT_ID=\${LATEST_COMMIT_ID}" >> branch_commit_id_17.properties + echo "VERSION=\${VERSION}" >> branch_commit_id_17.properties + aws s3 cp branch_commit_id_17.properties s3://percona-jenkins-artifactory/pg17/ + fi + """ + } + script { + START_NEW_BUILD = sh(returnStdout: true, script: "source ./startBuild; echo \${START_NEW_BUILD}").trim() + BRANCH_NAME = sh(returnStdout: true, script: "source ./branch_commit_id_17.properties; echo \${BRANCH_NAME}").trim() + COMMIT_ID = sh(returnStdout: true, script: "source ./branch_commit_id_17.properties; echo \${COMMIT_ID}").trim() + VERSION = sh(returnStdout: true, script: "source ./branch_commit_id_17.properties; echo \${BRANCH_NAME} | cut -d - -f 2-3 ").trim() + } + + } + + } + stage('Build packages needed') { + when { + expression { START_NEW_BUILD == 'YES' } + } + steps { + withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: 'AWS_STASH', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { + sh """ + echo ${START_NEW_BUILD}: build required + """ + } + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: new changes for branch ${BRANCH_NAME}[commit id: ${COMMIT_ID}] were detected, build will be started soon") + build job: 'hetzner-postgresql-server-17_nightly' + build job: 'hetzner-pg_tarballs-nightly' + + } + } + stage('Build skipped') { + when { + expression { START_NEW_BUILD == 'NO' } + } + steps { + withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: 'AWS_STASH', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { + sh """ + echo ${START_NEW_BUILD} build required + """ + } + } + } + } + post { + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} \ No newline at end of file diff --git a/ppg/pg17_autobuild.yml b/ppg/pg17_autobuild.yml new file mode 100644 index 0000000000..3d9ab10cb3 --- /dev/null +++ b/ppg/pg17_autobuild.yml @@ -0,0 +1,17 @@ +- job: + name: pg17-autobuild + project-type: pipeline + description: | + Do not edit this job through the web! + Check PG repo for new release branches to build packages + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: pg/pg17_autobuild.groovy + triggers: + - timed: "H/15 * * * *" From c2b94f6952b55750030ab338636014509ce7e0a2 Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Tue, 24 Jun 2025 14:53:07 +0300 Subject: [PATCH 133/269] PKG-775 psmdb.cd: remove focal from psmdb/pbm/plm/mongosh --- pbm/jenkins/percona-mongodb-backup.groovy | 28 +--------- plm/percona-link-mongodb.groovy | 26 --------- psmdb/jenkins/percona-mongodb-mongosh.groovy | 24 -------- .../percona-server-for-mongodb-6.0.groovy | 28 ---------- .../percona-server-for-mongodb-7.0.groovy | 52 +----------------- .../percona-server-for-mongodb-8.0.groovy | 55 +------------------ 6 files changed, 5 insertions(+), 208 deletions(-) diff --git a/pbm/jenkins/percona-mongodb-backup.groovy b/pbm/jenkins/percona-mongodb-backup.groovy index 63ac6b92cf..77c2616962 100644 --- a/pbm/jenkins/percona-mongodb-backup.groovy +++ b/pbm/jenkins/percona-mongodb-backup.groovy @@ -140,7 +140,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) @@ -231,32 +231,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal 20.04(x86_64)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } - stage('Ubuntu Focal 20.04(aarch64)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy 22.04(x86_64)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' diff --git a/plm/percona-link-mongodb.groovy b/plm/percona-link-mongodb.groovy index 5766d9a0c7..fcbfdb70d8 100644 --- a/plm/percona-link-mongodb.groovy +++ b/plm/percona-link-mongodb.groovy @@ -202,32 +202,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } - stage('Ubuntu Focal(20.04) ARM') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/psmdb/jenkins/percona-mongodb-mongosh.groovy b/psmdb/jenkins/percona-mongodb-mongosh.groovy index bf3da6f626..67d1832833 100644 --- a/psmdb/jenkins/percona-mongodb-mongosh.groovy +++ b/psmdb/jenkins/percona-mongodb-mongosh.groovy @@ -171,30 +171,6 @@ pipeline { pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal (20.04)(x86_64)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_mongosh=1 --build_variant=deb-x64") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } - stage('Ubuntu Focal (20.04)(aarch64)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_mongosh=1 --build_variant=deb-arm64") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy (22.04)(x86_64)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' diff --git a/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy index a94677cc5d..ed0a684dae 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-6.0.groovy @@ -302,34 +302,6 @@ pipeline { pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)(x86_64)') { - when { - expression { env.FULL_FEATURED == 'yes' } - } - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1 --full_featured=1") - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } - stage('Ubuntu Focal(20.04)(aarch64)') { - when { - expression { env.FULL_FEATURED == 'yes' } - } - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1 --full_featured=1") - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)(x86_64)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' diff --git a/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy index 87b12c3fae..33440f4cda 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-7.0.groovy @@ -185,9 +185,9 @@ pipeline { popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FULL_FEATURED == 'yes') { - buildStage("ubuntu:focal", "--build_src_deb=1 --full_featured=1") + buildStage("ubuntu:jammy", "--build_src_deb=1 --full_featured=1") } else { - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") } } pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) @@ -303,40 +303,6 @@ pipeline { pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)(x86_64)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - script { - if (env.FULL_FEATURED == 'yes') { - buildStage("ubuntu:focal", "--build_deb=1 --full_featured=1") - } else { - buildStage("ubuntu:focal", "--build_deb=1") - } - } - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } - stage('Ubuntu Focal(20.04)(aarch64)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - script { - if (env.FULL_FEATURED == 'yes') { - buildStage("ubuntu:focal", "--build_deb=1 --full_featured=1") - } else { - buildStage("ubuntu:focal", "--build_deb=1") - } - } - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)(x86_64)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' @@ -490,20 +456,6 @@ pipeline { } } } - stage('Ubuntu Focal(20.04) binary tarball(glibc2.31)') { - when { - expression { env.FULL_FEATURED != 'yes' } - } - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_tarball=1") - pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04) binary tarball(glibc2.35)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' diff --git a/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy b/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy index 2fcdf8a8c1..a0cba0520c 100644 --- a/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy +++ b/psmdb/jenkins/percona-server-for-mongodb-8.0.groovy @@ -182,9 +182,9 @@ pipeline { popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FULL_FEATURED == 'yes') { - buildStage("ubuntu:focal", "--build_src_deb=1 --full_featured=1") + buildStage("ubuntu:jammy", "--build_src_deb=1 --full_featured=1") } else { - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") } } pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) @@ -300,40 +300,6 @@ pipeline { pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)(x86_64)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - script { - if (env.FULL_FEATURED == 'yes') { - buildStage("ubuntu:focal", "--build_deb=1 --full_featured=1") - } else { - buildStage("ubuntu:focal", "--build_deb=1") - } - } - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } - stage('Ubuntu Focal(20.04)(aarch64)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - script { - if (env.FULL_FEATURED == 'yes') { - buildStage("ubuntu:focal", "--build_deb=1 --full_featured=1") - } else { - buildStage("ubuntu:focal", "--build_deb=1") - } - } - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)(x86_64)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' @@ -470,23 +436,6 @@ pipeline { } } } - stage('Ubuntu Focal(20.04) binary tarball(glibc2.31)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - script { - if (env.FULL_FEATURED == 'yes') { - buildStage("ubuntu:focal", "--build_tarball=1 --full_featured=1") - } else { - buildStage("ubuntu:focal", "--build_tarball=1") - } - pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) - } - } - } stage('Ubuntu Jammy(22.04) binary tarball(glibc2.35)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' From 87f625b5d7ad2e5fa7f220624b3365aa96455097 Mon Sep 17 00:00:00 2001 From: Vadim Yalovets Date: Wed, 25 Jun 2025 13:20:40 +0300 Subject: [PATCH 134/269] Hetzner (#3394) --- .../percona-server-for-mysql-9.0.groovy | 228 +++++++++--------- pxc/jenkins/percona-xtradb-cluster-5.7.groovy | 48 ++-- .../percona-xtradb-cluster-8.0-docker.groovy | 97 ++++---- 3 files changed, 189 insertions(+), 184 deletions(-) diff --git a/ps/jenkins/percona-server-for-mysql-9.0.groovy b/ps/jenkins/percona-server-for-mysql-9.0.groovy index bd59243f4c..5529006831 100644 --- a/ps/jenkins/percona-server-for-mysql-9.0.groovy +++ b/ps/jenkins/percona-server-for-mysql-9.0.groovy @@ -8,27 +8,29 @@ import groovy.transform.Field void installCli(String PLATFORM) { sh """ - set -o xtrace - if [ -d aws ]; then - rm -rf aws - fi - if [ ${PLATFORM} = "deb" ]; then - sudo apt-get update - sudo apt-get -y install wget curl unzip - elif [ ${PLATFORM} = "rpm" ]; then - export RHVER=\$(rpm --eval %rhel) - if [ \${RHVER} = "7" ]; then - sudo sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* || true - sudo sed -i 's|#\\s*baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* || true - if [ -e "/etc/yum.repos.d/CentOS-SCLo-scl.repo" ]; then - cat /etc/yum.repos.d/CentOS-SCLo-scl.repo + if [ \${CLOUD} = "AWS" ]; then + set -o xtrace + if [ -d aws ]; then + rm -rf aws + fi + if [ ${PLATFORM} = "deb" ]; then + sudo apt-get update + sudo apt-get -y install wget curl unzip + elif [ ${PLATFORM} = "rpm" ]; then + export RHVER=\$(rpm --eval %rhel) + if [ \${RHVER} = "7" ]; then + sudo sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* || true + sudo sed -i 's|#\\s*baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* || true + if [ -e "/etc/yum.repos.d/CentOS-SCLo-scl.repo" ]; then + cat /etc/yum.repos.d/CentOS-SCLo-scl.repo + fi fi + sudo yum -y install wget curl unzip fi - sudo yum -y install wget curl unzip - fi - curl https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip -o awscliv2.zip - unzip awscliv2.zip - sudo ./aws/install || true + curl https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip -o awscliv2.zip + unzip awscliv2.zip + sudo ./aws/install || true + fi """ } @@ -191,7 +193,7 @@ parameters { description: 'Cloud infra for build', name: 'CLOUD' ) string(defaultValue: 'https://github.com/percona/percona-server.git', description: 'github repository for build', name: 'GIT_REPO') - string(defaultValue: 'release-9.0.1-1', description: 'Tag/Branch for percona-server repository', name: 'BRANCH') + string(defaultValue: 'release-9.3.0-1', description: 'Tag/Branch for percona-server repository', name: 'BRANCH') string(defaultValue: '1', description: 'RPM version', name: 'RPM_RELEASE') string(defaultValue: '1', description: 'DEB version', name: 'DEB_RELEASE') choice( @@ -225,7 +227,7 @@ parameters { stage('Create PS source tarball') { agent { - label 'min-focal-x64' + label params.CLOUD == 'Hetzner' ? 'deb12-x64' : 'min-focal-x64' } steps { slackNotify("${SLACKNOTIFY}", "#00FF00", "[${JOB_NAME}]: starting build for ${BRANCH} - [${BUILD_URL}]") @@ -254,18 +256,18 @@ parameters { parallel { stage('Build PS generic source rpm') { agent { - label 'min-centos-7-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { - buildStage("none", "--build_src_rpm=1 --enable_fipsmode=1") + buildStage("centos:7", "--build_src_rpm=1 --enable_fipsmode=1") } else { - buildStage("none", "--build_src_rpm=1") + buildStage("centos:7", "--build_src_rpm=1") } } pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) @@ -274,18 +276,18 @@ parameters { } stage('Build PS generic source deb') { agent { - label 'min-buster-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { - buildStage("none", "--build_source_deb=1 --enable_fipsmode=1") + buildStage("debian:buster", "--build_source_deb=1 --enable_fipsmode=1") } else { - buildStage("none", "--build_source_deb=1") + buildStage("debian:buster", "--build_source_deb=1") } } @@ -299,7 +301,7 @@ parameters { parallel { stage('Oracle Linux 8') { agent { - label 'min-ol-8-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -309,8 +311,8 @@ parameters { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("srpm/", AWS_STASH_PATH) - buildStage("none", "--build_rpm=1") + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") if (env.EXPERIMENTALMODE == 'NO') { pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -331,7 +333,7 @@ parameters { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("centos:8", "--build_rpm=1") if (env.EXPERIMENTALMODE == 'NO') { pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -342,18 +344,18 @@ parameters { } stage('Oracle Linux 9') { agent { - label 'min-ol-9-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { - buildStage("none", "--build_rpm=1 --with_zenfs=1 --enable_fipsmode=1") + buildStage("oraclelinux:9", "--build_rpm=1 --with_zenfs=1 --enable_fipsmode=1") } else { - buildStage("none", "--build_rpm=1 --with_zenfs=1") + buildStage("oraclelinux:9", "--build_rpm=1 --with_zenfs=1") } if (env.EXPERIMENTALMODE == 'NO') { pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -369,7 +371,7 @@ parameters { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { buildStage("oraclelinux:9", "--build_rpm=1 --enable_fipsmode=1") @@ -382,9 +384,10 @@ parameters { } } } +/* stage('Ubuntu Focal(20.04)') { agent { - label 'min-focal-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -394,8 +397,8 @@ parameters { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) - buildStage("none", "--build_deb=1 --with_zenfs=1") + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1 --with_zenfs=1") if (env.EXPERIMENTALMODE == 'NO') { pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } @@ -403,49 +406,51 @@ parameters { } } } +*/ stage('Ubuntu Jammy(22.04)') { agent { - label 'min-jammy-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { - buildStage("none", "--build_deb=1 --with_zenfs=1 --enable_fipsmode=1") + buildStage("ubuntu:jammy", "--build_deb=1 --with_zenfs=1 --enable_fipsmode=1") } else { - buildStage("none", "--build_deb=1 --with_zenfs=1") + buildStage("ubuntu:jammy", "--build_deb=1 --with_zenfs=1") + } + if (env.EXPERIMENTALMODE == 'NO') { + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } - } - if (env.EXPERIMENTALMODE == 'NO') { - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } } stage('Ubuntu Noble(24.04)') { agent { - label 'min-noble-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { - buildStage("none", "--build_deb=1 --with_zenfs=1 --enable_fipsmode=1") + buildStage("ubuntu:noble", "--build_deb=1 --with_zenfs=1 --enable_fipsmode=1") } else { - buildStage("none", "--build_deb=1 --with_zenfs=1") + buildStage("ubuntu:noble", "--build_deb=1 --with_zenfs=1") } pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } } +/* stage('Debian Bullseye(11)') { agent { - label 'min-bullseye-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -455,8 +460,8 @@ parameters { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) - buildStage("none", "--build_deb=1 --with_zenfs=1") + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1 --with_zenfs=1") if (env.EXPERIMENTALMODE == 'NO') { pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } @@ -464,20 +469,21 @@ parameters { } } } +*/ stage('Debian Bookworm(12)') { agent { - label 'min-bookworm-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { - buildStage("none", "--build_deb=1 --with_zenfs=1 --enable_fipsmode=1") + buildStage("debian:bookworm", "--build_deb=1 --with_zenfs=1 --enable_fipsmode=1") } else { - buildStage("none", "--build_deb=1 --with_zenfs=1") + buildStage("debian:bookworm", "--build_deb=1 --with_zenfs=1") } if (env.EXPERIMENTALMODE == 'NO') { pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -485,6 +491,7 @@ parameters { } } } +/* stage('Ubuntu Focal(20.04) ARM') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' @@ -497,7 +504,7 @@ parameters { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1 --with_zenfs=1") if (env.EXPERIMENTALMODE == 'NO') { pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -506,6 +513,7 @@ parameters { } } } +*/ stage('Ubuntu Jammy(22.04) ARM') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' @@ -514,16 +522,17 @@ parameters { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { buildStage("ubuntu:jammy", "--build_deb=1 --with_zenfs=1 --enable_fipsmode=1") } else { buildStage("ubuntu:jammy", "--build_deb=1 --with_zenfs=1") } + if (env.EXPERIMENTALMODE == 'NO') { + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + } } - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } stage('Ubuntu Noble(24.04) ARM') { @@ -534,19 +543,18 @@ parameters { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { buildStage("ubuntu:noble", "--build_deb=1 --with_zenfs=1 --enable_fipsmode=1") } else { buildStage("ubuntu:noble", "--build_deb=1 --with_zenfs=1") } - if (env.EXPERIMENTALMODE == 'NO') { - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - } + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } } +/* stage('Debian Bullseye(11) ARM') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' @@ -559,7 +567,7 @@ parameters { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1 --with_zenfs=1") if (env.EXPERIMENTALMODE == 'NO') { @@ -569,6 +577,7 @@ parameters { } } } +*/ stage('Debian Bookworm(12) ARM') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' @@ -577,7 +586,7 @@ parameters { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { buildStage("debian:bookworm", "--build_deb=1 --with_zenfs=1 --enable_fipsmode=1") @@ -593,7 +602,7 @@ parameters { } stage('Oracle Linux 8 binary tarball') { agent { - label 'min-ol-8-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -603,8 +612,8 @@ parameters { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) - buildStage("none", "--build_tarball=1") + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_tarball=1") if (env.EXPERIMENTALMODE == 'NO') { pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } @@ -614,7 +623,7 @@ parameters { } stage('Oracle Linux 8 debug tarball') { agent { - label 'min-ol-8-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -624,8 +633,8 @@ parameters { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) - buildStage("none", "--debug=1 --build_tarball=1") + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--debug=1 --build_tarball=1") if (env.EXPERIMENTALMODE == 'NO') { pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } @@ -635,18 +644,18 @@ parameters { } stage('Oracle Linux 9 tarball') { agent { - label 'min-ol-9-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { - buildStage("none", "--build_tarball=1 --enable_fipsmode=1") + buildStage("oraclelinux:9", "--build_tarball=1 --enable_fipsmode=1") } else { - buildStage("none", "--build_tarball=1") + buildStage("oraclelinux:9", "--build_tarball=1") } if (env.EXPERIMENTALMODE == 'NO') { pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) @@ -656,18 +665,18 @@ parameters { } stage('Oracle Linux 9 ZenFS tarball') { agent { - label 'min-ol-9-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { echo "The step is skipped" } else { - buildStage("none", "--build_tarball=1 --with_zenfs=1") + buildStage("oraclelinux:9", "--build_tarball=1 --with_zenfs=1") if (env.EXPERIMENTALMODE == 'NO') { pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } @@ -677,18 +686,18 @@ parameters { } stage('Oracle Linux 9 debug tarball') { agent { - label 'min-ol-9-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() installCli("rpm") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { - buildStage("none", "--debug=1 --build_tarball=1 --enable_fipsmode=1") + buildStage("oraclelinux:9", "--debug=1 --build_tarball=1 --enable_fipsmode=1") } else { - buildStage("none", "--debug=1 --build_tarball=1") + buildStage("oraclelinux:9", "--debug=1 --build_tarball=1") } if (env.EXPERIMENTALMODE == 'NO') { pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) @@ -696,9 +705,10 @@ parameters { } } } +/* stage('Ubuntu Focal(20.04) tarball') { agent { - label 'min-focal-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -708,8 +718,8 @@ parameters { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) - buildStage("none", "--build_tarball=1") + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_tarball=1") if (env.EXPERIMENTALMODE == 'NO') { pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } @@ -719,7 +729,7 @@ parameters { } stage('Ubuntu Focal(20.04) debug tarball') { agent { - label 'min-focal-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { @@ -729,8 +739,8 @@ parameters { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) - buildStage("none", "--debug=1 --build_tarball=1") + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--debug=1 --build_tarball=1") if (env.EXPERIMENTALMODE == 'NO') { pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } @@ -738,20 +748,21 @@ parameters { } } } +*/ stage('Ubuntu Jammy(22.04) tarball') { agent { - label 'min-jammy-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { - buildStage("none", "--build_tarball=1 --enable_fipsmode=1") + buildStage("ubuntu:jammy", "--build_tarball=1 --enable_fipsmode=1") } else { - buildStage("none", "--build_tarball=1") + buildStage("ubuntu:jammy", "--build_tarball=1") } if (env.EXPERIMENTALMODE == 'NO') { pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) @@ -761,18 +772,18 @@ parameters { } stage('Ubuntu Jammy(22.04) ZenFS tarball') { agent { - label 'min-jammy-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { echo "The step is skipped" } else { - buildStage("none", "--build_tarball=1 --with_zenfs=1") + buildStage("ubuntu:jammy", "--build_tarball=1 --with_zenfs=1") if (env.EXPERIMENTALMODE == 'NO') { pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } @@ -782,18 +793,18 @@ parameters { } stage('Ubuntu Jammy(22.04) debug tarball') { agent { - label 'min-jammy-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() installCli("deb") unstash 'properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { - buildStage("none", "--debug=1 --build_tarball=1 --enable_fipsmode=1") + buildStage("ubuntu:jammy", "--debug=1 --build_tarball=1 --enable_fipsmode=1") } else { - buildStage("none", "--debug=1 --build_tarball=1") + buildStage("ubuntu:jammy", "--debug=1 --build_tarball=1") } if (env.EXPERIMENTALMODE == 'NO') { pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) @@ -805,7 +816,7 @@ parameters { } stage('Upload packages and tarballs from S3') { agent { - label 'min-jammy-x64' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() @@ -822,7 +833,6 @@ parameters { } } } - stage('Sign packages') { steps { script { @@ -842,15 +852,15 @@ parameters { // sync packages if (env.FIPSMODE == 'YES') { if ("${MYSQL_VERSION_MINOR}" == "7") { - sync2PrivateProdAutoBuild("ps-97-pro", COMPONENT) + sync2PrivateProdAutoBuild(params.CLOUD, "ps-97-pro", COMPONENT) } else { - sync2PrivateProdAutoBuild("ps-9x-innovation-pro", COMPONENT) + sync2PrivateProdAutoBuild(params.CLOUD, "ps-9x-innovation-pro", COMPONENT) } } else { if ("${MYSQL_VERSION_MINOR}" == "7") { - sync2ProdAutoBuild("ps-97-lts", COMPONENT) + sync2ProdAutoBuild(params.CLOUD, "ps-97-lts", COMPONENT) } else { - sync2ProdAutoBuild("ps-9x-innovation", COMPONENT) + sync2ProdAutoBuild(params.CLOUD, "ps-9x-innovation", COMPONENT) } } } diff --git a/pxc/jenkins/percona-xtradb-cluster-5.7.groovy b/pxc/jenkins/percona-xtradb-cluster-5.7.groovy index fa82fb7531..e9cb1a8a8d 100644 --- a/pxc/jenkins/percona-xtradb-cluster-5.7.groovy +++ b/pxc/jenkins/percona-xtradb-cluster-5.7.groovy @@ -132,7 +132,7 @@ pipeline { steps { cleanUpWS() unstash 'pxc-57.properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("centos:7", "--build_src_rpm=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' @@ -147,7 +147,7 @@ pipeline { steps { cleanUpWS() unstash 'pxc-57.properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:xenial", "--build_source_deb=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' @@ -166,7 +166,7 @@ pipeline { steps { cleanUpWS() unstash 'pxc-57.properties' - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("centos:7", "--build_rpm=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' @@ -180,7 +180,7 @@ pipeline { steps { cleanUpWS() unstash 'pxc-57.properties' - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("centos:8", "--build_rpm=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' @@ -194,7 +194,7 @@ pipeline { steps { cleanUpWS() unstash 'pxc-57.properties' - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' @@ -208,7 +208,7 @@ pipeline { steps { cleanUpWS() unstash 'pxc-57.properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:bionic", "--build_deb=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' @@ -222,7 +222,7 @@ pipeline { steps { cleanUpWS() unstash 'pxc-57.properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' @@ -236,7 +236,7 @@ pipeline { steps { cleanUpWS() unstash 'pxc-57.properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' @@ -250,7 +250,7 @@ pipeline { steps { cleanUpWS() unstash 'pxc-57.properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' @@ -264,7 +264,7 @@ pipeline { steps { cleanUpWS() unstash 'pxc-57.properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:buster", "--build_deb=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' @@ -278,7 +278,7 @@ pipeline { steps { cleanUpWS() unstash 'pxc-57.properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' @@ -292,7 +292,7 @@ pipeline { steps { cleanUpWS() unstash 'pxc-57.properties' - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' @@ -306,7 +306,7 @@ pipeline { steps { cleanUpWS() unstash 'pxc-57.properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("centos:7", "--build_tarball=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' @@ -321,7 +321,7 @@ pipeline { steps { cleanUpWS() unstash 'pxc-57.properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("centos:7", "--build_tarball=1 --debug=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' @@ -336,7 +336,7 @@ pipeline { steps { cleanUpWS() unstash 'pxc-57.properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("centos:8", "--build_tarball=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' @@ -350,7 +350,7 @@ pipeline { steps { cleanUpWS() unstash 'pxc-57.properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_tarball=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' @@ -364,7 +364,7 @@ pipeline { steps { cleanUpWS() unstash 'pxc-57.properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:bionic", "--build_tarball=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' @@ -378,7 +378,7 @@ pipeline { steps { cleanUpWS() unstash 'pxc-57.properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_tarball=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' @@ -392,7 +392,7 @@ pipeline { steps { cleanUpWS() unstash 'pxc-57.properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_tarball=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' @@ -406,7 +406,7 @@ pipeline { steps { cleanUpWS() unstash 'pxc-57.properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("debian:buster", "--build_tarball=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' @@ -420,7 +420,7 @@ pipeline { steps { cleanUpWS() unstash 'pxc-57.properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_tarball=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' @@ -434,7 +434,7 @@ pipeline { steps { cleanUpWS() unstash 'pxc-57.properties' - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_tarball=1") stash includes: 'test/pxc-57.properties', name: 'pxc-57.properties' @@ -467,7 +467,7 @@ pipeline { steps { // sync packages // sync2ProdAutoBuild(PXC_REPO, COMPONENT) - sync2PrivateProdAutoBuild("pxc-57-eol", COMPONENT) + sync2PrivateProdAutoBuild(params.CLOUD, "pxc-57-eol", COMPONENT) } } stage('Build docker container') { @@ -537,7 +537,7 @@ pipeline { steps { script { try { - uploadTarballToDownloadsTesting("pxc-gated", "${GIT_BRANCH}") + uploadTarballToDownloadsTesting(params.CLOUD, "pxc-gated", "${GIT_BRANCH}") } catch (err) { echo "Caught: ${err}" diff --git a/pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy b/pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy index a232848e51..9373d77aa4 100644 --- a/pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy +++ b/pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy @@ -20,6 +20,10 @@ pipeline { choices: [ 'Hetzner','AWS' ], description: 'Cloud infra for build', name: 'CLOUD' ) + choice( + choices: 'perconalab\npercona', + description: 'Organization on hub.docker.com', + name: 'ORGANIZATION') string( defaultValue: 'https://github.com/percona/percona-xtradb-cluster.git', description: 'URL for percona-xtradb-cluster repository', @@ -89,9 +93,15 @@ pipeline { sed -i "s/pxc-80/pxc-8x-innovation/g" Dockerfile fi fi - sudo docker build --no-cache --platform "linux/amd64" -t perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-amd64 . - sudo docker build --no-cache --platform "linux/amd64" --build-arg DEBUG=1 -t perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-debug-amd64 . - + if [ ${ORGANIZATION} != "percona" ]; then + sudo docker build --no-cache --platform "linux/amd64" -t ${ORGANIZATION}/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-amd64 . + sudo docker build --no-cache --platform "linux/amd64" --build-arg DEBUG=1 -t perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-debug-amd64 . + else + sudo docker pull perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-amd64 + sudo docker tag perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-amd64 percona/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-amd64 + sudo docker pull perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-debug-amd64 + sudo docker tag perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-debug-amd64 percona/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-debug-amd64 + fi sed -i "s/ENV PXC_VERSION.*/ENV PXC_VERSION ${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}/g" Dockerfile.aarch64 sed -i "s/ENV PXC_TELEMETRY_VERSION.*/ENV PXC_TELEMETRY_VERSION ${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}-${RPM_RELEASE}/g" Dockerfile.aarch64 sed -i "s/ENV PXC_REPO .*/ENV PXC_REPO testing/g" Dockerfile.aarch64 @@ -100,9 +110,15 @@ pipeline { sed -i "s/pxc-80/pxc-8x-innovation/g" Dockerfile.aarch64 fi fi - sudo docker build --no-cache -t perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-arm64 --platform="linux/arm64" -f Dockerfile.aarch64 . - sudo docker build --no-cache --build-arg DEBUG=1 -t perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-debug-arm64 --platform="linux/arm64" -f Dockerfile.aarch64 . - + if [ ${ORGANIZATION} != "percona" ]; then + sudo docker build --no-cache -t perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-arm64 --platform="linux/arm64" -f Dockerfile.aarch64 . + sudo docker build --no-cache --build-arg DEBUG=1 -t perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-debug-arm64 --platform="linux/arm64" -f Dockerfile.aarch64 . + else + sudo docker pull perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-arm64 + sudo docker tag perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-arm64 percona/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-arm64 + sudo docker pull perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-debug-arm64 + sudo docker tag perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-debug-arm64 percona/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-debug-arm64 + fi if [ ${PXC_MAJOR_RELEASE} != "84" ]; then cd ../percona-xtradb-cluster-8.0-backup else @@ -126,7 +142,9 @@ pipeline { fi sed -i "s/percona-xtrabackup-80/percona-xtrabackup-${PXC_MAJOR_RELEASE}/g" Dockerfile fi - sudo docker build --no-cache --platform "linux/amd64" -t perconalab/percona-xtradb-cluster-operator:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}-pxc8.${MYSQL_VERSION_MINOR}-backup . + if [ ${ORGANIZATION} != "percona" ]; then + sudo docker build --no-cache --platform "linux/amd64" -t perconalab/percona-xtradb-cluster-operator:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}-pxc8.${MYSQL_VERSION_MINOR}-backup . + fi sudo docker images ''' @@ -139,22 +157,24 @@ pipeline { echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin curl -O https://raw.githubusercontent.com/percona/percona-xtradb-cluster/${GIT_BRANCH}/MYSQL_VERSION . ./MYSQL_VERSION - sudo docker push perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-amd64 - sudo docker push perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-debug-amd64 - sudo docker push perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-arm64 - sudo docker push perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-debug-arm64 - sudo docker push perconalab/percona-xtradb-cluster-operator:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}-pxc8.${MYSQL_VERSION_MINOR}-backup + sudo docker push ${ORGANIZATION}/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-amd64 + sudo docker push ${ORGANIZATION}/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-debug-amd64 + sudo docker push ${ORGANIZATION}/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-arm64 + sudo docker push ${ORGANIZATION}/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-debug-arm64 + if [ ${ORGANIZATION} != "percona" ]; then + sudo docker push perconalab/percona-xtradb-cluster-operator:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}-pxc8.${MYSQL_VERSION_MINOR}-backup + fi ''' } sh ''' curl -O https://raw.githubusercontent.com/percona/percona-xtradb-cluster/${GIT_BRANCH}/MYSQL_VERSION . ./MYSQL_VERSION - sudo docker manifest create perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} \ - perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-amd64 \ - perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-arm64 - sudo docker manifest annotate perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-arm64 --os linux --arch arm64 --variant v8 - sudo docker manifest annotate perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-amd64 --os linux --arch amd64 - sudo docker manifest inspect perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} + sudo docker manifest create ${ORGANIZATION}/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} \ + ${ORGANIZATION}/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-amd64 \ + ${ORGANIZATION}/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-arm64 + sudo docker manifest annotate ${ORGANIZATION}/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} ${ORGANIZATION}/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-arm64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate ${ORGANIZATION}/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} ${ORGANIZATION}/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-amd64 --os linux --arch amd64 + sudo docker manifest inspect ${ORGANIZATION}/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} ''' withCredentials([ usernamePassword(credentialsId: 'hub.docker.com', @@ -165,10 +185,10 @@ pipeline { echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin curl -O https://raw.githubusercontent.com/percona/percona-xtradb-cluster/${GIT_BRANCH}/MYSQL_VERSION . ./MYSQL_VERSION - sudo docker manifest push perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} - sudo docker buildx imagetools create -t perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH} perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} - sudo docker buildx imagetools create -t perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR} perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} - sudo docker buildx imagetools create -t perconalab/percona-xtradb-cluster:latest perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} + sudo docker manifest push ${ORGANIZATION}/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} + sudo docker buildx imagetools create -t ${ORGANIZATION}/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH} ${ORGANIZATION}/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} + sudo docker buildx imagetools create -t ${ORGANIZATION}/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR} ${ORGANIZATION}/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} + sudo docker buildx imagetools create -t ${ORGANIZATION}/percona-xtradb-cluster:latest ${ORGANIZATION}/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} ''' } } @@ -229,8 +249,8 @@ stage('Check by trivy') { // 🔹 Define the image tags def imageList = [ - "perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-amd64", - "perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-arm64" + "${ORGANIZATION}/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-amd64", + "${ORGANIZATION}/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-arm64" ] // 🔹 Scan images and store logs @@ -257,36 +277,11 @@ stage('Check by trivy') { } // script } // steps } // stage -/* - stage('Check by trivy') { - agent { - label params.CLOUD == 'Hetzner' ? 'deb12-x64' : 'min-focal-x64' - } - steps { - catchError { - sh ''' - curl -O https://raw.githubusercontent.com/percona/percona-xtradb-cluster/${GIT_BRANCH}/MYSQL_VERSION - . ./MYSQL_VERSION - sudo apt-get update - sudo apt-get -y install wget apt-transport-https gnupg lsb-release - wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add - - echo deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list.d/trivy.list - sudo apt-get update - sudo apt-get -y install trivy - sudo trivy -q image --format table \ - --timeout 10m0s --ignore-unfixed --exit-code 1 --severity HIGH,CRITICAL perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-amd64 | tee -a trivy-hight-junit.xml - sudo trivy -q image --format table \ - --timeout 10m0s --ignore-unfixed --exit-code 1 --severity HIGH,CRITICAL perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}-arm64 | tee -a trivy-hight-junit.xml - ''' - } - } - } -*/ } post { success { script { - slackNotify("${SLACKNOTIFY}", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH}") + slackNotify("${SLACKNOTIFY}", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} pushed to ${ORGANIZATION}") } deleteDir() } @@ -301,7 +296,7 @@ stage('Check by trivy') { sudo rm -rf ./* ''' script { - currentBuild.description = "Built on ${GIT_BRANCH}" + currentBuild.description = "Built on ${GIT_BRANCH} pushed to ${ORGANIZATION}" } deleteDir() } From f5fa6fc30d9506fe5d4e5831203f90730997c7fe Mon Sep 17 00:00:00 2001 From: Surabhi Bhat Date: Wed, 25 Jun 2025 18:51:42 +0530 Subject: [PATCH 135/269] Update sysbench pipeline with hetzner changes --- sysbench/sysbench.groovy | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/sysbench/sysbench.groovy b/sysbench/sysbench.groovy index c87ccb7383..d5635fad7d 100644 --- a/sysbench/sysbench.groovy +++ b/sysbench/sysbench.groovy @@ -115,7 +115,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) @@ -128,8 +128,8 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:bionic", "--build_source_deb=1") + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_source_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) @@ -145,7 +145,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -158,7 +158,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -171,7 +171,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -184,7 +184,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -197,7 +197,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -210,7 +210,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -223,7 +223,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -236,7 +236,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -249,7 +249,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -262,7 +262,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -275,7 +275,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -288,7 +288,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -301,7 +301,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -314,7 +314,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -327,14 +327,14 @@ pipeline { stage('Sign packages') { steps { - signRPM() - signDEB() + signRPM(params.CLOUD) + signDEB(params.CLOUD) } } stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(SYSBENCH_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, SYSBENCH_REPO, COMPONENT) } } From 25a50b06286d815adfcb834961c6283eb90586ac Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Thu, 26 Jun 2025 21:50:32 +0300 Subject: [PATCH 136/269] fix branch detection for pgsm build --- ppg/pg_stat_monitor-autobuild.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ppg/pg_stat_monitor-autobuild.groovy b/ppg/pg_stat_monitor-autobuild.groovy index cc19f84f01..889259f714 100644 --- a/ppg/pg_stat_monitor-autobuild.groovy +++ b/ppg/pg_stat_monitor-autobuild.groovy @@ -7,7 +7,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { sh """ set -o xtrace mkdir test - wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/main/percona-packaging/scripts/pg_stat_monitor_builder.sh -O builder.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/\${BRANCH}/percona-packaging/scripts/pg_stat_monitor_builder.sh -O builder.sh pwd -P ls -laR export build_dir=\$(pwd -P) From 58b59d7f47c1d14ed92df6c7381ccbe0cfc2ead7 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Thu, 26 Jun 2025 23:51:40 +0300 Subject: [PATCH 137/269] hardcode version --- ppg/pg_stat_monitor-autobuild.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ppg/pg_stat_monitor-autobuild.groovy b/ppg/pg_stat_monitor-autobuild.groovy index 889259f714..fc00acc8d2 100644 --- a/ppg/pg_stat_monitor-autobuild.groovy +++ b/ppg/pg_stat_monitor-autobuild.groovy @@ -7,7 +7,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { sh """ set -o xtrace mkdir test - wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/\${BRANCH}/percona-packaging/scripts/pg_stat_monitor_builder.sh -O builder.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/release-2.2.0/percona-packaging/scripts/pg_stat_monitor_builder.sh -O builder.sh pwd -P ls -laR export build_dir=\$(pwd -P) From 77edcbdbf1598dc02f6a7a09ce4eda6d5a5764e3 Mon Sep 17 00:00:00 2001 From: Surabhi Bhat Date: Thu, 3 Jul 2025 14:11:08 +0530 Subject: [PATCH 138/269] Update hetzner percona-release job Update uploadRPMtoAWS to include el10 --- percona-release/jenkins/percona-release.groovy | 18 +++++++++--------- vars/uploadRPMfromAWS.groovy | 12 ++++++++++-- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/percona-release/jenkins/percona-release.groovy b/percona-release/jenkins/percona-release.groovy index 38f6fc3efd..563328c930 100644 --- a/percona-release/jenkins/percona-release.groovy +++ b/percona-release/jenkins/percona-release.groovy @@ -177,7 +177,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "RPM") sh ''' pwd @@ -198,8 +198,8 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:bionic", "DEB") + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "DEB") sh ''' pwd ls -la test/deb @@ -217,7 +217,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "RPM") sh ''' pwd @@ -235,7 +235,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:bionic", "DEB") sh ''' pwd @@ -253,15 +253,15 @@ pipeline { stage('Sign packages') { steps { - signRPM() - signDEB() + signRPM(params.CLOUD) + signDEB(params.CLOUD) } } stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild('prel', COMPONENT) + sync2ProdAutoBuild(params.CLOUD, 'prel', COMPONENT) } } @@ -270,7 +270,7 @@ pipeline { success { // slackNotify("", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") script { - currentBuild.description = "Built on ${SHELL_BRANCH}, path to packages: experimental/${AWS_STASH_PATH}" + currentBuild.description = "Built on ${BUILD_BRANCH}, path to packages: experimental/${AWS_STASH_PATH}" } deleteDir() } diff --git a/vars/uploadRPMfromAWS.groovy b/vars/uploadRPMfromAWS.groovy index fefa014111..c2228c4bfb 100644 --- a/vars/uploadRPMfromAWS.groovy +++ b/vars/uploadRPMfromAWS.groovy @@ -20,7 +20,7 @@ def call(String CLOUD_NAME, String FOLDER_NAME, String AWS_STASH_PATH) { ${USER}@repo.ci.percona.com:\${path_to_build}/source/redhat/ fi - export arch_list=\$( find . -name '*.el[6-9].*.rpm' -o -name '*.amzn2023.*.rpm' -o -name '*.noarch.rpm' | awk -F'[.]' '{print \$(NF -1)}' | sort -n | uniq ) + export arch_list=\$( find . -name '*.el[6-9].*.rpm' -o -name '*.el10.*.rpm' -o -name '*.amzn2023.*.rpm' -o -name '*.noarch.rpm' | awk -F'[.]' '{print \$(NF -1)}' | sort -n | uniq ) for arch in \${arch_list}; do if [ `find . -name "*.el6.\${arch}.rpm" | wc -l` -gt 0 ]; then @@ -55,6 +55,14 @@ def call(String CLOUD_NAME, String FOLDER_NAME, String AWS_STASH_PATH) { ${USER}@repo.ci.percona.com:\${path_to_build}/binary/redhat/9/\${arch}/ fi + if [ `find . -name "*.el10.\${arch}.rpm" | wc -l` -gt 0 ]; then + ssh -o StrictHostKeyChecking=no -i ${KEY_PATH} ${USER}@repo.ci.percona.com \ + mkdir -p \${path_to_build}/binary/redhat/10/\${arch} + scp -o StrictHostKeyChecking=no -i ${KEY_PATH} \ + `find . -name "*.el10.\${arch}.rpm"` \ + ${USER}@repo.ci.percona.com:\${path_to_build}/binary/redhat/10/\${arch}/ + fi + if [ `find . -name "*.amzn2023.\${arch}.rpm" | wc -l` -gt 0 ]; then ssh -o StrictHostKeyChecking=no -i ${KEY_PATH} ${USER}@repo.ci.percona.com \ mkdir -p \${path_to_build}/binary/redhat/2023/\${arch} @@ -64,7 +72,7 @@ def call(String CLOUD_NAME, String FOLDER_NAME, String AWS_STASH_PATH) { fi if [ `find . -name "*.noarch.rpm" | wc -l` -gt 0 ]; then - for osVer in 6 7 8 9 2023; do + for osVer in 6 7 8 9 10 2023; do ssh -o StrictHostKeyChecking=no -i ${KEY_PATH} ${USER}@repo.ci.percona.com \ mkdir -p \${path_to_build}/binary/redhat/\${osVer}/\${arch} scp -o StrictHostKeyChecking=no -i ${KEY_PATH} \ From 0c787322130a7cd4d07f3768ce260a62735cbaaa Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Fri, 4 Jul 2025 15:16:53 +0300 Subject: [PATCH 139/269] PKG-890 pg.cd: add hetzner cloud --- IaC/pg.cd/init.groovy.d/htz.cloud.groovy | 188 +++++++++++++++++++++++ 1 file changed, 188 insertions(+) create mode 100644 IaC/pg.cd/init.groovy.d/htz.cloud.groovy diff --git a/IaC/pg.cd/init.groovy.d/htz.cloud.groovy b/IaC/pg.cd/init.groovy.d/htz.cloud.groovy new file mode 100644 index 0000000000..4b1461ba8c --- /dev/null +++ b/IaC/pg.cd/init.groovy.d/htz.cloud.groovy @@ -0,0 +1,188 @@ +import cloud.dnation.jenkins.plugins.hetzner.* +import cloud.dnation.jenkins.plugins.hetzner.launcher.* +import hudson.model.* +import jenkins.model.Jenkins +import java.util.logging.Logger + +def cloudName = "pg-htz" + +imageMap = [:] // ID TYPE NAME DESCRIPTION ARCHITECTURE IMAGE SIZE DISK SIZE CREATED DEPRECATED +imageMap['deb12-x64'] = '114690387' // 114690387 system debian-12 Debian 12 x86 - 5 GB Tue Jun 13 09:00:02 EEST 2023 - +imageMap['deb12-aarch64'] = '114690389' // 114690389 system debian-12 Debian 12 arm - 5 GB Tue Jun 13 09:00:03 EEST 2023 - +imageMap['launcher-x64'] = imageMap['deb12-x64'] + +execMap = [:] +execMap['deb'] = 1 +execMap['deb12-x64-nbg1'] = execMap['deb'] +execMap['deb12-x64-hel1'] = execMap['deb'] +execMap['deb12-x64-fsn1'] = execMap['deb'] +execMap['deb12-aarch64-nbg1'] = execMap['deb'] +execMap['deb12-aarch64-hel1'] = execMap['deb'] +execMap['deb12-aarch64-fsn1'] = execMap['deb'] +execMap['deb12-x64-nbg1-min'] = execMap['deb'] +execMap['deb12-x64-hel1-min'] = execMap['deb'] +execMap['deb12-x64-fsn1-min'] = execMap['deb'] +execMap['deb12-aarch64-nbg1-min'] = execMap['deb'] +execMap['deb12-aarch64-hel1-min'] = execMap['deb'] +execMap['deb12-aarch64-fsn1-min'] = execMap['deb'] +execMap['launcher-x64-nbg1'] = 30 +execMap['launcher-x64-hel1'] = 30 +execMap['launcher-x64-fsn1'] = 30 + +bootDeadlineMap =[:] +bootDeadlineMap['default'] = 3 +bootDeadlineMap['deb12-x64-nbg1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-hel1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-fsn1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-nbg1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-hel1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-fsn1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-nbg1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-hel1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-fsn1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-nbg1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-hel1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-fsn1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['launcher-x64-nbg1'] = bootDeadlineMap['default'] +bootDeadlineMap['launcher-x64-hel1'] = bootDeadlineMap['default'] +bootDeadlineMap['launcher-x64-fsn1'] = bootDeadlineMap['default'] + +jvmOptsMap = [:] +jvmOptsMap['deb12'] = '-Xmx512m -Xms512m --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED' +jvmOptsMap['deb12-x64-nbg1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-hel1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-fsn1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-nbg1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-hel1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-fsn1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-nbg1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-hel1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-fsn1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-nbg1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-hel1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-fsn1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['launcher-x64-nbg1'] = jvmOptsMap['deb12'] +jvmOptsMap['launcher-x64-hel1'] = jvmOptsMap['deb12'] +jvmOptsMap['launcher-x64-fsn1'] = jvmOptsMap['deb12'] + +labelMap = [:] +labelMap['deb12-x64-min'] = 'docker-x64-min docker-deb12-x64-min deb12-x64-min' +labelMap['deb12-aarch64-min'] = 'docker-aarch64-min docker-deb12-aarch64-min deb12-aarch64-min' +labelMap['deb12-x64'] = 'docker-x64 docker-deb12-x64 deb12-x64' +labelMap['deb12-aarch64'] = 'docker-aarch64 docker-deb12-aarch64 deb12-aarch64' +labelMap['launcher-x64'] = 'launcher-x64' + +networkMap = [:] +networkMap['percona-vpc-eu'] = '10442325' // percona-vpc-eu + +initMap = [:] +initMap['deb-docker'] = '''#!/bin/bash -x + set -o xtrace + sudo fallocate -l 32G /swapfile + sudo chmod 600 /swapfile + sudo mkswap /swapfile + sudo swapon /swapfile + + export DEBIAN_FRONTEND=noninteractive + until sudo apt-get update; do + sleep 1 + echo try again + done + until sudo apt-get -y install openjdk-17-jre-headless apt-transport-https ca-certificates curl gnupg lsb-release unzip git; do + sleep 1 + echo try again + done + curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg + echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null + until sudo apt-get update; do + sleep 1 + echo try again + done + until sudo apt-get -y install docker-ce docker-ce-cli containerd.io; do + sleep 1 + echo try again + done + if ! $(aws --version | grep -q 'aws-cli/2'); then + find /tmp -maxdepth 1 -name "*aws*" | xargs sudo rm -rf + until curl "https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m)-2.22.35.zip" -o "/tmp/awscliv2.zip"; do + sleep 1 + echo try again + done + unzip -o /tmp/awscliv2.zip -d /tmp + cd /tmp/aws && sudo ./install + fi + sudo install -o $(id -u -n) -g $(id -g -n) -d /mnt/jenkins + sudo sysctl net.ipv4.tcp_fin_timeout=15 + sudo sysctl net.ipv4.tcp_tw_reuse=1 + sudo sysctl net.ipv6.conf.all.disable_ipv6=1 + sudo sysctl net.ipv6.conf.default.disable_ipv6=1 + sudo sysctl -w fs.inotify.max_user_watches=10000000 || true + sudo sysctl -w fs.aio-max-nr=1048576 || true + sudo sysctl -w fs.file-max=6815744 || true + echo "* soft core unlimited" | sudo tee -a /etc/security/limits.conf + sudo sed -i.bak -e 's^ExecStart=.*^ExecStart=/usr/bin/dockerd --data-root=/mnt/docker --default-ulimit nofile=900000:900000^' /lib/systemd/system/docker.service + sudo systemctl daemon-reload + sudo install -o root -g root -d /mnt/docker + sudo usermod -aG docker $(id -u -n) + sudo mkdir -p /etc/docker + echo '{"experimental": true, "ipv6": true, "fixed-cidr-v6": "fd3c:a8b0:18eb:5c06::/64"}' | sudo tee /etc/docker/daemon.json + sudo systemctl restart docker + echo "* * * * * root /usr/sbin/route add default gw 10.177.1.1 eth0" | sudo tee /etc/cron.d/fix-default-route +''' +initMap['deb12-x64-nbg1'] = initMap['deb-docker'] +initMap['deb12-x64-hel1'] = initMap['deb-docker'] +initMap['deb12-x64-fsn1'] = initMap['deb-docker'] +initMap['deb12-aarch64-nbg1'] = initMap['deb-docker'] +initMap['deb12-aarch64-hel1'] = initMap['deb-docker'] +initMap['deb12-aarch64-fsn1'] = initMap['deb-docker'] +initMap['deb12-x64-nbg1-min'] = initMap['deb-docker'] +initMap['deb12-x64-hel1-min'] = initMap['deb-docker'] +initMap['deb12-x64-fsn1-min'] = initMap['deb-docker'] +initMap['deb12-aarch64-nbg1-min'] = initMap['deb-docker'] +initMap['deb12-aarch64-hel1-min'] = initMap['deb-docker'] +initMap['deb12-aarch64-fsn1-min'] = initMap['deb-docker'] +initMap['launcher-x64-nbg1'] = initMap['deb-docker'] +initMap['launcher-x64-hel1'] = initMap['deb-docker'] +initMap['launcher-x64-fsn1'] = initMap['deb-docker'] + +def templates = [ + /* new HetznerServerTemplate("ubuntu20-cx21", "java", "name=ubuntu20-docker", "fsn1", "cx21"), */ + // tmplName tmplLabels tmplImage region server type + new HetznerServerTemplate("deb12-x64-nbg1-min", labelMap['deb12-x64-min'], imageMap['deb12-x64'], "nbg1", "cpx41"), + new HetznerServerTemplate("deb12-aarch64-nbg1-min", labelMap['deb12-aarch64-min'], imageMap['deb12-aarch64'], "nbg1", "cax31"), + new HetznerServerTemplate("deb12-x64-hel1-min", labelMap['deb12-x64-min'], imageMap['deb12-x64'], "hel1", "cpx41"), + new HetznerServerTemplate("deb12-aarch64-hel1-min", labelMap['deb12-aarch64-min'], imageMap['deb12-aarch64'], "hel1", "cax31"), + new HetznerServerTemplate("deb12-x64-fsn1-min", labelMap['deb12-x64-min'], imageMap['deb12-x64'], "fsn1", "cpx41"), + new HetznerServerTemplate("deb12-aarch64-fsn1-min", labelMap['deb12-aarch64-min'], imageMap['deb12-aarch64'], "fsn1", "cax31"), + new HetznerServerTemplate("deb12-x64-nbg1", labelMap['deb12-x64'], imageMap['deb12-x64'], "nbg1", "cpx51"), + new HetznerServerTemplate("deb12-aarch64-nbg1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "nbg1", "cax41"), + new HetznerServerTemplate("deb12-x64-hel1", labelMap['deb12-x64'], imageMap['deb12-x64'], "hel1", "cpx51"), + new HetznerServerTemplate("deb12-aarch64-hel1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "hel1", "cax41"), + new HetznerServerTemplate("deb12-x64-fsn1", labelMap['deb12-x64'], imageMap['deb12-x64'], "fsn1", "cpx51"), + new HetznerServerTemplate("deb12-aarch64-fsn1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "fsn1", "cax41"), + new HetznerServerTemplate("launcher-x64-nbg1", labelMap['launcher-x64'], imageMap['launcher-x64'], "nbg1", "cpx21"), + new HetznerServerTemplate("launcher-x64-hel1", labelMap['launcher-x64'], imageMap['launcher-x64'], "hel1", "cpx21"), + new HetznerServerTemplate("launcher-x64-fsn1", labelMap['launcher-x64'], imageMap['launcher-x64'], "fsn1", "cpx21") +] + +templates.each { it -> + def sshConnector = new SshConnectorAsRoot("htz.cd.key") + sshConnector.setConnectionMethod(new PublicAddressOnly()) // Replace with the desired method + it.setConnector(sshConnector) + def tmplName = it.name + it.setNumExecutors(execMap[tmplName]) + it.bootDeadline = bootDeadlineMap[tmplName] + it.remoteFs = "/mnt/jenkins/" + it.jvmOpts = jvmOptsMap[tmplName] + it.network = networkMap['percona-vpc-eu'] + it.userData = initMap[tmplName] + } + +// public HetznerCloud(String name, String credentialsId, String instanceCapStr, List serverTemplates) +def cloud = new HetznerCloud(cloudName, "htz.cd.token", "100", templates) + +def jenkins = Jenkins.get() + +jenkins.clouds.remove(jenkins.clouds.getByName(cloudName)) +jenkins.clouds.add(cloud) +jenkins.save() From 607f82c149ee0f0ca61758d32e6c9142ce2322c6 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Sun, 6 Jul 2025 17:02:19 +0300 Subject: [PATCH 140/269] gdal build --- ppg/gdal311.groovy | 125 +++++++++++++++++++++++++++++++++++++++++++++ ppg/gdal311.yml | 14 +++++ 2 files changed, 139 insertions(+) create mode 100644 ppg/gdal311.groovy create mode 100644 ppg/gdal311.yml diff --git a/ppg/gdal311.groovy b/ppg/gdal311.groovy new file mode 100644 index 0000000000..b514a50bcd --- /dev/null +++ b/ppg/gdal311.groovy @@ -0,0 +1,125 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_IMAGE, String STAGE_PARAM) { + sh """ + set -o xtrace + mkdir -p test + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/master/gdal311/builder.sh -O builder.sh + pwd -P + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_IMAGE} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 + bash -x ./builder.sh --builddir=\${build_dir}/test --rpm_release=${RPM_RELEASE} ${STAGE_PARAM}" + """ +} + +void cleanUpWS() { + sh "sudo rm -rf ./*" +} + +def AWS_STASH_PATH + +pipeline { + agent none + + parameters { + choice(name: 'CLOUD', choices: ['Hetzner', 'AWS'], description: 'Cloud infra for build') + string(name: 'GIT_REPO', defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'URL for gdal311 repository') + string(name: 'GIT_BRANCH', defaultValue: '16.3', description: 'Tag/Branch for postgresql packaging repository') + string(name: 'RPM_RELEASE', defaultValue: '1', description: 'RPM release value') + string(name: 'PPG_REPO', defaultValue: 'ppg-16.3', description: 'PPG repo name') + choice(name: 'COMPONENT', choices: ['laboratory', 'testing', 'experimental'], description: 'Repo component to push packages to') + } + + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + + stages { + stage('Build SRPM (generic)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + cleanUpWS() + buildStage("oraclelinux:8", "--get_src_rpm=1") + pushArtifactFolder(params.CLOUD, "srpm/", "") + popArtifactFolder(params.CLOUD, "srpm/", "") + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/gdal311.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/gdal311.properties + cat uploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + stash includes: 'test/**', name: 'srpmContents' + } + } + matrix { + axes { + axis { name 'ARCH'; values 'x86_64', 'aarch64' } + axis { name 'OLVER'; values '8', '9' } + } + agent { + label "${params.CLOUD == 'Hetzner' ? 'docker-' : 'docker-32gb-'}${ARCH}" + } + stages { + stage('Build RPM') { + steps { + cleanUpWS() + unstash 'uploadPath' + unstash 'srpmContents' + script { + buildStage("oraclelinux:${OLVER}", "--build_rpm=1") + } + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + } + failFast false + } + + stage('Sign packages') { + agent { label 'docker-x64' } + steps { + signRPM(params.CLOUD) + } + } + + stage('Push to public repository') { + agent { label 'docker-x64' } + steps { + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) + } + } + } + + post { + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}" + } + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + } + always { + cleanUpWS() + deleteDir() + } + } +} \ No newline at end of file diff --git a/ppg/gdal311.yml b/ppg/gdal311.yml new file mode 100644 index 0000000000..f6fa21a532 --- /dev/null +++ b/ppg/gdal311.yml @@ -0,0 +1,14 @@ +- job: + name: hetzner-gdal311-RELEASE + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/gdal311.groovy \ No newline at end of file From 13fce1ddcb99d809baa2a2f4dd5d0912c8b9bc71 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Sun, 6 Jul 2025 17:24:27 +0300 Subject: [PATCH 141/269] fix matrix --- ppg/gdal311.groovy | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/ppg/gdal311.groovy b/ppg/gdal311.groovy index b514a50bcd..2897f99b91 100644 --- a/ppg/gdal311.groovy +++ b/ppg/gdal311.groovy @@ -67,31 +67,32 @@ pipeline { stash includes: 'test/**', name: 'srpmContents' } } - matrix { - axes { + stage('Build RPMs in Parallel') { + matrix { + axes { axis { name 'ARCH'; values 'x86_64', 'aarch64' } axis { name 'OLVER'; values '8', '9' } - } - agent { - label "${params.CLOUD == 'Hetzner' ? 'docker-' : 'docker-32gb-'}${ARCH}" - } - stages { - stage('Build RPM') { - steps { - cleanUpWS() - unstash 'uploadPath' - unstash 'srpmContents' - script { - buildStage("oraclelinux:${OLVER}", "--build_rpm=1") + } + agent { + label "${params.CLOUD == 'Hetzner' ? 'docker-' : 'docker-32gb-'}${ARCH}" + } + stages { + stage('Build RPM') { + steps { + cleanUpWS() + unstash 'uploadPath' + unstash 'srpmContents' + script { + buildStage("oraclelinux:${OLVER}", "--build_rpm=1") + } + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } - pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) - uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + failFast false } - failFast false } - stage('Sign packages') { agent { label 'docker-x64' } steps { From 6aa9852f27a7d06afaf6dc3519574872a04b50d2 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Sun, 6 Jul 2025 17:26:25 +0300 Subject: [PATCH 142/269] fix failfast --- ppg/gdal311.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ppg/gdal311.groovy b/ppg/gdal311.groovy index 2897f99b91..d0f1aa4392 100644 --- a/ppg/gdal311.groovy +++ b/ppg/gdal311.groovy @@ -69,6 +69,7 @@ pipeline { } stage('Build RPMs in Parallel') { matrix { + failFast false axes { axis { name 'ARCH'; values 'x86_64', 'aarch64' } axis { name 'OLVER'; values '8', '9' } @@ -90,7 +91,6 @@ pipeline { } } } - failFast false } } stage('Sign packages') { From ee248f00a51e42cd017a9b7df1c10a70484b39ae Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Sun, 6 Jul 2025 17:26:59 +0300 Subject: [PATCH 143/269] fix --- ppg/gdal311.groovy | 1 - 1 file changed, 1 deletion(-) diff --git a/ppg/gdal311.groovy b/ppg/gdal311.groovy index d0f1aa4392..fbcdee4a23 100644 --- a/ppg/gdal311.groovy +++ b/ppg/gdal311.groovy @@ -69,7 +69,6 @@ pipeline { } stage('Build RPMs in Parallel') { matrix { - failFast false axes { axis { name 'ARCH'; values 'x86_64', 'aarch64' } axis { name 'OLVER'; values '8', '9' } From d5d03385ee6f44d6d0145280f31f8e16b97a6a76 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Mon, 7 Jul 2025 07:56:25 +0300 Subject: [PATCH 144/269] fix pipeline --- ppg/gdal311.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ppg/gdal311.groovy b/ppg/gdal311.groovy index fbcdee4a23..0cf4c93058 100644 --- a/ppg/gdal311.groovy +++ b/ppg/gdal311.groovy @@ -71,7 +71,7 @@ pipeline { matrix { axes { axis { name 'ARCH'; values 'x86_64', 'aarch64' } - axis { name 'OLVER'; values '8', '9' } + axis { name 'OLVER'; values '9' } } agent { label "${params.CLOUD == 'Hetzner' ? 'docker-' : 'docker-32gb-'}${ARCH}" From ad963143600ba512794a4f0aaf29d8d0b2113322 Mon Sep 17 00:00:00 2001 From: Vadim Yalovets Date: Mon, 7 Jul 2025 13:53:47 +0300 Subject: [PATCH 145/269] Hetzner (#3406) --- pxc/jenkins/percona-xtradb-cluster-8.0.groovy | 1 - 1 file changed, 1 deletion(-) diff --git a/pxc/jenkins/percona-xtradb-cluster-8.0.groovy b/pxc/jenkins/percona-xtradb-cluster-8.0.groovy index 85719d0f81..6b5d5513b1 100644 --- a/pxc/jenkins/percona-xtradb-cluster-8.0.groovy +++ b/pxc/jenkins/percona-xtradb-cluster-8.0.groovy @@ -24,7 +24,6 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { "https://api.github.com/repos/percona/percona-xtradb-cluster-private-build/contents/build-ps/pxc_builder.sh?ref=\${PRO_BRANCH}" sed -i "s/PRIVATE_USERNAME/\${USERNAME}/g" pxc_builder.sh sed -i "s/PRIVATE_TOKEN/\${PASSWORD}/g" pxc_builder.sh - grep "percona-release enable pxb-80-pro" pxc_builder.sh else wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/build-ps/pxc_builder.sh -O pxc_builder.sh fi From 5cc8ff808ddff5bc608961cfd63c847288116566 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Mon, 7 Jul 2025 14:21:41 +0300 Subject: [PATCH 146/269] update gdal --- ppg/gdal311.groovy | 46 ++++++++++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/ppg/gdal311.groovy b/ppg/gdal311.groovy index 0cf4c93058..50d3d1a433 100644 --- a/ppg/gdal311.groovy +++ b/ppg/gdal311.groovy @@ -68,26 +68,36 @@ pipeline { } } stage('Build RPMs in Parallel') { - matrix { - axes { - axis { name 'ARCH'; values 'x86_64', 'aarch64' } - axis { name 'OLVER'; values '9' } - } - agent { - label "${params.CLOUD == 'Hetzner' ? 'docker-' : 'docker-32gb-'}${ARCH}" + parallel { + stage('Build Oracle Linux 9 x86_64') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + unstash 'uploadPath' + unstash 'srpmContents' + script { + buildStage("oraclelinux:9", "--build_rpm=1") + } + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } } - stages { - stage('Build RPM') { - steps { - cleanUpWS() - unstash 'uploadPath' - unstash 'srpmContents' - script { - buildStage("oraclelinux:${OLVER}", "--build_rpm=1") - } - pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) - uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + + stage('Build Oracle Linux 9 aarch64') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + unstash 'uploadPath' + unstash 'srpmContents' + script { + buildStage("oraclelinux:9", "--build_rpm=1") } + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } } From 4ee3edaf8419ced0e3ab5aa13a6539ad9b1ea782 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Mon, 7 Jul 2025 15:52:51 +0300 Subject: [PATCH 147/269] proj95 pipeline --- ppg/proj95.groovy | 165 ++++++++++++++++++++++++++++++++++++++++++++++ ppg/proj95.yml | 14 ++++ 2 files changed, 179 insertions(+) create mode 100644 ppg/proj95.groovy create mode 100644 ppg/proj95.yml diff --git a/ppg/proj95.groovy b/ppg/proj95.groovy new file mode 100644 index 0000000000..8c6513a199 --- /dev/null +++ b/ppg/proj95.groovy @@ -0,0 +1,165 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_IMAGE, String STAGE_PARAM) { + sh """ + set -o xtrace + mkdir -p test + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/master/proj95/builder.sh -O builder.sh + pwd -P + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_IMAGE} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 + bash -x ./builder.sh --builddir=\${build_dir}/test --rpm_release=${RPM_RELEASE} ${STAGE_PARAM}" + """ +} + +void cleanUpWS() { + sh "sudo rm -rf ./*" +} + +def AWS_STASH_PATH + +pipeline { + agent none + + parameters { + choice(name: 'CLOUD', choices: ['Hetzner', 'AWS'], description: 'Cloud infra for build') + string(name: 'GIT_REPO', defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'URL for proj95 repository') + string(name: 'GIT_BRANCH', defaultValue: '16.3', description: 'Tag/Branch for postgresql packaging repository') + string(name: 'RPM_RELEASE', defaultValue: '1', description: 'RPM release value') + string(name: 'PPG_REPO', defaultValue: 'ppg-16.3', description: 'PPG repo name') + choice(name: 'COMPONENT', choices: ['laboratory', 'testing', 'experimental'], description: 'Repo component to push packages to') + } + + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + + stages { + stage('Build SRPM (generic)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + cleanUpWS() + buildStage("oraclelinux:8", "--get_src_rpm=1") + pushArtifactFolder(params.CLOUD, "srpm/", "") + popArtifactFolder(params.CLOUD, "srpm/", "") + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/proj95.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/proj95.properties + cat uploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + stash includes: 'test/**', name: 'srpmContents' + } + } + stage('Build RPMs in Parallel') { + parallel { + stage('Build Oracle Linux 8 x86_64') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + unstash 'uploadPath' + unstash 'srpmContents' + script { + buildStage("oraclelinux:8", "--build_rpm=1") + } + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Build Oracle Linux 8 aarch64') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + unstash 'uploadPath' + unstash 'srpmContents' + script { + buildStage("oraclelinux:8", "--build_rpm=1") + } + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Build Oracle Linux 9 x86_64') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + unstash 'uploadPath' + unstash 'srpmContents' + script { + buildStage("oraclelinux:9", "--build_rpm=1") + } + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + + stage('Build Oracle Linux 9 aarch64') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + unstash 'uploadPath' + unstash 'srpmContents' + script { + buildStage("oraclelinux:9", "--build_rpm=1") + } + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + } + } + stage('Sign packages') { + agent { label 'docker-x64' } + steps { + signRPM(params.CLOUD) + } + } + + stage('Push to public repository') { + agent { label 'docker-x64' } + steps { + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) + } + } + } + + post { + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}" + } + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + } + always { + cleanUpWS() + deleteDir() + } + } +} \ No newline at end of file diff --git a/ppg/proj95.yml b/ppg/proj95.yml new file mode 100644 index 0000000000..b0c2e96f76 --- /dev/null +++ b/ppg/proj95.yml @@ -0,0 +1,14 @@ +- job: + name: hetzner-proj95-RELEASE + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/proj95.groovy \ No newline at end of file From bf30dbbf3659d3ee6387c65a21bce076803bae3e Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Mon, 7 Jul 2025 21:03:58 +0300 Subject: [PATCH 148/269] fix --- ppg/gdal311.groovy | 4 ++-- ppg/proj95.groovy | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ppg/gdal311.groovy b/ppg/gdal311.groovy index 50d3d1a433..6d92bd7c86 100644 --- a/ppg/gdal311.groovy +++ b/ppg/gdal311.groovy @@ -103,14 +103,14 @@ pipeline { } } stage('Sign packages') { - agent { label 'docker-x64' } + agent { label 'docker' } steps { signRPM(params.CLOUD) } } stage('Push to public repository') { - agent { label 'docker-x64' } + agent { label 'docker' } steps { sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) } diff --git a/ppg/proj95.groovy b/ppg/proj95.groovy index 8c6513a199..fdeeb71b9a 100644 --- a/ppg/proj95.groovy +++ b/ppg/proj95.groovy @@ -133,14 +133,14 @@ pipeline { } } stage('Sign packages') { - agent { label 'docker-x64' } + agent { label 'docker' } steps { signRPM(params.CLOUD) } } stage('Push to public repository') { - agent { label 'docker-x64' } + agent { label 'docker' } steps { sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) } From 926a35e9cc0417cda18156c39f75b08cf2cf7918 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Mon, 7 Jul 2025 21:15:51 +0300 Subject: [PATCH 149/269] gdal385 --- ppg/gdal385.groovy | 135 +++++++++++++++++++++++++++++++++++++++++++++ ppg/gdal385.yml | 14 +++++ 2 files changed, 149 insertions(+) create mode 100644 ppg/gdal385.groovy create mode 100644 ppg/gdal385.yml diff --git a/ppg/gdal385.groovy b/ppg/gdal385.groovy new file mode 100644 index 0000000000..57c2cd3239 --- /dev/null +++ b/ppg/gdal385.groovy @@ -0,0 +1,135 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_IMAGE, String STAGE_PARAM) { + sh """ + set -o xtrace + mkdir -p test + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/master/gdal385/builder.sh -O builder.sh + pwd -P + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_IMAGE} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 + bash -x ./builder.sh --builddir=\${build_dir}/test --rpm_release=${RPM_RELEASE} ${STAGE_PARAM}" + """ +} + +void cleanUpWS() { + sh "sudo rm -rf ./*" +} + +def AWS_STASH_PATH + +pipeline { + agent none + + parameters { + choice(name: 'CLOUD', choices: ['Hetzner', 'AWS'], description: 'Cloud infra for build') + string(name: 'GIT_REPO', defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'URL for gdal385 repository') + string(name: 'GIT_BRANCH', defaultValue: '16.3', description: 'Tag/Branch for postgresql packaging repository') + string(name: 'RPM_RELEASE', defaultValue: '1', description: 'RPM release value') + string(name: 'PPG_REPO', defaultValue: 'ppg-16.3', description: 'PPG repo name') + choice(name: 'COMPONENT', choices: ['laboratory', 'testing', 'experimental'], description: 'Repo component to push packages to') + } + + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + + stages { + stage('Build SRPM (generic)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + cleanUpWS() + buildStage("oraclelinux:8", "--get_src_rpm=1") + pushArtifactFolder(params.CLOUD, "srpm/", "") + popArtifactFolder(params.CLOUD, "srpm/", "") + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/gdal385.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/gdal385.properties + cat uploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + stash includes: 'test/**', name: 'srpmContents' + } + } + stage('Build RPMs in Parallel') { + parallel { + stage('Build Oracle Linux 8 x86_64') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + unstash 'uploadPath' + unstash 'srpmContents' + script { + buildStage("oraclelinux:8", "--build_rpm=1") + } + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + + stage('Build Oracle Linux 8 aarch64') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + unstash 'uploadPath' + unstash 'srpmContents' + script { + buildStage("oraclelinux:8", "--build_rpm=1") + } + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + } + } + stage('Sign packages') { + agent { label 'docker' } + steps { + signRPM(params.CLOUD) + } + } + + stage('Push to public repository') { + agent { label 'docker' } + steps { + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) + } + } + } + + post { + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}" + } + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + } + always { + cleanUpWS() + deleteDir() + } + } +} \ No newline at end of file diff --git a/ppg/gdal385.yml b/ppg/gdal385.yml new file mode 100644 index 0000000000..1d88acd133 --- /dev/null +++ b/ppg/gdal385.yml @@ -0,0 +1,14 @@ +- job: + name: hetzner-gdal385-RELEASE + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/gdal385.groovy \ No newline at end of file From eb6105aaa7ffe05ce0d37b7c1346cab83f6a00d8 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Mon, 7 Jul 2025 21:22:22 +0300 Subject: [PATCH 150/269] fix nodes types --- ppg/proj95.groovy | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ppg/proj95.groovy b/ppg/proj95.groovy index fdeeb71b9a..c2c5272fa7 100644 --- a/ppg/proj95.groovy +++ b/ppg/proj95.groovy @@ -71,7 +71,7 @@ pipeline { parallel { stage('Build Oracle Linux 8 x86_64') { agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker-32gb' } steps { cleanUpWS() @@ -101,7 +101,7 @@ pipeline { } stage('Build Oracle Linux 9 x86_64') { agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker-32gb' } steps { cleanUpWS() From 75bf73c551ac5961837d60e58dcda51e9658b9d9 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Fri, 11 Jul 2025 13:51:02 +0300 Subject: [PATCH 151/269] Add sbom verification (#3409) --- ppg/pg_generate_sbom.groovy | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/ppg/pg_generate_sbom.groovy b/ppg/pg_generate_sbom.groovy index 38decca78d..bb99cd08fa 100644 --- a/ppg/pg_generate_sbom.groovy +++ b/ppg/pg_generate_sbom.groovy @@ -4,16 +4,23 @@ library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ ]) _ void buildStage(String DOCKER_OS, String STAGE_PARAM) { - sh """ + withCredentials([ + string(credentialsId: 'SNYK_TOKEN', variable: 'SNYK_TOKEN'), + string(credentialsId: 'SNYK_ORG_TOKEN', variable: 'SNYK_ORG_TOKEN') + ]){ + sh """ set -o xtrace wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/pg_sbom/pg_generate_sbom.sh -O pg_generate_sbom.sh pwd -P ls -laR export build_dir=\$(pwd -P) - docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + docker run -u root -v \${build_dir}:\${build_dir} -e SNYK_TOKEN=${SNYK_TOKEN} -e SNYK_ORG_TOKEN=${SNYK_ORG_TOKEN} ${DOCKER_OS} sh -c " set -o xtrace cd \${build_dir} bash -x ./pg_generate_sbom.sh --pg_version=${PG_VERSION} --repo_type=${REPO_TYPE} ${STAGE_PARAM}" + curl -fsSL https://raw.githubusercontent.com/EvgeniyPatlan/sbom_verifier/main/install_sbom_verifier.sh | bash + bash sbom_verifier.sh pg_sbom/*.json + """ } From 25cd84b889fde9682792a444c255ea7cd4f5bec6 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Fri, 11 Jul 2025 13:55:04 +0300 Subject: [PATCH 152/269] fix --- ppg/pg_generate_sbom.groovy | 1 + 1 file changed, 1 insertion(+) diff --git a/ppg/pg_generate_sbom.groovy b/ppg/pg_generate_sbom.groovy index bb99cd08fa..f5f0793ee8 100644 --- a/ppg/pg_generate_sbom.groovy +++ b/ppg/pg_generate_sbom.groovy @@ -22,6 +22,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { bash sbom_verifier.sh pg_sbom/*.json """ + } } void uploadPGSBOMToTestingDownloadServer(String productName, String packageVersion, String SBOMType) { From c98bbea2ce1063f28b8c71f21c33d68e6424727a Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Sun, 13 Jul 2025 21:31:30 +0300 Subject: [PATCH 153/269] PKG-731 psmdb.cd: pbm add ol10 support --- pbm/jenkins/percona-mongodb-backup.groovy | 28 ++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/pbm/jenkins/percona-mongodb-backup.groovy b/pbm/jenkins/percona-mongodb-backup.groovy index 77c2616962..a8fbb85945 100644 --- a/pbm/jenkins/percona-mongodb-backup.groovy +++ b/pbm/jenkins/percona-mongodb-backup.groovy @@ -53,7 +53,7 @@ pipeline { description: 'DEB release value', name: 'DEB_RELEASE') string( - defaultValue: '2.8.0', + defaultValue: '2.10.0', description: 'VERSION value', name: 'VERSION') string( @@ -205,6 +205,32 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10(x86_64)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 10(aarch64)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Amazon Linux 2023(x86_64)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' From 9268bf6f793b622ba3f7c5806f1fa423e0a4d069 Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Sun, 13 Jul 2025 22:38:46 +0300 Subject: [PATCH 154/269] PKG-901 psmdb.cd: mongosh add ol10 support --- psmdb/jenkins/percona-mongodb-mongosh.groovy | 24 ++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/psmdb/jenkins/percona-mongodb-mongosh.groovy b/psmdb/jenkins/percona-mongodb-mongosh.groovy index 67d1832833..b2fdb8c07a 100644 --- a/psmdb/jenkins/percona-mongodb-mongosh.groovy +++ b/psmdb/jenkins/percona-mongodb-mongosh.groovy @@ -147,6 +147,30 @@ pipeline { pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10(x86_64)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_mongosh=1 --build_variant=rpm-x64") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 10(aarch64)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_mongosh=1 --build_variant=rpm-arm64") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Amazon Linux 2023(x86_64)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' From 9b92f052e87691e5e90bb7bb562d8c72fa20912e Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Mon, 14 Jul 2025 14:08:13 +0300 Subject: [PATCH 155/269] ydiff on rhel10 (#3412) --- ppg/ydiff.groovy | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/ppg/ydiff.groovy b/ppg/ydiff.groovy index 9b5999d6b6..bf9e81234e 100644 --- a/ppg/ydiff.groovy +++ b/ppg/ydiff.groovy @@ -176,6 +176,32 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Focal(20.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' From be1c57898afefe53b7d64c11d3ab552c39cb6b71 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Mon, 14 Jul 2025 15:15:26 +0300 Subject: [PATCH 156/269] pysyncobj rhel 10 (#3413) --- ppg/pysyncobj-arm.groovy | 13 +++++++++++++ ppg/pysyncobj.groovy | 13 +++++++++++++ 2 files changed, 26 insertions(+) diff --git a/ppg/pysyncobj-arm.groovy b/ppg/pysyncobj-arm.groovy index 97ac3d2158..12f199fada 100644 --- a/ppg/pysyncobj-arm.groovy +++ b/ppg/pysyncobj-arm.groovy @@ -150,6 +150,19 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Focal(20.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' diff --git a/ppg/pysyncobj.groovy b/ppg/pysyncobj.groovy index 819d25da28..8fc6ee57a5 100644 --- a/ppg/pysyncobj.groovy +++ b/ppg/pysyncobj.groovy @@ -150,6 +150,19 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Focal(20.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' From 39e346d01eec3818ad63c68b74bae71c6b84770f Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Mon, 14 Jul 2025 15:40:59 +0300 Subject: [PATCH 157/269] rhel10 support (#3414) --- ppg/haproxy.groovy | 26 ++++++++++++++ ppg/pg_gather.groovy | 26 ++++++++++++++ ppg/pg_generate_sbom.groovy | 42 +++++++++++++++++++++++ ppg/pg_percona_telemetry_autobuild.groovy | 28 +++++++++++++++ ppg/postgresql-common.groovy | 13 +++++++ ppg/postgresql_common_arm.groovy | 15 +++++++- ppg/postgresql_server.groovy | 26 ++++++++++++++ 7 files changed, 175 insertions(+), 1 deletion(-) diff --git a/ppg/haproxy.groovy b/ppg/haproxy.groovy index c960cb1de6..ef61cc1469 100644 --- a/ppg/haproxy.groovy +++ b/ppg/haproxy.groovy @@ -176,6 +176,32 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Focal(20.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/pg_gather.groovy b/ppg/pg_gather.groovy index 8cd1093be4..4cc0f22218 100644 --- a/ppg/pg_gather.groovy +++ b/ppg/pg_gather.groovy @@ -176,6 +176,32 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Focal(20.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/pg_generate_sbom.groovy b/ppg/pg_generate_sbom.groovy index f5f0793ee8..6efb24df60 100644 --- a/ppg/pg_generate_sbom.groovy +++ b/ppg/pg_generate_sbom.groovy @@ -184,6 +184,48 @@ pipeline { } } } + stage('Generate PG SBOM OL/10 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PG_VERSION} + cat uploadPath-${PG_VERSION} + """ + stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" + buildStage("oraclelinux:10", "") + pushArtifactFolder(params.CLOUD, "pg_sbom/", AWS_STASH_PATH) + uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") + uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") + } + } + } + stage('Generate PG SBOM OL/10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PG_VERSION} + cat uploadPath-${PG_VERSION} + """ + stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" + buildStage("oraclelinux:10", "") + pushArtifactFolder(params.CLOUD, "pg_sbom/", AWS_STASH_PATH) + uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") + uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") + } + } + } stage('Generate PG SBOM Focal AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/pg_percona_telemetry_autobuild.groovy b/ppg/pg_percona_telemetry_autobuild.groovy index cf198f34d9..86c08f9bb3 100644 --- a/ppg/pg_percona_telemetry_autobuild.groovy +++ b/ppg/pg_percona_telemetry_autobuild.groovy @@ -214,6 +214,34 @@ pipeline { popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } //stage + stage('OL 10 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + echo "====> Build percona_pg_telemetry rpm on OL 9 PG${PG_RELEASE}" + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } //stage + stage('OL 10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + echo "====> Build percona_pg_telemetry rpm on OL 9 PG${PG_RELEASE}" + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } diff --git a/ppg/postgresql-common.groovy b/ppg/postgresql-common.groovy index d8545a15c4..9474255a2c 100644 --- a/ppg/postgresql-common.groovy +++ b/ppg/postgresql-common.groovy @@ -150,6 +150,19 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Focal(20.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/postgresql_common_arm.groovy b/ppg/postgresql_common_arm.groovy index 73431c8f5b..8716d6783b 100644 --- a/ppg/postgresql_common_arm.groovy +++ b/ppg/postgresql_common_arm.groovy @@ -153,7 +153,20 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { + stage('Oracle Linux 10') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Focal(20.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } diff --git a/ppg/postgresql_server.groovy b/ppg/postgresql_server.groovy index fa1825c928..c080357c8b 100644 --- a/ppg/postgresql_server.groovy +++ b/ppg/postgresql_server.groovy @@ -176,6 +176,32 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Focal(20.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' From 42c7e77c5a82afefcad42d1dc8aa24c6fe654ad6 Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Mon, 14 Jul 2025 15:47:42 +0300 Subject: [PATCH 158/269] PKG-905 cloud.cd: add hetzner cloud config --- IaC/cloud.cd/init.groovy.d/htz.cloud.groovy | 188 ++++++++++++++++++++ 1 file changed, 188 insertions(+) create mode 100644 IaC/cloud.cd/init.groovy.d/htz.cloud.groovy diff --git a/IaC/cloud.cd/init.groovy.d/htz.cloud.groovy b/IaC/cloud.cd/init.groovy.d/htz.cloud.groovy new file mode 100644 index 0000000000..bccfa95592 --- /dev/null +++ b/IaC/cloud.cd/init.groovy.d/htz.cloud.groovy @@ -0,0 +1,188 @@ +import cloud.dnation.jenkins.plugins.hetzner.* +import cloud.dnation.jenkins.plugins.hetzner.launcher.* +import hudson.model.* +import jenkins.model.Jenkins +import java.util.logging.Logger + +def cloudName = "cloud-htz" + +imageMap = [:] // ID TYPE NAME DESCRIPTION ARCHITECTURE IMAGE SIZE DISK SIZE CREATED DEPRECATED +imageMap['deb12-x64'] = '114690387' // 114690387 system debian-12 Debian 12 x86 - 5 GB Tue Jun 13 09:00:02 EEST 2023 - +imageMap['deb12-aarch64'] = '114690389' // 114690389 system debian-12 Debian 12 arm - 5 GB Tue Jun 13 09:00:03 EEST 2023 - +imageMap['launcher-x64'] = imageMap['deb12-x64'] + +execMap = [:] +execMap['deb'] = 1 +execMap['deb12-x64-nbg1'] = execMap['deb'] +execMap['deb12-x64-hel1'] = execMap['deb'] +execMap['deb12-x64-fsn1'] = execMap['deb'] +execMap['deb12-aarch64-nbg1'] = execMap['deb'] +execMap['deb12-aarch64-hel1'] = execMap['deb'] +execMap['deb12-aarch64-fsn1'] = execMap['deb'] +execMap['deb12-x64-nbg1-min'] = execMap['deb'] +execMap['deb12-x64-hel1-min'] = execMap['deb'] +execMap['deb12-x64-fsn1-min'] = execMap['deb'] +execMap['deb12-aarch64-nbg1-min'] = execMap['deb'] +execMap['deb12-aarch64-hel1-min'] = execMap['deb'] +execMap['deb12-aarch64-fsn1-min'] = execMap['deb'] +execMap['launcher-x64-nbg1'] = 30 +execMap['launcher-x64-hel1'] = 30 +execMap['launcher-x64-fsn1'] = 30 + +bootDeadlineMap =[:] +bootDeadlineMap['default'] = 3 +bootDeadlineMap['deb12-x64-nbg1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-hel1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-fsn1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-nbg1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-hel1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-fsn1'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-nbg1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-hel1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-x64-fsn1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-nbg1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-hel1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['deb12-aarch64-fsn1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['launcher-x64-nbg1'] = bootDeadlineMap['default'] +bootDeadlineMap['launcher-x64-hel1'] = bootDeadlineMap['default'] +bootDeadlineMap['launcher-x64-fsn1'] = bootDeadlineMap['default'] + +jvmOptsMap = [:] +jvmOptsMap['deb12'] = '-Xmx512m -Xms512m --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED' +jvmOptsMap['deb12-x64-nbg1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-hel1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-fsn1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-nbg1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-hel1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-fsn1'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-nbg1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-hel1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-x64-fsn1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-nbg1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-hel1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['deb12-aarch64-fsn1-min'] = jvmOptsMap['deb12'] +jvmOptsMap['launcher-x64-nbg1'] = jvmOptsMap['deb12'] +jvmOptsMap['launcher-x64-hel1'] = jvmOptsMap['deb12'] +jvmOptsMap['launcher-x64-fsn1'] = jvmOptsMap['deb12'] + +labelMap = [:] +labelMap['deb12-x64-min'] = 'docker-x64-min docker-deb12-x64-min deb12-x64-min' +labelMap['deb12-aarch64-min'] = 'docker-aarch64-min docker-deb12-aarch64-min deb12-aarch64-min' +labelMap['deb12-x64'] = 'docker-x64 docker-deb12-x64 deb12-x64' +labelMap['deb12-aarch64'] = 'docker-aarch64 docker-deb12-aarch64 deb12-aarch64' +labelMap['launcher-x64'] = 'launcher-x64' + +networkMap = [:] +networkMap['percona-vpc-eu'] = '10442325' // percona-vpc-eu + +initMap = [:] +initMap['deb-docker'] = '''#!/bin/bash -x + set -o xtrace + sudo fallocate -l 32G /swapfile + sudo chmod 600 /swapfile + sudo mkswap /swapfile + sudo swapon /swapfile + + export DEBIAN_FRONTEND=noninteractive + until sudo apt-get update; do + sleep 1 + echo try again + done + until sudo apt-get -y install openjdk-17-jre-headless apt-transport-https ca-certificates curl gnupg lsb-release unzip git; do + sleep 1 + echo try again + done + curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg + echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null + until sudo apt-get update; do + sleep 1 + echo try again + done + until sudo apt-get -y install docker-ce docker-ce-cli containerd.io; do + sleep 1 + echo try again + done + if ! $(aws --version | grep -q 'aws-cli/2'); then + find /tmp -maxdepth 1 -name "*aws*" | xargs sudo rm -rf + until curl "https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m)-2.22.35.zip" -o "/tmp/awscliv2.zip"; do + sleep 1 + echo try again + done + unzip -o /tmp/awscliv2.zip -d /tmp + cd /tmp/aws && sudo ./install + fi + sudo install -o $(id -u -n) -g $(id -g -n) -d /mnt/jenkins + sudo sysctl net.ipv4.tcp_fin_timeout=15 + sudo sysctl net.ipv4.tcp_tw_reuse=1 + sudo sysctl net.ipv6.conf.all.disable_ipv6=1 + sudo sysctl net.ipv6.conf.default.disable_ipv6=1 + sudo sysctl -w fs.inotify.max_user_watches=10000000 || true + sudo sysctl -w fs.aio-max-nr=1048576 || true + sudo sysctl -w fs.file-max=6815744 || true + echo "* soft core unlimited" | sudo tee -a /etc/security/limits.conf + sudo sed -i.bak -e 's^ExecStart=.*^ExecStart=/usr/bin/dockerd --data-root=/mnt/docker --default-ulimit nofile=900000:900000^' /lib/systemd/system/docker.service + sudo systemctl daemon-reload + sudo install -o root -g root -d /mnt/docker + sudo usermod -aG docker $(id -u -n) + sudo mkdir -p /etc/docker + echo '{"experimental": true, "ipv6": true, "fixed-cidr-v6": "fd3c:a8b0:18eb:5c06::/64"}' | sudo tee /etc/docker/daemon.json + sudo systemctl restart docker + echo "* * * * * root /usr/sbin/route add default gw 10.177.1.1 eth0" | sudo tee /etc/cron.d/fix-default-route +''' +initMap['deb12-x64-nbg1'] = initMap['deb-docker'] +initMap['deb12-x64-hel1'] = initMap['deb-docker'] +initMap['deb12-x64-fsn1'] = initMap['deb-docker'] +initMap['deb12-aarch64-nbg1'] = initMap['deb-docker'] +initMap['deb12-aarch64-hel1'] = initMap['deb-docker'] +initMap['deb12-aarch64-fsn1'] = initMap['deb-docker'] +initMap['deb12-x64-nbg1-min'] = initMap['deb-docker'] +initMap['deb12-x64-hel1-min'] = initMap['deb-docker'] +initMap['deb12-x64-fsn1-min'] = initMap['deb-docker'] +initMap['deb12-aarch64-nbg1-min'] = initMap['deb-docker'] +initMap['deb12-aarch64-hel1-min'] = initMap['deb-docker'] +initMap['deb12-aarch64-fsn1-min'] = initMap['deb-docker'] +initMap['launcher-x64-nbg1'] = initMap['deb-docker'] +initMap['launcher-x64-hel1'] = initMap['deb-docker'] +initMap['launcher-x64-fsn1'] = initMap['deb-docker'] + +def templates = [ + /* new HetznerServerTemplate("ubuntu20-cx21", "java", "name=ubuntu20-docker", "fsn1", "cx21"), */ + // tmplName tmplLabels tmplImage region server type + new HetznerServerTemplate("deb12-x64-nbg1-min", labelMap['deb12-x64-min'], imageMap['deb12-x64'], "nbg1", "cpx41"), + new HetznerServerTemplate("deb12-aarch64-nbg1-min", labelMap['deb12-aarch64-min'], imageMap['deb12-aarch64'], "nbg1", "cax31"), + new HetznerServerTemplate("deb12-x64-hel1-min", labelMap['deb12-x64-min'], imageMap['deb12-x64'], "hel1", "cpx41"), + new HetznerServerTemplate("deb12-aarch64-hel1-min", labelMap['deb12-aarch64-min'], imageMap['deb12-aarch64'], "hel1", "cax31"), + new HetznerServerTemplate("deb12-x64-fsn1-min", labelMap['deb12-x64-min'], imageMap['deb12-x64'], "fsn1", "cpx41"), + new HetznerServerTemplate("deb12-aarch64-fsn1-min", labelMap['deb12-aarch64-min'], imageMap['deb12-aarch64'], "fsn1", "cax31"), + new HetznerServerTemplate("deb12-x64-nbg1", labelMap['deb12-x64'], imageMap['deb12-x64'], "nbg1", "cpx51"), + new HetznerServerTemplate("deb12-aarch64-nbg1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "nbg1", "cax41"), + new HetznerServerTemplate("deb12-x64-hel1", labelMap['deb12-x64'], imageMap['deb12-x64'], "hel1", "cpx51"), + new HetznerServerTemplate("deb12-aarch64-hel1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "hel1", "cax41"), + new HetznerServerTemplate("deb12-x64-fsn1", labelMap['deb12-x64'], imageMap['deb12-x64'], "fsn1", "cpx51"), + new HetznerServerTemplate("deb12-aarch64-fsn1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "fsn1", "cax41"), + new HetznerServerTemplate("launcher-x64-nbg1", labelMap['launcher-x64'], imageMap['launcher-x64'], "nbg1", "cpx21"), + new HetznerServerTemplate("launcher-x64-hel1", labelMap['launcher-x64'], imageMap['launcher-x64'], "hel1", "cpx21"), + new HetznerServerTemplate("launcher-x64-fsn1", labelMap['launcher-x64'], imageMap['launcher-x64'], "fsn1", "cpx21") +] + +templates.each { it -> + def sshConnector = new SshConnectorAsRoot("htz.cd.key") + sshConnector.setConnectionMethod(new PublicAddressOnly()) // Replace with the desired method + it.setConnector(sshConnector) + def tmplName = it.name + it.setNumExecutors(execMap[tmplName]) + it.bootDeadline = bootDeadlineMap[tmplName] + it.remoteFs = "/mnt/jenkins/" + it.jvmOpts = jvmOptsMap[tmplName] + it.network = networkMap['percona-vpc-eu'] + it.userData = initMap[tmplName] + } + +// public HetznerCloud(String name, String credentialsId, String instanceCapStr, List serverTemplates) +def cloud = new HetznerCloud(cloudName, "htz.cd.token", "100", templates) + +def jenkins = Jenkins.get() + +jenkins.clouds.remove(jenkins.clouds.getByName(cloudName)) +jenkins.clouds.add(cloud) +jenkins.save() From de8c50ecd888948ed69e2348d5de2068c51e0eb1 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Mon, 14 Jul 2025 20:13:10 +0300 Subject: [PATCH 159/269] Remove focal build stage (#3416) --- ppg/etcd-arm.groovy | 13 -------- ppg/etcd.groovy | 26 --------------- ppg/haproxy-arm.groovy | 13 -------- ppg/haproxy.groovy | 26 --------------- ppg/patroni-arm.groovy | 13 -------- ppg/patroni.groovy | 13 -------- ppg/percona-postgis-arm.groovy | 13 -------- ppg/percona-postgis.groovy | 26 --------------- ppg/pg_cron-arm.groovy | 13 -------- ppg/pg_cron.groovy | 13 -------- ppg/pg_gather-arm.groovy | 13 -------- ppg/pg_gather.groovy | 26 --------------- ppg/pg_generate_sbom.groovy | 42 ------------------------ ppg/pg_stat_monitor-autobuild-arm.groovy | 13 -------- ppg/pg_stat_monitor-autobuild.groovy | 26 --------------- ppg/pg_tde-arm.groovy | 13 -------- ppg/pg_tde.groovy | 13 -------- ppg/pg_tde_arm_nightly.groovy | 13 -------- ppg/pg_tde_nightly.groovy | 13 -------- ppg/pgaudit-arm.groovy | 13 -------- ppg/pgaudit.groovy | 26 --------------- ppg/pgaudit_set_user-arm.groovy | 13 -------- ppg/pgaudit_set_user.groovy | 26 --------------- ppg/pgbackrest-arm.groovy | 13 -------- ppg/pgbackrest.groovy | 26 --------------- ppg/pgbadger-arm.groovy | 13 -------- ppg/pgbadger.groovy | 26 --------------- ppg/pgbouncer-arm.groovy | 13 -------- ppg/pgbouncer.groovy | 26 --------------- ppg/pgpool-arm.groovy | 13 -------- ppg/pgpool2-build.groovy | 26 --------------- ppg/pgrepack.groovy | 26 --------------- ppg/pgrepack_arm.groovy | 13 -------- ppg/pgvector-arm.groovy | 13 -------- ppg/pgvector.groovy | 26 --------------- ppg/postgresql-common.groovy | 13 -------- ppg/postgresql_common_arm.groovy | 13 -------- ppg/postgresql_server.groovy | 26 --------------- ppg/postgresql_server_17_nightly.groovy | 26 --------------- ppg/postgresql_server_arm.groovy | 13 -------- ppg/ppg-server-arm.groovy | 13 -------- ppg/ppg-server-ha-arm.groovy | 13 -------- ppg/ppg-server-ha.groovy | 26 --------------- ppg/ppg-server.groovy | 26 --------------- ppg/pysyncobj-arm.groovy | 13 -------- ppg/pysyncobj.groovy | 13 -------- ppg/timescaledb-arm.groovy | 13 -------- ppg/timescaledb.groovy | 13 -------- ppg/wal2json-arm.groovy | 13 -------- ppg/wal2json.groovy | 26 --------------- ppg/ydiff-arm.groovy | 13 -------- ppg/ydiff.groovy | 13 -------- 52 files changed, 939 deletions(-) diff --git a/ppg/etcd-arm.groovy b/ppg/etcd-arm.groovy index 48e397fd0e..0b8d9c71db 100644 --- a/ppg/etcd-arm.groovy +++ b/ppg/etcd-arm.groovy @@ -153,19 +153,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' diff --git a/ppg/etcd.groovy b/ppg/etcd.groovy index 971badfd7a..9cfdd261a1 100644 --- a/ppg/etcd.groovy +++ b/ppg/etcd.groovy @@ -176,32 +176,6 @@ pipeline { // uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) // } //} - stage('Ubuntu Focal(20.04) AMD') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } - //stage('Ubuntu Focal(20.04) ARM') { - // agent { - // label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - // } - // steps { - // cleanUpWS() - // popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - // buildStage("ubuntu:focal", "--build_deb=1") - - // pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - // uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - // } - //} stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/haproxy-arm.groovy b/ppg/haproxy-arm.groovy index 0a52ca5dd6..da93941875 100644 --- a/ppg/haproxy-arm.groovy +++ b/ppg/haproxy-arm.groovy @@ -150,19 +150,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' diff --git a/ppg/haproxy.groovy b/ppg/haproxy.groovy index ef61cc1469..51a7cfa202 100644 --- a/ppg/haproxy.groovy +++ b/ppg/haproxy.groovy @@ -202,32 +202,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } - stage('Ubuntu Focal(20.04) ARM') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/patroni-arm.groovy b/ppg/patroni-arm.groovy index b2a8a23f26..163e71e358 100644 --- a/ppg/patroni-arm.groovy +++ b/ppg/patroni-arm.groovy @@ -150,19 +150,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' diff --git a/ppg/patroni.groovy b/ppg/patroni.groovy index ee57175c56..3369aeef7b 100644 --- a/ppg/patroni.groovy +++ b/ppg/patroni.groovy @@ -176,19 +176,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/percona-postgis-arm.groovy b/ppg/percona-postgis-arm.groovy index 9a7fd34086..0d70184c78 100644 --- a/ppg/percona-postgis-arm.groovy +++ b/ppg/percona-postgis-arm.groovy @@ -157,19 +157,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' diff --git a/ppg/percona-postgis.groovy b/ppg/percona-postgis.groovy index d537e4a767..5aa9894d0b 100644 --- a/ppg/percona-postgis.groovy +++ b/ppg/percona-postgis.groovy @@ -183,32 +183,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04) AMD') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } - stage('Ubuntu Focal(20.04) ARM') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/pg_cron-arm.groovy b/ppg/pg_cron-arm.groovy index c4b3de5ed6..19b63ba333 100644 --- a/ppg/pg_cron-arm.groovy +++ b/ppg/pg_cron-arm.groovy @@ -150,19 +150,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' diff --git a/ppg/pg_cron.groovy b/ppg/pg_cron.groovy index d35355eb7b..374fcfc289 100644 --- a/ppg/pg_cron.groovy +++ b/ppg/pg_cron.groovy @@ -150,19 +150,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/pg_gather-arm.groovy b/ppg/pg_gather-arm.groovy index e59596bb74..4c231abffe 100644 --- a/ppg/pg_gather-arm.groovy +++ b/ppg/pg_gather-arm.groovy @@ -150,19 +150,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' diff --git a/ppg/pg_gather.groovy b/ppg/pg_gather.groovy index 4cc0f22218..c1a8190473 100644 --- a/ppg/pg_gather.groovy +++ b/ppg/pg_gather.groovy @@ -202,32 +202,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04) AMD') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } - stage('Ubuntu Focal(20.04) ARM') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/pg_generate_sbom.groovy b/ppg/pg_generate_sbom.groovy index 6efb24df60..42e6ba71a7 100644 --- a/ppg/pg_generate_sbom.groovy +++ b/ppg/pg_generate_sbom.groovy @@ -226,48 +226,6 @@ pipeline { } } } - stage('Generate PG SBOM Focal AMD') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' - } - steps { - cleanUpWS() - script { - unstash 'timestamp' - AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" - sh """ - echo ${AWS_STASH_PATH} > uploadPath-${PG_VERSION} - cat uploadPath-${PG_VERSION} - """ - stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" - buildStage("ubuntu:focal", "") - pushArtifactFolder(params.CLOUD, "pg_sbom/", AWS_STASH_PATH) - uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") - uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") - } - } - } - stage('Generate PG SBOM Focal ARM') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - script { - unstash 'timestamp' - AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PG_SBOM/${PG_VERSION}/${TIMESTAMP}" - sh """ - echo ${AWS_STASH_PATH} > uploadPath-${PG_VERSION} - cat uploadPath-${PG_VERSION} - """ - stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" - buildStage("ubuntu:focal", "") - pushArtifactFolder(params.CLOUD, "pg_sbom/", AWS_STASH_PATH) - uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") - uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") - } - } - } stage('Generate PG SBOM Jammy AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/pg_stat_monitor-autobuild-arm.groovy b/ppg/pg_stat_monitor-autobuild-arm.groovy index 4dbbe72fde..97d2f7fab4 100644 --- a/ppg/pg_stat_monitor-autobuild-arm.groovy +++ b/ppg/pg_stat_monitor-autobuild-arm.groovy @@ -165,19 +165,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' diff --git a/ppg/pg_stat_monitor-autobuild.groovy b/ppg/pg_stat_monitor-autobuild.groovy index fc00acc8d2..a9d6e4a307 100644 --- a/ppg/pg_stat_monitor-autobuild.groovy +++ b/ppg/pg_stat_monitor-autobuild.groovy @@ -191,32 +191,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04) AMD') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } - stage('Ubuntu Focal(20.04) ARM') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/pg_tde-arm.groovy b/ppg/pg_tde-arm.groovy index c658721819..be542becca 100644 --- a/ppg/pg_tde-arm.groovy +++ b/ppg/pg_tde-arm.groovy @@ -150,19 +150,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' diff --git a/ppg/pg_tde.groovy b/ppg/pg_tde.groovy index 01574edb76..fe55715751 100644 --- a/ppg/pg_tde.groovy +++ b/ppg/pg_tde.groovy @@ -150,19 +150,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/pg_tde_arm_nightly.groovy b/ppg/pg_tde_arm_nightly.groovy index 2e6f43c89c..6fd88da437 100644 --- a/ppg/pg_tde_arm_nightly.groovy +++ b/ppg/pg_tde_arm_nightly.groovy @@ -150,19 +150,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' diff --git a/ppg/pg_tde_nightly.groovy b/ppg/pg_tde_nightly.groovy index b67272d8fd..a04b783af5 100644 --- a/ppg/pg_tde_nightly.groovy +++ b/ppg/pg_tde_nightly.groovy @@ -150,19 +150,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/pgaudit-arm.groovy b/ppg/pgaudit-arm.groovy index aa46eb738c..f039bd54d0 100644 --- a/ppg/pgaudit-arm.groovy +++ b/ppg/pgaudit-arm.groovy @@ -150,19 +150,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' diff --git a/ppg/pgaudit.groovy b/ppg/pgaudit.groovy index e8ed275eb2..2e04ccef05 100644 --- a/ppg/pgaudit.groovy +++ b/ppg/pgaudit.groovy @@ -176,32 +176,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04) AMD') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } - stage('Ubuntu Focal(20.04) ARM') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/pgaudit_set_user-arm.groovy b/ppg/pgaudit_set_user-arm.groovy index 3880689cfe..4c33a47249 100644 --- a/ppg/pgaudit_set_user-arm.groovy +++ b/ppg/pgaudit_set_user-arm.groovy @@ -150,19 +150,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' diff --git a/ppg/pgaudit_set_user.groovy b/ppg/pgaudit_set_user.groovy index da112a1113..497c9446ca 100644 --- a/ppg/pgaudit_set_user.groovy +++ b/ppg/pgaudit_set_user.groovy @@ -176,32 +176,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04) AMD') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } - stage('Ubuntu Focal(20.04) ARM') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/pgbackrest-arm.groovy b/ppg/pgbackrest-arm.groovy index 3d81f2618e..aef379b258 100644 --- a/ppg/pgbackrest-arm.groovy +++ b/ppg/pgbackrest-arm.groovy @@ -150,19 +150,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' diff --git a/ppg/pgbackrest.groovy b/ppg/pgbackrest.groovy index fe933954f2..43f176b121 100644 --- a/ppg/pgbackrest.groovy +++ b/ppg/pgbackrest.groovy @@ -176,32 +176,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04) AMD') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } - stage('Ubuntu Focal(20.04) ARM') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/pgbadger-arm.groovy b/ppg/pgbadger-arm.groovy index cf50b02357..e409752f26 100644 --- a/ppg/pgbadger-arm.groovy +++ b/ppg/pgbadger-arm.groovy @@ -150,19 +150,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' diff --git a/ppg/pgbadger.groovy b/ppg/pgbadger.groovy index b742810d7f..a0493294d5 100644 --- a/ppg/pgbadger.groovy +++ b/ppg/pgbadger.groovy @@ -176,32 +176,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04) AMD') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } - stage('Ubuntu Focal(20.04) ARM') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/pgbouncer-arm.groovy b/ppg/pgbouncer-arm.groovy index ce4f866a64..831383e565 100644 --- a/ppg/pgbouncer-arm.groovy +++ b/ppg/pgbouncer-arm.groovy @@ -150,19 +150,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' diff --git a/ppg/pgbouncer.groovy b/ppg/pgbouncer.groovy index 05ccfce8de..34898440ad 100644 --- a/ppg/pgbouncer.groovy +++ b/ppg/pgbouncer.groovy @@ -176,32 +176,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04) AMD') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } - stage('Ubuntu Focal(20.04) ARM') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/pgpool-arm.groovy b/ppg/pgpool-arm.groovy index 3282605f04..b3dbe5fc53 100644 --- a/ppg/pgpool-arm.groovy +++ b/ppg/pgpool-arm.groovy @@ -165,19 +165,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' diff --git a/ppg/pgpool2-build.groovy b/ppg/pgpool2-build.groovy index 6c4fb5d091..33a7ff2cf2 100644 --- a/ppg/pgpool2-build.groovy +++ b/ppg/pgpool2-build.groovy @@ -191,32 +191,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04) AMD') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } - stage('Ubuntu Focal(20.04) ARM') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/pgrepack.groovy b/ppg/pgrepack.groovy index 031f4a3988..a3506c7251 100644 --- a/ppg/pgrepack.groovy +++ b/ppg/pgrepack.groovy @@ -176,32 +176,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04) AMD') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } - stage('Ubuntu Focal(20.04) ARM') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/pgrepack_arm.groovy b/ppg/pgrepack_arm.groovy index b85e4851b5..5bc0f26cc6 100644 --- a/ppg/pgrepack_arm.groovy +++ b/ppg/pgrepack_arm.groovy @@ -150,19 +150,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' diff --git a/ppg/pgvector-arm.groovy b/ppg/pgvector-arm.groovy index 3dd6884fa4..56096d30bf 100644 --- a/ppg/pgvector-arm.groovy +++ b/ppg/pgvector-arm.groovy @@ -150,19 +150,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' diff --git a/ppg/pgvector.groovy b/ppg/pgvector.groovy index 8eb335a262..8c785df274 100644 --- a/ppg/pgvector.groovy +++ b/ppg/pgvector.groovy @@ -176,32 +176,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04) AMD') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } - stage('Ubuntu Focal(20.04) ARM') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/postgresql-common.groovy b/ppg/postgresql-common.groovy index 9474255a2c..9b808e9c52 100644 --- a/ppg/postgresql-common.groovy +++ b/ppg/postgresql-common.groovy @@ -163,19 +163,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/postgresql_common_arm.groovy b/ppg/postgresql_common_arm.groovy index 8716d6783b..cb3f99b7aa 100644 --- a/ppg/postgresql_common_arm.groovy +++ b/ppg/postgresql_common_arm.groovy @@ -165,19 +165,6 @@ pipeline { pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } - } - stage('Ubuntu Focal(20.04)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } } stage('Ubuntu Jammy(22.04)') { agent { diff --git a/ppg/postgresql_server.groovy b/ppg/postgresql_server.groovy index c080357c8b..02744dc446 100644 --- a/ppg/postgresql_server.groovy +++ b/ppg/postgresql_server.groovy @@ -202,32 +202,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04) AMD') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } - stage('Ubuntu Focal(20.04) ARM') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/postgresql_server_17_nightly.groovy b/ppg/postgresql_server_17_nightly.groovy index cefea961b4..751812b26d 100644 --- a/ppg/postgresql_server_17_nightly.groovy +++ b/ppg/postgresql_server_17_nightly.groovy @@ -176,32 +176,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04) AMD') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } - stage('Ubuntu Focal(20.04) ARM') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/postgresql_server_arm.groovy b/ppg/postgresql_server_arm.groovy index 01e778196e..3dfb316d2d 100644 --- a/ppg/postgresql_server_arm.groovy +++ b/ppg/postgresql_server_arm.groovy @@ -150,19 +150,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' diff --git a/ppg/ppg-server-arm.groovy b/ppg/ppg-server-arm.groovy index e6d89101b5..c616cc0118 100644 --- a/ppg/ppg-server-arm.groovy +++ b/ppg/ppg-server-arm.groovy @@ -146,19 +146,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' diff --git a/ppg/ppg-server-ha-arm.groovy b/ppg/ppg-server-ha-arm.groovy index c89ba9b6ad..70381559e0 100644 --- a/ppg/ppg-server-ha-arm.groovy +++ b/ppg/ppg-server-ha-arm.groovy @@ -146,19 +146,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' diff --git a/ppg/ppg-server-ha.groovy b/ppg/ppg-server-ha.groovy index cd33529b51..44f56b3aa2 100644 --- a/ppg/ppg-server-ha.groovy +++ b/ppg/ppg-server-ha.groovy @@ -172,32 +172,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04) AMD') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } - stage('Ubuntu Focal(20.04) ARM') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/ppg-server.groovy b/ppg/ppg-server.groovy index 6534d0c9a4..a43238fe1a 100644 --- a/ppg/ppg-server.groovy +++ b/ppg/ppg-server.groovy @@ -172,32 +172,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04) AMD') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } - stage('Ubuntu Focal(20.04) ARM') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/pysyncobj-arm.groovy b/ppg/pysyncobj-arm.groovy index 12f199fada..b69754b807 100644 --- a/ppg/pysyncobj-arm.groovy +++ b/ppg/pysyncobj-arm.groovy @@ -163,19 +163,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' diff --git a/ppg/pysyncobj.groovy b/ppg/pysyncobj.groovy index 8fc6ee57a5..4c5450af2f 100644 --- a/ppg/pysyncobj.groovy +++ b/ppg/pysyncobj.groovy @@ -163,19 +163,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/timescaledb-arm.groovy b/ppg/timescaledb-arm.groovy index ab73f02fbe..8cd649d91c 100644 --- a/ppg/timescaledb-arm.groovy +++ b/ppg/timescaledb-arm.groovy @@ -150,19 +150,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' diff --git a/ppg/timescaledb.groovy b/ppg/timescaledb.groovy index 02b2a17e6c..7fd9fc024d 100644 --- a/ppg/timescaledb.groovy +++ b/ppg/timescaledb.groovy @@ -150,19 +150,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/wal2json-arm.groovy b/ppg/wal2json-arm.groovy index f67416bf28..c308f941a3 100644 --- a/ppg/wal2json-arm.groovy +++ b/ppg/wal2json-arm.groovy @@ -150,19 +150,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' diff --git a/ppg/wal2json.groovy b/ppg/wal2json.groovy index 0aeff2adb6..f3d4a90cb9 100644 --- a/ppg/wal2json.groovy +++ b/ppg/wal2json.groovy @@ -176,32 +176,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04) AMD') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } - stage('Ubuntu Focal(20.04) ARM') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/ydiff-arm.groovy b/ppg/ydiff-arm.groovy index 753cd5eada..8404f279e7 100644 --- a/ppg/ydiff-arm.groovy +++ b/ppg/ydiff-arm.groovy @@ -150,19 +150,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' diff --git a/ppg/ydiff.groovy b/ppg/ydiff.groovy index bf9e81234e..fd93ca197b 100644 --- a/ppg/ydiff.groovy +++ b/ppg/ydiff.groovy @@ -202,19 +202,6 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' - } - steps { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") - - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' From 579142711c67c3118efec312593d47381c7259c5 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Mon, 14 Jul 2025 22:43:59 +0300 Subject: [PATCH 160/269] Use jammy for PG jobs instead of focal (#3417) --- ppg/etcd-arm.groovy | 2 +- ppg/etcd.groovy | 2 +- ppg/haproxy-arm.groovy | 2 +- ppg/haproxy.groovy | 2 +- ppg/patroni-arm.groovy | 2 +- ppg/patroni.groovy | 2 +- ppg/percona-postgis-arm.groovy | 2 +- ppg/percona-postgis.groovy | 2 +- ppg/pg_cron-arm.groovy | 2 +- ppg/pg_cron.groovy | 2 +- ppg/pg_gather-arm.groovy | 2 +- ppg/pg_gather.groovy | 2 +- ppg/pg_percona_telemetry_autobuild.groovy | 8 ++++---- ppg/pg_percona_telemetry_autobuild_arm.groovy | 6 +++--- ppg/pg_stat_monitor-autobuild-arm.groovy | 2 +- ppg/pg_stat_monitor-autobuild.groovy | 2 +- ppg/pg_tde-arm.groovy | 2 +- ppg/pg_tde.groovy | 2 +- ppg/pg_tde_arm_nightly.groovy | 2 +- ppg/pg_tde_nightly.groovy | 2 +- ppg/pgaudit-arm.groovy | 2 +- ppg/pgaudit.groovy | 2 +- ppg/pgaudit_set_user-arm.groovy | 2 +- ppg/pgaudit_set_user.groovy | 2 +- ppg/pgbackrest-arm.groovy | 2 +- ppg/pgbackrest.groovy | 2 +- ppg/pgbadger-arm.groovy | 2 +- ppg/pgbadger.groovy | 2 +- ppg/pgbouncer-arm.groovy | 2 +- ppg/pgbouncer.groovy | 2 +- ppg/pgpool-arm.groovy | 2 +- ppg/pgpool2-build.groovy | 2 +- ppg/pgrepack.groovy | 2 +- ppg/pgrepack_arm.groovy | 2 +- ppg/pgvector-arm.groovy | 2 +- ppg/pgvector.groovy | 2 +- ppg/postgresql-common.groovy | 2 +- ppg/postgresql_common_arm.groovy | 2 +- ppg/postgresql_server.groovy | 2 +- ppg/postgresql_server_17_nightly.groovy | 2 +- ppg/postgresql_server_arm.groovy | 2 +- ppg/postgresql_server_nightly.groovy | 2 +- ppg/ppg-server-arm.groovy | 2 +- ppg/ppg-server-ha-arm.groovy | 2 +- ppg/ppg-server-ha.groovy | 2 +- ppg/ppg-server.groovy | 2 +- ppg/pysyncobj-arm.groovy | 2 +- ppg/pysyncobj.groovy | 2 +- ppg/timescaledb-arm.groovy | 2 +- ppg/timescaledb.groovy | 2 +- ppg/wal2json-arm.groovy | 2 +- ppg/wal2json.groovy | 2 +- ppg/ydiff-arm.groovy | 2 +- ppg/ydiff.groovy | 2 +- 54 files changed, 59 insertions(+), 59 deletions(-) diff --git a/ppg/etcd-arm.groovy b/ppg/etcd-arm.groovy index 0b8d9c71db..e77cc4eb43 100644 --- a/ppg/etcd-arm.groovy +++ b/ppg/etcd-arm.groovy @@ -117,7 +117,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/etcd.groovy b/ppg/etcd.groovy index 9cfdd261a1..380279b6c6 100644 --- a/ppg/etcd.groovy +++ b/ppg/etcd.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/haproxy-arm.groovy b/ppg/haproxy-arm.groovy index da93941875..828c724e8a 100644 --- a/ppg/haproxy-arm.groovy +++ b/ppg/haproxy-arm.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/haproxy.groovy b/ppg/haproxy.groovy index 51a7cfa202..df495cf61c 100644 --- a/ppg/haproxy.groovy +++ b/ppg/haproxy.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/patroni-arm.groovy b/ppg/patroni-arm.groovy index 163e71e358..3f3d8b0344 100644 --- a/ppg/patroni-arm.groovy +++ b/ppg/patroni-arm.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/patroni.groovy b/ppg/patroni.groovy index 3369aeef7b..66b83b38f3 100644 --- a/ppg/patroni.groovy +++ b/ppg/patroni.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/percona-postgis-arm.groovy b/ppg/percona-postgis-arm.groovy index 0d70184c78..2dbdb390be 100644 --- a/ppg/percona-postgis-arm.groovy +++ b/ppg/percona-postgis-arm.groovy @@ -121,7 +121,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/percona-postgis.groovy b/ppg/percona-postgis.groovy index 5aa9894d0b..9c55ee3192 100644 --- a/ppg/percona-postgis.groovy +++ b/ppg/percona-postgis.groovy @@ -121,7 +121,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pg_cron-arm.groovy b/ppg/pg_cron-arm.groovy index 19b63ba333..6a29d5b9f3 100644 --- a/ppg/pg_cron-arm.groovy +++ b/ppg/pg_cron-arm.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pg_cron.groovy b/ppg/pg_cron.groovy index 374fcfc289..4c69004761 100644 --- a/ppg/pg_cron.groovy +++ b/ppg/pg_cron.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pg_gather-arm.groovy b/ppg/pg_gather-arm.groovy index 4c231abffe..eac114f681 100644 --- a/ppg/pg_gather-arm.groovy +++ b/ppg/pg_gather-arm.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pg_gather.groovy b/ppg/pg_gather.groovy index c1a8190473..ebf6cceba6 100644 --- a/ppg/pg_gather.groovy +++ b/ppg/pg_gather.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pg_percona_telemetry_autobuild.groovy b/ppg/pg_percona_telemetry_autobuild.groovy index 86c08f9bb3..ef2dbf4ee4 100644 --- a/ppg/pg_percona_telemetry_autobuild.groovy +++ b/ppg/pg_percona_telemetry_autobuild.groovy @@ -109,7 +109,7 @@ pipeline { echo '====> Source will be downloaded from github' //slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for PG${PG_RELEASE}, repo branch: ${BRANCH} - [${BUILD_URL}]") cleanUpWS() - buildStage("ubuntu:focal", "--get_sources=1") + buildStage("ubuntu:jammy", "--get_sources=1") sh ''' REPO_UPLOAD_PATH=$(grep "UPLOAD" test/pg-percona-telemetry.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") @@ -152,7 +152,7 @@ pipeline { echo "====> Build percona_pg_telemetry generic source deb" cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_source_deb=1") + buildStage("ubuntu:jammy", "--build_source_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) @@ -258,7 +258,7 @@ pipeline { echo "====> Build percona_pg_telemetry deb on Ubuntu 20.04 PG${PG_RELEASE}" cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") + buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -272,7 +272,7 @@ pipeline { echo "====> Build percona_pg_telemetry deb on Ubuntu 20.04 PG${PG_RELEASE}" cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") + buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) diff --git a/ppg/pg_percona_telemetry_autobuild_arm.groovy b/ppg/pg_percona_telemetry_autobuild_arm.groovy index c9a38543d6..0094fc944a 100644 --- a/ppg/pg_percona_telemetry_autobuild_arm.groovy +++ b/ppg/pg_percona_telemetry_autobuild_arm.groovy @@ -108,7 +108,7 @@ pipeline { echo '====> Source will be downloaded from github' //slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for PG${PG_RELEASE}, repo branch: ${BRANCH} - [${BUILD_URL}]") cleanUpWS() - buildStage("ubuntu:focal", "--get_sources=1") + buildStage("ubuntu:jammy", "--get_sources=1") sh ''' REPO_UPLOAD_PATH=$(grep "UPLOAD" test/pg-percona-telemetry.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") @@ -151,7 +151,7 @@ pipeline { echo "====> Build percona_pg_telemetry generic source deb" cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_source_deb=1") + buildStage("ubuntu:jammy", "--build_source_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) @@ -201,7 +201,7 @@ pipeline { echo "====> Build percona_pg_telemetry deb on Ubuntu 20.04 PG${PG_RELEASE}" cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") + buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) diff --git a/ppg/pg_stat_monitor-autobuild-arm.groovy b/ppg/pg_stat_monitor-autobuild-arm.groovy index 97d2f7fab4..085c6736c7 100644 --- a/ppg/pg_stat_monitor-autobuild-arm.groovy +++ b/ppg/pg_stat_monitor-autobuild-arm.groovy @@ -129,7 +129,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_source_deb=1") + buildStage("ubuntu:jammy", "--build_source_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pg_stat_monitor-autobuild.groovy b/ppg/pg_stat_monitor-autobuild.groovy index a9d6e4a307..e01150d6f5 100644 --- a/ppg/pg_stat_monitor-autobuild.groovy +++ b/ppg/pg_stat_monitor-autobuild.groovy @@ -129,7 +129,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_source_deb=1") + buildStage("ubuntu:jammy", "--build_source_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pg_tde-arm.groovy b/ppg/pg_tde-arm.groovy index be542becca..5dc10ff052 100644 --- a/ppg/pg_tde-arm.groovy +++ b/ppg/pg_tde-arm.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pg_tde.groovy b/ppg/pg_tde.groovy index fe55715751..ac1d67ed55 100644 --- a/ppg/pg_tde.groovy +++ b/ppg/pg_tde.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pg_tde_arm_nightly.groovy b/ppg/pg_tde_arm_nightly.groovy index 6fd88da437..72f228cc8f 100644 --- a/ppg/pg_tde_arm_nightly.groovy +++ b/ppg/pg_tde_arm_nightly.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pg_tde_nightly.groovy b/ppg/pg_tde_nightly.groovy index a04b783af5..60a90286a0 100644 --- a/ppg/pg_tde_nightly.groovy +++ b/ppg/pg_tde_nightly.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pgaudit-arm.groovy b/ppg/pgaudit-arm.groovy index f039bd54d0..b2bdb346d6 100644 --- a/ppg/pgaudit-arm.groovy +++ b/ppg/pgaudit-arm.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pgaudit.groovy b/ppg/pgaudit.groovy index 2e04ccef05..fd4806e7f0 100644 --- a/ppg/pgaudit.groovy +++ b/ppg/pgaudit.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pgaudit_set_user-arm.groovy b/ppg/pgaudit_set_user-arm.groovy index 4c33a47249..207c5d6dbc 100644 --- a/ppg/pgaudit_set_user-arm.groovy +++ b/ppg/pgaudit_set_user-arm.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pgaudit_set_user.groovy b/ppg/pgaudit_set_user.groovy index 497c9446ca..08ac5f660f 100644 --- a/ppg/pgaudit_set_user.groovy +++ b/ppg/pgaudit_set_user.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pgbackrest-arm.groovy b/ppg/pgbackrest-arm.groovy index aef379b258..fb3b425f4d 100644 --- a/ppg/pgbackrest-arm.groovy +++ b/ppg/pgbackrest-arm.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pgbackrest.groovy b/ppg/pgbackrest.groovy index 43f176b121..8dab57cc4f 100644 --- a/ppg/pgbackrest.groovy +++ b/ppg/pgbackrest.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pgbadger-arm.groovy b/ppg/pgbadger-arm.groovy index e409752f26..19237c362b 100644 --- a/ppg/pgbadger-arm.groovy +++ b/ppg/pgbadger-arm.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pgbadger.groovy b/ppg/pgbadger.groovy index a0493294d5..167dc66d89 100644 --- a/ppg/pgbadger.groovy +++ b/ppg/pgbadger.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pgbouncer-arm.groovy b/ppg/pgbouncer-arm.groovy index 831383e565..ad8c8f9467 100644 --- a/ppg/pgbouncer-arm.groovy +++ b/ppg/pgbouncer-arm.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pgbouncer.groovy b/ppg/pgbouncer.groovy index 34898440ad..078a5d171d 100644 --- a/ppg/pgbouncer.groovy +++ b/ppg/pgbouncer.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pgpool-arm.groovy b/ppg/pgpool-arm.groovy index b3dbe5fc53..a0c321cd37 100644 --- a/ppg/pgpool-arm.groovy +++ b/ppg/pgpool-arm.groovy @@ -129,7 +129,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_source_deb=1") + buildStage("ubuntu:jammy", "--build_source_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pgpool2-build.groovy b/ppg/pgpool2-build.groovy index 33a7ff2cf2..dfa2492295 100644 --- a/ppg/pgpool2-build.groovy +++ b/ppg/pgpool2-build.groovy @@ -129,7 +129,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_source_deb=1") + buildStage("ubuntu:jammy", "--build_source_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pgrepack.groovy b/ppg/pgrepack.groovy index a3506c7251..e0887f3fc2 100644 --- a/ppg/pgrepack.groovy +++ b/ppg/pgrepack.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pgrepack_arm.groovy b/ppg/pgrepack_arm.groovy index 5bc0f26cc6..36ac0d7a4a 100644 --- a/ppg/pgrepack_arm.groovy +++ b/ppg/pgrepack_arm.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pgvector-arm.groovy b/ppg/pgvector-arm.groovy index 56096d30bf..d305c9e939 100644 --- a/ppg/pgvector-arm.groovy +++ b/ppg/pgvector-arm.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pgvector.groovy b/ppg/pgvector.groovy index 8c785df274..1e5b502e80 100644 --- a/ppg/pgvector.groovy +++ b/ppg/pgvector.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/postgresql-common.groovy b/ppg/postgresql-common.groovy index 9b808e9c52..5390f631b5 100644 --- a/ppg/postgresql-common.groovy +++ b/ppg/postgresql-common.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/postgresql_common_arm.groovy b/ppg/postgresql_common_arm.groovy index cb3f99b7aa..97dfd7f31e 100644 --- a/ppg/postgresql_common_arm.groovy +++ b/ppg/postgresql_common_arm.groovy @@ -117,7 +117,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/postgresql_server.groovy b/ppg/postgresql_server.groovy index 02744dc446..13ba5b3ce1 100644 --- a/ppg/postgresql_server.groovy +++ b/ppg/postgresql_server.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/postgresql_server_17_nightly.groovy b/ppg/postgresql_server_17_nightly.groovy index 751812b26d..617b9a3394 100644 --- a/ppg/postgresql_server_17_nightly.groovy +++ b/ppg/postgresql_server_17_nightly.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/postgresql_server_arm.groovy b/ppg/postgresql_server_arm.groovy index 3dfb316d2d..a3b0889c0b 100644 --- a/ppg/postgresql_server_arm.groovy +++ b/ppg/postgresql_server_arm.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/postgresql_server_nightly.groovy b/ppg/postgresql_server_nightly.groovy index a7f53948b2..ab135c5960 100644 --- a/ppg/postgresql_server_nightly.groovy +++ b/ppg/postgresql_server_nightly.groovy @@ -139,7 +139,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/ppg-server-arm.groovy b/ppg/ppg-server-arm.groovy index c616cc0118..3a43201106 100644 --- a/ppg/ppg-server-arm.groovy +++ b/ppg/ppg-server-arm.groovy @@ -110,7 +110,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/ppg-server-ha-arm.groovy b/ppg/ppg-server-ha-arm.groovy index 70381559e0..21c7b2bb30 100644 --- a/ppg/ppg-server-ha-arm.groovy +++ b/ppg/ppg-server-ha-arm.groovy @@ -110,7 +110,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/ppg-server-ha.groovy b/ppg/ppg-server-ha.groovy index 44f56b3aa2..5cea2ba028 100644 --- a/ppg/ppg-server-ha.groovy +++ b/ppg/ppg-server-ha.groovy @@ -110,7 +110,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/ppg-server.groovy b/ppg/ppg-server.groovy index a43238fe1a..2456a6be30 100644 --- a/ppg/ppg-server.groovy +++ b/ppg/ppg-server.groovy @@ -110,7 +110,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pysyncobj-arm.groovy b/ppg/pysyncobj-arm.groovy index b69754b807..ad076bf852 100644 --- a/ppg/pysyncobj-arm.groovy +++ b/ppg/pysyncobj-arm.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/pysyncobj.groovy b/ppg/pysyncobj.groovy index 4c5450af2f..a3e56c91d4 100644 --- a/ppg/pysyncobj.groovy +++ b/ppg/pysyncobj.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/timescaledb-arm.groovy b/ppg/timescaledb-arm.groovy index 8cd649d91c..f8e82b263f 100644 --- a/ppg/timescaledb-arm.groovy +++ b/ppg/timescaledb-arm.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/timescaledb.groovy b/ppg/timescaledb.groovy index 7fd9fc024d..50aab210e6 100644 --- a/ppg/timescaledb.groovy +++ b/ppg/timescaledb.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/wal2json-arm.groovy b/ppg/wal2json-arm.groovy index c308f941a3..ed4da67005 100644 --- a/ppg/wal2json-arm.groovy +++ b/ppg/wal2json-arm.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/wal2json.groovy b/ppg/wal2json.groovy index f3d4a90cb9..26cc212f57 100644 --- a/ppg/wal2json.groovy +++ b/ppg/wal2json.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/ydiff-arm.groovy b/ppg/ydiff-arm.groovy index 8404f279e7..623e1437e7 100644 --- a/ppg/ydiff-arm.groovy +++ b/ppg/ydiff-arm.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) diff --git a/ppg/ydiff.groovy b/ppg/ydiff.groovy index fd93ca197b..b700805efc 100644 --- a/ppg/ydiff.groovy +++ b/ppg/ydiff.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) From e6cadfcef74a832598472684cebdaf59c0fb8c77 Mon Sep 17 00:00:00 2001 From: Surabhi Bhat Date: Tue, 15 Jul 2025 11:33:43 +0530 Subject: [PATCH 161/269] Add Oracle Linux 10 to percona-telemetry-agent pipeline Remove Ubuntu Focal from percona-telemetry-agent pipeline --- .../percona-telemetry-agent.groovy | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/percona-telemetry-agent/percona-telemetry-agent.groovy b/percona-telemetry-agent/percona-telemetry-agent.groovy index dded936315..f546ea1418 100644 --- a/percona-telemetry-agent/percona-telemetry-agent.groovy +++ b/percona-telemetry-agent/percona-telemetry-agent.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("debian:buster", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) @@ -176,56 +176,56 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Amazon Linux 2023') { + stage('Oracle Linux 10') { agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) - buildStage("amazonlinux:2023", "--build_rpm=1") + buildStage("oraclelinux:10", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Amazon Linux 2023 ARM') { + stage('Oracle Linux 10 ARM') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) - buildStage("amazonlinux:2023", "--build_rpm=1") + buildStage("oraclelinux:10", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04)') { + stage('Amazon Linux 2023') { agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("amazonlinux:2023", "--build_rpm=1") - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Ubuntu Focal(20.04) ARM') { + stage('Amazon Linux 2023 ARM') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("amazonlinux:2023", "--build_rpm=1") - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04)') { From a647e1d0ba958e518b53965429978a2e1b8bc15d Mon Sep 17 00:00:00 2001 From: Surabhi Bhat Date: Tue, 15 Jul 2025 17:35:11 +0530 Subject: [PATCH 162/269] Add support for RHEL 10 to PLM --- plm/percona-link-mongodb.groovy | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/plm/percona-link-mongodb.groovy b/plm/percona-link-mongodb.groovy index fcbfdb70d8..79acd83278 100644 --- a/plm/percona-link-mongodb.groovy +++ b/plm/percona-link-mongodb.groovy @@ -176,6 +176,32 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Amazon Linux 2023') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' From e4a720e6b5c0f62fc8ec1552dcdc82310e561a34 Mon Sep 17 00:00:00 2001 From: Surabhi Bhat Date: Tue, 15 Jul 2025 18:07:25 +0530 Subject: [PATCH 163/269] Update PLM build script --- plm/percona-link-mongodb.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plm/percona-link-mongodb.groovy b/plm/percona-link-mongodb.groovy index 79acd83278..a2432f7b94 100644 --- a/plm/percona-link-mongodb.groovy +++ b/plm/percona-link-mongodb.groovy @@ -114,7 +114,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("debian:buster", "--build_src_deb=1") + buildStage("ubuntu:jammy", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) From b6b7e4b6268f8b3173aebe49d10ca08e051b8d44 Mon Sep 17 00:00:00 2001 From: Vadim Yalovets Date: Wed, 16 Jul 2025 12:04:36 +0300 Subject: [PATCH 164/269] Hetzner (#3424) --- proxysql/proxysql3.groovy | 384 ++++++++++++++++++++++++++++++++++++++ proxysql/proxysql3.yml | 15 ++ 2 files changed, 399 insertions(+) create mode 100644 proxysql/proxysql3.groovy create mode 100644 proxysql/proxysql3.yml diff --git a/proxysql/proxysql3.groovy b/proxysql/proxysql3.groovy new file mode 100644 index 0000000000..aae077a3c1 --- /dev/null +++ b/proxysql/proxysql3.groovy @@ -0,0 +1,384 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + sh """ + set -o xtrace + mkdir test + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/scripts/proxysql_builder.sh -O proxysql_builder.sh + pwd -P + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + sed -i "s/^RPM_RELEASE=.*/RPM_RELEASE=${RPM_RELEASE}/g" proxysql_builder.sh + sed -i "s/^DEB_RELEASE=.*/DEB_RELEASE=${DEB_RELEASE}/g" proxysql_builder.sh + bash -x ./proxysql_builder.sh --builddir=\${build_dir}/test --install_deps=1 + bash -x ./proxysql_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --proxysql_repo=${PROXYSQL_REPO} --pat_repo=${PAT_REPO} --pat_tag=${PAT_TAG} --proxysql_branch=${PROXYSQL_BRANCH} --proxysql_ver=${VERSION} --branch=${GIT_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + """ +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def AWS_STASH_PATH + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/percona/proxysql-packaging.git', + description: 'URL for proxysql packaging repository', + name: 'GIT_REPO') + string( + defaultValue: 'v3.0', + description: 'Tag/Branch for proxysql packaging repository', + name: 'GIT_BRANCH') + string( + defaultValue: 'https://github.com/sysown/proxysql.git', + description: 'URL for proxysql repository', + name: 'PROXYSQL_REPO') + string( + defaultValue: 'v3.0.1', + description: 'Tag/Branch for proxysql repository', + name: 'PROXYSQL_BRANCH') + string( + defaultValue: '3.0.1', + description: 'PROXYSQL release value', + name: 'VERSION') + string( + defaultValue: 'https://github.com/percona/proxysql-admin-tool.git', + description: 'URL for proxysql-admin-tool repository', + name: 'PAT_REPO') + string( + defaultValue: 'v2', + description: 'Tag/Branch for proxysql-admin-tool repository', + name: 'PAT_TAG') + string( + defaultValue: '1.1', + description: 'RPM release value', + name: 'RPM_RELEASE') + string( + defaultValue: '1.1', + description: 'DEB release value', + name: 'DEB_RELEASE') + string( + defaultValue: 'proxysql', + description: 'PROXYSQL repo name', + name: 'PROXYSQL_DEST_REPO') + choice( + choices: 'testing\nexperimental\nlaboratory', + description: 'Repo component to push packages to', + name: 'COMPONENT') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + stages { + stage('Create PROXYSQL source tarball') { + steps { + // slackNotify("", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") + cleanUpWS() + buildStage("centos:7", "--get_sources=1") + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/proxysql.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/proxysql.properties + cat uploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') + } + } + stage('Build PROXYSQL generic source packages') { + parallel { + stage('Build PROXYSQL generic source rpm') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_src_rpm=1") + + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) + } + } + stage('Build PROXYSQL generic source deb') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_src_deb=1") + + pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "source_deb/", AWS_STASH_PATH) + } + } + } //parallel + } // stage + stage('Build PROXYSQL RPMs/DEBs/Binary tarballs') { + parallel { + stage('Oracle Linux 9') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Jammy(22.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Ubuntu Noble(24.04) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bookworm(12)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bookworm(12) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bookworm", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 9 tarball') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_tarball=1") + + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "test/tarball/", AWS_STASH_PATH, 'binary') + } + } + stage('Ubuntu Jammy tarball') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:jammy", "--build_tarball=1") + + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "test/tarball/", AWS_STASH_PATH, 'binary') + } + } + stage('Ubuntu Noble tarball') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:noble", "--build_tarball=1") + + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "test/tarball/", AWS_STASH_PATH, 'binary') + } + } + } + } + + stage('Sign packages') { + steps { + signRPM(params.CLOUD) + signDEB(params.CLOUD) + } + } + stage('Push to public repository') { + steps { + // sync packages + sync2ProdAutoBuild(params.CLOUD, PROXYSQL_DEST_REPO, COMPONENT) + } + } + stage('Build docker containers') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + script { + echo "====> Build docker containers" + cleanUpWS() + sh ''' + sleep 1200 + ''' + unstash 'uploadPath' + sh ''' + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor + sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common + sudo apt-get -y install apparmor + sudo aa-status + sudo systemctl stop apparmor + sudo systemctl disable apparmor + sudo apt-get install -y docker-ce docker-ce-cli containerd.io + sudo systemctl restart docker + git clone https://github.com/percona/percona-docker + cd percona-docker/proxysql + sed -i "s/ENV PROXYSQL_VERSION.*/ENV PROXYSQL_VERSION ${VERSION}-${RPM_RELEASE}/g" Dockerfile + sed -i "s/enable proxysql testing/enable proxysql ${COMPONENT}/g" Dockerfile + sed -i "s/proxysql2/proxysql3/g" Dockerfile + sudo docker build --no-cache --platform "linux/amd64" -t perconalab/proxysql3:${VERSION}-${RPM_RELEASE} . + + sudo docker images + ''' + withCredentials([ + usernamePassword(credentialsId: 'hub.docker.com', + passwordVariable: 'PASS', + usernameVariable: 'USER' + )]) { + sh ''' + echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin + sudo docker push perconalab/proxysql3:${VERSION}-${RPM_RELEASE} + + PROXYSQL_MAJOR_VERSION=$(echo $VERSION | cut -d'.' -f1) + PROXYSQL_MINOR_VERSION=$(echo $VERSION | cut -d'.' -f2) + PROXYSQL_PATCH_VERSION=$(echo $VERSION | cut -d'.' -f3) + + docker tag perconalab/proxysql3:${VERSION}-${RPM_RELEASE} perconalab/proxysql3:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION}.${PROXYSQL_PATCH_VERSION} + docker tag perconalab/proxysql3:${VERSION}-${RPM_RELEASE} perconalab/proxysql3:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION} + docker tag perconalab/proxysql3:${VERSION}-${RPM_RELEASE} perconalab/proxysql3:${PROXYSQL_MAJOR_VERSION} + + sudo docker push perconalab/proxysql3:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION}.${PROXYSQL_PATCH_VERSION} + sudo docker push perconalab/proxysql3:${PROXYSQL_MAJOR_VERSION}.${PROXYSQL_MINOR_VERSION} + sudo docker push perconalab/proxysql3:${PROXYSQL_MAJOR_VERSION} + + ''' + } + } + } + } + } + post { + success { + // slackNotify("", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${PROXYSQL_BRANCH} + ${PAT_TAG} - [${BUILD_URL}]" + } + deleteDir() + } + failure { + // slackNotify("", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + script { + currentBuild.description = "Built on ${PROXYSQL_BRANCH} + ${PAT_TAG} - [${AWS_STASH_PATH}]" + } + deleteDir() + } + } +} diff --git a/proxysql/proxysql3.yml b/proxysql/proxysql3.yml new file mode 100644 index 0000000000..055d43bb2d --- /dev/null +++ b/proxysql/proxysql3.yml @@ -0,0 +1,15 @@ +- job: + name: hetzner-proxysql-v3-RELEASE + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: proxysql/proxysql3.groovy + From 43501f9355712f5aa426fadc902c52e57bda1969 Mon Sep 17 00:00:00 2001 From: Vadim Yalovets Date: Fri, 18 Jul 2025 13:19:55 +0300 Subject: [PATCH 165/269] PKG-877 Create new param job to trigger tests for ProxySQL admin scrips v3 --- proxysql/build-binary-proxysql | 7 +- proxysql/qa-proxysql3-param.yml | 115 ++++++++++++++++++++ proxysql/qa-proxysql3-pipeline.groovy | 145 ++++++++++++++++++++++++++ proxysql/qa-proxysql3-pipeline.yml | 16 +++ proxysql/test-proxysql | 10 +- 5 files changed, 286 insertions(+), 7 deletions(-) create mode 100644 proxysql/qa-proxysql3-param.yml create mode 100644 proxysql/qa-proxysql3-pipeline.groovy create mode 100644 proxysql/qa-proxysql3-pipeline.yml diff --git a/proxysql/build-binary-proxysql b/proxysql/build-binary-proxysql index a751cb0e81..dcf0ccb766 100755 --- a/proxysql/build-binary-proxysql +++ b/proxysql/build-binary-proxysql @@ -24,6 +24,7 @@ if [ -f /usr/bin/yum ]; then sudo cmake --version fi sudo yum -y install wget + sudo yum -y install libuuid-devel if [[ $RHEL -eq 7 ]]; then sudo yum -y install automake bzip2 cmake3 make gcc-c++ gcc git openssl openssl-devel gnutls gnutls-devel libtool patch libuuid libuuid-devel perl-IPC-Cmd if [ -f /usr/bin/cmake3 ]; then @@ -33,6 +34,7 @@ if [ -f /usr/bin/yum ]; then fi elif [ -f /usr/bin/apt ]; then DEBIAN_VERSION=$(lsb_release -sc) + sudo apt-get -y update if [ ${DEBIAN_VERSION} = "stretch" ]; then sudo sed -i s/deb.debian.org/archive.debian.org/g /etc/apt/sources.list sudo sed -i 's|security.debian.org|archive.debian.org|g' /etc/apt/sources.list @@ -44,6 +46,7 @@ elif [ -f /usr/bin/apt ]; then fi if [ ${DEBIAN_VERSION} = "bionic" -o ${DEBIAN_VERSION} = "buster" -o ${DEBIAN_VERSION} = "stretch" ]; then sudo wget https://github.com/Kitware/CMake/releases/download/v3.19.8/cmake-3.19.8.tar.gz + sudo wget --no-check-certificate https://cmake.org/files/v3.22/cmake-3.22.1.tar.gz sudo tar -zxvf cmake-3.19.8.tar.gz cd cmake-3.19.8/ sudo ./bootstrap @@ -56,8 +59,8 @@ fi # We need to use golang version >= 1.21. Downloading golang from tarball to ensure each platform uses the same version. sudo rm -rf /usr/bin/go -sudo wget https://go.dev/dl/go1.22.7.linux-amd64.tar.gz -sudo tar -C /usr/local/ -xzf go1.22.7.linux-amd64.tar.gz +sudo wget https://go.dev/dl/go1.23.11.linux-amd64.tar.gz +sudo tar -C /usr/local/ -xzf go1.23.11.linux-amd64.tar.gz sudo ln -s /usr/local/go/bin/go /usr/bin/go go version diff --git a/proxysql/qa-proxysql3-param.yml b/proxysql/qa-proxysql3-param.yml new file mode 100644 index 0000000000..7be11b3205 --- /dev/null +++ b/proxysql/qa-proxysql3-param.yml @@ -0,0 +1,115 @@ +- job: + name: qa-proxysql3-param + project-type: matrix + defaults: global + description: | + Do not edit this job through the web! + disabled: false + concurrent: true + auth-token: proxysql2param + node: micro-amazon + properties: + - build-discarder: + days-to-keep: -1 + num-to-keep: 50 + artifact-days-to-keep: -1 + artifact-num-to-keep: 50 + parameters: + - string: + name: GIT_REPO + default: https://github.com/sysown/proxysql + description: URL to ProxySQL repository + - string: + name: BRANCH + default: "v3.0.1" + description: Tag/Branch for ProxySQL repository + - string: + name: PROXYSQL_PACKAGE_REPO + default: https://github.com/percona/proxysql-packaging + description: URL to ProxySQL pacakge repository + - string: + name: PROXYSQL_PACKAGE_BRANCH + default: v3.0 + description: Tag/Branch for ProxySQL pacakge repository + - string: + name: PXC57_REPO + default: "https://github.com/percona/percona-xtradb-cluster" + description: URL to PXC repository + - string: + name: PXC57_BRANCH + default: "5.7" + description: Tag/Branch for PXC repository + - string: + name: PXB24_REPO + default: https://github.com/percona/percona-xtrabackup + description: URL to PXB24 repository + - string: + name: PXB24_BRANCH + default: percona-xtrabackup-2.4.29 + description: Tag/Branch for PXC repository + - string: + name: PAT_TAG + default: v3 + description: Tag/Branch for ProxySQL-admin-tool repository + - choice: + name: PXC_VERSION + choices: + - PXC57 + - PXC80 + - PXC84 + description: PXC version to test proxysql-admin suite + - choice: + name: JOB_CMAKE + choices: + - /usr/bin/cmake + description: path to cmake binary + - string: + name: CMAKE_OPTS + default: + description: cmake options + - string: + name: MAKE_OPTS + default: + description: make options, like VERBOSE=1 + axes: + - axis: + type: user-defined + name: CMAKE_BUILD_TYPE + values: + - RelWithDebInfo + - Debug + - axis: + type: user-defined + name: DOCKER_OS + values: + - oraclelinux:9 + - ubuntu:jammy + - ubuntu:noble + - debian:bookworm + builders: + - trigger-builds: + - project: qa-proxysql3-pipeline + current-parameters: true + predefined-parameters: | + DOCKER_OS=${DOCKER_OS} + CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + block: true + block-thresholds: + build-step-failure-threshold: FAILURE + unstable-threshold: never + failure-threshold: FAILURE + - shell: | + sudo find . -name "*.xml" -o -name "*.log" -delete + - copyartifact: + project: qa-proxysql3-pipeline + which-build: specific-build + build-number: "${TRIGGERED_BUILD_NUMBERS_qa_proxysql3_pipeline}" + do-not-fingerprint: true + - shell: | + echo "${TRIGGERED_BUILD_NUMBERS_qa_proxysql3_pipeline}" > PIPELINE_BUILD_NUMBER + publishers: + - junit: + results: "**/*.xml" + keep-long-stdio: true + - archive: + artifacts: 'proxysql/sources/proxysql/results/*.tar.gz' diff --git a/proxysql/qa-proxysql3-pipeline.groovy b/proxysql/qa-proxysql3-pipeline.groovy new file mode 100644 index 0000000000..4b39953739 --- /dev/null +++ b/proxysql/qa-proxysql3-pipeline.groovy @@ -0,0 +1,145 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/percona-lab/jenkins-pipelines.git' +]) + +pipeline_timeout = 10 + +pipeline { + parameters { + choice( + choices: [ 'AWS','Hetzner' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/sysown/proxysql', + description: 'URL to ProxySQL repository', + name: 'GIT_REPO', + trim: true) + string( + defaultValue: 'v3.0.1', + description: 'Tag/Branch for ProxySQL repository', + name: 'BRANCH', + trim: true) + string( + defaultValue: 'https://github.com/percona/proxysql-packaging', + description: 'URL to ProxySQL package repository', + name: 'PROXYSQL_PACKAGE_REPO', + trim: true) + string( + defaultValue: 'v3.0', + description: 'Tag/Branch for ProxySQL package repository', + name: 'PROXYSQL_PACKAGE_BRANCH', + trim: true) + string( + defaultValue: 'v3', + description: 'Tag/Branch for ProxySQL-admin-tool repository', + name: 'PAT_TAG', + trim: true) + choice( + choices: 'PXC84\nPXC80\nPXC57', + description: 'PXC version to test proxysql-admin suite', + name: 'PXC_VERSION') + choice( + choices: 'oraclelinux:9\nubuntu:noble\nubuntu:jammy\ndebian:bookworm', + description: 'OS version for compilation', + name: 'DOCKER_OS') + choice( + choices: '/usr/bin/cmake', + description: 'path to cmake binary', + name: 'JOB_CMAKE') + choice( + choices: 'RelWithDebInfo\nDebug', + description: 'Type of build to produce', + name: 'CMAKE_BUILD_TYPE') + string( + defaultValue: '', + description: 'cmake options', + name: 'CMAKE_OPTS') + string( + defaultValue: '', + description: 'make options, like VERBOSE=1', + name: 'MAKE_OPTS') + } + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'micro-amazon' + } + options { + skipDefaultCheckout() + skipStagesAfterUnstable() + timeout(time: 6, unit: 'DAYS') + buildDiscarder(logRotator(numToKeepStr: '200', artifactNumToKeepStr: '200')) + } + stages { + stage('Build ProxySQL') { + agent { label 'docker' } + steps { + script { + currentBuild.displayName = "#${BUILD_NUMBER}-${params.BRANCH}-${params.DOCKER_OS}-${params.CMAKE_BUILD_TYPE}-${params.PXC_VERSION}" + } + git branch: 'hetzner', url: 'https://github.com/adivinho/jenkins-pipelines' + echo 'Checkout ProxySQL sources' + sh ''' + # sudo is needed for better node recovery after compilation failure + # if building failed on compilation stage directory will have files owned by docker user + sudo git reset --hard + sudo git clean -xdf + sudo rm -rf sources + ./proxysql/checkout PROXYSQL + ''' + + echo 'Build ProxySQL' + withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: 'c42456e5-c28d-4962-b32c-b75d161bff27', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { + sh ''' + aws ecr-public get-login-password --region us-east-1 | docker login -u AWS --password-stdin public.ecr.aws/e7j3v3n0 + sg docker -c " + if [ \$(docker ps -q | wc -l) -ne 0 ]; then + docker ps -q | xargs docker stop --time 1 || : + fi + ./proxysql/run-build-proxysql ${DOCKER_OS} + " 2>&1 | tee build.log + + if [[ -f \$(ls ./proxysql/sources/proxysql/results/*.tar.gz | head -1) ]]; then + until aws s3 cp --no-progress --acl public-read proxysql/sources/proxysql/results/*.tar.gz s3://pxc-build-cache/${BUILD_TAG}/proxysql-${BRANCH}.tar.gz; do + sleep 5 + done + else + echo cannot find compiled archive + exit 1 + fi + ''' + } + } + } + stage('Test ProxySQL') { + agent { label 'docker' } + steps { + git branch: 'hetzner', url: 'https://github.com/adivinho/jenkins-pipelines' + echo 'Test ProxySQL' + withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: 'c42456e5-c28d-4962-b32c-b75d161bff27', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { + sh ''' + until aws s3 cp --no-progress s3://pxc-build-cache/${BUILD_TAG}/proxysql-${BRANCH}.tar.gz ./proxysql/sources/proxysql/results/proxysql-${BRANCH}.tar.gz; do + sleep 5 + done + aws ecr-public get-login-password --region us-east-1 | docker login -u AWS --password-stdin public.ecr.aws/e7j3v3n0 + sg docker -c " + if [ \$(docker ps -q | wc -l) -ne 0 ]; then + docker ps -q | xargs docker stop --time 1 || : + fi + ./proxysql/run-test-proxysql ${DOCKER_OS} + " + ''' + } + step([$class: 'JUnitResultArchiver', testResults: 'proxysql/sources/proxysql/results/*.xml', healthScaleFactor: 1.0]) + archiveArtifacts 'proxysql/sources/proxysql/results/*.output,proxysql/sources/proxysql/results/*.xml,proxysql/sources/proxysql/results/qa_proxysql_logs.tar.gz' + } + } + } + post { + always { + sh ''' + echo Finish: \$(date -u "+%s") + ''' + } + } +} diff --git a/proxysql/qa-proxysql3-pipeline.yml b/proxysql/qa-proxysql3-pipeline.yml new file mode 100644 index 0000000000..e8c1cbfa40 --- /dev/null +++ b/proxysql/qa-proxysql3-pipeline.yml @@ -0,0 +1,16 @@ +- job: + name: qa-proxysql3-pipeline + project-type: pipeline + description: | + Do not edit this job through the web! + concurrent: true + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'master' + wipe-workspace: false + lightweight-checkout: true + script-path: proxysql/qa-proxysql3-pipeline.groovy + diff --git a/proxysql/test-proxysql b/proxysql/test-proxysql index 9c73fb5f4f..ea6a0a2006 100755 --- a/proxysql/test-proxysql +++ b/proxysql/test-proxysql @@ -74,7 +74,7 @@ function get_glibc_version { "oraclelinux:8" | "ol:8") echo "2.28" ;; - "oraclelinux:9" | "ol:9") + "oraclelinux:9" | "ol:9" | "ol:9.6") echo "2.34" ;; "ubuntu:focal") @@ -126,6 +126,7 @@ check_percona_release() { # Function to install percona-release on Debian-based systems install_debian() { echo "Installing percona-release for Debian-based system..." + sudo apt-get update -y sudo curl -O https://repo.percona.com/apt/percona-release_latest.generic_all.deb sudo apt install -y gnupg2 lsb-release ./percona-release_latest.generic_all.deb } @@ -164,9 +165,9 @@ if [ -f /usr/bin/apt ]; then install_package wget gnupg2 lsb-release curl fi -# Installing proxysql 2.0.latest package +# Installing proxysql 3.0.latest package enable_repo proxysql testing -install_package proxysql2 +install_package proxysql3 if [[ "${PXC_VERSION}" == "PXC84" ]]; then # Downloading PXC-8.4 tarball package @@ -191,9 +192,8 @@ elif [[ "${PXC_VERSION}" == "PXC57" ]]; then # Installing PXC-5.7 client enable_repo pxc-57 release install_package percona-xtradb-cluster-client-5.7 - # Installing PXB-2.4 (only required in case of PXC-5.7) - enable_repo pxb-24 release + enable_repo pxb-24 testing install_package percona-xtrabackup-24 fi From f002a4e2c7816c62b282875a815b78458aa64a40 Mon Sep 17 00:00:00 2001 From: Manika Singhal Date: Mon, 21 Jul 2025 12:45:04 +0530 Subject: [PATCH 166/269] Add rhel10 support for PG packages (#3431) * rhel10 support for ppg-server * rhel10 support --- ppg/pgpool2-build.groovy | 26 ++++++++++++++++++++++++++ ppg/pgvector.groovy | 26 ++++++++++++++++++++++++++ ppg/ppg-server-ha.groovy | 26 ++++++++++++++++++++++++++ ppg/ppg-server.groovy | 26 ++++++++++++++++++++++++++ ppg/timescaledb-arm.groovy | 13 +++++++++++++ ppg/timescaledb.groovy | 13 +++++++++++++ ppg/wal2json.groovy | 26 ++++++++++++++++++++++++++ 7 files changed, 156 insertions(+) diff --git a/ppg/pgpool2-build.groovy b/ppg/pgpool2-build.groovy index dfa2492295..abddb5ca3a 100644 --- a/ppg/pgpool2-build.groovy +++ b/ppg/pgpool2-build.groovy @@ -191,6 +191,32 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/pgvector.groovy b/ppg/pgvector.groovy index 1e5b502e80..7b9b6f54ef 100644 --- a/ppg/pgvector.groovy +++ b/ppg/pgvector.groovy @@ -176,6 +176,32 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/ppg-server-ha.groovy b/ppg/ppg-server-ha.groovy index 5cea2ba028..0a270bd8ab 100644 --- a/ppg/ppg-server-ha.groovy +++ b/ppg/ppg-server-ha.groovy @@ -172,6 +172,32 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/ppg-server.groovy b/ppg/ppg-server.groovy index 2456a6be30..2de59a4b6f 100644 --- a/ppg/ppg-server.groovy +++ b/ppg/ppg-server.groovy @@ -172,6 +172,32 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/timescaledb-arm.groovy b/ppg/timescaledb-arm.groovy index f8e82b263f..9f8a9f3c81 100644 --- a/ppg/timescaledb-arm.groovy +++ b/ppg/timescaledb-arm.groovy @@ -150,6 +150,19 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' diff --git a/ppg/timescaledb.groovy b/ppg/timescaledb.groovy index 50aab210e6..0aa6a6f47e 100644 --- a/ppg/timescaledb.groovy +++ b/ppg/timescaledb.groovy @@ -150,6 +150,19 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/wal2json.groovy b/ppg/wal2json.groovy index 26cc212f57..bb07ecf6b8 100644 --- a/ppg/wal2json.groovy +++ b/ppg/wal2json.groovy @@ -176,6 +176,32 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' From 03bedea3703ed0eaaa36bbca7f852946fd3325ff Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Mon, 21 Jul 2025 16:10:37 +0300 Subject: [PATCH 167/269] PGSM on RHEL10 (#3432) --- ppg/pg_stat_monitor-autobuild.groovy | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/ppg/pg_stat_monitor-autobuild.groovy b/ppg/pg_stat_monitor-autobuild.groovy index e01150d6f5..b4c5e19cdd 100644 --- a/ppg/pg_stat_monitor-autobuild.groovy +++ b/ppg/pg_stat_monitor-autobuild.groovy @@ -191,6 +191,32 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' From 6261153b57522d8a9f63068b487603f933697a8e Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Mon, 21 Jul 2025 16:59:04 +0300 Subject: [PATCH 168/269] Patroni on rhel10 (#3434) --- ppg/patroni.groovy | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/ppg/patroni.groovy b/ppg/patroni.groovy index 66b83b38f3..b9f6c96105 100644 --- a/ppg/patroni.groovy +++ b/ppg/patroni.groovy @@ -176,6 +176,32 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' From 3a00505356234281ac9cbde0cf4b68b59b366a01 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Mon, 21 Jul 2025 18:52:32 +0300 Subject: [PATCH 169/269] Add rhel10 support for pg components (#3436) --- ppg/percona-postgis.groovy | 26 ++++++++++++++++++++++++++ ppg/pg_cron-arm.groovy | 13 +++++++++++++ ppg/pg_cron.groovy | 13 +++++++++++++ ppg/pgaudit.groovy | 26 ++++++++++++++++++++++++++ ppg/pgaudit_set_user.groovy | 26 ++++++++++++++++++++++++++ ppg/pgbackrest.groovy | 26 ++++++++++++++++++++++++++ ppg/pgbadger.groovy | 26 ++++++++++++++++++++++++++ ppg/pgbouncer.groovy | 26 ++++++++++++++++++++++++++ ppg/pgrepack.groovy | 26 ++++++++++++++++++++++++++ 9 files changed, 208 insertions(+) diff --git a/ppg/percona-postgis.groovy b/ppg/percona-postgis.groovy index 9c55ee3192..e301529076 100644 --- a/ppg/percona-postgis.groovy +++ b/ppg/percona-postgis.groovy @@ -183,6 +183,32 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/pg_cron-arm.groovy b/ppg/pg_cron-arm.groovy index 6a29d5b9f3..ad1ec17ed7 100644 --- a/ppg/pg_cron-arm.groovy +++ b/ppg/pg_cron-arm.groovy @@ -150,6 +150,19 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' diff --git a/ppg/pg_cron.groovy b/ppg/pg_cron.groovy index 4c69004761..b54a69a92a 100644 --- a/ppg/pg_cron.groovy +++ b/ppg/pg_cron.groovy @@ -150,6 +150,19 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/pgaudit.groovy b/ppg/pgaudit.groovy index fd4806e7f0..e6d9210463 100644 --- a/ppg/pgaudit.groovy +++ b/ppg/pgaudit.groovy @@ -176,6 +176,32 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/pgaudit_set_user.groovy b/ppg/pgaudit_set_user.groovy index 08ac5f660f..7ce6624435 100644 --- a/ppg/pgaudit_set_user.groovy +++ b/ppg/pgaudit_set_user.groovy @@ -176,6 +176,32 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/pgbackrest.groovy b/ppg/pgbackrest.groovy index 8dab57cc4f..0b5f66b40b 100644 --- a/ppg/pgbackrest.groovy +++ b/ppg/pgbackrest.groovy @@ -176,6 +176,32 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/pgbadger.groovy b/ppg/pgbadger.groovy index 167dc66d89..ccaabfc757 100644 --- a/ppg/pgbadger.groovy +++ b/ppg/pgbadger.groovy @@ -176,6 +176,32 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/pgbouncer.groovy b/ppg/pgbouncer.groovy index 078a5d171d..2db4bc3d36 100644 --- a/ppg/pgbouncer.groovy +++ b/ppg/pgbouncer.groovy @@ -176,6 +176,32 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/pgrepack.groovy b/ppg/pgrepack.groovy index e0887f3fc2..6bf54fd4db 100644 --- a/ppg/pgrepack.groovy +++ b/ppg/pgrepack.groovy @@ -176,6 +176,32 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' From 63514740e284b9007794dd277c6d5781e3d0d055 Mon Sep 17 00:00:00 2001 From: Surabhi Bhat Date: Tue, 22 Jul 2025 11:27:08 +0530 Subject: [PATCH 170/269] Make uploadPGSBOMfromAWS and uploadPGSBOMToDownloadsTesting common to all products --- ppg/pg_generate_sbom.groovy | 30 +++++++++---------- ...vy => uploadSBOMToDownloadsTesting.groovy} | 0 ...romAWS.groovy => uploadSBOMfromAWS.groovy} | 0 3 files changed, 15 insertions(+), 15 deletions(-) rename vars/{uploadPGSBOMToDownloadsTesting.groovy => uploadSBOMToDownloadsTesting.groovy} (100%) rename vars/{uploadPGSBOMfromAWS.groovy => uploadSBOMfromAWS.groovy} (100%) diff --git a/ppg/pg_generate_sbom.groovy b/ppg/pg_generate_sbom.groovy index 42e6ba71a7..5b6b9c7767 100644 --- a/ppg/pg_generate_sbom.groovy +++ b/ppg/pg_generate_sbom.groovy @@ -29,7 +29,7 @@ void uploadPGSBOMToTestingDownloadServer(String productName, String packageVersi script { try { - uploadPGSBOMToDownloadsTesting(params.CLOUD, productName, packageVersion, SBOMType) + uploadSBOMToDownloadsTesting(params.CLOUD, productName, packageVersion, SBOMType) } catch (err) { echo "Caught: ${err}" currentBuild.result = 'UNSTABLE' @@ -116,7 +116,7 @@ pipeline { stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" buildStage("oraclelinux:8", "") pushArtifactFolder(params.CLOUD, "pg_sbom/", AWS_STASH_PATH) - uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") + uploadSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") } } @@ -137,7 +137,7 @@ pipeline { stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" buildStage("oraclelinux:8", "") pushArtifactFolder(params.CLOUD, "pg_sbom/", AWS_STASH_PATH) - uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") + uploadSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") } } @@ -158,7 +158,7 @@ pipeline { stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" buildStage("oraclelinux:9", "") pushArtifactFolder(params.CLOUD, "pg_sbom/", AWS_STASH_PATH) - uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") + uploadSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") } } @@ -179,7 +179,7 @@ pipeline { stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" buildStage("oraclelinux:9", "") pushArtifactFolder(params.CLOUD, "pg_sbom/", AWS_STASH_PATH) - uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") + uploadSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") } } @@ -200,7 +200,7 @@ pipeline { stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" buildStage("oraclelinux:10", "") pushArtifactFolder(params.CLOUD, "pg_sbom/", AWS_STASH_PATH) - uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") + uploadSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") } } @@ -221,7 +221,7 @@ pipeline { stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" buildStage("oraclelinux:10", "") pushArtifactFolder(params.CLOUD, "pg_sbom/", AWS_STASH_PATH) - uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") + uploadSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") } } @@ -242,7 +242,7 @@ pipeline { stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" buildStage("ubuntu:jammy", "") pushArtifactFolder(params.CLOUD, "pg_sbom/", AWS_STASH_PATH) - uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") + uploadSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") } } @@ -263,7 +263,7 @@ pipeline { stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" buildStage("ubuntu:jammy", "") pushArtifactFolder(params.CLOUD, "pg_sbom/", AWS_STASH_PATH) - uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") + uploadSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") } } @@ -284,7 +284,7 @@ pipeline { stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" buildStage("ubuntu:noble", "") pushArtifactFolder(params.CLOUD, "pg_sbom/", AWS_STASH_PATH) - uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") + uploadSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") } } @@ -305,7 +305,7 @@ pipeline { stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" buildStage("ubuntu:noble", "") pushArtifactFolder(params.CLOUD, "pg_sbom/", AWS_STASH_PATH) - uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") + uploadSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") } } @@ -326,7 +326,7 @@ pipeline { stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" buildStage("debian:bullseye", "") pushArtifactFolder(params.CLOUD, "pg_sbom/", AWS_STASH_PATH) - uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") + uploadSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") } } @@ -347,7 +347,7 @@ pipeline { stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" buildStage("debian:bullseye", "") pushArtifactFolder(params.CLOUD, "pg_sbom/", AWS_STASH_PATH) - uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") + uploadSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") } } @@ -368,7 +368,7 @@ pipeline { stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" buildStage("debian:bookworm", "") pushArtifactFolder(params.CLOUD, "pg_sbom/", AWS_STASH_PATH) - uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") + uploadSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") } } @@ -389,7 +389,7 @@ pipeline { stash includes: "uploadPath-${PG_VERSION}", name: "uploadPath-${PG_VERSION}" buildStage("debian:bookworm", "") pushArtifactFolder(params.CLOUD, "pg_sbom/", AWS_STASH_PATH) - uploadPGSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") + uploadSBOMfromAWS(params.CLOUD, "pg_sbom/", AWS_STASH_PATH, "json", "${PG_VERSION}") uploadPGSBOMToTestingDownloadServer("pg_sbom", "${PG_VERSION}", "json") } } diff --git a/vars/uploadPGSBOMToDownloadsTesting.groovy b/vars/uploadSBOMToDownloadsTesting.groovy similarity index 100% rename from vars/uploadPGSBOMToDownloadsTesting.groovy rename to vars/uploadSBOMToDownloadsTesting.groovy diff --git a/vars/uploadPGSBOMfromAWS.groovy b/vars/uploadSBOMfromAWS.groovy similarity index 100% rename from vars/uploadPGSBOMfromAWS.groovy rename to vars/uploadSBOMfromAWS.groovy From b04804dc6466522a1dd562dedce4dd5cd984ff66 Mon Sep 17 00:00:00 2001 From: Vadim Yalovets Date: Tue, 22 Jul 2025 13:59:07 +0300 Subject: [PATCH 171/269] PKG-877 Create new param job to trigger tests for ProxySQL admin scrips v3 (#3439) --- proxysql/test-proxysql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/proxysql/test-proxysql b/proxysql/test-proxysql index ea6a0a2006..5191d8c684 100755 --- a/proxysql/test-proxysql +++ b/proxysql/test-proxysql @@ -217,14 +217,14 @@ for X in $(seq 0 $COPY_TIMEOUT); do sleep 1 done -for file in proxysql-admin proxysql-admin-common proxysql-login-file proxysql-common percona-scheduler-admin; do +for file in proxysql-admin proxysql-admin-common proxysql-login-file proxysql-common percona-scheduler-admin proxysql; do sudo ln -s $WORKDIR_ABS/PROXY_ADMIN/proxysql*/usr/bin/$file ${WORKDIR_ABS}/WORKDIR/$file done; sudo ln -s $WORKDIR_ABS/PROXY_ADMIN/proxysql*/etc/proxysql-admin.cnf ${WORKDIR_ABS}/WORKDIR/proxysql-2.0/etc/proxysql-admin.cnf sudo ln -s $WORKDIR_ABS/PROXY_ADMIN/proxysql*/usr/bin/pxc_scheduler_handler ${WORKDIR_ABS}/WORKDIR/pxc_scheduler_handler sudo ln -s $WORKDIR_ABS/PROXY_ADMIN/proxysql*/etc/config.toml ${WORKDIR_ABS}/WORKDIR/proxysql-2.0/etc/config.toml sudo ln -s $WORKDIR_ABS/PROXY_ADMIN/proxysql*/tests/testsuite.toml ${WORKDIR_ABS}/WORKDIR/testsuite.toml -sudo ln -s /usr/bin/proxysql $WORKDIR_ABS/WORKDIR/proxysql-2.0/usr/bin/proxysql +sudo ln -s $WORKDIR_ABS/PROXY_ADMIN/proxysql*/usr/bin/proxysql ${WORKDIR_ABS}/WORKDIR/proxysql-2.0/usr/bin/proxysql status=0 # Running ProxySQL QA script From 52b909caf1dc5cb8662f4cd199c4fd199f27effd Mon Sep 17 00:00:00 2001 From: Manika Singhal Date: Wed, 23 Jul 2025 16:48:06 +0530 Subject: [PATCH 172/269] rhel10 support for PG packages llvm etcd --- ppg/etcd-arm.groovy | 13 +++++++++++++ ppg/etcd.groovy | 13 +++++++++++++ ppg/llvm-arm.groovy | 26 ++++++++++++++++++++++++++ ppg/llvm.groovy | 26 ++++++++++++++++++++++++++ 4 files changed, 78 insertions(+) diff --git a/ppg/etcd-arm.groovy b/ppg/etcd-arm.groovy index e77cc4eb43..8bd38892e3 100644 --- a/ppg/etcd-arm.groovy +++ b/ppg/etcd-arm.groovy @@ -153,6 +153,19 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' diff --git a/ppg/etcd.groovy b/ppg/etcd.groovy index 380279b6c6..43a207961c 100644 --- a/ppg/etcd.groovy +++ b/ppg/etcd.groovy @@ -176,6 +176,19 @@ pipeline { // uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) // } //} + stage('Oracle Linux 10 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ppg/llvm-arm.groovy b/ppg/llvm-arm.groovy index 140e9f835a..119975fb76 100644 --- a/ppg/llvm-arm.groovy +++ b/ppg/llvm-arm.groovy @@ -117,6 +117,32 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + buildStage("oraclelinux:10", "--get_src_rpm=1") + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/llvm.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/llvm.properties + cat uploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + buildStage("oraclelinux:10", "--build_rpm=1") + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } } } diff --git a/ppg/llvm.groovy b/ppg/llvm.groovy index c0242bc846..2d892fc7e6 100644 --- a/ppg/llvm.groovy +++ b/ppg/llvm.groovy @@ -117,6 +117,32 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + cleanUpWS() + buildStage("oraclelinux:10", "--get_src_rpm=1") + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/llvm.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/llvm.properties + cat uploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + buildStage("oraclelinux:10", "--build_rpm=1") + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } } } From 4d7eb8d949573e6a3e6d03a4080ca0bc40ffdf6e Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Tue, 29 Jul 2025 16:49:02 +0300 Subject: [PATCH 173/269] CUSTOM-199 pipeline for psmdb70 ol7 binary tarballs --- .../custom/custom-psmdb70-ol7-tgz.groovy | 178 ++++++++++++++++++ .../jenkins/custom/custom-psmdb70-ol7-tgz.yml | 15 ++ 2 files changed, 193 insertions(+) create mode 100644 psmdb/jenkins/custom/custom-psmdb70-ol7-tgz.groovy create mode 100644 psmdb/jenkins/custom/custom-psmdb70-ol7-tgz.yml diff --git a/psmdb/jenkins/custom/custom-psmdb70-ol7-tgz.groovy b/psmdb/jenkins/custom/custom-psmdb70-ol7-tgz.groovy new file mode 100644 index 0000000000..c5df02b96f --- /dev/null +++ b/psmdb/jenkins/custom/custom-psmdb70-ol7-tgz.groovy @@ -0,0 +1,178 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + withCredentials([string(credentialsId: 'GITHUB_API_TOKEN', variable: 'TOKEN')]) { + sh """ + set -o xtrace + ls -laR ./ + rm -rf test/* + mkdir -p test + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/percona-packaging/scripts/psmdb_builder.sh -O psmdb_builder.sh + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + bash -x ./psmdb_builder.sh --builddir=\${build_dir}/test --install_deps=1 + if [ \${FULL_FEATURED} = "yes" ]; then + git clone --depth 1 --branch \${PRO_BRANCH} https://x-access-token:${TOKEN}@github.com/percona/mongo-build-scripts.git percona-packaging + mv -f \${build_dir}/percona-packaging \${build_dir}/test/. + ls -la \${build_dir}/percona-packaging + fi + bash -x ./psmdb_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --branch=${GIT_BRANCH} --psm_ver=${PSMDB_VERSION} --psm_release=${PSMDB_RELEASE} --mongo_tools_tag=${MONGO_TOOLS_TAG} ${STAGE_PARAM}" + """ + } +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def AWS_STASH_PATH + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'launcher-x64' : 'micro-amazon' + } + parameters { + choice( + choices: ['Hetzner','AWS'], + description: 'Cloud infra for build', + name: 'CLOUD') + string( + defaultValue: 'https://github.com/percona/percona-server-mongodb.git', + description: 'URL for percona-server-mongodb repository', + name: 'GIT_REPO') + string( + defaultValue: 'release-7.0.22-12', + description: 'Tag/Branch for percona-server-mongodb repository', + name: 'GIT_BRANCH') + string( + defaultValue: 'https://github.com/percona/percona-server-mongodb.git', + description: 'URL for CUSTOM percona-server-mongodb repository to take BuildScript from', + name: 'BS_GIT_REPO') + string( + defaultValue: 'release-7.0.22-12', + description: 'Tag/Branch for CUSTOM percona-server-mongodb repository to take BuildScript from', + name: 'BS_GIT_BRANCH') + string( + defaultValue: '7.0.22', + description: 'PSMDB release value', + name: 'PSMDB_VERSION') + string( + defaultValue: '12', + description: 'PSMDB release value', + name: 'PSMDB_RELEASE') + string( + defaultValue: '100.12.1', + description: 'https://docs.mongodb.com/database-tools/installation/', + name: 'MONGO_TOOLS_TAG') + string( + defaultValue: 'CUSTOM199', + description: 'Jira task name without dash(CUSTOM-199 -> CUSTOM199)', + name: 'JIRA_TASK') + choice( + choices: 'laboratory\ntesting\nexperimental', + description: 'Repo component to push packages to', + name: 'COMPONENT') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + timestamps () + } + stages { + stage('Create PSMDB source tarball') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + steps { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") + cleanUpWS() + script { + if (env.FULL_FEATURED == 'yes') { + buildStage("oraclelinux:8", "--get_sources=1 --full_featured=1") + } else { + buildStage("oraclelinux:8", "--get_sources=1") + } + } + sh ''' + REPO_UPLOAD_PATH=$(grep "UPLOAD" test/percona-server-mongodb-70.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") + AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo ${REPO_UPLOAD_PATH} > uploadPath + echo ${AWS_STASH_PATH} > awsUploadPath + cat test/percona-server-mongodb-70.properties + cat uploadPath + cat awsUploadPath + ''' + script { + AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() + } + stash includes: 'uploadPath', name: 'uploadPath' + pushArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "source_tarball/", AWS_STASH_PATH, 'source') + } + } + stage('Centos 7 binary tarball(glibc2.17)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("centos:7", "--build_tarball=1") + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) + } + } + stage('Upload packages and tarballs from S3') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' + } + steps { + cleanUpWS() + + uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') + } + } + + stage('Push Tarballs to TESTING download area') { + steps { + script { + try { + uploadTarballToDownloadsTesting(params.CLOUD, "issue", "${JIRA_TASK}") + } + catch (err) { + echo "Caught: ${err}" + currentBuild.result = 'UNSTABLE' + } + } + } + } + } + post { + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}. Path to packages: experimental/${AWS_STASH_PATH}" + } + deleteDir() + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/psmdb/jenkins/custom/custom-psmdb70-ol7-tgz.yml b/psmdb/jenkins/custom/custom-psmdb70-ol7-tgz.yml new file mode 100644 index 0000000000..ec6a635dbc --- /dev/null +++ b/psmdb/jenkins/custom/custom-psmdb70-ol7-tgz.yml @@ -0,0 +1,15 @@ +- job: + name: hetzner-custom-psmdb70-ol7-tgz + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/vorsel/jenkins-pipelines.git + branches: + - 'CUSTOM-199_psmdb70_ol7_tgz' + wipe-workspace: false + lightweight-checkout: true + script-path: psmdb/jenkins/custom/custom-psmdb70-ol7-tgz.groovy + From 69122cde080235501e3f6ff2a4329d97f41b6d5d Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Wed, 30 Jul 2025 16:23:38 +0300 Subject: [PATCH 174/269] PPG build automation (#3456) --- ppg/ppg-controller-trigger.groovy | 137 ++++++++++++++++++++++++++++++ ppg/ppg-controller-trigger.yml | 28 ++++++ 2 files changed, 165 insertions(+) create mode 100644 ppg/ppg-controller-trigger.groovy create mode 100644 ppg/ppg-controller-trigger.yml diff --git a/ppg/ppg-controller-trigger.groovy b/ppg/ppg-controller-trigger.groovy new file mode 100644 index 0000000000..6a0f7b31c2 --- /dev/null +++ b/ppg/ppg-controller-trigger.groovy @@ -0,0 +1,137 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void cleanUpWS() { + sh "sudo rm -rf ./* || true" +} + +def AWS_STASH_PATH +def jobsConfig = [:] + +import org.yaml.snakeyaml.Yaml + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + + environment { + CONFIG_FILE = 'job_configs/all-jobs-full.yaml' + } + + stages { + stage('Load Job Config') { + steps { + script { + if (!fileExists(CONFIG_FILE)) { + error "❌ Config file not found: ${CONFIG_FILE}" + } + + def yaml = new Yaml() + def input = readFile(file: CONFIG_FILE) + jobsConfig = yaml.load(input) + echo "[✓] Loaded config for ${jobsConfig.size()} jobs" + } + } + } + + stage('Run Critical Jobs (in order)') { + steps { + script { + def criticalJobs = [ + 'hetzner-postgresql-common-RELEASE', + 'hetzner-postgresql-server-autobuild-RELEASE', + 'hetzner-pg_percona_telemetry-autobuild-RELEASE' + ] + + criticalJobs.each { jobKey -> + def job = jobsConfig[jobKey] + if (!job?.trigger) { + echo "[SKIP] ${jobKey} not marked for triggering." + return + } + + echo "[▶] Running critical job: ${jobKey}" + def params = job.parameters.collect { k, v -> + v instanceof Boolean ? + booleanParam(name: k, value: v) : + string(name: k, value: v.toString()) + } + + build job: job.job_name, + parameters: params, + wait: true, + propagate: true + } + } + } + } + + stage('Run Remaining Jobs (in parallel)') { + steps { + script { + def critical = [ + 'hetzner-postgresql-common-RELEASE', + 'hetzner-postgresql-server-autobuild-RELEASE', + 'hetzner-pg_percona_telemetry-autobuild-RELEASE' + ] + + def parallelJobs = [:] + + jobsConfig.each { jobKey, job -> + if (!job.trigger || critical.contains(jobKey)) return + + def params = job.parameters.collect { k, v -> + v instanceof Boolean ? + booleanParam(name: k, value: v) : + string(name: k, value: v.toString()) + } + + parallelJobs[jobKey] = { + echo "[▶] Running parallel job: ${jobKey}" + build job: job.job_name, + parameters: params, + wait: job.wait, + propagate: true + } + } + + if (parallelJobs) { + parallel parallelJobs + } else { + echo "[✓] No parallel jobs to run." + } + } + } + } + } + + post { + success { + slackNotify( + "#releases-ci", + "#00FF00", + "[${env.JOB_NAME}]: ✅ Build finished successfully for branch `${env.GIT_BRANCH}` → ${env.BUILD_URL}" + ) + script { + currentBuild.description = "Built on ${env.GIT_BRANCH}" + } + cleanUpWS() + } + + failure { + slackNotify( + "#releases-ci", + "#FF0000", + "[${env.JOB_NAME}]: ❌ Build failed for branch `${env.GIT_BRANCH}` → ${env.BUILD_URL}" + ) + cleanUpWS() + } + + always { + cleanUpWS() + } + } +} diff --git a/ppg/ppg-controller-trigger.yml b/ppg/ppg-controller-trigger.yml new file mode 100644 index 0000000000..4b7762b2cc --- /dev/null +++ b/ppg/ppg-controller-trigger.yml @@ -0,0 +1,28 @@ +- job: + name: ppg-controller-trigger + project-type: pipeline + description: | + 🔧 Orchestrates all PPG component jobs. + ⚠️ Do not edit this job via the Jenkins UI! + parameters: + - string: + name: CLOUD + default: Hetzner + description: "Cloud infra: Hetzner or AWS" + - string: + name: CONFIG_REPO + default: "https://github.com/percona/postgres-packaging.git" + description: "Git repo containing job_configs/all-jobs-full.yaml" + - string: + name: CONFIG_BRANCH + default: "main" + description: "Branch to pull the configuration from" + pipeline-scm: + scm: + - git: + url: "$CONFIG_REPO" + branches: + - "$CONFIG_BRANCH" + wipe-workspace: false + lightweight-checkout: true + script-path: ppg/ppg-controller-trigger.groovy From 9cdbbeea0fc7a149219cdeed7347e7fb8b8a775b Mon Sep 17 00:00:00 2001 From: Vadim Yalovets Date: Thu, 31 Jul 2025 15:46:19 +0300 Subject: [PATCH 175/269] Hetzner (#3460) --- .../jenkins/orchestrator-packaging.groovy | 64 +++++++++++++------ proxysql/proxysql3.groovy | 36 ++++++++++- .../percona-server-for-mysql-8.0.groovy | 28 ++++---- pxb/jenkins/pxb-80-docker.groovy | 61 +++++++++++++----- 4 files changed, 139 insertions(+), 50 deletions(-) diff --git a/orchestrator/jenkins/orchestrator-packaging.groovy b/orchestrator/jenkins/orchestrator-packaging.groovy index 8ba2c7e9a7..3786b92db0 100644 --- a/orchestrator/jenkins/orchestrator-packaging.groovy +++ b/orchestrator/jenkins/orchestrator-packaging.groovy @@ -58,11 +58,11 @@ pipeline { description: 'General version of the product', name: 'VERSION') string( - defaultValue: '14', + defaultValue: '18', description: 'RPM release value (e.g. custom build -> 1.1custom124)', name: 'RPM_RELEASE') string( - defaultValue: '14', + defaultValue: '18', description: 'DEB release value (e.g. custom build -> 1.1custom124)', name: 'DEB_RELEASE') choice( @@ -105,7 +105,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) @@ -118,7 +118,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) @@ -135,7 +135,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -148,7 +148,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -161,7 +161,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -174,20 +174,46 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Focal(20.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -200,7 +226,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -213,7 +239,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -226,7 +252,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -239,7 +265,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -252,7 +278,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -265,7 +291,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -278,7 +304,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -291,7 +317,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -304,7 +330,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -323,7 +349,7 @@ pipeline { stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild("tools", COMPONENT) + sync2ProdAutoBuild(params.CLOUD, "tools", COMPONENT) } } diff --git a/proxysql/proxysql3.groovy b/proxysql/proxysql3.groovy index aae077a3c1..2cf4091fa9 100644 --- a/proxysql/proxysql3.groovy +++ b/proxysql/proxysql3.groovy @@ -92,7 +92,7 @@ pipeline { steps { // slackNotify("", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") cleanUpWS() - buildStage("centos:7", "--get_sources=1") + buildStage("oraclelinux:9", "--get_sources=1") sh ''' REPO_UPLOAD_PATH=$(grep "UPLOAD" test/proxysql.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") @@ -113,7 +113,7 @@ pipeline { parallel { stage('Build PROXYSQL generic source rpm') { agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() @@ -167,6 +167,38 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10') { + when { + expression { false } + } + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 10 ARM') { + when { + expression { false } + } + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Jammy(22.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ps/jenkins/percona-server-for-mysql-8.0.groovy b/ps/jenkins/percona-server-for-mysql-8.0.groovy index 8391cd3fb2..763cdc3d9c 100644 --- a/ps/jenkins/percona-server-for-mysql-8.0.groovy +++ b/ps/jenkins/percona-server-for-mysql-8.0.groovy @@ -331,14 +331,14 @@ parameters { } steps { cleanUpWS() - installCli("deb") + installCli("rpm") unstash 'properties' popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { - buildStage("debian:buster", "--build_source_deb=1 --enable_fipsmode=1") + buildStage("ubuntu:focal", "--build_source_deb=1 --enable_fipsmode=1") } else { - buildStage("debian:buster", "--build_source_deb=1") + buildStage("ubuntu:focal", "--build_source_deb=1") } } @@ -500,7 +500,7 @@ parameters { echo "The step is skipped" } else { cleanUpWS() - installCli("deb") + installCli("rpm") unstash 'properties' popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1 --with_zenfs=1") @@ -516,7 +516,7 @@ parameters { } steps { cleanUpWS() - installCli("deb") + installCli("rpm") unstash 'properties' popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { @@ -536,7 +536,7 @@ parameters { } steps { cleanUpWS() - installCli("deb") + installCli("rpm") unstash 'properties' popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { @@ -560,7 +560,7 @@ parameters { echo "The step is skipped" } else { cleanUpWS() - installCli("deb") + installCli("rpm") unstash 'properties' popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1 --with_zenfs=1") @@ -576,7 +576,7 @@ parameters { } steps { cleanUpWS() - installCli("deb") + installCli("rpm") unstash 'properties' popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) script { @@ -839,7 +839,7 @@ parameters { echo "The step is skipped" } else { cleanUpWS() - installCli("deb") + installCli("rpm") unstash 'properties' popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_tarball=1") @@ -859,7 +859,7 @@ parameters { echo "The step is skipped" } else { cleanUpWS() - installCli("deb") + installCli("rpm") unstash 'properties' popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--debug=1 --build_tarball=1") @@ -875,7 +875,7 @@ parameters { } steps { cleanUpWS() - installCli("deb") + installCli("rpm") unstash 'properties' popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { @@ -895,7 +895,7 @@ parameters { } steps { cleanUpWS() - installCli("deb") + installCli("rpm") unstash 'properties' popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { @@ -914,7 +914,7 @@ parameters { } steps { cleanUpWS() - installCli("deb") + installCli("rpm") unstash 'properties' popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { @@ -936,7 +936,7 @@ parameters { } steps { cleanUpWS() - installCli("deb") + installCli("rpm") unstash 'properties' uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) diff --git a/pxb/jenkins/pxb-80-docker.groovy b/pxb/jenkins/pxb-80-docker.groovy index fed079b2af..0e1dcbd62c 100644 --- a/pxb/jenkins/pxb-80-docker.groovy +++ b/pxb/jenkins/pxb-80-docker.groovy @@ -28,6 +28,10 @@ pipeline { choices: [ 'Hetzner','AWS' ], description: 'Cloud infra for build', name: 'CLOUD' ) + choice( + choices: 'perconalab\npercona', + description: 'Organization on hub.docker.com', + name: 'ORGANIZATION') string( defaultValue: 'https://github.com/percona/percona-xtrabackup.git', description: 'URL for PXB git repository', @@ -97,8 +101,15 @@ pipeline { sed -i "s/pxb-84-lts testing/pxb-84-lts ${COMPONENT}/g" Dockerfile sed -i "s/ps-84-lts release/ps-84-lts ${COMPONENT}/g" Dockerfile fi - sudo docker build --no-cache -t perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-amd64 --platform "linux/amd64" . - sudo docker build --no-cache -t perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-arm64 --platform="linux/arm64" . + if [ ${ORGANIZATION} != "percona" ]; then + sudo docker build --no-cache -t perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-amd64 --platform "linux/amd64" . + sudo docker build --no-cache -t perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-arm64 --platform="linux/arm64" . + else + sudo docker pull perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-amd64 + sudo docker tag perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-amd64 percona/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-amd64 + sudo docker pull perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-arm64 + sudo docker tag perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-arm64 percona/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-arm64 + fi sudo docker images ''' @@ -111,21 +122,41 @@ pipeline { echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin curl -O https://raw.githubusercontent.com/percona/percona-xtrabackup/${BRANCH}/XB_VERSION . ./XB_VERSION - sudo docker push perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-amd64 - sudo docker push perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-arm64 + if [ ${ORGANIZATION} != "percona" ]; then + sudo docker push perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-amd64 + sudo docker push perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-arm64 + + sudo docker manifest create perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} \ + perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-amd64 \ + perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-arm64 + sudo docker manifest annotate perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-arm64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-amd64 --os linux --arch amd64 + sudo docker manifest inspect perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} + sudo docker manifest push perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} + + sudo docker buildx imagetools create -t perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA} perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} + sudo docker buildx imagetools create -t perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH} perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} + sudo docker buildx imagetools create -t perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR} perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} + sudo docker buildx imagetools create -t perconalab/percona-xtrabackup:latest perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} + else + sudo docker push percona/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-amd64 + sudo docker push percona/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-arm64 - sudo docker manifest create perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} \ - perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-amd64 \ - perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-arm64 - sudo docker manifest annotate perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-arm64 --os linux --arch arm64 --variant v8 - sudo docker manifest annotate perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-amd64 --os linux --arch amd64 - sudo docker manifest inspect perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} + sudo docker manifest create percona/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} \ + percona/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-amd64 \ + percona/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-arm64 + sudo docker manifest annotate percona/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} percona/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-arm64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate percona/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} percona/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE}-amd64 --os linux --arch amd64 + sudo docker manifest inspect percona/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} + sudo docker manifest push percona/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} - sudo docker manifest push perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} - sudo docker buildx imagetools create -t perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA} perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} - sudo docker buildx imagetools create -t perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH} perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} - sudo docker buildx imagetools create -t perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR} perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} - sudo docker buildx imagetools create -t perconalab/percona-xtrabackup:latest perconalab/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} + sudo docker buildx imagetools create -t percona/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA} percona/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} + sudo docker buildx imagetools create -t percona/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH} percona/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} + sudo docker buildx imagetools create -t percona/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR} percona/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} + if [ ${XB_VERSION_MINOR} = "0" ]; then + sudo docker buildx imagetools create -t percona/percona-xtrabackup:latest percona/percona-xtrabackup:${XB_VERSION_MAJOR}.${XB_VERSION_MINOR}.${XB_VERSION_PATCH}${XB_VERSION_EXTRA}.${RPM_RELEASE} + fi + fi ''' } } // scripts From 4e13acfed1878d94e479cf9b43997ad390015509 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Sat, 2 Aug 2025 15:33:45 +0300 Subject: [PATCH 176/269] fix trigger job --- ppg/ppg-controller-trigger.groovy | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/ppg/ppg-controller-trigger.groovy b/ppg/ppg-controller-trigger.groovy index 6a0f7b31c2..cb40100a2b 100644 --- a/ppg/ppg-controller-trigger.groovy +++ b/ppg/ppg-controller-trigger.groovy @@ -22,6 +22,17 @@ pipeline { } stages { + stage('Checkout Job Config Repo') { + steps { + script { + echo "[INFO] Cloning CONFIG_REPO: ${params.CONFIG_REPO} (${params.CONFIG_BRANCH})" + dir('postgres-packaging') { + git branch: params.CONFIG_BRANCH, url: params.CONFIG_REPO + } + env.CONFIG_FILE = 'postgres-packaging/job_configs/all-jobs-full.yaml' + } + } + } stage('Load Job Config') { steps { script { From 1d59cc9476068fcb79072f76ff9ea35f627c7809 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Sat, 2 Aug 2025 15:38:39 +0300 Subject: [PATCH 177/269] fix --- ppg/ppg-controller-trigger.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ppg/ppg-controller-trigger.groovy b/ppg/ppg-controller-trigger.groovy index cb40100a2b..6d249238da 100644 --- a/ppg/ppg-controller-trigger.groovy +++ b/ppg/ppg-controller-trigger.groovy @@ -18,7 +18,7 @@ pipeline { } environment { - CONFIG_FILE = 'job_configs/all-jobs-full.yaml' + CONFIG_FILE = 'postgres-packaging/job_configs/all-jobs-full.yaml' } stages { From 361a9bb9893aac996d40da22455ea54d3a921d8a Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Sat, 2 Aug 2025 15:41:46 +0300 Subject: [PATCH 178/269] remove 3rdparty lib --- ppg/ppg-controller-trigger.groovy | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/ppg/ppg-controller-trigger.groovy b/ppg/ppg-controller-trigger.groovy index 6d249238da..674b3e4c90 100644 --- a/ppg/ppg-controller-trigger.groovy +++ b/ppg/ppg-controller-trigger.groovy @@ -10,8 +10,6 @@ void cleanUpWS() { def AWS_STASH_PATH def jobsConfig = [:] -import org.yaml.snakeyaml.Yaml - pipeline { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -39,10 +37,7 @@ pipeline { if (!fileExists(CONFIG_FILE)) { error "❌ Config file not found: ${CONFIG_FILE}" } - - def yaml = new Yaml() - def input = readFile(file: CONFIG_FILE) - jobsConfig = yaml.load(input) + jobsConfig = readYaml file: CONFIG_FILE echo "[✓] Loaded config for ${jobsConfig.size()} jobs" } } From b2f664c7d7d1510ae7795d8efd0400cb9c9c1d99 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Sat, 2 Aug 2025 15:43:36 +0300 Subject: [PATCH 179/269] remove stage --- ppg/ppg-controller-trigger.groovy | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/ppg/ppg-controller-trigger.groovy b/ppg/ppg-controller-trigger.groovy index 674b3e4c90..d271090d5d 100644 --- a/ppg/ppg-controller-trigger.groovy +++ b/ppg/ppg-controller-trigger.groovy @@ -28,13 +28,7 @@ pipeline { git branch: params.CONFIG_BRANCH, url: params.CONFIG_REPO } env.CONFIG_FILE = 'postgres-packaging/job_configs/all-jobs-full.yaml' - } - } - } - stage('Load Job Config') { - steps { - script { - if (!fileExists(CONFIG_FILE)) { + if (!fileExists(CONFIG_FILE)) { error "❌ Config file not found: ${CONFIG_FILE}" } jobsConfig = readYaml file: CONFIG_FILE @@ -42,7 +36,6 @@ pipeline { } } } - stage('Run Critical Jobs (in order)') { steps { script { From 1137534d9a74c3ab5e6df96748cca7681feb5200 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Sat, 2 Aug 2025 15:47:49 +0300 Subject: [PATCH 180/269] fix --- ppg/ppg-controller-trigger.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ppg/ppg-controller-trigger.groovy b/ppg/ppg-controller-trigger.groovy index d271090d5d..e20f4211ed 100644 --- a/ppg/ppg-controller-trigger.groovy +++ b/ppg/ppg-controller-trigger.groovy @@ -31,7 +31,7 @@ pipeline { if (!fileExists(CONFIG_FILE)) { error "❌ Config file not found: ${CONFIG_FILE}" } - jobsConfig = readYaml file: CONFIG_FILE + jobsConfig = loadYaml(CONFIG_FILE) echo "[✓] Loaded config for ${jobsConfig.size()} jobs" } } From bc051bb16821898c09e2c7d1616147d28caf4c4c Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Sat, 2 Aug 2025 15:52:07 +0300 Subject: [PATCH 181/269] rework --- ppg/ppg-controller-trigger.groovy | 98 +++++++++++++++++++------------ 1 file changed, 61 insertions(+), 37 deletions(-) diff --git a/ppg/ppg-controller-trigger.groovy b/ppg/ppg-controller-trigger.groovy index e20f4211ed..e03a4ad111 100644 --- a/ppg/ppg-controller-trigger.groovy +++ b/ppg/ppg-controller-trigger.groovy @@ -8,13 +8,19 @@ void cleanUpWS() { } def AWS_STASH_PATH -def jobsConfig = [:] +def jobsList = [] pipeline { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } + parameters { + string(name: 'CLOUD', defaultValue: 'Hetzner', description: 'Cloud infra: Hetzner or AWS') + string(name: 'CONFIG_REPO', defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'Git repo with job_configs/all-jobs-full.yaml') + string(name: 'CONFIG_BRANCH', defaultValue: 'main', description: 'Branch to pull job config from') + } + environment { CONFIG_FILE = 'postgres-packaging/job_configs/all-jobs-full.yaml' } @@ -27,15 +33,27 @@ pipeline { dir('postgres-packaging') { git branch: params.CONFIG_BRANCH, url: params.CONFIG_REPO } - env.CONFIG_FILE = 'postgres-packaging/job_configs/all-jobs-full.yaml' - if (!fileExists(CONFIG_FILE)) { - error "❌ Config file not found: ${CONFIG_FILE}" + + if (!fileExists(env.CONFIG_FILE)) { + error "❌ Config file not found: ${env.CONFIG_FILE}" } - jobsConfig = loadYaml(CONFIG_FILE) - echo "[✓] Loaded config for ${jobsConfig.size()} jobs" } } } + + stage('Install yq') { + steps { + sh ''' + if ! command -v yq >/dev/null 2>&1; then + wget -q https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O yq + chmod +x yq + sudo mv yq /usr/local/bin/ + fi + yq --version + ''' + } + } + stage('Run Critical Jobs (in order)') { steps { script { @@ -45,24 +63,24 @@ pipeline { 'hetzner-pg_percona_telemetry-autobuild-RELEASE' ] - criticalJobs.each { jobKey -> - def job = jobsConfig[jobKey] - if (!job?.trigger) { - echo "[SKIP] ${jobKey} not marked for triggering." + criticalJobs.each { jobName -> + def trigger = sh(script: "yq eval '.\"${jobName}\".trigger' ${env.CONFIG_FILE}", returnStdout: true).trim() + if (trigger != 'true') { + echo "[SKIP] ${jobName} not marked for triggering." return } - echo "[▶] Running critical job: ${jobKey}" - def params = job.parameters.collect { k, v -> - v instanceof Boolean ? - booleanParam(name: k, value: v) : - string(name: k, value: v.toString()) - } + def paramYaml = sh(script: "yq eval -o=json '.\"${jobName}\".parameters // {}' ${env.CONFIG_FILE}", returnStdout: true).trim() + def paramMap = readJSON text: paramYaml + def buildParams = paramMap.collect { k, v -> string(name: k, value: v.toString()) } - build job: job.job_name, - parameters: params, - wait: true, - propagate: true + echo "[▶] Running critical job: ${jobName}" + retry(3) { + build job: jobName, + parameters: buildParams, + wait: true, + propagate: true + } } } } @@ -71,29 +89,35 @@ pipeline { stage('Run Remaining Jobs (in parallel)') { steps { script { - def critical = [ + def criticalJobs = [ 'hetzner-postgresql-common-RELEASE', 'hetzner-postgresql-server-autobuild-RELEASE', 'hetzner-pg_percona_telemetry-autobuild-RELEASE' ] + def allJobs = sh(script: "yq eval 'keys | .[]' ${env.CONFIG_FILE}", returnStdout: true).trim().split('\n') def parallelJobs = [:] - jobsConfig.each { jobKey, job -> - if (!job.trigger || critical.contains(jobKey)) return + allJobs.each { jobName -> + if (criticalJobs.contains(jobName)) return - def params = job.parameters.collect { k, v -> - v instanceof Boolean ? - booleanParam(name: k, value: v) : - string(name: k, value: v.toString()) - } + def trigger = sh(script: "yq eval '.\"${jobName}\".trigger' ${env.CONFIG_FILE}", returnStdout: true).trim() + if (trigger != 'true') return - parallelJobs[jobKey] = { - echo "[▶] Running parallel job: ${jobKey}" - build job: job.job_name, - parameters: params, - wait: job.wait, - propagate: true + def paramYaml = sh(script: "yq eval -o=json '.\"${jobName}\".parameters // {}' ${env.CONFIG_FILE}", returnStdout: true).trim() + def paramMap = readJSON text: paramYaml + def buildParams = paramMap.collect { k, v -> string(name: k, value: v.toString()) } + + def waitFlag = sh(script: "yq eval '.\"${jobName}\".wait // false' ${env.CONFIG_FILE}", returnStdout: true).trim().toBoolean() + + parallelJobs[jobName] = { + echo "[▶] Running parallel job: ${jobName}" + retry(3) { + build job: jobName, + parameters: buildParams, + wait: waitFlag, + propagate: true + } } } @@ -112,10 +136,10 @@ pipeline { slackNotify( "#releases-ci", "#00FF00", - "[${env.JOB_NAME}]: ✅ Build finished successfully for branch `${env.GIT_BRANCH}` → ${env.BUILD_URL}" + "[${env.JOB_NAME}]: ✅ Build finished successfully for branch `${params.CONFIG_BRANCH}` → ${env.BUILD_URL}" ) script { - currentBuild.description = "Built on ${env.GIT_BRANCH}" + currentBuild.description = "Built on ${params.CONFIG_BRANCH}" } cleanUpWS() } @@ -124,7 +148,7 @@ pipeline { slackNotify( "#releases-ci", "#FF0000", - "[${env.JOB_NAME}]: ❌ Build failed for branch `${env.GIT_BRANCH}` → ${env.BUILD_URL}" + "[${env.JOB_NAME}]: ❌ Build failed for branch `${params.CONFIG_BRANCH}` → ${env.BUILD_URL}" ) cleanUpWS() } From d243f08a4009f39b06496c1864956852b1b68f32 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Sat, 2 Aug 2025 15:54:58 +0300 Subject: [PATCH 182/269] fix --- ppg/ppg-controller-trigger.groovy | 262 ++++++++++++++---------------- 1 file changed, 121 insertions(+), 141 deletions(-) diff --git a/ppg/ppg-controller-trigger.groovy b/ppg/ppg-controller-trigger.groovy index e03a4ad111..c37a0d8582 100644 --- a/ppg/ppg-controller-trigger.groovy +++ b/ppg/ppg-controller-trigger.groovy @@ -1,160 +1,140 @@ -library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ - $class: 'GitSCMSource', - remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' -]) _ - -void cleanUpWS() { - sh "sudo rm -rf ./* || true" -} - -def AWS_STASH_PATH -def jobsList = [] - pipeline { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' - } - - parameters { - string(name: 'CLOUD', defaultValue: 'Hetzner', description: 'Cloud infra: Hetzner or AWS') - string(name: 'CONFIG_REPO', defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'Git repo with job_configs/all-jobs-full.yaml') - string(name: 'CONFIG_BRANCH', defaultValue: 'main', description: 'Branch to pull job config from') + agent any + + parameters { + string(name: 'CONFIG_REPO', defaultValue: 'https://github.com/Percona-Lab/jenkins-pipelines.git', description: 'YAML job configuration repo') + string(name: 'CONFIG_BRANCH', defaultValue: 'hetzner', description: 'Branch to pull job configuration from') + string(name: 'CONFIG_FILE', defaultValue: 'postgres-packaging/job_configs/all-jobs-full.yaml', description: 'YAML file path inside repo') + } + + environment { + YAML_JSON = 'job_config.json' + } + + stages { + stage('Install jq and yq') { + steps { + sh ''' + if ! command -v yq > /dev/null; then + echo "Installing yq..." + sudo wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/download/v4.47.1/yq_linux_amd64 + sudo chmod +x /usr/local/bin/yq + fi + if ! command -v jq > /dev/null; then + echo "Installing jq..." + sudo apt-get update && sudo apt-get install -y jq + fi + yq --version + jq --version + ''' + } } - environment { - CONFIG_FILE = 'postgres-packaging/job_configs/all-jobs-full.yaml' + stage('Checkout Job Config Repo') { + steps { + dir('job-config') { + git branch: "${params.CONFIG_BRANCH}", url: "${params.CONFIG_REPO}" + } + script { + env.CONFIG_PATH = "job-config/${params.CONFIG_FILE}" + sh """ + echo '[INFO] Converting YAML to JSON...' + yq eval -o=json ${env.CONFIG_PATH} > ${env.YAML_JSON} + """ + } + } } - stages { - stage('Checkout Job Config Repo') { - steps { - script { - echo "[INFO] Cloning CONFIG_REPO: ${params.CONFIG_REPO} (${params.CONFIG_BRANCH})" - dir('postgres-packaging') { - git branch: params.CONFIG_BRANCH, url: params.CONFIG_REPO - } - - if (!fileExists(env.CONFIG_FILE)) { - error "❌ Config file not found: ${env.CONFIG_FILE}" - } - } + stage('Run Critical Jobs (in order)') { + steps { + script { + def criticalJobs = [ + 'hetzner-postgresql-common-RELEASE', + 'hetzner-postgresql-server-autobuild-RELEASE', + 'hetzner-pg_percona_telemetry-autobuild-RELEASE' + ] + + criticalJobs.each { jobKey -> + def trigger = sh(script: "jq -r '.\"${jobKey}\".trigger // false' ${env.YAML_JSON}", returnStdout: true).trim() + + if (trigger != "true") { + echo "[SKIP] ${jobKey} not marked for trigger" + return } - } - stage('Install yq') { - steps { - sh ''' - if ! command -v yq >/dev/null 2>&1; then - wget -q https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O yq - chmod +x yq - sudo mv yq /usr/local/bin/ - fi - yq --version - ''' - } - } + def rawParams = sh(script: "jq -c '.\"${jobKey}\".parameters // {}' ${env.YAML_JSON}", returnStdout: true).trim() + def parsedParams = readJSON text: rawParams - stage('Run Critical Jobs (in order)') { - steps { - script { - def criticalJobs = [ - 'hetzner-postgresql-common-RELEASE', - 'hetzner-postgresql-server-autobuild-RELEASE', - 'hetzner-pg_percona_telemetry-autobuild-RELEASE' - ] - - criticalJobs.each { jobName -> - def trigger = sh(script: "yq eval '.\"${jobName}\".trigger' ${env.CONFIG_FILE}", returnStdout: true).trim() - if (trigger != 'true') { - echo "[SKIP] ${jobName} not marked for triggering." - return - } - - def paramYaml = sh(script: "yq eval -o=json '.\"${jobName}\".parameters // {}' ${env.CONFIG_FILE}", returnStdout: true).trim() - def paramMap = readJSON text: paramYaml - def buildParams = paramMap.collect { k, v -> string(name: k, value: v.toString()) } - - echo "[▶] Running critical job: ${jobName}" - retry(3) { - build job: jobName, - parameters: buildParams, - wait: true, - propagate: true - } - } - } + def buildParams = parsedParams.collect { k, v -> + v instanceof Boolean ? booleanParam(name: k, value: v) : string(name: k, value: v.toString()) } - } - stage('Run Remaining Jobs (in parallel)') { - steps { - script { - def criticalJobs = [ - 'hetzner-postgresql-common-RELEASE', - 'hetzner-postgresql-server-autobuild-RELEASE', - 'hetzner-pg_percona_telemetry-autobuild-RELEASE' - ] - - def allJobs = sh(script: "yq eval 'keys | .[]' ${env.CONFIG_FILE}", returnStdout: true).trim().split('\n') - def parallelJobs = [:] - - allJobs.each { jobName -> - if (criticalJobs.contains(jobName)) return - - def trigger = sh(script: "yq eval '.\"${jobName}\".trigger' ${env.CONFIG_FILE}", returnStdout: true).trim() - if (trigger != 'true') return - - def paramYaml = sh(script: "yq eval -o=json '.\"${jobName}\".parameters // {}' ${env.CONFIG_FILE}", returnStdout: true).trim() - def paramMap = readJSON text: paramYaml - def buildParams = paramMap.collect { k, v -> string(name: k, value: v.toString()) } - - def waitFlag = sh(script: "yq eval '.\"${jobName}\".wait // false' ${env.CONFIG_FILE}", returnStdout: true).trim().toBoolean() - - parallelJobs[jobName] = { - echo "[▶] Running parallel job: ${jobName}" - retry(3) { - build job: jobName, - parameters: buildParams, - wait: waitFlag, - propagate: true - } - } - } - - if (parallelJobs) { - parallel parallelJobs - } else { - echo "[✓] No parallel jobs to run." - } - } - } + build job: parsedParams.job_name, + parameters: buildParams, + wait: true, + propagate: true + } } + } } - post { - success { - slackNotify( - "#releases-ci", - "#00FF00", - "[${env.JOB_NAME}]: ✅ Build finished successfully for branch `${params.CONFIG_BRANCH}` → ${env.BUILD_URL}" - ) - script { - currentBuild.description = "Built on ${params.CONFIG_BRANCH}" + stage('Run Remaining Jobs (in parallel)') { + steps { + script { + def allKeys = sh(script: "jq -r 'keys[]' ${env.YAML_JSON}", returnStdout: true).trim().split('\n') + def criticalJobs = [ + 'hetzner-postgresql-common-RELEASE', + 'hetzner-postgresql-server-autobuild-RELEASE', + 'hetzner-pg_percona_telemetry-autobuild-RELEASE' + ] + + def nonCritical = allKeys.findAll { !(it in criticalJobs) } + + def parallelJobs = [:] + nonCritical.each { jobKey -> + def trigger = sh(script: "jq -r '.\"${jobKey}\".trigger // false' ${env.YAML_JSON}", returnStdout: true).trim() + + if (trigger == "true") { + parallelJobs[jobKey] = { + def rawParams = sh(script: "jq -c '.\"${jobKey}\".parameters // {}' ${env.YAML_JSON}", returnStdout: true).trim() + def parsedParams = readJSON text: rawParams + + def buildParams = parsedParams.collect { k, v -> + v instanceof Boolean ? booleanParam(name: k, value: v) : string(name: k, value: v.toString()) + } + + build job: parsedParams.job_name, + parameters: buildParams, + wait: true, + propagate: true + } + } else { + echo "[SKIP] ${jobKey} not triggered" } - cleanUpWS() - } + } - failure { - slackNotify( - "#releases-ci", - "#FF0000", - "[${env.JOB_NAME}]: ❌ Build failed for branch `${params.CONFIG_BRANCH}` → ${env.BUILD_URL}" - ) - cleanUpWS() + if (parallelJobs) { + parallel parallelJobs + } else { + echo '[INFO] No remaining jobs to run in parallel.' + } } + } + } + } - always { - cleanUpWS() - } + post { + always { + echo '[CLEANUP] Removing workspace files...' + sh 'sudo rm -rf ./job-config ./job_config.json' + } + failure { + slackSend( + channel: '#releases-ci', + color: '#FF0000', + message: "❌ Jenkins job failed: ${env.JOB_NAME} [${env.BUILD_NUMBER}] - ${env.BUILD_URL}", + tokenCredentialId: '030029ca-99c3-4a0d-b19f-0d6de94966f3' + ) } + } } From 292816548e261db724c5b67cd3abf0d69b2d0a61 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Sat, 2 Aug 2025 16:00:10 +0300 Subject: [PATCH 183/269] rework trigger --- ppg/ppg-controller-trigger.groovy | 275 +++++++++++++++++------------- 1 file changed, 154 insertions(+), 121 deletions(-) diff --git a/ppg/ppg-controller-trigger.groovy b/ppg/ppg-controller-trigger.groovy index c37a0d8582..b598d5005f 100644 --- a/ppg/ppg-controller-trigger.groovy +++ b/ppg/ppg-controller-trigger.groovy @@ -1,140 +1,173 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void cleanUpWS() { + sh "sudo rm -rf ./* || true" +} + pipeline { - agent any - - parameters { - string(name: 'CONFIG_REPO', defaultValue: 'https://github.com/Percona-Lab/jenkins-pipelines.git', description: 'YAML job configuration repo') - string(name: 'CONFIG_BRANCH', defaultValue: 'hetzner', description: 'Branch to pull job configuration from') - string(name: 'CONFIG_FILE', defaultValue: 'postgres-packaging/job_configs/all-jobs-full.yaml', description: 'YAML file path inside repo') - } - - environment { - YAML_JSON = 'job_config.json' - } - - stages { - stage('Install jq and yq') { - steps { - sh ''' - if ! command -v yq > /dev/null; then - echo "Installing yq..." - sudo wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/download/v4.47.1/yq_linux_amd64 - sudo chmod +x /usr/local/bin/yq - fi - if ! command -v jq > /dev/null; then - echo "Installing jq..." - sudo apt-get update && sudo apt-get install -y jq - fi - yq --version - jq --version - ''' - } + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } - stage('Checkout Job Config Repo') { - steps { - dir('job-config') { - git branch: "${params.CONFIG_BRANCH}", url: "${params.CONFIG_REPO}" - } - script { - env.CONFIG_PATH = "job-config/${params.CONFIG_FILE}" - sh """ - echo '[INFO] Converting YAML to JSON...' - yq eval -o=json ${env.CONFIG_PATH} > ${env.YAML_JSON} - """ - } - } + parameters { + string(name: 'CLOUD', defaultValue: 'Hetzner', description: 'Target cloud: Hetzner or AWS') + string(name: 'CONFIG_REPO', defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'Git repo with YAML config') + string(name: 'CONFIG_BRANCH', defaultValue: 'main', description: 'Branch to pull YAML config from') + string(name: 'CONFIG_FILE', defaultValue: 'job_configs/all-jobs-full.yaml', description: 'Relative path to job config YAML file') } - stage('Run Critical Jobs (in order)') { - steps { - script { - def criticalJobs = [ - 'hetzner-postgresql-common-RELEASE', - 'hetzner-postgresql-server-autobuild-RELEASE', - 'hetzner-pg_percona_telemetry-autobuild-RELEASE' - ] - - criticalJobs.each { jobKey -> - def trigger = sh(script: "jq -r '.\"${jobKey}\".trigger // false' ${env.YAML_JSON}", returnStdout: true).trim() - - if (trigger != "true") { - echo "[SKIP] ${jobKey} not marked for trigger" - return - } + environment { + CONFIG_DIR = 'job-config' + JSON_OUT = 'job_config.json' + } - def rawParams = sh(script: "jq -c '.\"${jobKey}\".parameters // {}' ${env.YAML_JSON}", returnStdout: true).trim() - def parsedParams = readJSON text: rawParams + stages { + stage('Install Tools') { + steps { + sh ''' + if ! command -v jq >/dev/null; then + echo "[INFO] Installing jq..." + sudo apt-get update && sudo apt-get install -y jq + fi + if ! command -v yq >/dev/null; then + echo "[INFO] Installing yq..." + sudo wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/download/v4.47.1/yq_linux_amd64 + sudo chmod +x /usr/local/bin/yq + fi + jq --version + yq --version + ''' + } + } - def buildParams = parsedParams.collect { k, v -> - v instanceof Boolean ? booleanParam(name: k, value: v) : string(name: k, value: v.toString()) + stage('Checkout Config') { + steps { + script { + echo "[INFO] Cloning CONFIG_REPO: ${params.CONFIG_REPO} (${params.CONFIG_BRANCH})" + } + dir("${CONFIG_DIR}") { + git branch: params.CONFIG_BRANCH, url: params.CONFIG_REPO + } + script { + def yamlPath = "${CONFIG_DIR}/${params.CONFIG_FILE}" + if (!fileExists(yamlPath)) { + error "❌ Config file not found: ${yamlPath}" + } + echo "[✓] YAML config found: ${yamlPath}" + + sh """ + echo '[INFO] Converting YAML to JSON...' + yq eval -o=json '${yamlPath}' > ${JSON_OUT} + """ + } } + } - build job: parsedParams.job_name, - parameters: buildParams, - wait: true, - propagate: true - } + stage('Run Critical Jobs (in order)') { + steps { + script { + def criticalJobs = [ + 'hetzner-postgresql-common-RELEASE', + 'hetzner-postgresql-server-autobuild-RELEASE', + 'hetzner-pg_percona_telemetry-autobuild-RELEASE' + ] + + criticalJobs.each { jobKey -> + def trigger = sh(script: "jq -r '.\"${jobKey}\".trigger // false' ${JSON_OUT}", returnStdout: true).trim() + if (trigger != "true") { + echo "[SKIP] ${jobKey} not marked for triggering" + return + } + + def paramJson = sh(script: "jq -c '.\"${jobKey}\".parameters' ${JSON_OUT}", returnStdout: true).trim() + def parsed = readJSON text: paramJson + + def paramList = parsed.collect { k, v -> + v instanceof Boolean ? booleanParam(name: k, value: v) : string(name: k, value: v.toString()) + } + + build job: parsed.job_name, + parameters: paramList, + wait: true, + propagate: true + } + } + } } - } - } - stage('Run Remaining Jobs (in parallel)') { - steps { - script { - def allKeys = sh(script: "jq -r 'keys[]' ${env.YAML_JSON}", returnStdout: true).trim().split('\n') - def criticalJobs = [ - 'hetzner-postgresql-common-RELEASE', - 'hetzner-postgresql-server-autobuild-RELEASE', - 'hetzner-pg_percona_telemetry-autobuild-RELEASE' - ] - - def nonCritical = allKeys.findAll { !(it in criticalJobs) } - - def parallelJobs = [:] - nonCritical.each { jobKey -> - def trigger = sh(script: "jq -r '.\"${jobKey}\".trigger // false' ${env.YAML_JSON}", returnStdout: true).trim() - - if (trigger == "true") { - parallelJobs[jobKey] = { - def rawParams = sh(script: "jq -c '.\"${jobKey}\".parameters // {}' ${env.YAML_JSON}", returnStdout: true).trim() - def parsedParams = readJSON text: rawParams - - def buildParams = parsedParams.collect { k, v -> - v instanceof Boolean ? booleanParam(name: k, value: v) : string(name: k, value: v.toString()) + stage('Run Remaining Jobs (in parallel)') { + steps { + script { + def critical = [ + 'hetzner-postgresql-common-RELEASE', + 'hetzner-postgresql-server-autobuild-RELEASE', + 'hetzner-pg_percona_telemetry-autobuild-RELEASE' + ] + + def keys = sh(script: "jq -r 'keys[]' ${JSON_OUT}", returnStdout: true).trim().split('\n') + def parallelJobs = [:] + + keys.each { jobKey -> + if (critical.contains(jobKey)) return + + def trigger = sh(script: "jq -r '.\"${jobKey}\".trigger // false' ${JSON_OUT}", returnStdout: true).trim() + if (trigger != "true") { + echo "[SKIP] ${jobKey} not marked for triggering" + return + } + + parallelJobs[jobKey] = { + def paramJson = sh(script: "jq -c '.\"${jobKey}\".parameters' ${JSON_OUT}", returnStdout: true).trim() + def parsed = readJSON text: paramJson + + def paramList = parsed.collect { k, v -> + v instanceof Boolean ? booleanParam(name: k, value: v) : string(name: k, value: v.toString()) + } + + build job: parsed.job_name, + parameters: paramList, + wait: parsed.wait ?: false, + propagate: true + } + } + + if (parallelJobs) { + parallel parallelJobs + } else { + echo "[✓] No remaining jobs to run" + } } + } + } + } - build job: parsedParams.job_name, - parameters: buildParams, - wait: true, - propagate: true - } - } else { - echo "[SKIP] ${jobKey} not triggered" + post { + success { + slackNotify( + "#releases-ci", + "#00FF00", + "[${env.JOB_NAME}]: ✅ Build finished successfully for branch ${env.GIT_BRANCH} → ${env.BUILD_URL}" + ) + script { + currentBuild.description = "Built on ${env.GIT_BRANCH}" } - } + cleanUpWS() + } - if (parallelJobs) { - parallel parallelJobs - } else { - echo '[INFO] No remaining jobs to run in parallel.' - } + failure { + slackNotify( + "#releases-ci", + "#FF0000", + "[${env.JOB_NAME}]: ❌ Build failed for branch ${env.GIT_BRANCH} → ${env.BUILD_URL}" + ) + cleanUpWS() } - } - } - } - post { - always { - echo '[CLEANUP] Removing workspace files...' - sh 'sudo rm -rf ./job-config ./job_config.json' - } - failure { - slackSend( - channel: '#releases-ci', - color: '#FF0000', - message: "❌ Jenkins job failed: ${env.JOB_NAME} [${env.BUILD_NUMBER}] - ${env.BUILD_URL}", - tokenCredentialId: '030029ca-99c3-4a0d-b19f-0d6de94966f3' - ) + always { + cleanUpWS() + } } - } } From b7d080dfc816b112c61dacd762f6bed137439c30 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Sat, 2 Aug 2025 16:02:59 +0300 Subject: [PATCH 184/269] trigger fix --- ppg/ppg-controller-trigger.groovy | 127 +++++++++++++----------------- 1 file changed, 56 insertions(+), 71 deletions(-) diff --git a/ppg/ppg-controller-trigger.groovy b/ppg/ppg-controller-trigger.groovy index b598d5005f..eb7ce104ba 100644 --- a/ppg/ppg-controller-trigger.groovy +++ b/ppg/ppg-controller-trigger.groovy @@ -7,61 +7,43 @@ void cleanUpWS() { sh "sudo rm -rf ./* || true" } +def AWS_STASH_PATH + pipeline { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { - string(name: 'CLOUD', defaultValue: 'Hetzner', description: 'Target cloud: Hetzner or AWS') - string(name: 'CONFIG_REPO', defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'Git repo with YAML config') - string(name: 'CONFIG_BRANCH', defaultValue: 'main', description: 'Branch to pull YAML config from') - string(name: 'CONFIG_FILE', defaultValue: 'job_configs/all-jobs-full.yaml', description: 'Relative path to job config YAML file') + string(name: 'CLOUD', defaultValue: 'Hetzner', description: 'Cloud infra: Hetzner or AWS') + string(name: 'CONFIG_REPO', defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'Git repo with job_configs/all-jobs-full.yaml') + string(name: 'CONFIG_BRANCH', defaultValue: 'main', description: 'Branch to pull job config from') } environment { - CONFIG_DIR = 'job-config' - JSON_OUT = 'job_config.json' + CONFIG_FILE = 'postgres-packaging/job_configs/all-jobs-full.yaml' } stages { - stage('Install Tools') { + stage('Install yq & jq') { steps { sh ''' - if ! command -v jq >/dev/null; then - echo "[INFO] Installing jq..." - sudo apt-get update && sudo apt-get install -y jq - fi - if ! command -v yq >/dev/null; then - echo "[INFO] Installing yq..." - sudo wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/download/v4.47.1/yq_linux_amd64 - sudo chmod +x /usr/local/bin/yq - fi - jq --version - yq --version + command -v yq >/dev/null 2>&1 || sudo apt-get update && sudo apt-get install -y yq + command -v jq >/dev/null 2>&1 || sudo apt-get install -y jq ''' } } - stage('Checkout Config') { + stage('Checkout Job Config Repo') { steps { script { echo "[INFO] Cloning CONFIG_REPO: ${params.CONFIG_REPO} (${params.CONFIG_BRANCH})" - } - dir("${CONFIG_DIR}") { - git branch: params.CONFIG_BRANCH, url: params.CONFIG_REPO - } - script { - def yamlPath = "${CONFIG_DIR}/${params.CONFIG_FILE}" - if (!fileExists(yamlPath)) { - error "❌ Config file not found: ${yamlPath}" + dir('postgres-packaging') { + git branch: params.CONFIG_BRANCH, url: params.CONFIG_REPO + } + if (!fileExists(env.CONFIG_FILE)) { + error "❌ Config file not found: ${env.CONFIG_FILE}" } - echo "[✓] YAML config found: ${yamlPath}" - - sh """ - echo '[INFO] Converting YAML to JSON...' - yq eval -o=json '${yamlPath}' > ${JSON_OUT} - """ } } } @@ -76,23 +58,34 @@ pipeline { ] criticalJobs.each { jobKey -> - def trigger = sh(script: "jq -r '.\"${jobKey}\".trigger // false' ${JSON_OUT}", returnStdout: true).trim() + def jobExists = sh(script: "yq eval '.\"${jobKey}\"' ${env.CONFIG_FILE}", returnStatus: true) == 0 + if (!jobExists) { + echo "[SKIP] ${jobKey} not found in config." + return + } + + def trigger = sh(script: "yq eval '.\"${jobKey}\".trigger' ${env.CONFIG_FILE}", returnStdout: true).trim() if (trigger != "true") { - echo "[SKIP] ${jobKey} not marked for triggering" + echo "[SKIP] ${jobKey} not marked for triggering." return } - def paramJson = sh(script: "jq -c '.\"${jobKey}\".parameters' ${JSON_OUT}", returnStdout: true).trim() - def parsed = readJSON text: paramJson + def jobName = sh(script: "yq eval '.\"${jobKey}\".job_name' ${env.CONFIG_FILE}", returnStdout: true).trim() + def paramMap = sh(script: "yq eval '.\"${jobKey}\".parameters' ${env.CONFIG_FILE} | jq -c", returnStdout: true).trim() + def parsed = readJSON text: paramMap def paramList = parsed.collect { k, v -> v instanceof Boolean ? booleanParam(name: k, value: v) : string(name: k, value: v.toString()) } - build job: parsed.job_name, - parameters: paramList, - wait: true, - propagate: true + if (!parsed.containsKey('GIT_BRANCH')) { + paramList << string(name: 'GIT_BRANCH', value: params.CONFIG_BRANCH) + } + + echo "[▶] Triggering critical job: ${jobKey}" + retry(2) { + build job: jobName, parameters: paramList, wait: true, propagate: true + } } } } @@ -107,37 +100,39 @@ pipeline { 'hetzner-pg_percona_telemetry-autobuild-RELEASE' ] - def keys = sh(script: "jq -r 'keys[]' ${JSON_OUT}", returnStdout: true).trim().split('\n') + def allJobKeys = sh(script: "yq eval 'keys' ${env.CONFIG_FILE} | sed 's/- //g'", returnStdout: true).trim().split("\n") def parallelJobs = [:] - keys.each { jobKey -> + allJobKeys.each { jobKey -> if (critical.contains(jobKey)) return - def trigger = sh(script: "jq -r '.\"${jobKey}\".trigger // false' ${JSON_OUT}", returnStdout: true).trim() - if (trigger != "true") { - echo "[SKIP] ${jobKey} not marked for triggering" - return + def trigger = sh(script: "yq eval '.\"${jobKey}\".trigger' ${env.CONFIG_FILE}", returnStdout: true).trim() + if (trigger != "true") return + + def jobName = sh(script: "yq eval '.\"${jobKey}\".job_name' ${env.CONFIG_FILE}", returnStdout: true).trim() + def paramMap = sh(script: "yq eval '.\"${jobKey}\".parameters' ${env.CONFIG_FILE} | jq -c", returnStdout: true).trim() + def parsed = readJSON text: paramMap + + def paramList = parsed.collect { k, v -> + v instanceof Boolean ? booleanParam(name: k, value: v) : string(name: k, value: v.toString()) } - parallelJobs[jobKey] = { - def paramJson = sh(script: "jq -c '.\"${jobKey}\".parameters' ${JSON_OUT}", returnStdout: true).trim() - def parsed = readJSON text: paramJson + if (!parsed.containsKey('GIT_BRANCH')) { + paramList << string(name: 'GIT_BRANCH', value: params.CONFIG_BRANCH) + } - def paramList = parsed.collect { k, v -> - v instanceof Boolean ? booleanParam(name: k, value: v) : string(name: k, value: v.toString()) + parallelJobs[jobKey] = { + echo "[▶] Running parallel job: ${jobKey}" + retry(2) { + build job: jobName, parameters: paramList, wait: true, propagate: true } - - build job: parsed.job_name, - parameters: paramList, - wait: parsed.wait ?: false, - propagate: true } } if (parallelJobs) { parallel parallelJobs } else { - echo "[✓] No remaining jobs to run" + echo "[✓] No parallel jobs to run." } } } @@ -146,26 +141,16 @@ pipeline { post { success { - slackNotify( - "#releases-ci", - "#00FF00", - "[${env.JOB_NAME}]: ✅ Build finished successfully for branch ${env.GIT_BRANCH} → ${env.BUILD_URL}" - ) + slackNotify("#releases-ci", "#00FF00", "[${env.JOB_NAME}]: ✅ Build successful for branch `${params.CONFIG_BRANCH}` → ${env.BUILD_URL}") script { - currentBuild.description = "Built on ${env.GIT_BRANCH}" + currentBuild.description = "Built on ${params.CONFIG_BRANCH}" } cleanUpWS() } - failure { - slackNotify( - "#releases-ci", - "#FF0000", - "[${env.JOB_NAME}]: ❌ Build failed for branch ${env.GIT_BRANCH} → ${env.BUILD_URL}" - ) + slackNotify("#releases-ci", "#FF0000", "[${env.JOB_NAME}]: ❌ Build failed for branch `${params.CONFIG_BRANCH}` → ${env.BUILD_URL}") cleanUpWS() } - always { cleanUpWS() } From 74b1d35cc35ab397908ba78cfd65f3941bb971ce Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Sat, 2 Aug 2025 16:07:47 +0300 Subject: [PATCH 185/269] fix trigger --- ppg/ppg-controller-trigger.groovy | 103 +++++++++++++++--------------- 1 file changed, 50 insertions(+), 53 deletions(-) diff --git a/ppg/ppg-controller-trigger.groovy b/ppg/ppg-controller-trigger.groovy index eb7ce104ba..a0f68970e2 100644 --- a/ppg/ppg-controller-trigger.groovy +++ b/ppg/ppg-controller-trigger.groovy @@ -8,6 +8,7 @@ void cleanUpWS() { } def AWS_STASH_PATH +def jobsConfig = [:] pipeline { agent { @@ -15,9 +16,9 @@ pipeline { } parameters { - string(name: 'CLOUD', defaultValue: 'Hetzner', description: 'Cloud infra: Hetzner or AWS') - string(name: 'CONFIG_REPO', defaultValue: 'https://github.com/percona/postgres-packaging.git', description: 'Git repo with job_configs/all-jobs-full.yaml') - string(name: 'CONFIG_BRANCH', defaultValue: 'main', description: 'Branch to pull job config from') + string(name: 'CONFIG_REPO', defaultValue: 'https://github.com/Percona-Lab/postgres-packaging', description: 'Job config repo') + string(name: 'CONFIG_BRANCH', defaultValue: 'main', description: 'Job config branch') + string(name: 'CLOUD', defaultValue: 'Hetzner', description: 'Cloud target') } environment { @@ -25,15 +26,6 @@ pipeline { } stages { - stage('Install yq & jq') { - steps { - sh ''' - command -v yq >/dev/null 2>&1 || sudo apt-get update && sudo apt-get install -y yq - command -v jq >/dev/null 2>&1 || sudo apt-get install -y jq - ''' - } - } - stage('Checkout Job Config Repo') { steps { script { @@ -41,9 +33,12 @@ pipeline { dir('postgres-packaging') { git branch: params.CONFIG_BRANCH, url: params.CONFIG_REPO } + if (!fileExists(env.CONFIG_FILE)) { error "❌ Config file not found: ${env.CONFIG_FILE}" } + + echo "[✓] Repo checked out and config file exists." } } } @@ -58,34 +53,26 @@ pipeline { ] criticalJobs.each { jobKey -> - def jobExists = sh(script: "yq eval '.\"${jobKey}\"' ${env.CONFIG_FILE}", returnStatus: true) == 0 - if (!jobExists) { + def exists = sh(script: "yq eval '.\"${jobKey}\"' ${env.CONFIG_FILE} > /dev/null 2>&1", returnStatus: true) == 0 + if (!exists) { echo "[SKIP] ${jobKey} not found in config." return } - def trigger = sh(script: "yq eval '.\"${jobKey}\".trigger' ${env.CONFIG_FILE}", returnStdout: true).trim() - if (trigger != "true") { - echo "[SKIP] ${jobKey} not marked for triggering." - return - } - - def jobName = sh(script: "yq eval '.\"${jobKey}\".job_name' ${env.CONFIG_FILE}", returnStdout: true).trim() - def paramMap = sh(script: "yq eval '.\"${jobKey}\".parameters' ${env.CONFIG_FILE} | jq -c", returnStdout: true).trim() - def parsed = readJSON text: paramMap + def paramsJSON = sh(script: "yq eval -o=json '.\"${jobKey}\".parameters // {}' ${env.CONFIG_FILE}", returnStdout: true).trim() + def paramMap = readJSON text: paramsJSON - def paramList = parsed.collect { k, v -> - v instanceof Boolean ? booleanParam(name: k, value: v) : string(name: k, value: v.toString()) + def buildParams = paramMap.collect { k, v -> + v instanceof Boolean ? + booleanParam(name: k, value: v) : + string(name: k, value: v.toString()) } - if (!parsed.containsKey('GIT_BRANCH')) { - paramList << string(name: 'GIT_BRANCH', value: params.CONFIG_BRANCH) - } - - echo "[▶] Triggering critical job: ${jobKey}" - retry(2) { - build job: jobName, parameters: paramList, wait: true, propagate: true - } + echo "[▶] Running critical job: ${jobKey}" + build job: jobKey, + parameters: buildParams, + wait: true, + propagate: true } } } @@ -100,32 +87,32 @@ pipeline { 'hetzner-pg_percona_telemetry-autobuild-RELEASE' ] - def allJobKeys = sh(script: "yq eval 'keys' ${env.CONFIG_FILE} | sed 's/- //g'", returnStdout: true).trim().split("\n") - def parallelJobs = [:] + def jobKeys = sh(script: "yq eval 'keys' ${env.CONFIG_FILE}", returnStdout: true) + .split('\n') + .collect { it.trim().replaceAll(/^[- ]/, '') } + .findAll { it && !critical.contains(it) } - allJobKeys.each { jobKey -> - if (critical.contains(jobKey)) return + def parallelJobs = [:] - def trigger = sh(script: "yq eval '.\"${jobKey}\".trigger' ${env.CONFIG_FILE}", returnStdout: true).trim() + jobKeys.each { jobKey -> + def trigger = sh(script: "yq eval '.\"${jobKey}\".trigger // false' ${env.CONFIG_FILE}", returnStdout: true).trim() if (trigger != "true") return - def jobName = sh(script: "yq eval '.\"${jobKey}\".job_name' ${env.CONFIG_FILE}", returnStdout: true).trim() - def paramMap = sh(script: "yq eval '.\"${jobKey}\".parameters' ${env.CONFIG_FILE} | jq -c", returnStdout: true).trim() - def parsed = readJSON text: paramMap + def paramsJSON = sh(script: "yq eval -o=json '.\"${jobKey}\".parameters // {}' ${env.CONFIG_FILE}", returnStdout: true).trim() + def paramMap = readJSON text: paramsJSON - def paramList = parsed.collect { k, v -> - v instanceof Boolean ? booleanParam(name: k, value: v) : string(name: k, value: v.toString()) - } - - if (!parsed.containsKey('GIT_BRANCH')) { - paramList << string(name: 'GIT_BRANCH', value: params.CONFIG_BRANCH) + def buildParams = paramMap.collect { k, v -> + v instanceof Boolean ? + booleanParam(name: k, value: v) : + string(name: k, value: v.toString()) } parallelJobs[jobKey] = { echo "[▶] Running parallel job: ${jobKey}" - retry(2) { - build job: jobName, parameters: paramList, wait: true, propagate: true - } + build job: jobKey, + parameters: buildParams, + wait: true, + propagate: true } } @@ -141,16 +128,26 @@ pipeline { post { success { - slackNotify("#releases-ci", "#00FF00", "[${env.JOB_NAME}]: ✅ Build successful for branch `${params.CONFIG_BRANCH}` → ${env.BUILD_URL}") + slackNotify( + "#releases-ci", + "#00FF00", + "[${env.JOB_NAME}]: ✅ Build finished successfully for branch ${params.CONFIG_BRANCH} → ${env.BUILD_URL}" + ) script { - currentBuild.description = "Built on ${params.CONFIG_BRANCH}" + currentBuild.description = "Built from ${params.CONFIG_BRANCH}" } cleanUpWS() } + failure { - slackNotify("#releases-ci", "#FF0000", "[${env.JOB_NAME}]: ❌ Build failed for branch `${params.CONFIG_BRANCH}` → ${env.BUILD_URL}") + slackNotify( + "#releases-ci", + "#FF0000", + "[${env.JOB_NAME}]: ❌ Build failed for branch ${params.CONFIG_BRANCH} → ${env.BUILD_URL}" + ) cleanUpWS() } + always { cleanUpWS() } From be95991136438104cda61433635da6b229f29705 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Sat, 2 Aug 2025 16:37:21 +0300 Subject: [PATCH 186/269] improve trigger --- ppg/ppg-controller-trigger.groovy | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/ppg/ppg-controller-trigger.groovy b/ppg/ppg-controller-trigger.groovy index a0f68970e2..79054293d0 100644 --- a/ppg/ppg-controller-trigger.groovy +++ b/ppg/ppg-controller-trigger.groovy @@ -39,13 +39,6 @@ pipeline { } echo "[✓] Repo checked out and config file exists." - } - } - } - - stage('Run Critical Jobs (in order)') { - steps { - script { def criticalJobs = [ 'hetzner-postgresql-common-RELEASE', 'hetzner-postgresql-server-autobuild-RELEASE', @@ -74,18 +67,6 @@ pipeline { wait: true, propagate: true } - } - } - } - - stage('Run Remaining Jobs (in parallel)') { - steps { - script { - def critical = [ - 'hetzner-postgresql-common-RELEASE', - 'hetzner-postgresql-server-autobuild-RELEASE', - 'hetzner-pg_percona_telemetry-autobuild-RELEASE' - ] def jobKeys = sh(script: "yq eval 'keys' ${env.CONFIG_FILE}", returnStdout: true) .split('\n') From aed2ee7ab0b20809222150c8710539f5ec257f0a Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Sat, 2 Aug 2025 16:42:09 +0300 Subject: [PATCH 187/269] fix --- ppg/ppg-controller-trigger.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ppg/ppg-controller-trigger.groovy b/ppg/ppg-controller-trigger.groovy index 79054293d0..03ef0c4099 100644 --- a/ppg/ppg-controller-trigger.groovy +++ b/ppg/ppg-controller-trigger.groovy @@ -22,7 +22,7 @@ pipeline { } environment { - CONFIG_FILE = 'postgres-packaging/job_configs/all-jobs-full.yaml' + CONFIG_FILE = 'job_configs/all-jobs-full.yaml' } stages { From 79ab778d2da3c9953968e5ab714a2892c61730a2 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Sat, 2 Aug 2025 16:45:16 +0300 Subject: [PATCH 188/269] add yq --- ppg/ppg-controller-trigger.groovy | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/ppg/ppg-controller-trigger.groovy b/ppg/ppg-controller-trigger.groovy index 03ef0c4099..9f73bfd226 100644 --- a/ppg/ppg-controller-trigger.groovy +++ b/ppg/ppg-controller-trigger.groovy @@ -22,13 +22,25 @@ pipeline { } environment { - CONFIG_FILE = 'job_configs/all-jobs-full.yaml' + CONFIG_FILE = 'postgres-packaging/job_configs/all-jobs-full.yaml' } stages { stage('Checkout Job Config Repo') { steps { script { + echo "[INFO] Installing jq and yq" + sudo apt-get update -qq + sudo apt-get install -y jq + + # Install yq from official binary (v4.x) + YQ_BIN=/usr/local/bin/yq + curl -sLo $YQ_BIN https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 + chmod +x $YQ_BIN + + echo "[✓] jq version: $(jq --version)" + echo "[✓] yq version: $(yq --version)" + echo "[INFO] Cloning CONFIG_REPO: ${params.CONFIG_REPO} (${params.CONFIG_BRANCH})" dir('postgres-packaging') { git branch: params.CONFIG_BRANCH, url: params.CONFIG_REPO From 13637391adbe026792698d9825dcae39b5f64f3b Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Sat, 2 Aug 2025 16:46:04 +0300 Subject: [PATCH 189/269] fix --- ppg/ppg-controller-trigger.groovy | 1 - 1 file changed, 1 deletion(-) diff --git a/ppg/ppg-controller-trigger.groovy b/ppg/ppg-controller-trigger.groovy index 9f73bfd226..2e6d6cce75 100644 --- a/ppg/ppg-controller-trigger.groovy +++ b/ppg/ppg-controller-trigger.groovy @@ -33,7 +33,6 @@ pipeline { sudo apt-get update -qq sudo apt-get install -y jq - # Install yq from official binary (v4.x) YQ_BIN=/usr/local/bin/yq curl -sLo $YQ_BIN https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 chmod +x $YQ_BIN From 32775abe41e6cf65c402ab77751db530807cc9a7 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Sat, 2 Aug 2025 16:47:11 +0300 Subject: [PATCH 190/269] fix --- ppg/ppg-controller-trigger.groovy | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ppg/ppg-controller-trigger.groovy b/ppg/ppg-controller-trigger.groovy index 2e6d6cce75..9ab3f40b1c 100644 --- a/ppg/ppg-controller-trigger.groovy +++ b/ppg/ppg-controller-trigger.groovy @@ -33,9 +33,8 @@ pipeline { sudo apt-get update -qq sudo apt-get install -y jq - YQ_BIN=/usr/local/bin/yq - curl -sLo $YQ_BIN https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 - chmod +x $YQ_BIN + curl -sLo /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 + chmod +x /usr/local/bin/yq echo "[✓] jq version: $(jq --version)" echo "[✓] yq version: $(yq --version)" From 3fa1740c522d7928d571f2eabd7a4a6c45430ac5 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Sat, 2 Aug 2025 16:48:35 +0300 Subject: [PATCH 191/269] fix yq --- ppg/ppg-controller-trigger.groovy | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ppg/ppg-controller-trigger.groovy b/ppg/ppg-controller-trigger.groovy index 9ab3f40b1c..d9886197df 100644 --- a/ppg/ppg-controller-trigger.groovy +++ b/ppg/ppg-controller-trigger.groovy @@ -33,7 +33,8 @@ pipeline { sudo apt-get update -qq sudo apt-get install -y jq - curl -sLo /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 + wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 + mv yq_linux_amd64 /usr/local/bin/yq chmod +x /usr/local/bin/yq echo "[✓] jq version: $(jq --version)" From 576f2dbbdfae9fb37df926615f5774ac2e74fc9e Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Sat, 2 Aug 2025 16:49:57 +0300 Subject: [PATCH 192/269] fix yq --- ppg/ppg-controller-trigger.groovy | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ppg/ppg-controller-trigger.groovy b/ppg/ppg-controller-trigger.groovy index d9886197df..965fad6e59 100644 --- a/ppg/ppg-controller-trigger.groovy +++ b/ppg/ppg-controller-trigger.groovy @@ -33,9 +33,9 @@ pipeline { sudo apt-get update -qq sudo apt-get install -y jq - wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 - mv yq_linux_amd64 /usr/local/bin/yq - chmod +x /usr/local/bin/yq + wget -q https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 + sudo mv yq_linux_amd64 /usr/local/bin/yq + sudo chmod +x /usr/local/bin/yq echo "[✓] jq version: $(jq --version)" echo "[✓] yq version: $(yq --version)" From 2a2b4cb314da50163f2855560b7aa543b60c6142 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Sat, 2 Aug 2025 16:52:10 +0300 Subject: [PATCH 193/269] fix --- ppg/ppg-controller-trigger.groovy | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/ppg/ppg-controller-trigger.groovy b/ppg/ppg-controller-trigger.groovy index 965fad6e59..fa5a2b6a85 100644 --- a/ppg/ppg-controller-trigger.groovy +++ b/ppg/ppg-controller-trigger.groovy @@ -30,15 +30,15 @@ pipeline { steps { script { echo "[INFO] Installing jq and yq" - sudo apt-get update -qq - sudo apt-get install -y jq + sh "sudo apt-get update -qq" + sh "sudo apt-get install -y jq" - wget -q https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 - sudo mv yq_linux_amd64 /usr/local/bin/yq - sudo chmod +x /usr/local/bin/yq + sh "wget -q https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64" + sh "sudo mv yq_linux_amd64 /usr/local/bin/yq" + sh "sudo chmod +x /usr/local/bin/yq" - echo "[✓] jq version: $(jq --version)" - echo "[✓] yq version: $(yq --version)" + sh "echo '[✓] jq version: \$(jq --version)'" + sh "echo '[✓] yq version: \$(yq --version)'" echo "[INFO] Cloning CONFIG_REPO: ${params.CONFIG_REPO} (${params.CONFIG_BRANCH})" dir('postgres-packaging') { @@ -82,7 +82,7 @@ pipeline { def jobKeys = sh(script: "yq eval 'keys' ${env.CONFIG_FILE}", returnStdout: true) .split('\n') .collect { it.trim().replaceAll(/^[- ]/, '') } - .findAll { it && !critical.contains(it) } + .findAll { it && !criticalJobs.contains(it) } def parallelJobs = [:] @@ -144,4 +144,4 @@ pipeline { cleanUpWS() } } -} +} \ No newline at end of file From 2727a0b99e29114eb59681dd4bd1a086a0d3373a Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Sat, 2 Aug 2025 16:56:51 +0300 Subject: [PATCH 194/269] use jq --- ppg/ppg-controller-trigger.groovy | 40 +++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/ppg/ppg-controller-trigger.groovy b/ppg/ppg-controller-trigger.groovy index fa5a2b6a85..0e26eda06e 100644 --- a/ppg/ppg-controller-trigger.groovy +++ b/ppg/ppg-controller-trigger.groovy @@ -64,12 +64,20 @@ pipeline { } def paramsJSON = sh(script: "yq eval -o=json '.\"${jobKey}\".parameters // {}' ${env.CONFIG_FILE}", returnStdout: true).trim() - def paramMap = readJSON text: paramsJSON - - def buildParams = paramMap.collect { k, v -> - v instanceof Boolean ? - booleanParam(name: k, value: v) : - string(name: k, value: v.toString()) + + // Parse parameters using jq instead of readJSON + def paramKeys = sh(script: "echo '${paramsJSON}' | jq -r 'keys[]' 2>/dev/null || echo ''", returnStdout: true).trim().split('\n').findAll { it } + def buildParams = [] + + paramKeys.each { key -> + def value = sh(script: "echo '${paramsJSON}' | jq -r '.\"${key}\"'", returnStdout: true).trim() + def valueType = sh(script: "echo '${paramsJSON}' | jq -r 'type_of(.\"${key}\")'", returnStdout: true).trim() + + if (valueType == "boolean") { + buildParams.add(booleanParam(name: key, value: value == "true")) + } else { + buildParams.add(string(name: key, value: value)) + } } echo "[▶] Running critical job: ${jobKey}" @@ -91,12 +99,20 @@ pipeline { if (trigger != "true") return def paramsJSON = sh(script: "yq eval -o=json '.\"${jobKey}\".parameters // {}' ${env.CONFIG_FILE}", returnStdout: true).trim() - def paramMap = readJSON text: paramsJSON - - def buildParams = paramMap.collect { k, v -> - v instanceof Boolean ? - booleanParam(name: k, value: v) : - string(name: k, value: v.toString()) + + // Parse parameters using jq instead of readJSON + def paramKeys = sh(script: "echo '${paramsJSON}' | jq -r 'keys[]' 2>/dev/null || echo ''", returnStdout: true).trim().split('\n').findAll { it } + def buildParams = [] + + paramKeys.each { key -> + def value = sh(script: "echo '${paramsJSON}' | jq -r '.\"${key}\"'", returnStdout: true).trim() + def valueType = sh(script: "echo '${paramsJSON}' | jq -r 'type_of(.\"${key}\")'", returnStdout: true).trim() + + if (valueType == "boolean") { + buildParams.add(booleanParam(name: key, value: value == "true")) + } else { + buildParams.add(string(name: key, value: value)) + } } parallelJobs[jobKey] = { From 9b82b96fdaba681b3db0ef26bab71a8b52b6def4 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Sat, 2 Aug 2025 16:59:58 +0300 Subject: [PATCH 195/269] fix jq call --- ppg/ppg-controller-trigger.groovy | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ppg/ppg-controller-trigger.groovy b/ppg/ppg-controller-trigger.groovy index 0e26eda06e..ae24909293 100644 --- a/ppg/ppg-controller-trigger.groovy +++ b/ppg/ppg-controller-trigger.groovy @@ -71,10 +71,11 @@ pipeline { paramKeys.each { key -> def value = sh(script: "echo '${paramsJSON}' | jq -r '.\"${key}\"'", returnStdout: true).trim() - def valueType = sh(script: "echo '${paramsJSON}' | jq -r 'type_of(.\"${key}\")'", returnStdout: true).trim() + // Check if value is boolean by testing if it's exactly "true" or "false" + def rawValue = sh(script: "echo '${paramsJSON}' | jq '.\"${key}\"'", returnStdout: true).trim() - if (valueType == "boolean") { - buildParams.add(booleanParam(name: key, value: value == "true")) + if (rawValue == "true" || rawValue == "false") { + buildParams.add(booleanParam(name: key, value: rawValue == "true")) } else { buildParams.add(string(name: key, value: value)) } From ddcc2cdbd8f9d5d419132787bd5a1614da2c8d78 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Sun, 3 Aug 2025 23:44:31 +0300 Subject: [PATCH 196/269] improve ppg-ha build --- ppg/ppg-server-ha.groovy | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ppg/ppg-server-ha.groovy b/ppg/ppg-server-ha.groovy index 0a270bd8ab..4161365cb7 100644 --- a/ppg/ppg-server-ha.groovy +++ b/ppg/ppg-server-ha.groovy @@ -75,11 +75,17 @@ pipeline { sh ''' REPO_UPLOAD_PATH=$(grep "UPLOAD" test/ppg-server-ha.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") + echo "INFO: UPLOAD PATH: ${REPO_UPLOAD_PATH}" echo ${REPO_UPLOAD_PATH} > uploadPath echo ${AWS_STASH_PATH} > awsUploadPath cat test/ppg-server-ha.properties cat uploadPath ''' + script { + def path = sh(script: 'cat uploadPath', returnStdout: true).trim() + currentBuild.description = "UPLOAD_PATH: ${path}" + } + archiveArtifacts artifacts: 'uploadPath', fingerprint: true script { AWS_STASH_PATH = sh(returnStdout: true, script: "cat awsUploadPath").trim() } From a9bfb3274c8fe03059b42159c9fb5e188b1d3aad Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Fri, 1 Aug 2025 18:00:20 +0300 Subject: [PATCH 197/269] PKG-778 cloud.cd: htz cloud change baseOS deb12 -> f42 --- IaC/cloud.cd/init.groovy.d/htz.cloud.groovy | 182 ++++++++++---------- 1 file changed, 88 insertions(+), 94 deletions(-) diff --git a/IaC/cloud.cd/init.groovy.d/htz.cloud.groovy b/IaC/cloud.cd/init.groovy.d/htz.cloud.groovy index bccfa95592..1eca3e625c 100644 --- a/IaC/cloud.cd/init.groovy.d/htz.cloud.groovy +++ b/IaC/cloud.cd/init.groovy.d/htz.cloud.groovy @@ -7,104 +7,96 @@ import java.util.logging.Logger def cloudName = "cloud-htz" imageMap = [:] // ID TYPE NAME DESCRIPTION ARCHITECTURE IMAGE SIZE DISK SIZE CREATED DEPRECATED -imageMap['deb12-x64'] = '114690387' // 114690387 system debian-12 Debian 12 x86 - 5 GB Tue Jun 13 09:00:02 EEST 2023 - -imageMap['deb12-aarch64'] = '114690389' // 114690389 system debian-12 Debian 12 arm - 5 GB Tue Jun 13 09:00:03 EEST 2023 - -imageMap['launcher-x64'] = imageMap['deb12-x64'] +imageMap['fedora42-x64'] = '232895138' // 232895138 system fedora-42 Fedora 42 x86 - 5 GB Thu Apr 24 10:00:32 EEST 2025 - +imageMap['fedora42-aarch64'] = '232895264' // 232895264 system fedora-42 Fedora 42 arm - 5 GB Thu Apr 24 10:01:01 EEST 2025 - +imageMap['launcher-x64'] = imageMap['fedora42-x64'] execMap = [:] -execMap['deb'] = 1 -execMap['deb12-x64-nbg1'] = execMap['deb'] -execMap['deb12-x64-hel1'] = execMap['deb'] -execMap['deb12-x64-fsn1'] = execMap['deb'] -execMap['deb12-aarch64-nbg1'] = execMap['deb'] -execMap['deb12-aarch64-hel1'] = execMap['deb'] -execMap['deb12-aarch64-fsn1'] = execMap['deb'] -execMap['deb12-x64-nbg1-min'] = execMap['deb'] -execMap['deb12-x64-hel1-min'] = execMap['deb'] -execMap['deb12-x64-fsn1-min'] = execMap['deb'] -execMap['deb12-aarch64-nbg1-min'] = execMap['deb'] -execMap['deb12-aarch64-hel1-min'] = execMap['deb'] -execMap['deb12-aarch64-fsn1-min'] = execMap['deb'] +execMap['fedora'] = 1 +execMap['fedora42-x64-nbg1'] = execMap['fedora'] +execMap['fedora42-x64-hel1'] = execMap['fedora'] +execMap['fedora42-x64-fsn1'] = execMap['fedora'] +execMap['fedora42-aarch64-nbg1'] = execMap['fedora'] +execMap['fedora42-aarch64-hel1'] = execMap['fedora'] +execMap['fedora42-aarch64-fsn1'] = execMap['fedora'] +execMap['fedora42-x64-nbg1-min'] = execMap['fedora'] +execMap['fedora42-x64-hel1-min'] = execMap['fedora'] +execMap['fedora42-x64-fsn1-min'] = execMap['fedora'] +execMap['fedora42-aarch64-nbg1-min'] = execMap['fedora'] +execMap['fedora42-aarch64-hel1-min'] = execMap['fedora'] +execMap['fedora42-aarch64-fsn1-min'] = execMap['fedora'] execMap['launcher-x64-nbg1'] = 30 execMap['launcher-x64-hel1'] = 30 execMap['launcher-x64-fsn1'] = 30 bootDeadlineMap =[:] bootDeadlineMap['default'] = 3 -bootDeadlineMap['deb12-x64-nbg1'] = bootDeadlineMap['default'] -bootDeadlineMap['deb12-x64-hel1'] = bootDeadlineMap['default'] -bootDeadlineMap['deb12-x64-fsn1'] = bootDeadlineMap['default'] -bootDeadlineMap['deb12-aarch64-nbg1'] = bootDeadlineMap['default'] -bootDeadlineMap['deb12-aarch64-hel1'] = bootDeadlineMap['default'] -bootDeadlineMap['deb12-aarch64-fsn1'] = bootDeadlineMap['default'] -bootDeadlineMap['deb12-x64-nbg1-min'] = bootDeadlineMap['default'] -bootDeadlineMap['deb12-x64-hel1-min'] = bootDeadlineMap['default'] -bootDeadlineMap['deb12-x64-fsn1-min'] = bootDeadlineMap['default'] -bootDeadlineMap['deb12-aarch64-nbg1-min'] = bootDeadlineMap['default'] -bootDeadlineMap['deb12-aarch64-hel1-min'] = bootDeadlineMap['default'] -bootDeadlineMap['deb12-aarch64-fsn1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['fedora42-x64-nbg1'] = bootDeadlineMap['default'] +bootDeadlineMap['fedora42-x64-hel1'] = bootDeadlineMap['default'] +bootDeadlineMap['fedora42-x64-fsn1'] = bootDeadlineMap['default'] +bootDeadlineMap['fedora42-aarch64-nbg1'] = bootDeadlineMap['default'] +bootDeadlineMap['fedora42-aarch64-hel1'] = bootDeadlineMap['default'] +bootDeadlineMap['fedora42-aarch64-fsn1'] = bootDeadlineMap['default'] +bootDeadlineMap['fedora42-x64-nbg1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['fedora42-x64-hel1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['fedora42-x64-fsn1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['fedora42-aarch64-nbg1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['fedora42-aarch64-hel1-min'] = bootDeadlineMap['default'] +bootDeadlineMap['fedora42-aarch64-fsn1-min'] = bootDeadlineMap['default'] bootDeadlineMap['launcher-x64-nbg1'] = bootDeadlineMap['default'] bootDeadlineMap['launcher-x64-hel1'] = bootDeadlineMap['default'] bootDeadlineMap['launcher-x64-fsn1'] = bootDeadlineMap['default'] jvmOptsMap = [:] -jvmOptsMap['deb12'] = '-Xmx512m -Xms512m --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED' -jvmOptsMap['deb12-x64-nbg1'] = jvmOptsMap['deb12'] -jvmOptsMap['deb12-x64-hel1'] = jvmOptsMap['deb12'] -jvmOptsMap['deb12-x64-fsn1'] = jvmOptsMap['deb12'] -jvmOptsMap['deb12-aarch64-nbg1'] = jvmOptsMap['deb12'] -jvmOptsMap['deb12-aarch64-hel1'] = jvmOptsMap['deb12'] -jvmOptsMap['deb12-aarch64-fsn1'] = jvmOptsMap['deb12'] -jvmOptsMap['deb12-x64-nbg1-min'] = jvmOptsMap['deb12'] -jvmOptsMap['deb12-x64-hel1-min'] = jvmOptsMap['deb12'] -jvmOptsMap['deb12-x64-fsn1-min'] = jvmOptsMap['deb12'] -jvmOptsMap['deb12-aarch64-nbg1-min'] = jvmOptsMap['deb12'] -jvmOptsMap['deb12-aarch64-hel1-min'] = jvmOptsMap['deb12'] -jvmOptsMap['deb12-aarch64-fsn1-min'] = jvmOptsMap['deb12'] -jvmOptsMap['launcher-x64-nbg1'] = jvmOptsMap['deb12'] -jvmOptsMap['launcher-x64-hel1'] = jvmOptsMap['deb12'] -jvmOptsMap['launcher-x64-fsn1'] = jvmOptsMap['deb12'] +jvmOptsMap['fedora42'] = '-Xmx512m -Xms512m --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED' +jvmOptsMap['fedora42-x64-nbg1'] = jvmOptsMap['fedora42'] +jvmOptsMap['fedora42-x64-hel1'] = jvmOptsMap['fedora42'] +jvmOptsMap['fedora42-x64-fsn1'] = jvmOptsMap['fedora42'] +jvmOptsMap['fedora42-aarch64-nbg1'] = jvmOptsMap['fedora42'] +jvmOptsMap['fedora42-aarch64-hel1'] = jvmOptsMap['fedora42'] +jvmOptsMap['fedora42-aarch64-fsn1'] = jvmOptsMap['fedora42'] +jvmOptsMap['fedora42-x64-nbg1-min'] = jvmOptsMap['fedora42'] +jvmOptsMap['fedora42-x64-hel1-min'] = jvmOptsMap['fedora42'] +jvmOptsMap['fedora42-x64-fsn1-min'] = jvmOptsMap['fedora42'] +jvmOptsMap['fedora42-aarch64-nbg1-min'] = jvmOptsMap['fedora42'] +jvmOptsMap['fedora42-aarch64-hel1-min'] = jvmOptsMap['fedora42'] +jvmOptsMap['fedora42-aarch64-fsn1-min'] = jvmOptsMap['fedora42'] +jvmOptsMap['launcher-x64-nbg1'] = jvmOptsMap['fedora42'] +jvmOptsMap['launcher-x64-hel1'] = jvmOptsMap['fedora42'] +jvmOptsMap['launcher-x64-fsn1'] = jvmOptsMap['fedora42'] labelMap = [:] -labelMap['deb12-x64-min'] = 'docker-x64-min docker-deb12-x64-min deb12-x64-min' -labelMap['deb12-aarch64-min'] = 'docker-aarch64-min docker-deb12-aarch64-min deb12-aarch64-min' -labelMap['deb12-x64'] = 'docker-x64 docker-deb12-x64 deb12-x64' -labelMap['deb12-aarch64'] = 'docker-aarch64 docker-deb12-aarch64 deb12-aarch64' +labelMap['fedora42-x64-min'] = 'docker-x64-min docker-fedora42-x64-min fedora42-x64-min' +labelMap['fedora42-aarch64-min'] = 'docker-aarch64-min docker-fedora42-aarch64-min fedora42-aarch64-min' +labelMap['fedora42-x64'] = 'docker-x64 docker-fedora42-x64 fedora42-x64' +labelMap['fedora42-aarch64'] = 'docker-aarch64 docker-fedora42-aarch64 fedora42-aarch64' labelMap['launcher-x64'] = 'launcher-x64' networkMap = [:] networkMap['percona-vpc-eu'] = '10442325' // percona-vpc-eu initMap = [:] -initMap['deb-docker'] = '''#!/bin/bash -x +initMap['fedora-docker'] = '''#!/bin/bash -x set -o xtrace sudo fallocate -l 32G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile - - export DEBIAN_FRONTEND=noninteractive - until sudo apt-get update; do - sleep 1 - echo try again - done - until sudo apt-get -y install openjdk-17-jre-headless apt-transport-https ca-certificates curl gnupg lsb-release unzip git; do + until sudo dnf update -y; do sleep 1 - echo try again + echo "try again" done - curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg - echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null - until sudo apt-get update; do + until sudo dnf install -y java-21-openjdk-headless ca-certificates curl gnupg unzip git dnf-plugins-core; do sleep 1 - echo try again + echo "try again" done - until sudo apt-get -y install docker-ce docker-ce-cli containerd.io; do + until sudo dnf install -y docker npm; do sleep 1 - echo try again + echo "try again" done if ! $(aws --version | grep -q 'aws-cli/2'); then find /tmp -maxdepth 1 -name "*aws*" | xargs sudo rm -rf - until curl "https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m)-2.22.35.zip" -o "/tmp/awscliv2.zip"; do + until curl "https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m).zip" -o "/tmp/awscliv2.zip"; do sleep 1 echo try again done @@ -120,46 +112,48 @@ initMap['deb-docker'] = '''#!/bin/bash -x sudo sysctl -w fs.aio-max-nr=1048576 || true sudo sysctl -w fs.file-max=6815744 || true echo "* soft core unlimited" | sudo tee -a /etc/security/limits.conf - sudo sed -i.bak -e 's^ExecStart=.*^ExecStart=/usr/bin/dockerd --data-root=/mnt/docker --default-ulimit nofile=900000:900000^' /lib/systemd/system/docker.service + sudo sed -i.bak -e 's/nofile=1024:4096/nofile=900000:900000/; s/DAEMON_MAXFILES=.*/DAEMON_MAXFILES=990000/' /etc/sysconfig/docker + echo 'DOCKER_STORAGE_OPTIONS="--data-root=/mnt/docker"' | sudo tee -a /etc/sysconfig/docker-storage + sudo sed -i.bak -e 's|^ExecStart=.*|ExecStart=/usr/bin/dockerd --data-root=/mnt/docker --default-ulimit nofile=900000:900000|' /usr/lib/systemd/system/docker.service sudo systemctl daemon-reload sudo install -o root -g root -d /mnt/docker sudo usermod -aG docker $(id -u -n) sudo mkdir -p /etc/docker echo '{"experimental": true, "ipv6": true, "fixed-cidr-v6": "fd3c:a8b0:18eb:5c06::/64"}' | sudo tee /etc/docker/daemon.json - sudo systemctl restart docker - echo "* * * * * root /usr/sbin/route add default gw 10.177.1.1 eth0" | sudo tee /etc/cron.d/fix-default-route + sudo systemctl status docker || sudo systemctl start docker + echo "* * * * * root /usr/sbin/route add default gw 10.30.232.1 eth0" | sudo tee /etc/cron.d/fix-default-route ''' -initMap['deb12-x64-nbg1'] = initMap['deb-docker'] -initMap['deb12-x64-hel1'] = initMap['deb-docker'] -initMap['deb12-x64-fsn1'] = initMap['deb-docker'] -initMap['deb12-aarch64-nbg1'] = initMap['deb-docker'] -initMap['deb12-aarch64-hel1'] = initMap['deb-docker'] -initMap['deb12-aarch64-fsn1'] = initMap['deb-docker'] -initMap['deb12-x64-nbg1-min'] = initMap['deb-docker'] -initMap['deb12-x64-hel1-min'] = initMap['deb-docker'] -initMap['deb12-x64-fsn1-min'] = initMap['deb-docker'] -initMap['deb12-aarch64-nbg1-min'] = initMap['deb-docker'] -initMap['deb12-aarch64-hel1-min'] = initMap['deb-docker'] -initMap['deb12-aarch64-fsn1-min'] = initMap['deb-docker'] -initMap['launcher-x64-nbg1'] = initMap['deb-docker'] -initMap['launcher-x64-hel1'] = initMap['deb-docker'] -initMap['launcher-x64-fsn1'] = initMap['deb-docker'] +initMap['fedora42-x64-nbg1'] = initMap['fedora-docker'] +initMap['fedora42-x64-hel1'] = initMap['fedora-docker'] +initMap['fedora42-x64-fsn1'] = initMap['fedora-docker'] +initMap['fedora42-aarch64-nbg1'] = initMap['fedora-docker'] +initMap['fedora42-aarch64-hel1'] = initMap['fedora-docker'] +initMap['fedora42-aarch64-fsn1'] = initMap['fedora-docker'] +initMap['fedora42-x64-nbg1-min'] = initMap['fedora-docker'] +initMap['fedora42-x64-hel1-min'] = initMap['fedora-docker'] +initMap['fedora42-x64-fsn1-min'] = initMap['fedora-docker'] +initMap['fedora42-aarch64-nbg1-min'] = initMap['fedora-docker'] +initMap['fedora42-aarch64-hel1-min'] = initMap['fedora-docker'] +initMap['fedora42-aarch64-fsn1-min'] = initMap['fedora-docker'] +initMap['launcher-x64-nbg1'] = initMap['fedora-docker'] +initMap['launcher-x64-hel1'] = initMap['fedora-docker'] +initMap['launcher-x64-fsn1'] = initMap['fedora-docker'] def templates = [ /* new HetznerServerTemplate("ubuntu20-cx21", "java", "name=ubuntu20-docker", "fsn1", "cx21"), */ // tmplName tmplLabels tmplImage region server type - new HetznerServerTemplate("deb12-x64-nbg1-min", labelMap['deb12-x64-min'], imageMap['deb12-x64'], "nbg1", "cpx41"), - new HetznerServerTemplate("deb12-aarch64-nbg1-min", labelMap['deb12-aarch64-min'], imageMap['deb12-aarch64'], "nbg1", "cax31"), - new HetznerServerTemplate("deb12-x64-hel1-min", labelMap['deb12-x64-min'], imageMap['deb12-x64'], "hel1", "cpx41"), - new HetznerServerTemplate("deb12-aarch64-hel1-min", labelMap['deb12-aarch64-min'], imageMap['deb12-aarch64'], "hel1", "cax31"), - new HetznerServerTemplate("deb12-x64-fsn1-min", labelMap['deb12-x64-min'], imageMap['deb12-x64'], "fsn1", "cpx41"), - new HetznerServerTemplate("deb12-aarch64-fsn1-min", labelMap['deb12-aarch64-min'], imageMap['deb12-aarch64'], "fsn1", "cax31"), - new HetznerServerTemplate("deb12-x64-nbg1", labelMap['deb12-x64'], imageMap['deb12-x64'], "nbg1", "cpx51"), - new HetznerServerTemplate("deb12-aarch64-nbg1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "nbg1", "cax41"), - new HetznerServerTemplate("deb12-x64-hel1", labelMap['deb12-x64'], imageMap['deb12-x64'], "hel1", "cpx51"), - new HetznerServerTemplate("deb12-aarch64-hel1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "hel1", "cax41"), - new HetznerServerTemplate("deb12-x64-fsn1", labelMap['deb12-x64'], imageMap['deb12-x64'], "fsn1", "cpx51"), - new HetznerServerTemplate("deb12-aarch64-fsn1", labelMap['deb12-aarch64'], imageMap['deb12-aarch64'], "fsn1", "cax41"), + new HetznerServerTemplate("fedora42-x64-nbg1-min", labelMap['fedora42-x64-min'], imageMap['fedora42-x64'], "nbg1", "cpx41"), + new HetznerServerTemplate("fedora42-aarch64-nbg1-min", labelMap['fedora42-aarch64-min'], imageMap['fedora42-aarch64'], "nbg1", "cax31"), + new HetznerServerTemplate("fedora42-x64-hel1-min", labelMap['fedora42-x64-min'], imageMap['fedora42-x64'], "hel1", "cpx41"), + new HetznerServerTemplate("fedora42-aarch64-hel1-min", labelMap['fedora42-aarch64-min'], imageMap['fedora42-aarch64'], "hel1", "cax31"), + new HetznerServerTemplate("fedora42-x64-fsn1-min", labelMap['fedora42-x64-min'], imageMap['fedora42-x64'], "fsn1", "cpx41"), + new HetznerServerTemplate("fedora42-aarch64-fsn1-min", labelMap['fedora42-aarch64-min'], imageMap['fedora42-aarch64'], "fsn1", "cax31"), + new HetznerServerTemplate("fedora42-x64-nbg1", labelMap['fedora42-x64'], imageMap['fedora42-x64'], "nbg1", "cpx51"), + new HetznerServerTemplate("fedora42-aarch64-nbg1", labelMap['fedora42-aarch64'], imageMap['fedora42-aarch64'], "nbg1", "cax41"), + new HetznerServerTemplate("fedora42-x64-hel1", labelMap['fedora42-x64'], imageMap['fedora42-x64'], "hel1", "cpx51"), + new HetznerServerTemplate("fedora42-aarch64-hel1", labelMap['fedora42-aarch64'], imageMap['fedora42-aarch64'], "hel1", "cax41"), + new HetznerServerTemplate("fedora42-x64-fsn1", labelMap['fedora42-x64'], imageMap['fedora42-x64'], "fsn1", "cpx51"), + new HetznerServerTemplate("fedora42-aarch64-fsn1", labelMap['fedora42-aarch64'], imageMap['fedora42-aarch64'], "fsn1", "cax41"), new HetznerServerTemplate("launcher-x64-nbg1", labelMap['launcher-x64'], imageMap['launcher-x64'], "nbg1", "cpx21"), new HetznerServerTemplate("launcher-x64-hel1", labelMap['launcher-x64'], imageMap['launcher-x64'], "hel1", "cpx21"), new HetznerServerTemplate("launcher-x64-fsn1", labelMap['launcher-x64'], imageMap['launcher-x64'], "fsn1", "cpx21") From 4756d5e4e6fe4baca0e770af07e9ed8380824d95 Mon Sep 17 00:00:00 2001 From: Surabhi Bhat Date: Fri, 1 Aug 2025 18:02:33 +0530 Subject: [PATCH 198/269] Add Jenkins pipelins for PSMDB, PBM and PLM SBOM generation --- pbm/jenkins/pbm_generate_sbom.groovy | 423 +++++++++++++++++++++ pbm/jenkins/pbm_generate_sbom.yml | 15 + plm/plm_generate_sbom.groovy | 465 +++++++++++++++++++++++ plm/plm_generate_sbom.yml | 15 + psmdb/jenkins/psmdb_generate_sbom.groovy | 423 +++++++++++++++++++++ psmdb/jenkins/psmdb_generate_sbom.yml | 15 + vars/uploadSBOMToDownloadsTesting.groovy | 20 +- 7 files changed, 1372 insertions(+), 4 deletions(-) create mode 100644 pbm/jenkins/pbm_generate_sbom.groovy create mode 100644 pbm/jenkins/pbm_generate_sbom.yml create mode 100644 plm/plm_generate_sbom.groovy create mode 100644 plm/plm_generate_sbom.yml create mode 100644 psmdb/jenkins/psmdb_generate_sbom.groovy create mode 100644 psmdb/jenkins/psmdb_generate_sbom.yml diff --git a/pbm/jenkins/pbm_generate_sbom.groovy b/pbm/jenkins/pbm_generate_sbom.groovy new file mode 100644 index 0000000000..10a3347c2c --- /dev/null +++ b/pbm/jenkins/pbm_generate_sbom.groovy @@ -0,0 +1,423 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + withCredentials([ + string(credentialsId: 'SNYK_TOKEN', variable: 'SNYK_TOKEN'), + string(credentialsId: 'SNYK_ORG_TOKEN', variable: 'SNYK_ORG_TOKEN') + ]){ + sh """ + echo "Starting Build Stage" + set -o xtrace + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/packaging/pbm_sbom/pbm_generate_sbom.sh -O pbm_generate_sbom.sh + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} -e SNYK_TOKEN=${SNYK_TOKEN} -e SNYK_ORG_TOKEN=${SNYK_ORG_TOKEN} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + ls -laR + uname -a + bash -x ./pbm_generate_sbom.sh --builddir=\${build_dir} --pbm_version=${PBM_VERSION} --repo_type=${REPO_TYPE} --git_repo=${GIT_REPO} --git_branch=${GIT_BRANCH} ${STAGE_PARAM}" + curl -fsSL https://raw.githubusercontent.com/EvgeniyPatlan/sbom_verifier/main/install_sbom_verifier.sh | bash + bash sbom_verifier.sh pbm_sbom/*.json + """ + } +} + +void uploadPBMSBOMToTestingDownloadServer(String productName, String packageVersion, String SBOMType) { + + script { + try { + uploadSBOMToDownloadsTesting(params.CLOUD, productName, packageVersion, SBOMType) + } catch (err) { + echo "Caught: ${err}" + currentBuild.result = 'UNSTABLE' + } + } +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def TIMESTAMP + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/percona/percona-backup-mongodb.git', + description: 'URL for pbm_sbom repository', + name: 'GIT_REPO') + string( + defaultValue: '2.10.0', + description: 'Version of Percona Backup MongoDB', + name: 'PBM_VERSION') + string( + defaultValue: 'main', + description: 'Tag/Branch for percona-backup-mongodb repository', + name: 'GIT_BRANCH') + choice( + choices: 'laboratory\ntesting\nexperimental\nrelease', + description: 'Packaging repository type', + name: 'REPO_TYPE') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + stages { + + stage('Create timestamp') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + steps { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") + cleanUpWS() + script { + TIMESTAMP = sh(script: 'date +%Y%m%d%H%M%S', returnStdout: true).trim() + sh """ + echo ${TIMESTAMP} > timestamp + cat timestamp + """ + TIMESTAMP = sh(returnStdout: true, script: "cat timestamp").trim() + } + stash includes: 'timestamp', name: 'timestamp' + } + } + + stage('Generate SBOM') { + parallel { + stage('Generate PBM SBOM OL/8 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PBM_SBOM/${PBM_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PBM_VERSION} + cat uploadPath-${PBM_VERSION} + """ + stash includes: "uploadPath-${PBM_VERSION}", name: "uploadPath-${PBM_VERSION}" + echo "Ran stash includes" + buildStage("oraclelinux:8", "") + pushArtifactFolder(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH, "json", "${PBM_VERSION}") + uploadPBMSBOMToTestingDownloadServer("pbm_sbom", "${PBM_VERSION}", "json") + } + } + } + stage('Generate PBM SBOM OL/8 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PBM_SBOM/${PBM_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PBM_VERSION} + cat uploadPath-${PBM_VERSION} + """ + stash includes: "uploadPath-${PBM_VERSION}", name: "uploadPath-${PBM_VERSION}" + buildStage("oraclelinux:8", "") + pushArtifactFolder(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH, "json", "${PBM_VERSION}") + uploadPBMSBOMToTestingDownloadServer("pbm_sbom", "${PBM_VERSION}", "json") + } + } + } + stage('Generate PBM SBOM OL/9 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PBM_SBOM/${PBM_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PBM_VERSION} + cat uploadPath-${PBM_VERSION} + """ + stash includes: "uploadPath-${PBM_VERSION}", name: "uploadPath-${PBM_VERSION}" + buildStage("oraclelinux:9", "") + pushArtifactFolder(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH, "json", "${PBM_VERSION}") + uploadPBMSBOMToTestingDownloadServer("pbm_sbom", "${PBM_VERSION}", "json") + } + } + } + stage('Generate PBM SBOM OL/9 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PBM_SBOM/${PBM_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PBM_VERSION} + cat uploadPath-${PBM_VERSION} + """ + stash includes: "uploadPath-${PBM_VERSION}", name: "uploadPath-${PBM_VERSION}" + buildStage("oraclelinux:9", "") + pushArtifactFolder(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH, "json", "${PBM_VERSION}") + uploadPBMSBOMToTestingDownloadServer("pbm_sbom", "${PBM_VERSION}", "json") + } + } + } + stage('Generate PBM SBOM AL 2023 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PBM_SBOM/${PBM_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PBM_VERSION} + cat uploadPath-${PBM_VERSION} + """ + stash includes: "uploadPath-${PBM_VERSION}", name: "uploadPath-${PBM_VERSION}" + buildStage("amazonlinux:2023", "") + pushArtifactFolder(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH, "json", "${PBM_VERSION}") + uploadPBMSBOMToTestingDownloadServer("pbm_sbom", "${PBM_VERSION}", "json") + } + } + } + stage('Generate PBM SBOM AL 2023 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PBM_SBOM/${PBM_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PBM_VERSION} + cat uploadPath-${PBM_VERSION} + """ + stash includes: "uploadPath-${PBM_VERSION}", name: "uploadPath-${PBM_VERSION}" + buildStage("amazonlinux:2023", "") + pushArtifactFolder(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH, "json", "${PBM_VERSION}") + uploadPBMSBOMToTestingDownloadServer("pbm_sbom", "${PBM_VERSION}", "json") + } + } + } +/* stage('Generate PBM SBOM OL/10 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PBM_SBOM/${PBM_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PBM_VERSION} + cat uploadPath-${PBM_VERSION} + """ + stash includes: "uploadPath-${PBM_VERSION}", name: "uploadPath-${PBM_VERSION}" + buildStage("oraclelinux:10", "") + pushArtifactFolder(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH, "json", "${PBM_VERSION}") + uploadPBMSBOMToTestingDownloadServer("pbm_sbom", "${PBM_VERSION}", "json") + } + } + } + stage('Generate PBM SBOM OL/10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PBM_SBOM/${PBM_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PBM_VERSION} + cat uploadPath-${PBM_VERSION} + """ + stash includes: "uploadPath-${PBM_VERSION}", name: "uploadPath-${PBM_VERSION}" + buildStage("oraclelinux:10", "") + pushArtifactFolder(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH, "json", "${PBM_VERSION}") + uploadPBMSBOMToTestingDownloadServer("pbm_sbom", "${PBM_VERSION}", "json") + } + } + } */ + stage('Generate PBM SBOM Jammy AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PBM_SBOM/${PBM_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PBM_VERSION} + cat uploadPath-${PBM_VERSION} + """ + stash includes: "uploadPath-${PBM_VERSION}", name: "uploadPath-${PBM_VERSION}" + buildStage("ubuntu:jammy", "") + pushArtifactFolder(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH, "json", "${PBM_VERSION}") + uploadPBMSBOMToTestingDownloadServer("pbm_sbom", "${PBM_VERSION}", "json") + } + } + } + stage('Generate PBM SBOM Jammy ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PBM_SBOM/${PBM_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PBM_VERSION} + cat uploadPath-${PBM_VERSION} + """ + stash includes: "uploadPath-${PBM_VERSION}", name: "uploadPath-${PBM_VERSION}" + buildStage("ubuntu:jammy", "") + pushArtifactFolder(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH, "json", "${PBM_VERSION}") + uploadPBMSBOMToTestingDownloadServer("pbm_sbom", "${PBM_VERSION}", "json") + } + } + } + stage('Generate PBM SBOM Noble AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PBM_SBOM/${PBM_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PBM_VERSION} + cat uploadPath-${PBM_VERSION} + """ + stash includes: "uploadPath-${PBM_VERSION}", name: "uploadPath-${PBM_VERSION}" + buildStage("ubuntu:noble", "") + pushArtifactFolder(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH, "json", "${PBM_VERSION}") + uploadPBMSBOMToTestingDownloadServer("pbm_sbom", "${PBM_VERSION}", "json") + } + } + } + stage('Generate PBM SBOM Noble ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PBM_SBOM/${PBM_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PBM_VERSION} + cat uploadPath-${PBM_VERSION} + """ + stash includes: "uploadPath-${PBM_VERSION}", name: "uploadPath-${PBM_VERSION}" + buildStage("ubuntu:noble", "") + pushArtifactFolder(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH, "json", "${PBM_VERSION}") + uploadPBMSBOMToTestingDownloadServer("pbm_sbom", "${PBM_VERSION}", "json") + } + } + } + stage('Generate PBM SBOM Bullseye AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PBM_SBOM/${PBM_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PBM_VERSION} + cat uploadPath-${PBM_VERSION} + """ + stash includes: "uploadPath-${PBM_VERSION}", name: "uploadPath-${PBM_VERSION}" + buildStage("debian:bullseye", "") + pushArtifactFolder(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH, "json", "${PBM_VERSION}") + uploadPBMSBOMToTestingDownloadServer("pbm_sbom", "${PBM_VERSION}", "json") + } + } + } + stage('Generate PBM SBOM Bookworm AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PBM_SBOM/${PBM_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PBM_VERSION} + cat uploadPath-${PBM_VERSION} + """ + stash includes: "uploadPath-${PBM_VERSION}", name: "uploadPath-${PBM_VERSION}" + buildStage("debian:bookworm", "") + pushArtifactFolder(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH, "json", "${PBM_VERSION}") + uploadPBMSBOMToTestingDownloadServer("pbm_sbom", "${PBM_VERSION}", "json") + } + } + } + } //parallel + } // stage + + } + post { + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}" + } + deleteDir() + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/pbm/jenkins/pbm_generate_sbom.yml b/pbm/jenkins/pbm_generate_sbom.yml new file mode 100644 index 0000000000..9dc6105756 --- /dev/null +++ b/pbm/jenkins/pbm_generate_sbom.yml @@ -0,0 +1,15 @@ +- job: + name: hetzner-pbm_generate_sbom + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: pbm/jenkins/pbm_generate_sbom.groovy + diff --git a/plm/plm_generate_sbom.groovy b/plm/plm_generate_sbom.groovy new file mode 100644 index 0000000000..4988bce084 --- /dev/null +++ b/plm/plm_generate_sbom.groovy @@ -0,0 +1,465 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + withCredentials([ + string(credentialsId: 'SNYK_TOKEN', variable: 'SNYK_TOKEN'), + string(credentialsId: 'SNYK_ORG_TOKEN', variable: 'SNYK_ORG_TOKEN') + ]){ + sh """ + echo "Starting Build Stage" + set -o xtrace + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/packaging/plm_sbom/plm_generate_sbom.sh -O plm_generate_sbom.sh + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} -e SNYK_TOKEN=${SNYK_TOKEN} -e SNYK_ORG_TOKEN=${SNYK_ORG_TOKEN} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + ls -laR + uname -a + bash -x ./plm_generate_sbom.sh --builddir=\${build_dir} --plm_version=${PLM_VERSION} --repo_type=${REPO_TYPE} --git_repo=${GIT_REPO} --git_branch=${GIT_BRANCH} ${STAGE_PARAM}" + curl -fsSL https://raw.githubusercontent.com/EvgeniyPatlan/sbom_verifier/main/install_sbom_verifier.sh | bash + bash sbom_verifier.sh plm_sbom/*.json + """ + } +} + +void uploadPLMSBOMToTestingDownloadServer(String productName, String packageVersion, String SBOMType) { + + script { + try { + uploadSBOMToDownloadsTesting(params.CLOUD, productName, packageVersion, SBOMType) + } catch (err) { + echo "Caught: ${err}" + currentBuild.result = 'UNSTABLE' + } + } +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def TIMESTAMP + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/percona/percona-link-mongodb.git', + description: 'URL for plm_sbom repository', + name: 'GIT_REPO') + string( + defaultValue: '0.5.0', + description: 'Version of Percona Link MongoDB', + name: 'PLM_VERSION') + string( + defaultValue: 'main', + description: 'Tag/Branch for percona-link-mongodb repository', + name: 'GIT_BRANCH') + choice( + choices: 'laboratory\ntesting\nexperimental\nrelease', + description: 'Packaging repository type', + name: 'REPO_TYPE') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + stages { + + stage('Create timestamp') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + steps { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") + cleanUpWS() + script { + TIMESTAMP = sh(script: 'date +%Y%m%d%H%M%S', returnStdout: true).trim() + sh """ + echo ${TIMESTAMP} > timestamp + cat timestamp + """ + TIMESTAMP = sh(returnStdout: true, script: "cat timestamp").trim() + } + stash includes: 'timestamp', name: 'timestamp' + } + } + + stage('Generate SBOM') { + parallel { + stage('Generate PLM SBOM OL/8 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PLM_SBOM/${PLM_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PLM_VERSION} + cat uploadPath-${PLM_VERSION} + """ + stash includes: "uploadPath-${PLM_VERSION}", name: "uploadPath-${PLM_VERSION}" + echo "Ran stash includes" + buildStage("oraclelinux:8", "") + pushArtifactFolder(params.CLOUD, "plm_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "plm_sbom/", AWS_STASH_PATH, "json", "${PLM_VERSION}") + uploadPLMSBOMToTestingDownloadServer("plm_sbom", "${PLM_VERSION}", "json") + } + } + } + stage('Generate PLM SBOM OL/8 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PLM_SBOM/${PLM_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PLM_VERSION} + cat uploadPath-${PLM_VERSION} + """ + stash includes: "uploadPath-${PLM_VERSION}", name: "uploadPath-${PLM_VERSION}" + buildStage("oraclelinux:8", "") + pushArtifactFolder(params.CLOUD, "plm_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "plm_sbom/", AWS_STASH_PATH, "json", "${PLM_VERSION}") + uploadPLMSBOMToTestingDownloadServer("plm_sbom", "${PLM_VERSION}", "json") + } + } + } + stage('Generate PLM SBOM OL/9 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PLM_SBOM/${PLM_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PLM_VERSION} + cat uploadPath-${PLM_VERSION} + """ + stash includes: "uploadPath-${PLM_VERSION}", name: "uploadPath-${PLM_VERSION}" + buildStage("oraclelinux:9", "") + pushArtifactFolder(params.CLOUD, "plm_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "plm_sbom/", AWS_STASH_PATH, "json", "${PLM_VERSION}") + uploadPLMSBOMToTestingDownloadServer("plm_sbom", "${PLM_VERSION}", "json") + } + } + } + stage('Generate PLM SBOM OL/9 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PLM_SBOM/${PLM_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PLM_VERSION} + cat uploadPath-${PLM_VERSION} + """ + stash includes: "uploadPath-${PLM_VERSION}", name: "uploadPath-${PLM_VERSION}" + buildStage("oraclelinux:9", "") + pushArtifactFolder(params.CLOUD, "plm_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "plm_sbom/", AWS_STASH_PATH, "json", "${PLM_VERSION}") + uploadPLMSBOMToTestingDownloadServer("plm_sbom", "${PLM_VERSION}", "json") + } + } + } + stage('Generate PLM SBOM AL 2023 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PLM_SBOM/${PLM_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PLM_VERSION} + cat uploadPath-${PLM_VERSION} + """ + stash includes: "uploadPath-${PLM_VERSION}", name: "uploadPath-${PLM_VERSION}" + buildStage("amazonlinux:2023", "") + pushArtifactFolder(params.CLOUD, "plm_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "plm_sbom/", AWS_STASH_PATH, "json", "${PLM_VERSION}") + uploadPLMSBOMToTestingDownloadServer("plm_sbom", "${PLM_VERSION}", "json") + } + } + } + stage('Generate PLM SBOM AL 2023 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PLM_SBOM/${PLM_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PLM_VERSION} + cat uploadPath-${PLM_VERSION} + """ + stash includes: "uploadPath-${PLM_VERSION}", name: "uploadPath-${PLM_VERSION}" + buildStage("amazonlinux:2023", "") + pushArtifactFolder(params.CLOUD, "plm_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "plm_sbom/", AWS_STASH_PATH, "json", "${PLM_VERSION}") + uploadPLMSBOMToTestingDownloadServer("plm_sbom", "${PLM_VERSION}", "json") + } + } + } +/* stage('Generate PLM SBOM OL/10 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PLM_SBOM/${PLM_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PLM_VERSION} + cat uploadPath-${PLM_VERSION} + """ + stash includes: "uploadPath-${PLM_VERSION}", name: "uploadPath-${PLM_VERSION}" + buildStage("oraclelinux:10", "") + pushArtifactFolder(params.CLOUD, "plm_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "plm_sbom/", AWS_STASH_PATH, "json", "${PLM_VERSION}") + uploadPLMSBOMToTestingDownloadServer("plm_sbom", "${PLM_VERSION}", "json") + } + } + } + stage('Generate PLM SBOM OL/10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PLM_SBOM/${PLM_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PLM_VERSION} + cat uploadPath-${PLM_VERSION} + """ + stash includes: "uploadPath-${PLM_VERSION}", name: "uploadPath-${PLM_VERSION}" + buildStage("oraclelinux:10", "") + pushArtifactFolder(params.CLOUD, "plm_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "plm_sbom/", AWS_STASH_PATH, "json", "${PLM_VERSION}") + uploadPLMSBOMToTestingDownloadServer("plm_sbom", "${PLM_VERSION}", "json") + } + } + } */ + stage('Generate PLM SBOM Jammy AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PLM_SBOM/${PLM_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PLM_VERSION} + cat uploadPath-${PLM_VERSION} + """ + stash includes: "uploadPath-${PLM_VERSION}", name: "uploadPath-${PLM_VERSION}" + buildStage("ubuntu:jammy", "") + pushArtifactFolder(params.CLOUD, "plm_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "plm_sbom/", AWS_STASH_PATH, "json", "${PLM_VERSION}") + uploadPLMSBOMToTestingDownloadServer("plm_sbom", "${PLM_VERSION}", "json") + } + } + } + stage('Generate PLM SBOM Jammy ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PLM_SBOM/${PLM_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PLM_VERSION} + cat uploadPath-${PLM_VERSION} + """ + stash includes: "uploadPath-${PLM_VERSION}", name: "uploadPath-${PLM_VERSION}" + buildStage("ubuntu:jammy", "") + pushArtifactFolder(params.CLOUD, "plm_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "plm_sbom/", AWS_STASH_PATH, "json", "${PLM_VERSION}") + uploadPLMSBOMToTestingDownloadServer("plm_sbom", "${PLM_VERSION}", "json") + } + } + } + stage('Generate PLM SBOM Noble AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PLM_SBOM/${PLM_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PLM_VERSION} + cat uploadPath-${PLM_VERSION} + """ + stash includes: "uploadPath-${PLM_VERSION}", name: "uploadPath-${PLM_VERSION}" + buildStage("ubuntu:noble", "") + pushArtifactFolder(params.CLOUD, "plm_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "plm_sbom/", AWS_STASH_PATH, "json", "${PLM_VERSION}") + uploadPLMSBOMToTestingDownloadServer("plm_sbom", "${PLM_VERSION}", "json") + } + } + } + stage('Generate PLM SBOM Noble ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PLM_SBOM/${PLM_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PLM_VERSION} + cat uploadPath-${PLM_VERSION} + """ + stash includes: "uploadPath-${PLM_VERSION}", name: "uploadPath-${PLM_VERSION}" + buildStage("ubuntu:noble", "") + pushArtifactFolder(params.CLOUD, "plm_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "plm_sbom/", AWS_STASH_PATH, "json", "${PLM_VERSION}") + uploadPLMSBOMToTestingDownloadServer("plm_sbom", "${PLM_VERSION}", "json") + } + } + } + stage('Generate PLM SBOM Bullseye AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PLM_SBOM/${PLM_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PLM_VERSION} + cat uploadPath-${PLM_VERSION} + """ + stash includes: "uploadPath-${PLM_VERSION}", name: "uploadPath-${PLM_VERSION}" + buildStage("debian:bullseye", "") + pushArtifactFolder(params.CLOUD, "plm_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "plm_sbom/", AWS_STASH_PATH, "json", "${PLM_VERSION}") + uploadPLMSBOMToTestingDownloadServer("plm_sbom", "${PLM_VERSION}", "json") + } + } + } + stage('Generate PLM SBOM Bullseye ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PLM_SBOM/${PLM_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PLM_VERSION} + cat uploadPath-${PLM_VERSION} + """ + stash includes: "uploadPath-${PLM_VERSION}", name: "uploadPath-${PLM_VERSION}" + buildStage("debian:bullseye", "") + pushArtifactFolder(params.CLOUD, "plm_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "plm_sbom/", AWS_STASH_PATH, "json", "${PLM_VERSION}") + uploadPLMSBOMToTestingDownloadServer("plm_sbom", "${PLM_VERSION}", "json") + } + } + } + stage('Generate PLM SBOM Bookworm AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PLM_SBOM/${PLM_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PLM_VERSION} + cat uploadPath-${PLM_VERSION} + """ + stash includes: "uploadPath-${PLM_VERSION}", name: "uploadPath-${PLM_VERSION}" + buildStage("debian:bookworm", "") + pushArtifactFolder(params.CLOUD, "plm_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "plm_sbom/", AWS_STASH_PATH, "json", "${PLM_VERSION}") + uploadPLMSBOMToTestingDownloadServer("plm_sbom", "${PLM_VERSION}", "json") + } + } + } + stage('Generate PLM SBOM Bookworm ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PLM_SBOM/${PLM_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PLM_VERSION} + cat uploadPath-${PLM_VERSION} + """ + stash includes: "uploadPath-${PLM_VERSION}", name: "uploadPath-${PLM_VERSION}" + buildStage("debian:bookworm", "") + pushArtifactFolder(params.CLOUD, "plm_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "plm_sbom/", AWS_STASH_PATH, "json", "${PLM_VERSION}") + uploadPLMSBOMToTestingDownloadServer("plm_sbom", "${PLM_VERSION}", "json") + } + } + } + } //parallel + } // stage + + } + post { + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}" + } + deleteDir() + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/plm/plm_generate_sbom.yml b/plm/plm_generate_sbom.yml new file mode 100644 index 0000000000..5de371fb5f --- /dev/null +++ b/plm/plm_generate_sbom.yml @@ -0,0 +1,15 @@ +- job: + name: hetzner-plm_generate_sbom + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: plm/plm_generate_sbom.groovy + diff --git a/psmdb/jenkins/psmdb_generate_sbom.groovy b/psmdb/jenkins/psmdb_generate_sbom.groovy new file mode 100644 index 0000000000..a7e314bf43 --- /dev/null +++ b/psmdb/jenkins/psmdb_generate_sbom.groovy @@ -0,0 +1,423 @@ +library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) _ + +void buildStage(String DOCKER_OS, String STAGE_PARAM) { + withCredentials([ + string(credentialsId: 'SNYK_TOKEN', variable: 'SNYK_TOKEN'), + string(credentialsId: 'SNYK_ORG_TOKEN', variable: 'SNYK_ORG_TOKEN') + ]){ + sh """ + echo "Starting Build Stage" + set -o xtrace + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/percona-packaging/psmdb_sbom/psmdb_generate_sbom.sh -O psmdb_generate_sbom.sh + pwd -P + ls -laR + export build_dir=\$(pwd -P) + docker run -u root -v \${build_dir}:\${build_dir} -e SNYK_TOKEN=${SNYK_TOKEN} -e SNYK_ORG_TOKEN=${SNYK_ORG_TOKEN} ${DOCKER_OS} sh -c " + set -o xtrace + cd \${build_dir} + ls -laR + uname -a + bash -x ./psmdb_generate_sbom.sh --builddir=\${build_dir} --psmdb_version=${PSMDB_VERSION} --repo_type=${REPO_TYPE} --git_repo=${GIT_REPO} --git_branch=${GIT_BRANCH} ${STAGE_PARAM}" + curl -fsSL https://raw.githubusercontent.com/EvgeniyPatlan/sbom_verifier/main/install_sbom_verifier.sh | bash + bash sbom_verifier.sh psmdb_sbom/*.json + """ + } +} + +void uploadPSMDBSBOMToTestingDownloadServer(String productName, String packageVersion, String SBOMType) { + + script { + try { + uploadSBOMToDownloadsTesting(params.CLOUD, productName, packageVersion, SBOMType) + } catch (err) { + echo "Caught: ${err}" + currentBuild.result = 'UNSTABLE' + } + } +} + +void cleanUpWS() { + sh """ + sudo rm -rf ./* + """ +} + +def TIMESTAMP + +pipeline { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + + parameters { + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + string( + defaultValue: 'https://github.com/percona/percona-server-mongodb.git', + description: 'URL for psmdb_sbom repository', + name: 'GIT_REPO') + string( + defaultValue: '7.0.18-11', + description: 'Version of Percona Server MongoDB', + name: 'PSMDB_VERSION') + string( + defaultValue: 'main', + description: 'Tag/Branch for percona-server-mongodb repository', + name: 'GIT_BRANCH') + choice( + choices: 'laboratory\ntesting\nexperimental\nrelease', + description: 'Packaging repository type', + name: 'REPO_TYPE') + } + options { + skipDefaultCheckout() + disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) + } + stages { + + stage('Create timestamp') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + steps { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") + cleanUpWS() + script { + TIMESTAMP = sh(script: 'date +%Y%m%d%H%M%S', returnStdout: true).trim() + sh """ + echo ${TIMESTAMP} > timestamp + cat timestamp + """ + TIMESTAMP = sh(returnStdout: true, script: "cat timestamp").trim() + } + stash includes: 'timestamp', name: 'timestamp' + } + } + + stage('Generate SBOM') { + parallel { + stage('Generate PSMDB SBOM OL/8 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PSMDB_SBOM/${PSMDB_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PSMDB_VERSION} + cat uploadPath-${PSMDB_VERSION} + """ + stash includes: "uploadPath-${PSMDB_VERSION}", name: "uploadPath-${PSMDB_VERSION}" + echo "Ran stash includes" + buildStage("oraclelinux:8", "") + pushArtifactFolder(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH, "json", "${PSMDB_VERSION}") + uploadPSMDBSBOMToTestingDownloadServer("psmdb_sbom", "${PSMDB_VERSION}", "json") + } + } + } + stage('Generate PSMDB SBOM OL/8 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PSMDB_SBOM/${PSMDB_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PSMDB_VERSION} + cat uploadPath-${PSMDB_VERSION} + """ + stash includes: "uploadPath-${PSMDB_VERSION}", name: "uploadPath-${PSMDB_VERSION}" + buildStage("oraclelinux:8", "") + pushArtifactFolder(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH, "json", "${PSMDB_VERSION}") + uploadPSMDBSBOMToTestingDownloadServer("psmdb_sbom", "${PSMDB_VERSION}", "json") + } + } + } + stage('Generate PSMDB SBOM OL/9 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PSMDB_SBOM/${PSMDB_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PSMDB_VERSION} + cat uploadPath-${PSMDB_VERSION} + """ + stash includes: "uploadPath-${PSMDB_VERSION}", name: "uploadPath-${PSMDB_VERSION}" + buildStage("oraclelinux:9", "") + pushArtifactFolder(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH, "json", "${PSMDB_VERSION}") + uploadPSMDBSBOMToTestingDownloadServer("psmdb_sbom", "${PSMDB_VERSION}", "json") + } + } + } + stage('Generate PSMDB SBOM OL/9 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PSMDB_SBOM/${PSMDB_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PSMDB_VERSION} + cat uploadPath-${PSMDB_VERSION} + """ + stash includes: "uploadPath-${PSMDB_VERSION}", name: "uploadPath-${PSMDB_VERSION}" + buildStage("oraclelinux:9", "") + pushArtifactFolder(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH, "json", "${PSMDB_VERSION}") + uploadPSMDBSBOMToTestingDownloadServer("psmdb_sbom", "${PSMDB_VERSION}", "json") + } + } + } + stage('Generate PSMDB SBOM AL 2023 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PSMDB_SBOM/${PSMDB_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PSMDB_VERSION} + cat uploadPath-${PSMDB_VERSION} + """ + stash includes: "uploadPath-${PSMDB_VERSION}", name: "uploadPath-${PSMDB_VERSION}" + buildStage("amazonlinux:2023", "") + pushArtifactFolder(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH, "json", "${PSMDB_VERSION}") + uploadPSMDBSBOMToTestingDownloadServer("psmdb_sbom", "${PSMDB_VERSION}", "json") + } + } + } + stage('Generate PSMDB SBOM AL 2023 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PSMDB_SBOM/${PSMDB_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PSMDB_VERSION} + cat uploadPath-${PSMDB_VERSION} + """ + stash includes: "uploadPath-${PSMDB_VERSION}", name: "uploadPath-${PSMDB_VERSION}" + buildStage("amazonlinux:2023", "") + pushArtifactFolder(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH, "json", "${PSMDB_VERSION}") + uploadPSMDBSBOMToTestingDownloadServer("psmdb_sbom", "${PSMDB_VERSION}", "json") + } + } + } +/* stage('Generate PSMDB SBOM OL/10 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PSMDB_SBOM/${PSMDB_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PSMDB_VERSION} + cat uploadPath-${PSMDB_VERSION} + """ + stash includes: "uploadPath-${PSMDB_VERSION}", name: "uploadPath-${PSMDB_VERSION}" + buildStage("oraclelinux:10", "") + pushArtifactFolder(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH, "json", "${PSMDB_VERSION}") + uploadPSMDBSBOMToTestingDownloadServer("psmdb_sbom", "${PSMDB_VERSION}", "json") + } + } + } + stage('Generate PSMDB SBOM OL/10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PSMDB_SBOM/${PSMDB_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PSMDB_VERSION} + cat uploadPath-${PSMDB_VERSION} + """ + stash includes: "uploadPath-${PSMDB_VERSION}", name: "uploadPath-${PSMDB_VERSION}" + buildStage("oraclelinux:10", "") + pushArtifactFolder(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH, "json", "${PSMDB_VERSION}") + uploadPSMDBSBOMToTestingDownloadServer("psmdb_sbom", "${PSMDB_VERSION}", "json") + } + } + } */ + stage('Generate PSMDB SBOM Jammy AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PSMDB_SBOM/${PSMDB_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PSMDB_VERSION} + cat uploadPath-${PSMDB_VERSION} + """ + stash includes: "uploadPath-${PSMDB_VERSION}", name: "uploadPath-${PSMDB_VERSION}" + buildStage("ubuntu:jammy", "") + pushArtifactFolder(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH, "json", "${PSMDB_VERSION}") + uploadPSMDBSBOMToTestingDownloadServer("psmdb_sbom", "${PSMDB_VERSION}", "json") + } + } + } + stage('Generate PSMDB SBOM Jammy ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PSMDB_SBOM/${PSMDB_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PSMDB_VERSION} + cat uploadPath-${PSMDB_VERSION} + """ + stash includes: "uploadPath-${PSMDB_VERSION}", name: "uploadPath-${PSMDB_VERSION}" + buildStage("ubuntu:jammy", "") + pushArtifactFolder(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH, "json", "${PSMDB_VERSION}") + uploadPSMDBSBOMToTestingDownloadServer("psmdb_sbom", "${PSMDB_VERSION}", "json") + } + } + } + stage('Generate PSMDB SBOM Noble AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PSMDB_SBOM/${PSMDB_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PSMDB_VERSION} + cat uploadPath-${PSMDB_VERSION} + """ + stash includes: "uploadPath-${PSMDB_VERSION}", name: "uploadPath-${PSMDB_VERSION}" + buildStage("ubuntu:noble", "") + pushArtifactFolder(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH, "json", "${PSMDB_VERSION}") + uploadPSMDBSBOMToTestingDownloadServer("psmdb_sbom", "${PSMDB_VERSION}", "json") + } + } + } + stage('Generate PSMDB SBOM Noble ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PSMDB_SBOM/${PSMDB_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PSMDB_VERSION} + cat uploadPath-${PSMDB_VERSION} + """ + stash includes: "uploadPath-${PSMDB_VERSION}", name: "uploadPath-${PSMDB_VERSION}" + buildStage("ubuntu:noble", "") + pushArtifactFolder(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH, "json", "${PSMDB_VERSION}") + uploadPSMDBSBOMToTestingDownloadServer("psmdb_sbom", "${PSMDB_VERSION}", "json") + } + } + } + stage('Generate PSMDB SBOM Bullseye AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PSMDB_SBOM/${PSMDB_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PSMDB_VERSION} + cat uploadPath-${PSMDB_VERSION} + """ + stash includes: "uploadPath-${PSMDB_VERSION}", name: "uploadPath-${PSMDB_VERSION}" + buildStage("debian:bullseye", "") + pushArtifactFolder(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH, "json", "${PSMDB_VERSION}") + uploadPSMDBSBOMToTestingDownloadServer("psmdb_sbom", "${PSMDB_VERSION}", "json") + } + } + } + stage('Generate PSMDB SBOM Bookworm AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + steps { + cleanUpWS() + script { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PSMDB_SBOM/${PSMDB_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PSMDB_VERSION} + cat uploadPath-${PSMDB_VERSION} + """ + stash includes: "uploadPath-${PSMDB_VERSION}", name: "uploadPath-${PSMDB_VERSION}" + buildStage("debian:bookworm", "") + pushArtifactFolder(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH) + uploadSBOMfromAWS(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH, "json", "${PSMDB_VERSION}") + uploadPSMDBSBOMToTestingDownloadServer("psmdb_sbom", "${PSMDB_VERSION}", "json") + } + } + } + } //parallel + } // stage + + } + post { + success { + slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${GIT_BRANCH}" + } + deleteDir() + } + failure { + slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") + deleteDir() + } + always { + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } +} diff --git a/psmdb/jenkins/psmdb_generate_sbom.yml b/psmdb/jenkins/psmdb_generate_sbom.yml new file mode 100644 index 0000000000..c570dd7573 --- /dev/null +++ b/psmdb/jenkins/psmdb_generate_sbom.yml @@ -0,0 +1,15 @@ +- job: + name: hetzner-psmdb_generate_sbom + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: psmdb/jenkins/psmdb_generate_sbom.groovy + diff --git a/vars/uploadSBOMToDownloadsTesting.groovy b/vars/uploadSBOMToDownloadsTesting.groovy index b1c286bb98..f355455531 100644 --- a/vars/uploadSBOMToDownloadsTesting.groovy +++ b/vars/uploadSBOMToDownloadsTesting.groovy @@ -6,6 +6,7 @@ def call(String CLOUD_NAME, String PRODUCT_NAME, String PRODUCT_VERSION, String def path_to_build = sh(returnStdout: true, script: "cat uploadPath-${PRODUCT_VERSION}").trim() withCredentials([sshUserPrivateKey(credentialsId: 'repo.ci.percona.com', keyFileVariable: 'KEY_PATH', usernameVariable: 'USER')]) { sh """ + #!/bin/bash set -o xtrace cat /etc/hosts > hosts @@ -14,12 +15,23 @@ def call(String CLOUD_NAME, String PRODUCT_NAME, String PRODUCT_VERSION, String # Cut prefix if it's provided cutProductVersion=\$(echo ${PRODUCT_VERSION} | sed 's/release-//g'); + # Upload PSMDB SBOMS to tarball testing downloads + if [ \"x${PRODUCT_NAME}\" = \"xpsmdb_sbom\" ]; then + PSMDB_VERSION=\$(echo \${cutProductVersion} | cut -d'-' -f1) + echo \${cutProductVersion} + echo \${PSMDB_VERSION} + ssh -o StrictHostKeyChecking=no -i ${KEY_PATH} ${USER}@repo.ci.percona.com \ + ssh -p 2222 jenkins-deploy.jenkins-deploy.web.r.int.percona.com mkdir -p /data/downloads/TESTING/psmdb-\${PSMDB_VERSION}/${PRODUCT_NAME}-\${cutProductVersion} - ssh -o StrictHostKeyChecking=no -i ${KEY_PATH} ${USER}@repo.ci.percona.com \ - ssh -p 2222 jenkins-deploy.jenkins-deploy.web.r.int.percona.com mkdir -p /data/downloads/TESTING/${PRODUCT_NAME}-\${cutProductVersion} + ssh -o StrictHostKeyChecking=no -i ${KEY_PATH} ${USER}@repo.ci.percona.com \ + rsync -avt -e '"ssh -p 2222"' --bwlimit=50000 --progress ${path_to_build}/${SBOMType}/* jenkins-deploy.jenkins-deploy.web.r.int.percona.com:/data/downloads/TESTING/psmdb-\${PSMDB_VERSION}/${PRODUCT_NAME}-\${cutProductVersion}/ + else + ssh -o StrictHostKeyChecking=no -i ${KEY_PATH} ${USER}@repo.ci.percona.com \ + ssh -p 2222 jenkins-deploy.jenkins-deploy.web.r.int.percona.com mkdir -p /data/downloads/TESTING/${PRODUCT_NAME}-\${cutProductVersion} - ssh -o StrictHostKeyChecking=no -i ${KEY_PATH} ${USER}@repo.ci.percona.com \ - rsync -avt -e '"ssh -p 2222"' --bwlimit=50000 --progress ${path_to_build}/${SBOMType}/* jenkins-deploy.jenkins-deploy.web.r.int.percona.com:/data/downloads/TESTING/${PRODUCT_NAME}-\${cutProductVersion}/ + ssh -o StrictHostKeyChecking=no -i ${KEY_PATH} ${USER}@repo.ci.percona.com \ + rsync -avt -e '"ssh -p 2222"' --bwlimit=50000 --progress ${path_to_build}/${SBOMType}/* jenkins-deploy.jenkins-deploy.web.r.int.percona.com:/data/downloads/TESTING/${PRODUCT_NAME}-\${cutProductVersion}/ + fi curl https://www.percona.com/admin/config/percona/percona_downloads/crawl_directory """ From 57c8d780721afcd133e20d6a51a16aaea29ed295 Mon Sep 17 00:00:00 2001 From: Vadim Yalovets Date: Wed, 6 Aug 2025 16:39:48 +0300 Subject: [PATCH 199/269] PKG-1032 Packaging tasks for release - PXB 8.0.35-34 (#3473) --- pxb/jenkins/pxb-80.groovy | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/pxb/jenkins/pxb-80.groovy b/pxb/jenkins/pxb-80.groovy index cba53a0568..25d488b4cf 100644 --- a/pxb/jenkins/pxb-80.groovy +++ b/pxb/jenkins/pxb-80.groovy @@ -354,6 +354,44 @@ pipeline { } } } + stage('Oracle Linux 10') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + script { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + if (env.FIPSMODE == 'YES') { + buildStage("oraclelinux:10", "--build_rpm=1 --enable_fipsmode=1") + } else { + buildStage("oraclelinux:10", "--build_rpm=1") + } + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + } + stage('Oracle Linux 10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + script { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + if (env.FIPSMODE == 'YES') { + buildStage("oraclelinux:10", "--build_rpm=1 --enable_fipsmode=1") + } else { + buildStage("oraclelinux:10", "--build_rpm=1") + } + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + } stage('Amazon Linux 2023') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' From c6787732c7a2ebbd88b0b70c0dead2295d9e349c Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Wed, 6 Aug 2025 13:08:31 +0300 Subject: [PATCH 200/269] PKG-1045 hetzner: start worker after cloud-init completion Delays SSH availability on agents to prevent the Jenkins Hetzner plugin from connecting before cloud-init has completed. The script now stops sshd and schedules a restart after 5 minutes in the background. A final `systemctl start sshd` is added at the end of the script to ensure SSH is available if provisioning finishes early. This prevents agent launch failures caused by missing directories or an absent Java runtime. --- IaC/cloud.cd/init.groovy.d/htz.cloud.groovy | 4 +++- IaC/pg.cd/init.groovy.d/htz.cloud.groovy | 2 ++ IaC/pmm.cd/init.groovy.d/htz.cloud.groovy | 2 ++ IaC/ps3.cd/init.groovy.d/htz.cloud.groovy | 2 ++ IaC/ps57.cd/init.groovy.d/htz.cloud.groovy | 2 ++ IaC/ps80.cd/init.groovy.d/htz.cloud.groovy | 2 ++ IaC/psmdb.cd/init.groovy.d/htz.cloud.groovy | 2 ++ IaC/pxb.cd/init.groovy.d/htz.cloud.groovy | 2 ++ IaC/pxc.cd/init.groovy.d/htz.cloud.groovy | 2 ++ IaC/rel.cd/init.groovy.d/htz.cloud.groovy | 2 ++ 10 files changed, 21 insertions(+), 1 deletion(-) diff --git a/IaC/cloud.cd/init.groovy.d/htz.cloud.groovy b/IaC/cloud.cd/init.groovy.d/htz.cloud.groovy index 1eca3e625c..409d5148e0 100644 --- a/IaC/cloud.cd/init.groovy.d/htz.cloud.groovy +++ b/IaC/cloud.cd/init.groovy.d/htz.cloud.groovy @@ -78,6 +78,7 @@ networkMap['percona-vpc-eu'] = '10442325' // percona-vpc-eu initMap = [:] initMap['fedora-docker'] = '''#!/bin/bash -x set -o xtrace + ( sudo systemctl stop sshd; sleep 300; sudo systemctl start sshd ) & sudo fallocate -l 32G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile @@ -86,7 +87,7 @@ initMap['fedora-docker'] = '''#!/bin/bash -x sleep 1 echo "try again" done - until sudo dnf install -y java-21-openjdk-headless ca-certificates curl gnupg unzip git dnf-plugins-core; do + until sudo dnf install -y java-21-openjdk-headless ca-certificates curl gnupg unzip git dnf-plugins-core cronie bc; do sleep 1 echo "try again" done @@ -122,6 +123,7 @@ initMap['fedora-docker'] = '''#!/bin/bash -x echo '{"experimental": true, "ipv6": true, "fixed-cidr-v6": "fd3c:a8b0:18eb:5c06::/64"}' | sudo tee /etc/docker/daemon.json sudo systemctl status docker || sudo systemctl start docker echo "* * * * * root /usr/sbin/route add default gw 10.30.232.1 eth0" | sudo tee /etc/cron.d/fix-default-route + sudo systemctl start sshd ''' initMap['fedora42-x64-nbg1'] = initMap['fedora-docker'] initMap['fedora42-x64-hel1'] = initMap['fedora-docker'] diff --git a/IaC/pg.cd/init.groovy.d/htz.cloud.groovy b/IaC/pg.cd/init.groovy.d/htz.cloud.groovy index 4b1461ba8c..8abe489a66 100644 --- a/IaC/pg.cd/init.groovy.d/htz.cloud.groovy +++ b/IaC/pg.cd/init.groovy.d/htz.cloud.groovy @@ -78,6 +78,7 @@ networkMap['percona-vpc-eu'] = '10442325' // percona-vpc-eu initMap = [:] initMap['deb-docker'] = '''#!/bin/bash -x set -o xtrace + ( sudo systemctl stop sshd; sleep 300; sudo systemctl start sshd ) & sudo fallocate -l 32G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile @@ -128,6 +129,7 @@ initMap['deb-docker'] = '''#!/bin/bash -x echo '{"experimental": true, "ipv6": true, "fixed-cidr-v6": "fd3c:a8b0:18eb:5c06::/64"}' | sudo tee /etc/docker/daemon.json sudo systemctl restart docker echo "* * * * * root /usr/sbin/route add default gw 10.177.1.1 eth0" | sudo tee /etc/cron.d/fix-default-route + sudo systemctl start sshd ''' initMap['deb12-x64-nbg1'] = initMap['deb-docker'] initMap['deb12-x64-hel1'] = initMap['deb-docker'] diff --git a/IaC/pmm.cd/init.groovy.d/htz.cloud.groovy b/IaC/pmm.cd/init.groovy.d/htz.cloud.groovy index 5a9c8b60f5..f35e877921 100644 --- a/IaC/pmm.cd/init.groovy.d/htz.cloud.groovy +++ b/IaC/pmm.cd/init.groovy.d/htz.cloud.groovy @@ -78,6 +78,7 @@ networkMap['percona-vpc-eu'] = '10442325' // percona-vpc-eu initMap = [:] initMap['deb-docker'] = '''#!/bin/bash -x set -o xtrace + ( sudo systemctl stop sshd; sleep 300; sudo systemctl start sshd ) & sudo fallocate -l 32G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile @@ -128,6 +129,7 @@ initMap['deb-docker'] = '''#!/bin/bash -x echo '{"experimental": true, "ipv6": true, "fixed-cidr-v6": "fd3c:a8b0:18eb:5c06::/64"}' | sudo tee /etc/docker/daemon.json sudo systemctl restart docker echo "* * * * * root /usr/sbin/route add default gw 10.177.1.1 eth0" | sudo tee /etc/cron.d/fix-default-route + sudo systemctl start sshd ''' initMap['deb12-x64-nbg1'] = initMap['deb-docker'] initMap['deb12-x64-hel1'] = initMap['deb-docker'] diff --git a/IaC/ps3.cd/init.groovy.d/htz.cloud.groovy b/IaC/ps3.cd/init.groovy.d/htz.cloud.groovy index dc232edb35..dad45e88b5 100644 --- a/IaC/ps3.cd/init.groovy.d/htz.cloud.groovy +++ b/IaC/ps3.cd/init.groovy.d/htz.cloud.groovy @@ -78,6 +78,7 @@ networkMap['percona-vpc-eu'] = '10442325' // percona-vpc-eu initMap = [:] initMap['deb-docker'] = '''#!/bin/bash -x set -o xtrace + ( sudo systemctl stop sshd; sleep 300; sudo systemctl start sshd ) & sudo fallocate -l 32G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile @@ -128,6 +129,7 @@ initMap['deb-docker'] = '''#!/bin/bash -x echo '{"experimental": true, "ipv6": true, "fixed-cidr-v6": "fd3c:a8b0:18eb:5c06::/64"}' | sudo tee /etc/docker/daemon.json sudo systemctl restart docker echo "* * * * * root /usr/sbin/route add default gw 10.177.1.1 eth0" | sudo tee /etc/cron.d/fix-default-route + sudo systemctl start sshd ''' initMap['deb12-x64-nbg1'] = initMap['deb-docker'] initMap['deb12-x64-hel1'] = initMap['deb-docker'] diff --git a/IaC/ps57.cd/init.groovy.d/htz.cloud.groovy b/IaC/ps57.cd/init.groovy.d/htz.cloud.groovy index 1712b5d300..f627ebfa80 100644 --- a/IaC/ps57.cd/init.groovy.d/htz.cloud.groovy +++ b/IaC/ps57.cd/init.groovy.d/htz.cloud.groovy @@ -78,6 +78,7 @@ networkMap['percona-vpc-eu'] = '10442325' // percona-vpc-eu initMap = [:] initMap['deb-docker'] = '''#!/bin/bash -x set -o xtrace + ( sudo systemctl stop sshd; sleep 300; sudo systemctl start sshd ) & sudo fallocate -l 32G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile @@ -128,6 +129,7 @@ initMap['deb-docker'] = '''#!/bin/bash -x echo '{"experimental": true, "ipv6": true, "fixed-cidr-v6": "fd3c:a8b0:18eb:5c06::/64"}' | sudo tee /etc/docker/daemon.json sudo systemctl restart docker echo "* * * * * root /usr/sbin/route add default gw 10.177.1.1 eth0" | sudo tee /etc/cron.d/fix-default-route + sudo systemctl start sshd ''' initMap['deb12-x64-nbg1'] = initMap['deb-docker'] initMap['deb12-x64-hel1'] = initMap['deb-docker'] diff --git a/IaC/ps80.cd/init.groovy.d/htz.cloud.groovy b/IaC/ps80.cd/init.groovy.d/htz.cloud.groovy index 9f46e8fcde..f1a7e5a442 100644 --- a/IaC/ps80.cd/init.groovy.d/htz.cloud.groovy +++ b/IaC/ps80.cd/init.groovy.d/htz.cloud.groovy @@ -78,6 +78,7 @@ networkMap['percona-vpc-eu'] = '10442325' // percona-vpc-eu initMap = [:] initMap['deb-docker'] = '''#!/bin/bash -x set -o xtrace + ( sudo systemctl stop sshd; sleep 300; sudo systemctl start sshd ) & sudo fallocate -l 32G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile @@ -128,6 +129,7 @@ initMap['deb-docker'] = '''#!/bin/bash -x echo '{"experimental": true, "ipv6": true, "fixed-cidr-v6": "fd3c:a8b0:18eb:5c06::/64"}' | sudo tee /etc/docker/daemon.json sudo systemctl restart docker echo "* * * * * root /usr/sbin/route add default gw 10.177.1.1 eth0" | sudo tee /etc/cron.d/fix-default-route + sudo systemctl start sshd ''' initMap['deb12-x64-nbg1'] = initMap['deb-docker'] initMap['deb12-x64-hel1'] = initMap['deb-docker'] diff --git a/IaC/psmdb.cd/init.groovy.d/htz.cloud.groovy b/IaC/psmdb.cd/init.groovy.d/htz.cloud.groovy index 243fd80920..27d0473da5 100644 --- a/IaC/psmdb.cd/init.groovy.d/htz.cloud.groovy +++ b/IaC/psmdb.cd/init.groovy.d/htz.cloud.groovy @@ -78,6 +78,7 @@ networkMap['percona-vpc-eu'] = '10442325' // percona-vpc-eu initMap = [:] initMap['deb-docker'] = '''#!/bin/bash -x set -o xtrace + ( sudo systemctl stop sshd; sleep 300; sudo systemctl start sshd ) & sudo fallocate -l 32G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile @@ -128,6 +129,7 @@ initMap['deb-docker'] = '''#!/bin/bash -x echo '{"experimental": true, "ipv6": true, "fixed-cidr-v6": "fd3c:a8b0:18eb:5c06::/64"}' | sudo tee /etc/docker/daemon.json sudo systemctl restart docker echo "* * * * * root /usr/sbin/route add default gw 10.177.1.1 eth0" | sudo tee /etc/cron.d/fix-default-route + sudo systemctl start sshd ''' initMap['deb12-x64-nbg1'] = initMap['deb-docker'] initMap['deb12-x64-hel1'] = initMap['deb-docker'] diff --git a/IaC/pxb.cd/init.groovy.d/htz.cloud.groovy b/IaC/pxb.cd/init.groovy.d/htz.cloud.groovy index 17f9b285ac..e30059faf9 100644 --- a/IaC/pxb.cd/init.groovy.d/htz.cloud.groovy +++ b/IaC/pxb.cd/init.groovy.d/htz.cloud.groovy @@ -78,6 +78,7 @@ networkMap['percona-vpc-eu'] = '10442325' // percona-vpc-eu initMap = [:] initMap['deb-docker'] = '''#!/bin/bash -x set -o xtrace + ( sudo systemctl stop sshd; sleep 300; sudo systemctl start sshd ) & sudo fallocate -l 32G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile @@ -128,6 +129,7 @@ initMap['deb-docker'] = '''#!/bin/bash -x echo '{"experimental": true, "ipv6": true, "fixed-cidr-v6": "fd3c:a8b0:18eb:5c06::/64"}' | sudo tee /etc/docker/daemon.json sudo systemctl restart docker echo "* * * * * root /usr/sbin/route add default gw 10.177.1.1 eth0" | sudo tee /etc/cron.d/fix-default-route + sudo systemctl start sshd ''' initMap['deb12-x64-nbg1'] = initMap['deb-docker'] initMap['deb12-x64-hel1'] = initMap['deb-docker'] diff --git a/IaC/pxc.cd/init.groovy.d/htz.cloud.groovy b/IaC/pxc.cd/init.groovy.d/htz.cloud.groovy index af7919c977..3042e0900b 100644 --- a/IaC/pxc.cd/init.groovy.d/htz.cloud.groovy +++ b/IaC/pxc.cd/init.groovy.d/htz.cloud.groovy @@ -78,6 +78,7 @@ networkMap['percona-vpc-eu'] = '10442325' // percona-vpc-eu initMap = [:] initMap['deb-docker'] = '''#!/bin/bash -x set -o xtrace + ( sudo systemctl stop sshd; sleep 300; sudo systemctl start sshd ) & sudo fallocate -l 32G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile @@ -128,6 +129,7 @@ initMap['deb-docker'] = '''#!/bin/bash -x echo '{"experimental": true, "ipv6": true, "fixed-cidr-v6": "fd3c:a8b0:18eb:5c06::/64"}' | sudo tee /etc/docker/daemon.json sudo systemctl restart docker echo "* * * * * root /usr/sbin/route add default gw 10.177.1.1 eth0" | sudo tee /etc/cron.d/fix-default-route + sudo systemctl start sshd ''' initMap['deb12-x64-nbg1'] = initMap['deb-docker'] initMap['deb12-x64-hel1'] = initMap['deb-docker'] diff --git a/IaC/rel.cd/init.groovy.d/htz.cloud.groovy b/IaC/rel.cd/init.groovy.d/htz.cloud.groovy index 74eef04fc6..4aa9bc864b 100644 --- a/IaC/rel.cd/init.groovy.d/htz.cloud.groovy +++ b/IaC/rel.cd/init.groovy.d/htz.cloud.groovy @@ -78,6 +78,7 @@ networkMap['percona-vpc-eu'] = '10442325' // percona-vpc-eu initMap = [:] initMap['deb-docker'] = '''#!/bin/bash -x set -o xtrace + ( sudo systemctl stop sshd; sleep 300; sudo systemctl start sshd ) & sudo fallocate -l 32G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile @@ -128,6 +129,7 @@ initMap['deb-docker'] = '''#!/bin/bash -x echo '{"experimental": true, "ipv6": true, "fixed-cidr-v6": "fd3c:a8b0:18eb:5c06::/64"}' | sudo tee /etc/docker/daemon.json sudo systemctl restart docker echo "* * * * * root /usr/sbin/route add default gw 10.177.1.1 eth0" | sudo tee /etc/cron.d/fix-default-route + sudo systemctl start sshd ''' initMap['deb12-x64-nbg1'] = initMap['deb-docker'] initMap['deb12-x64-hel1'] = initMap['deb-docker'] From 7ef86b0b4f3ab6d11987ec99faefa9e59b5542f9 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Mon, 11 Aug 2025 23:02:53 +0300 Subject: [PATCH 201/269] upddate nightly pipeline --- ppg/postgresql_server_17_nightly.groovy | 28 ++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/ppg/postgresql_server_17_nightly.groovy b/ppg/postgresql_server_17_nightly.groovy index 617b9a3394..ddad6cd306 100644 --- a/ppg/postgresql_server_17_nightly.groovy +++ b/ppg/postgresql_server_17_nightly.groovy @@ -41,7 +41,7 @@ pipeline { description: 'URL for ppg-server repository', name: 'GIT_REPO') string( - defaultValue: 'release-17.5.2', + defaultValue: 'TDE_REL_17_STABLE', description: 'Tag/Branch for postgresql', name: 'PG_BRANCH') string( @@ -176,6 +176,32 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Jammy(22.04) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' From da2ef31f62fe917f1d422b6113fccbae1b4f8edf Mon Sep 17 00:00:00 2001 From: Surabhi Bhat Date: Fri, 8 Aug 2025 18:24:07 +0530 Subject: [PATCH 202/269] Update PSMDB, PLM, PBM SBOM jenkins pipelines --- pbm/jenkins/pbm_generate_sbom.groovy | 46 ++++++++------------- plm/plm_generate_sbom.groovy | 51 ++++++++---------------- psmdb/jenkins/psmdb_generate_sbom.groovy | 47 ++++++++-------------- 3 files changed, 51 insertions(+), 93 deletions(-) diff --git a/pbm/jenkins/pbm_generate_sbom.groovy b/pbm/jenkins/pbm_generate_sbom.groovy index 10a3347c2c..585944f1d4 100644 --- a/pbm/jenkins/pbm_generate_sbom.groovy +++ b/pbm/jenkins/pbm_generate_sbom.groovy @@ -22,7 +22,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { uname -a bash -x ./pbm_generate_sbom.sh --builddir=\${build_dir} --pbm_version=${PBM_VERSION} --repo_type=${REPO_TYPE} --git_repo=${GIT_REPO} --git_branch=${GIT_BRANCH} ${STAGE_PARAM}" curl -fsSL https://raw.githubusercontent.com/EvgeniyPatlan/sbom_verifier/main/install_sbom_verifier.sh | bash - bash sbom_verifier.sh pbm_sbom/*.json + bash sbom_verifier.sh --snyk-only pbm_sbom/*.json """ } } @@ -46,6 +46,7 @@ void cleanUpWS() { } def TIMESTAMP +def AWS_STASH_PATH pipeline { agent { @@ -119,8 +120,6 @@ pipeline { echo "Ran stash includes" buildStage("oraclelinux:8", "") pushArtifactFolder(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH, "json", "${PBM_VERSION}") - uploadPBMSBOMToTestingDownloadServer("pbm_sbom", "${PBM_VERSION}", "json") } } } @@ -140,8 +139,6 @@ pipeline { stash includes: "uploadPath-${PBM_VERSION}", name: "uploadPath-${PBM_VERSION}" buildStage("oraclelinux:8", "") pushArtifactFolder(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH, "json", "${PBM_VERSION}") - uploadPBMSBOMToTestingDownloadServer("pbm_sbom", "${PBM_VERSION}", "json") } } } @@ -161,8 +158,6 @@ pipeline { stash includes: "uploadPath-${PBM_VERSION}", name: "uploadPath-${PBM_VERSION}" buildStage("oraclelinux:9", "") pushArtifactFolder(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH, "json", "${PBM_VERSION}") - uploadPBMSBOMToTestingDownloadServer("pbm_sbom", "${PBM_VERSION}", "json") } } } @@ -182,8 +177,6 @@ pipeline { stash includes: "uploadPath-${PBM_VERSION}", name: "uploadPath-${PBM_VERSION}" buildStage("oraclelinux:9", "") pushArtifactFolder(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH, "json", "${PBM_VERSION}") - uploadPBMSBOMToTestingDownloadServer("pbm_sbom", "${PBM_VERSION}", "json") } } } @@ -203,8 +196,6 @@ pipeline { stash includes: "uploadPath-${PBM_VERSION}", name: "uploadPath-${PBM_VERSION}" buildStage("amazonlinux:2023", "") pushArtifactFolder(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH, "json", "${PBM_VERSION}") - uploadPBMSBOMToTestingDownloadServer("pbm_sbom", "${PBM_VERSION}", "json") } } } @@ -224,8 +215,6 @@ pipeline { stash includes: "uploadPath-${PBM_VERSION}", name: "uploadPath-${PBM_VERSION}" buildStage("amazonlinux:2023", "") pushArtifactFolder(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH, "json", "${PBM_VERSION}") - uploadPBMSBOMToTestingDownloadServer("pbm_sbom", "${PBM_VERSION}", "json") } } } @@ -245,8 +234,6 @@ pipeline { stash includes: "uploadPath-${PBM_VERSION}", name: "uploadPath-${PBM_VERSION}" buildStage("oraclelinux:10", "") pushArtifactFolder(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH, "json", "${PBM_VERSION}") - uploadPBMSBOMToTestingDownloadServer("pbm_sbom", "${PBM_VERSION}", "json") } } } @@ -266,8 +253,6 @@ pipeline { stash includes: "uploadPath-${PBM_VERSION}", name: "uploadPath-${PBM_VERSION}" buildStage("oraclelinux:10", "") pushArtifactFolder(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH, "json", "${PBM_VERSION}") - uploadPBMSBOMToTestingDownloadServer("pbm_sbom", "${PBM_VERSION}", "json") } } } */ @@ -287,8 +272,6 @@ pipeline { stash includes: "uploadPath-${PBM_VERSION}", name: "uploadPath-${PBM_VERSION}" buildStage("ubuntu:jammy", "") pushArtifactFolder(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH, "json", "${PBM_VERSION}") - uploadPBMSBOMToTestingDownloadServer("pbm_sbom", "${PBM_VERSION}", "json") } } } @@ -308,8 +291,6 @@ pipeline { stash includes: "uploadPath-${PBM_VERSION}", name: "uploadPath-${PBM_VERSION}" buildStage("ubuntu:jammy", "") pushArtifactFolder(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH, "json", "${PBM_VERSION}") - uploadPBMSBOMToTestingDownloadServer("pbm_sbom", "${PBM_VERSION}", "json") } } } @@ -329,8 +310,6 @@ pipeline { stash includes: "uploadPath-${PBM_VERSION}", name: "uploadPath-${PBM_VERSION}" buildStage("ubuntu:noble", "") pushArtifactFolder(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH, "json", "${PBM_VERSION}") - uploadPBMSBOMToTestingDownloadServer("pbm_sbom", "${PBM_VERSION}", "json") } } } @@ -350,8 +329,6 @@ pipeline { stash includes: "uploadPath-${PBM_VERSION}", name: "uploadPath-${PBM_VERSION}" buildStage("ubuntu:noble", "") pushArtifactFolder(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH, "json", "${PBM_VERSION}") - uploadPBMSBOMToTestingDownloadServer("pbm_sbom", "${PBM_VERSION}", "json") } } } @@ -371,8 +348,6 @@ pipeline { stash includes: "uploadPath-${PBM_VERSION}", name: "uploadPath-${PBM_VERSION}" buildStage("debian:bullseye", "") pushArtifactFolder(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH, "json", "${PBM_VERSION}") - uploadPBMSBOMToTestingDownloadServer("pbm_sbom", "${PBM_VERSION}", "json") } } } @@ -392,13 +367,26 @@ pipeline { stash includes: "uploadPath-${PBM_VERSION}", name: "uploadPath-${PBM_VERSION}" buildStage("debian:bookworm", "") pushArtifactFolder(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH, "json", "${PBM_VERSION}") - uploadPBMSBOMToTestingDownloadServer("pbm_sbom", "${PBM_VERSION}", "json") } } } } //parallel } // stage + stage('Upload SBOMS from AWS') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + steps { + cleanUpWS() + uploadSBOMfromAWS(params.CLOUD, "pbm_sbom/", AWS_STASH_PATH, "json", "${PBM_VERSION}") + } + } + stage('Push SBOMS to TESTING downloads area') { + steps { + cleanUpWS() + uploadPBMSBOMToTestingDownloadServer("pbm_sbom", "${PBM_VERSION}", "json") + } + } } post { diff --git a/plm/plm_generate_sbom.groovy b/plm/plm_generate_sbom.groovy index 4988bce084..f8436f6495 100644 --- a/plm/plm_generate_sbom.groovy +++ b/plm/plm_generate_sbom.groovy @@ -22,7 +22,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { uname -a bash -x ./plm_generate_sbom.sh --builddir=\${build_dir} --plm_version=${PLM_VERSION} --repo_type=${REPO_TYPE} --git_repo=${GIT_REPO} --git_branch=${GIT_BRANCH} ${STAGE_PARAM}" curl -fsSL https://raw.githubusercontent.com/EvgeniyPatlan/sbom_verifier/main/install_sbom_verifier.sh | bash - bash sbom_verifier.sh plm_sbom/*.json + bash sbom_verifier.sh --snyk-only plm_sbom/*.json """ } } @@ -46,6 +46,7 @@ void cleanUpWS() { } def TIMESTAMP +def AWS_STASH_PATH pipeline { agent { @@ -119,8 +120,6 @@ pipeline { echo "Ran stash includes" buildStage("oraclelinux:8", "") pushArtifactFolder(params.CLOUD, "plm_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "plm_sbom/", AWS_STASH_PATH, "json", "${PLM_VERSION}") - uploadPLMSBOMToTestingDownloadServer("plm_sbom", "${PLM_VERSION}", "json") } } } @@ -140,8 +139,6 @@ pipeline { stash includes: "uploadPath-${PLM_VERSION}", name: "uploadPath-${PLM_VERSION}" buildStage("oraclelinux:8", "") pushArtifactFolder(params.CLOUD, "plm_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "plm_sbom/", AWS_STASH_PATH, "json", "${PLM_VERSION}") - uploadPLMSBOMToTestingDownloadServer("plm_sbom", "${PLM_VERSION}", "json") } } } @@ -161,8 +158,6 @@ pipeline { stash includes: "uploadPath-${PLM_VERSION}", name: "uploadPath-${PLM_VERSION}" buildStage("oraclelinux:9", "") pushArtifactFolder(params.CLOUD, "plm_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "plm_sbom/", AWS_STASH_PATH, "json", "${PLM_VERSION}") - uploadPLMSBOMToTestingDownloadServer("plm_sbom", "${PLM_VERSION}", "json") } } } @@ -182,8 +177,6 @@ pipeline { stash includes: "uploadPath-${PLM_VERSION}", name: "uploadPath-${PLM_VERSION}" buildStage("oraclelinux:9", "") pushArtifactFolder(params.CLOUD, "plm_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "plm_sbom/", AWS_STASH_PATH, "json", "${PLM_VERSION}") - uploadPLMSBOMToTestingDownloadServer("plm_sbom", "${PLM_VERSION}", "json") } } } @@ -203,8 +196,6 @@ pipeline { stash includes: "uploadPath-${PLM_VERSION}", name: "uploadPath-${PLM_VERSION}" buildStage("amazonlinux:2023", "") pushArtifactFolder(params.CLOUD, "plm_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "plm_sbom/", AWS_STASH_PATH, "json", "${PLM_VERSION}") - uploadPLMSBOMToTestingDownloadServer("plm_sbom", "${PLM_VERSION}", "json") } } } @@ -224,8 +215,6 @@ pipeline { stash includes: "uploadPath-${PLM_VERSION}", name: "uploadPath-${PLM_VERSION}" buildStage("amazonlinux:2023", "") pushArtifactFolder(params.CLOUD, "plm_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "plm_sbom/", AWS_STASH_PATH, "json", "${PLM_VERSION}") - uploadPLMSBOMToTestingDownloadServer("plm_sbom", "${PLM_VERSION}", "json") } } } @@ -245,8 +234,6 @@ pipeline { stash includes: "uploadPath-${PLM_VERSION}", name: "uploadPath-${PLM_VERSION}" buildStage("oraclelinux:10", "") pushArtifactFolder(params.CLOUD, "plm_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "plm_sbom/", AWS_STASH_PATH, "json", "${PLM_VERSION}") - uploadPLMSBOMToTestingDownloadServer("plm_sbom", "${PLM_VERSION}", "json") } } } @@ -266,8 +253,6 @@ pipeline { stash includes: "uploadPath-${PLM_VERSION}", name: "uploadPath-${PLM_VERSION}" buildStage("oraclelinux:10", "") pushArtifactFolder(params.CLOUD, "plm_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "plm_sbom/", AWS_STASH_PATH, "json", "${PLM_VERSION}") - uploadPLMSBOMToTestingDownloadServer("plm_sbom", "${PLM_VERSION}", "json") } } } */ @@ -287,8 +272,6 @@ pipeline { stash includes: "uploadPath-${PLM_VERSION}", name: "uploadPath-${PLM_VERSION}" buildStage("ubuntu:jammy", "") pushArtifactFolder(params.CLOUD, "plm_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "plm_sbom/", AWS_STASH_PATH, "json", "${PLM_VERSION}") - uploadPLMSBOMToTestingDownloadServer("plm_sbom", "${PLM_VERSION}", "json") } } } @@ -308,8 +291,6 @@ pipeline { stash includes: "uploadPath-${PLM_VERSION}", name: "uploadPath-${PLM_VERSION}" buildStage("ubuntu:jammy", "") pushArtifactFolder(params.CLOUD, "plm_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "plm_sbom/", AWS_STASH_PATH, "json", "${PLM_VERSION}") - uploadPLMSBOMToTestingDownloadServer("plm_sbom", "${PLM_VERSION}", "json") } } } @@ -329,8 +310,6 @@ pipeline { stash includes: "uploadPath-${PLM_VERSION}", name: "uploadPath-${PLM_VERSION}" buildStage("ubuntu:noble", "") pushArtifactFolder(params.CLOUD, "plm_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "plm_sbom/", AWS_STASH_PATH, "json", "${PLM_VERSION}") - uploadPLMSBOMToTestingDownloadServer("plm_sbom", "${PLM_VERSION}", "json") } } } @@ -350,8 +329,6 @@ pipeline { stash includes: "uploadPath-${PLM_VERSION}", name: "uploadPath-${PLM_VERSION}" buildStage("ubuntu:noble", "") pushArtifactFolder(params.CLOUD, "plm_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "plm_sbom/", AWS_STASH_PATH, "json", "${PLM_VERSION}") - uploadPLMSBOMToTestingDownloadServer("plm_sbom", "${PLM_VERSION}", "json") } } } @@ -371,8 +348,6 @@ pipeline { stash includes: "uploadPath-${PLM_VERSION}", name: "uploadPath-${PLM_VERSION}" buildStage("debian:bullseye", "") pushArtifactFolder(params.CLOUD, "plm_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "plm_sbom/", AWS_STASH_PATH, "json", "${PLM_VERSION}") - uploadPLMSBOMToTestingDownloadServer("plm_sbom", "${PLM_VERSION}", "json") } } } @@ -392,8 +367,6 @@ pipeline { stash includes: "uploadPath-${PLM_VERSION}", name: "uploadPath-${PLM_VERSION}" buildStage("debian:bullseye", "") pushArtifactFolder(params.CLOUD, "plm_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "plm_sbom/", AWS_STASH_PATH, "json", "${PLM_VERSION}") - uploadPLMSBOMToTestingDownloadServer("plm_sbom", "${PLM_VERSION}", "json") } } } @@ -413,8 +386,6 @@ pipeline { stash includes: "uploadPath-${PLM_VERSION}", name: "uploadPath-${PLM_VERSION}" buildStage("debian:bookworm", "") pushArtifactFolder(params.CLOUD, "plm_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "plm_sbom/", AWS_STASH_PATH, "json", "${PLM_VERSION}") - uploadPLMSBOMToTestingDownloadServer("plm_sbom", "${PLM_VERSION}", "json") } } } @@ -434,14 +405,26 @@ pipeline { stash includes: "uploadPath-${PLM_VERSION}", name: "uploadPath-${PLM_VERSION}" buildStage("debian:bookworm", "") pushArtifactFolder(params.CLOUD, "plm_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "plm_sbom/", AWS_STASH_PATH, "json", "${PLM_VERSION}") - uploadPLMSBOMToTestingDownloadServer("plm_sbom", "${PLM_VERSION}", "json") } } } } //parallel } // stage - + stage('Upload SBOMS from AWS') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + steps { + cleanUpWS() + uploadSBOMfromAWS(params.CLOUD, "plm_sbom/", AWS_STASH_PATH, "json", "${PLM_VERSION}") + } + } + stage('Push SBOMS to TESTING downloads area') { + steps { + cleanUpWS() + uploadPLMSBOMToTestingDownloadServer("plm_sbom", "${PLM_VERSION}", "json") + } + } } post { success { diff --git a/psmdb/jenkins/psmdb_generate_sbom.groovy b/psmdb/jenkins/psmdb_generate_sbom.groovy index a7e314bf43..8dbbf6a0cb 100644 --- a/psmdb/jenkins/psmdb_generate_sbom.groovy +++ b/psmdb/jenkins/psmdb_generate_sbom.groovy @@ -22,7 +22,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { uname -a bash -x ./psmdb_generate_sbom.sh --builddir=\${build_dir} --psmdb_version=${PSMDB_VERSION} --repo_type=${REPO_TYPE} --git_repo=${GIT_REPO} --git_branch=${GIT_BRANCH} ${STAGE_PARAM}" curl -fsSL https://raw.githubusercontent.com/EvgeniyPatlan/sbom_verifier/main/install_sbom_verifier.sh | bash - bash sbom_verifier.sh psmdb_sbom/*.json + bash sbom_verifier.sh --snyk-only psmdb_sbom/*.json """ } } @@ -46,6 +46,7 @@ void cleanUpWS() { } def TIMESTAMP +def AWS_STASH_PATH pipeline { agent { @@ -119,8 +120,6 @@ pipeline { echo "Ran stash includes" buildStage("oraclelinux:8", "") pushArtifactFolder(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH, "json", "${PSMDB_VERSION}") - uploadPSMDBSBOMToTestingDownloadServer("psmdb_sbom", "${PSMDB_VERSION}", "json") } } } @@ -140,8 +139,6 @@ pipeline { stash includes: "uploadPath-${PSMDB_VERSION}", name: "uploadPath-${PSMDB_VERSION}" buildStage("oraclelinux:8", "") pushArtifactFolder(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH, "json", "${PSMDB_VERSION}") - uploadPSMDBSBOMToTestingDownloadServer("psmdb_sbom", "${PSMDB_VERSION}", "json") } } } @@ -161,8 +158,6 @@ pipeline { stash includes: "uploadPath-${PSMDB_VERSION}", name: "uploadPath-${PSMDB_VERSION}" buildStage("oraclelinux:9", "") pushArtifactFolder(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH, "json", "${PSMDB_VERSION}") - uploadPSMDBSBOMToTestingDownloadServer("psmdb_sbom", "${PSMDB_VERSION}", "json") } } } @@ -182,8 +177,6 @@ pipeline { stash includes: "uploadPath-${PSMDB_VERSION}", name: "uploadPath-${PSMDB_VERSION}" buildStage("oraclelinux:9", "") pushArtifactFolder(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH, "json", "${PSMDB_VERSION}") - uploadPSMDBSBOMToTestingDownloadServer("psmdb_sbom", "${PSMDB_VERSION}", "json") } } } @@ -203,8 +196,6 @@ pipeline { stash includes: "uploadPath-${PSMDB_VERSION}", name: "uploadPath-${PSMDB_VERSION}" buildStage("amazonlinux:2023", "") pushArtifactFolder(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH, "json", "${PSMDB_VERSION}") - uploadPSMDBSBOMToTestingDownloadServer("psmdb_sbom", "${PSMDB_VERSION}", "json") } } } @@ -224,8 +215,6 @@ pipeline { stash includes: "uploadPath-${PSMDB_VERSION}", name: "uploadPath-${PSMDB_VERSION}" buildStage("amazonlinux:2023", "") pushArtifactFolder(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH, "json", "${PSMDB_VERSION}") - uploadPSMDBSBOMToTestingDownloadServer("psmdb_sbom", "${PSMDB_VERSION}", "json") } } } @@ -245,8 +234,6 @@ pipeline { stash includes: "uploadPath-${PSMDB_VERSION}", name: "uploadPath-${PSMDB_VERSION}" buildStage("oraclelinux:10", "") pushArtifactFolder(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH, "json", "${PSMDB_VERSION}") - uploadPSMDBSBOMToTestingDownloadServer("psmdb_sbom", "${PSMDB_VERSION}", "json") } } } @@ -266,8 +253,6 @@ pipeline { stash includes: "uploadPath-${PSMDB_VERSION}", name: "uploadPath-${PSMDB_VERSION}" buildStage("oraclelinux:10", "") pushArtifactFolder(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH, "json", "${PSMDB_VERSION}") - uploadPSMDBSBOMToTestingDownloadServer("psmdb_sbom", "${PSMDB_VERSION}", "json") } } } */ @@ -287,8 +272,6 @@ pipeline { stash includes: "uploadPath-${PSMDB_VERSION}", name: "uploadPath-${PSMDB_VERSION}" buildStage("ubuntu:jammy", "") pushArtifactFolder(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH, "json", "${PSMDB_VERSION}") - uploadPSMDBSBOMToTestingDownloadServer("psmdb_sbom", "${PSMDB_VERSION}", "json") } } } @@ -308,8 +291,6 @@ pipeline { stash includes: "uploadPath-${PSMDB_VERSION}", name: "uploadPath-${PSMDB_VERSION}" buildStage("ubuntu:jammy", "") pushArtifactFolder(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH, "json", "${PSMDB_VERSION}") - uploadPSMDBSBOMToTestingDownloadServer("psmdb_sbom", "${PSMDB_VERSION}", "json") } } } @@ -329,8 +310,6 @@ pipeline { stash includes: "uploadPath-${PSMDB_VERSION}", name: "uploadPath-${PSMDB_VERSION}" buildStage("ubuntu:noble", "") pushArtifactFolder(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH, "json", "${PSMDB_VERSION}") - uploadPSMDBSBOMToTestingDownloadServer("psmdb_sbom", "${PSMDB_VERSION}", "json") } } } @@ -350,8 +329,6 @@ pipeline { stash includes: "uploadPath-${PSMDB_VERSION}", name: "uploadPath-${PSMDB_VERSION}" buildStage("ubuntu:noble", "") pushArtifactFolder(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH, "json", "${PSMDB_VERSION}") - uploadPSMDBSBOMToTestingDownloadServer("psmdb_sbom", "${PSMDB_VERSION}", "json") } } } @@ -371,8 +348,6 @@ pipeline { stash includes: "uploadPath-${PSMDB_VERSION}", name: "uploadPath-${PSMDB_VERSION}" buildStage("debian:bullseye", "") pushArtifactFolder(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH, "json", "${PSMDB_VERSION}") - uploadPSMDBSBOMToTestingDownloadServer("psmdb_sbom", "${PSMDB_VERSION}", "json") } } } @@ -392,14 +367,26 @@ pipeline { stash includes: "uploadPath-${PSMDB_VERSION}", name: "uploadPath-${PSMDB_VERSION}" buildStage("debian:bookworm", "") pushArtifactFolder(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH) - uploadSBOMfromAWS(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH, "json", "${PSMDB_VERSION}") - uploadPSMDBSBOMToTestingDownloadServer("psmdb_sbom", "${PSMDB_VERSION}", "json") } } } } //parallel } // stage - + stage('Upload SBOMS from AWS') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + steps { + cleanUpWS() + uploadSBOMfromAWS(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH, "json", "${PSMDB_VERSION}") + } + } + stage('Push SBOMS to TESTING downloads area') { + steps { + cleanUpWS() + uploadPSMDBSBOMToTestingDownloadServer("psmdb_sbom", "${PSMDB_VERSION}", "json") + } + } } post { success { From 8eedd166b1479f30f62fe5fc9be2d21fe5ab6de9 Mon Sep 17 00:00:00 2001 From: Surabhi Bhat Date: Tue, 12 Aug 2025 14:32:25 +0530 Subject: [PATCH 203/269] Skip generating sbom files for PSMDB 8.0 bullseye --- psmdb/jenkins/psmdb_generate_sbom.groovy | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/psmdb/jenkins/psmdb_generate_sbom.groovy b/psmdb/jenkins/psmdb_generate_sbom.groovy index 8dbbf6a0cb..862a00001b 100644 --- a/psmdb/jenkins/psmdb_generate_sbom.groovy +++ b/psmdb/jenkins/psmdb_generate_sbom.groovy @@ -339,16 +339,18 @@ pipeline { steps { cleanUpWS() script { - unstash 'timestamp' - AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PSMDB_SBOM/${PSMDB_VERSION}/${TIMESTAMP}" - sh """ - echo ${AWS_STASH_PATH} > uploadPath-${PSMDB_VERSION} - cat uploadPath-${PSMDB_VERSION} - """ - stash includes: "uploadPath-${PSMDB_VERSION}", name: "uploadPath-${PSMDB_VERSION}" - buildStage("debian:bullseye", "") - pushArtifactFolder(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH) - } + if (params.PSMDB_VERSION?.startsWith("7.0")) { + unstash 'timestamp' + AWS_STASH_PATH="/srv/UPLOAD/${REPO_TYPE}/BUILDS/PSMDB_SBOM/${PSMDB_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH} > uploadPath-${PSMDB_VERSION} + cat uploadPath-${PSMDB_VERSION} + """ + stash includes: "uploadPath-${PSMDB_VERSION}", name: "uploadPath-${PSMDB_VERSION}" + buildStage("debian:bullseye", "") + pushArtifactFolder(params.CLOUD, "psmdb_sbom/", AWS_STASH_PATH) + } + } } } stage('Generate PSMDB SBOM Bookworm AMD') { From 79593eb66f34486f937ebd6d4d43336f7a6cb481 Mon Sep 17 00:00:00 2001 From: Surabhi Bhat Date: Thu, 14 Aug 2025 18:31:12 +0530 Subject: [PATCH 204/269] Update SBOM pipelines --- pbm/jenkins/pbm_generate_sbom.groovy | 2 +- plm/plm_generate_sbom.groovy | 2 +- psmdb/jenkins/psmdb_generate_sbom.groovy | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pbm/jenkins/pbm_generate_sbom.groovy b/pbm/jenkins/pbm_generate_sbom.groovy index 585944f1d4..7900ed0564 100644 --- a/pbm/jenkins/pbm_generate_sbom.groovy +++ b/pbm/jenkins/pbm_generate_sbom.groovy @@ -22,7 +22,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { uname -a bash -x ./pbm_generate_sbom.sh --builddir=\${build_dir} --pbm_version=${PBM_VERSION} --repo_type=${REPO_TYPE} --git_repo=${GIT_REPO} --git_branch=${GIT_BRANCH} ${STAGE_PARAM}" curl -fsSL https://raw.githubusercontent.com/EvgeniyPatlan/sbom_verifier/main/install_sbom_verifier.sh | bash - bash sbom_verifier.sh --snyk-only pbm_sbom/*.json + bash sbom_verifier.sh pbm_sbom/*.json """ } } diff --git a/plm/plm_generate_sbom.groovy b/plm/plm_generate_sbom.groovy index f8436f6495..87c833685e 100644 --- a/plm/plm_generate_sbom.groovy +++ b/plm/plm_generate_sbom.groovy @@ -22,7 +22,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { uname -a bash -x ./plm_generate_sbom.sh --builddir=\${build_dir} --plm_version=${PLM_VERSION} --repo_type=${REPO_TYPE} --git_repo=${GIT_REPO} --git_branch=${GIT_BRANCH} ${STAGE_PARAM}" curl -fsSL https://raw.githubusercontent.com/EvgeniyPatlan/sbom_verifier/main/install_sbom_verifier.sh | bash - bash sbom_verifier.sh --snyk-only plm_sbom/*.json + bash sbom_verifier.sh plm_sbom/*.json """ } } diff --git a/psmdb/jenkins/psmdb_generate_sbom.groovy b/psmdb/jenkins/psmdb_generate_sbom.groovy index 862a00001b..be242e7a80 100644 --- a/psmdb/jenkins/psmdb_generate_sbom.groovy +++ b/psmdb/jenkins/psmdb_generate_sbom.groovy @@ -22,7 +22,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { uname -a bash -x ./psmdb_generate_sbom.sh --builddir=\${build_dir} --psmdb_version=${PSMDB_VERSION} --repo_type=${REPO_TYPE} --git_repo=${GIT_REPO} --git_branch=${GIT_BRANCH} ${STAGE_PARAM}" curl -fsSL https://raw.githubusercontent.com/EvgeniyPatlan/sbom_verifier/main/install_sbom_verifier.sh | bash - bash sbom_verifier.sh --snyk-only psmdb_sbom/*.json + bash sbom_verifier.sh psmdb_sbom/*.json """ } } From 537226bf47f056bdbe66a17e02b4583f3b4f6b80 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Mon, 18 Aug 2025 10:14:23 +0300 Subject: [PATCH 205/269] fix trigger job --- ppg/ppg-controller-trigger.groovy | 42 +++++++++++++++++-------------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/ppg/ppg-controller-trigger.groovy b/ppg/ppg-controller-trigger.groovy index ae24909293..be00ed0174 100644 --- a/ppg/ppg-controller-trigger.groovy +++ b/ppg/ppg-controller-trigger.groovy @@ -1,6 +1,7 @@ library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', - remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git', + credentialsId: '' // force anonymous for shared library ]) _ void cleanUpWS() { @@ -32,17 +33,31 @@ pipeline { echo "[INFO] Installing jq and yq" sh "sudo apt-get update -qq" sh "sudo apt-get install -y jq" - sh "wget -q https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64" sh "sudo mv yq_linux_amd64 /usr/local/bin/yq" sh "sudo chmod +x /usr/local/bin/yq" - sh "echo '[✓] jq version: \$(jq --version)'" sh "echo '[✓] yq version: \$(yq --version)'" echo "[INFO] Cloning CONFIG_REPO: ${params.CONFIG_REPO} (${params.CONFIG_BRANCH})" dir('postgres-packaging') { - git branch: params.CONFIG_BRANCH, url: params.CONFIG_REPO + // Ensure no credentials are injected and no prompts occur + withEnv(['GIT_ASKPASS=', 'GIT_TERMINAL_PROMPT=0']) { + // If agents have a global credential helper, neutralize it for safety + sh 'git config --global --unset-all credential.helper || true' + + checkout([$class: 'GitSCM', + userRemoteConfigs: [[ + url: "${params.CONFIG_REPO}.git", + credentialsId: '' // force anonymous for public repo + ]], + branches: [[name: params.CONFIG_BRANCH]], + extensions: [ + [$class: 'CloneOption', shallow: true, depth: 1, noTags: true], + [$class: 'CleanBeforeCheckout'] + ] + ]) + } } if (!fileExists(env.CONFIG_FILE)) { @@ -64,16 +79,12 @@ pipeline { } def paramsJSON = sh(script: "yq eval -o=json '.\"${jobKey}\".parameters // {}' ${env.CONFIG_FILE}", returnStdout: true).trim() - - // Parse parameters using jq instead of readJSON def paramKeys = sh(script: "echo '${paramsJSON}' | jq -r 'keys[]' 2>/dev/null || echo ''", returnStdout: true).trim().split('\n').findAll { it } def buildParams = [] - + paramKeys.each { key -> def value = sh(script: "echo '${paramsJSON}' | jq -r '.\"${key}\"'", returnStdout: true).trim() - // Check if value is boolean by testing if it's exactly "true" or "false" def rawValue = sh(script: "echo '${paramsJSON}' | jq '.\"${key}\"'", returnStdout: true).trim() - if (rawValue == "true" || rawValue == "false") { buildParams.add(booleanParam(name: key, value: rawValue == "true")) } else { @@ -100,15 +111,12 @@ pipeline { if (trigger != "true") return def paramsJSON = sh(script: "yq eval -o=json '.\"${jobKey}\".parameters // {}' ${env.CONFIG_FILE}", returnStdout: true).trim() - - // Parse parameters using jq instead of readJSON def paramKeys = sh(script: "echo '${paramsJSON}' | jq -r 'keys[]' 2>/dev/null || echo ''", returnStdout: true).trim().split('\n').findAll { it } def buildParams = [] - + paramKeys.each { key -> def value = sh(script: "echo '${paramsJSON}' | jq -r '.\"${key}\"'", returnStdout: true).trim() def valueType = sh(script: "echo '${paramsJSON}' | jq -r 'type_of(.\"${key}\")'", returnStdout: true).trim() - if (valueType == "boolean") { buildParams.add(booleanParam(name: key, value: value == "true")) } else { @@ -142,12 +150,9 @@ pipeline { "#00FF00", "[${env.JOB_NAME}]: ✅ Build finished successfully for branch ${params.CONFIG_BRANCH} → ${env.BUILD_URL}" ) - script { - currentBuild.description = "Built from ${params.CONFIG_BRANCH}" - } + script { currentBuild.description = "Built from ${params.CONFIG_BRANCH}" } cleanUpWS() } - failure { slackNotify( "#releases-ci", @@ -156,9 +161,8 @@ pipeline { ) cleanUpWS() } - always { cleanUpWS() } } -} \ No newline at end of file +} From 1507d72486a389dfd41507dac0e0235e0e0ed479 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Mon, 18 Aug 2025 11:51:13 +0300 Subject: [PATCH 206/269] fix trigger --- ppg/ppg-controller-trigger.groovy | 32 ++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/ppg/ppg-controller-trigger.groovy b/ppg/ppg-controller-trigger.groovy index be00ed0174..47b736d39e 100644 --- a/ppg/ppg-controller-trigger.groovy +++ b/ppg/ppg-controller-trigger.groovy @@ -1,7 +1,7 @@ library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git', - credentialsId: '' // force anonymous for shared library + credentialsId: '' // force anonymous for the shared library ]) _ void cleanUpWS() { @@ -17,9 +17,9 @@ pipeline { } parameters { - string(name: 'CONFIG_REPO', defaultValue: 'https://github.com/Percona-Lab/postgres-packaging', description: 'Job config repo') - string(name: 'CONFIG_BRANCH', defaultValue: 'main', description: 'Job config branch') - string(name: 'CLOUD', defaultValue: 'Hetzner', description: 'Cloud target') + string(name: 'CONFIG_REPO', defaultValue: 'https://github.com/Percona-Lab/postgres-packaging', description: 'Job config repo') + string(name: 'CONFIG_BRANCH', defaultValue: 'main', description: 'Job config branch') + string(name: 'CLOUD', defaultValue: 'Hetzner', description: 'Cloud target') } environment { @@ -41,20 +41,26 @@ pipeline { echo "[INFO] Cloning CONFIG_REPO: ${params.CONFIG_REPO} (${params.CONFIG_BRANCH})" dir('postgres-packaging') { - // Ensure no credentials are injected and no prompts occur - withEnv(['GIT_ASKPASS=', 'GIT_TERMINAL_PROMPT=0']) { - // If agents have a global credential helper, neutralize it for safety + // Make absolutely sure no creds get injected and no tags are fetched + withEnv([ + 'GIT_ASKPASS=', + 'GIT_TERMINAL_PROMPT=0', + 'GIT_CONFIG_PARAMETERS=credential.helper= ' // empty helper for all git invocations + ]) { + // If agents have a global helper, this is an extra guard sh 'git config --global --unset-all credential.helper || true' checkout([$class: 'GitSCM', userRemoteConfigs: [[ url: "${params.CONFIG_REPO}.git", - credentialsId: '' // force anonymous for public repo + credentialsId: '' // force anonymous ]], branches: [[name: params.CONFIG_BRANCH]], extensions: [ - [$class: 'CloneOption', shallow: true, depth: 1, noTags: true], - [$class: 'CleanBeforeCheckout'] + [$class: 'CleanBeforeCheckout'], + [$class: 'DoNotFetchTags'], // avoid tag fetch on any fetch() calls + [$class: 'CloneOption', shallow: true, depth: 1, // shallow clone, no tags + noTags: true, reference: '', timeout: 10] ] ]) } @@ -83,8 +89,8 @@ pipeline { def buildParams = [] paramKeys.each { key -> - def value = sh(script: "echo '${paramsJSON}' | jq -r '.\"${key}\"'", returnStdout: true).trim() - def rawValue = sh(script: "echo '${paramsJSON}' | jq '.\"${key}\"'", returnStdout: true).trim() + def value = sh(script: "echo '${paramsJSON}' | jq -r '.\"${key}\"'", returnStdout: true).trim() + def rawValue = sh(script: "echo '${paramsJSON}' | jq '.\"${key}\"'", returnStdout: true).trim() if (rawValue == "true" || rawValue == "false") { buildParams.add(booleanParam(name: key, value: rawValue == "true")) } else { @@ -115,7 +121,7 @@ pipeline { def buildParams = [] paramKeys.each { key -> - def value = sh(script: "echo '${paramsJSON}' | jq -r '.\"${key}\"'", returnStdout: true).trim() + def value = sh(script: "echo '${paramsJSON}' | jq -r '.\"${key}\"'", returnStdout: true).trim() def valueType = sh(script: "echo '${paramsJSON}' | jq -r 'type_of(.\"${key}\")'", returnStdout: true).trim() if (valueType == "boolean") { buildParams.add(booleanParam(name: key, value: value == "true")) From a554c29601e402af0d03fd7343fd6d7c44b280fb Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Mon, 18 Aug 2025 12:02:45 +0300 Subject: [PATCH 207/269] fix --- ppg/ppg-controller-trigger.groovy | 40 ++++++++++++++----------------- 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/ppg/ppg-controller-trigger.groovy b/ppg/ppg-controller-trigger.groovy index 47b736d39e..4f3479fa0e 100644 --- a/ppg/ppg-controller-trigger.groovy +++ b/ppg/ppg-controller-trigger.groovy @@ -41,28 +41,24 @@ pipeline { echo "[INFO] Cloning CONFIG_REPO: ${params.CONFIG_REPO} (${params.CONFIG_BRANCH})" dir('postgres-packaging') { - // Make absolutely sure no creds get injected and no tags are fetched - withEnv([ - 'GIT_ASKPASS=', - 'GIT_TERMINAL_PROMPT=0', - 'GIT_CONFIG_PARAMETERS=credential.helper= ' // empty helper for all git invocations - ]) { - // If agents have a global helper, this is an extra guard - sh 'git config --global --unset-all credential.helper || true' - - checkout([$class: 'GitSCM', - userRemoteConfigs: [[ - url: "${params.CONFIG_REPO}.git", - credentialsId: '' // force anonymous - ]], - branches: [[name: params.CONFIG_BRANCH]], - extensions: [ - [$class: 'CleanBeforeCheckout'], - [$class: 'DoNotFetchTags'], // avoid tag fetch on any fetch() calls - [$class: 'CloneOption', shallow: true, depth: 1, // shallow clone, no tags - noTags: true, reference: '', timeout: 10] - ] - ]) + // absolutely no interactive auth or helpers + withEnv(['GIT_ASKPASS=', 'GIT_TERMINAL_PROMPT=0', 'GIT_CONFIG_PARAMETERS=credential.helper= ']) { + sh ''' + set -euo pipefail + rm -rf .git + git init . + git remote add origin '"${CONFIG_REPO}.git"' + + # hard-disable any global helper at repo scope + git config --local credential.helper '' + + # shallow fetch branch tip WITHOUT tags + git -c protocol.version=2 fetch --no-tags --depth=1 origin '"${CONFIG_BRANCH}"' + git checkout -f FETCH_HEAD + + # optional: name the checked out branch locally + git branch -M '"${CONFIG_BRANCH}"' || true + ''' } } From 618aed89e3184efff84f2374f73c1e7ad8618f7d Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Mon, 18 Aug 2025 12:10:13 +0300 Subject: [PATCH 208/269] fix --- ppg/ppg-controller-trigger.groovy | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/ppg/ppg-controller-trigger.groovy b/ppg/ppg-controller-trigger.groovy index 4f3479fa0e..1423f00450 100644 --- a/ppg/ppg-controller-trigger.groovy +++ b/ppg/ppg-controller-trigger.groovy @@ -41,27 +41,27 @@ pipeline { echo "[INFO] Cloning CONFIG_REPO: ${params.CONFIG_REPO} (${params.CONFIG_BRANCH})" dir('postgres-packaging') { - // absolutely no interactive auth or helpers withEnv(['GIT_ASKPASS=', 'GIT_TERMINAL_PROMPT=0', 'GIT_CONFIG_PARAMETERS=credential.helper= ']) { sh ''' - set -euo pipefail + set -eu rm -rf .git git init . - git remote add origin '"${CONFIG_REPO}.git"' + git remote add origin "${CONFIG_REPO}.git" - # hard-disable any global helper at repo scope + # hard-disable any helper in this repo git config --local credential.helper '' # shallow fetch branch tip WITHOUT tags - git -c protocol.version=2 fetch --no-tags --depth=1 origin '"${CONFIG_BRANCH}"' + git -c protocol.version=2 fetch --no-tags --depth=1 origin "${CONFIG_BRANCH}" git checkout -f FETCH_HEAD - # optional: name the checked out branch locally - git branch -M '"${CONFIG_BRANCH}"' || true + # optional: name local branch for clarity + git branch -M "${CONFIG_BRANCH}" || true ''' } } + if (!fileExists(env.CONFIG_FILE)) { error "❌ Config file not found: ${env.CONFIG_FILE}" } From e7bddcba40497ec4a02ffe2429b80501def27cf3 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Mon, 18 Aug 2025 12:14:11 +0300 Subject: [PATCH 209/269] fix --- ppg/ppg-controller-trigger.groovy | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/ppg/ppg-controller-trigger.groovy b/ppg/ppg-controller-trigger.groovy index 1423f00450..9aaa1f1adb 100644 --- a/ppg/ppg-controller-trigger.groovy +++ b/ppg/ppg-controller-trigger.groovy @@ -41,21 +41,22 @@ pipeline { echo "[INFO] Cloning CONFIG_REPO: ${params.CONFIG_REPO} (${params.CONFIG_BRANCH})" dir('postgres-packaging') { - withEnv(['GIT_ASKPASS=', 'GIT_TERMINAL_PROMPT=0', 'GIT_CONFIG_PARAMETERS=credential.helper= ']) { + // No interactive auth + withEnv(['GIT_ASKPASS=', 'GIT_TERMINAL_PROMPT=0', 'GIT_CONFIG_GLOBAL=/dev/null']) { sh ''' set -eu rm -rf .git git init . - git remote add origin "${CONFIG_REPO}.git" - # hard-disable any helper in this repo - git config --local credential.helper '' + # repo-scoped: never use any credential helper + git config --local --unset-all credential.helper || true + git config --local credential.helper "" - # shallow fetch branch tip WITHOUT tags - git -c protocol.version=2 fetch --no-tags --depth=1 origin "${CONFIG_BRANCH}" - git checkout -f FETCH_HEAD + git remote add origin "${CONFIG_REPO}.git" - # optional: name local branch for clarity + # shallow fetch of the branch tip WITHOUT tags and WITHOUT creds + git -c credential.helper= -c http.extraheader= fetch --no-tags --depth=1 origin "${CONFIG_BRANCH}" + git checkout -f FETCH_HEAD git branch -M "${CONFIG_BRANCH}" || true ''' } From 5009cc68ca50d5dfea5699949477429fe640992c Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Mon, 18 Aug 2025 12:24:36 +0300 Subject: [PATCH 210/269] fix trigger --- ppg/ppg-controller-trigger.groovy | 55 ++++++++++++++++++------------- 1 file changed, 32 insertions(+), 23 deletions(-) diff --git a/ppg/ppg-controller-trigger.groovy b/ppg/ppg-controller-trigger.groovy index 9aaa1f1adb..df4861ed39 100644 --- a/ppg/ppg-controller-trigger.groovy +++ b/ppg/ppg-controller-trigger.groovy @@ -1,7 +1,7 @@ library changelog: false, identifier: 'lib@hetzner', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git', - credentialsId: '' // force anonymous for the shared library + credentialsId: '' // force anonymous for shared library ]) _ void cleanUpWS() { @@ -17,9 +17,10 @@ pipeline { } parameters { - string(name: 'CONFIG_REPO', defaultValue: 'https://github.com/Percona-Lab/postgres-packaging', description: 'Job config repo') - string(name: 'CONFIG_BRANCH', defaultValue: 'main', description: 'Job config branch') - string(name: 'CLOUD', defaultValue: 'Hetzner', description: 'Cloud target') + // default to the public repo to avoid auth prompts + string(name: 'CONFIG_REPO', defaultValue: 'https://github.com/percona/postgres-packaging', description: 'Job config repo (public)') + string(name: 'CONFIG_BRANCH', defaultValue: 'main', description: 'Job config branch') + string(name: 'CLOUD', defaultValue: 'Hetzner', description: 'Cloud target') } environment { @@ -41,28 +42,36 @@ pipeline { echo "[INFO] Cloning CONFIG_REPO: ${params.CONFIG_REPO} (${params.CONFIG_BRANCH})" dir('postgres-packaging') { - // No interactive auth - withEnv(['GIT_ASKPASS=', 'GIT_TERMINAL_PROMPT=0', 'GIT_CONFIG_GLOBAL=/dev/null']) { - sh ''' - set -eu - rm -rf .git - git init . - - # repo-scoped: never use any credential helper - git config --local --unset-all credential.helper || true - git config --local credential.helper "" - - git remote add origin "${CONFIG_REPO}.git" - - # shallow fetch of the branch tip WITHOUT tags and WITHOUT creds - git -c credential.helper= -c http.extraheader= fetch --no-tags --depth=1 origin "${CONFIG_BRANCH}" - git checkout -f FETCH_HEAD - git branch -M "${CONFIG_BRANCH}" || true - ''' + // Anonymous clone, no prompts, no tags, shallow + withEnv(['GIT_ASKPASS=', 'GIT_TERMINAL_PROMPT=0']) { + try { + sh ''' + set -eu + rm -rf ./* + git -c credential.helper= -c http.extraheader= clone \ + --depth=1 --no-tags --single-branch \ + --branch "${CONFIG_BRANCH}" \ + "${CONFIG_REPO}.git" . + ''' + } catch (e) { + // Fallback if someone passed a private Percona-Lab URL + if ("${params.CONFIG_REPO}".matches("(?i).*/Percona-Lab/postgres-packaging$")) { + echo "[WARN] ${params.CONFIG_REPO} may require auth. Retrying with public repo: https://github.com/percona/postgres-packaging" + sh ''' + set -eu + rm -rf ./* + git -c credential.helper= -c http.extraheader= clone \ + --depth=1 --no-tags --single-branch \ + --branch "${CONFIG_BRANCH}" \ + "https://github.com/percona/postgres-packaging.git" . + ''' + } else { + throw e + } + } } } - if (!fileExists(env.CONFIG_FILE)) { error "❌ Config file not found: ${env.CONFIG_FILE}" } From aee92daef17aa2341eca636008d4af86916b0f01 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Mon, 18 Aug 2025 12:35:03 +0300 Subject: [PATCH 211/269] trigger fix --- ppg/ppg-controller-trigger.groovy | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/ppg/ppg-controller-trigger.groovy b/ppg/ppg-controller-trigger.groovy index df4861ed39..89b31f4b39 100644 --- a/ppg/ppg-controller-trigger.groovy +++ b/ppg/ppg-controller-trigger.groovy @@ -17,10 +17,9 @@ pipeline { } parameters { - // default to the public repo to avoid auth prompts - string(name: 'CONFIG_REPO', defaultValue: 'https://github.com/percona/postgres-packaging', description: 'Job config repo (public)') - string(name: 'CONFIG_BRANCH', defaultValue: 'main', description: 'Job config branch') - string(name: 'CLOUD', defaultValue: 'Hetzner', description: 'Cloud target') + string(name: 'CONFIG_REPO', defaultValue: 'https://github.com/Percona-Lab/postgres-packaging', description: 'Job config repo') + string(name: 'CONFIG_BRANCH', defaultValue: 'main', description: 'Job config branch') + string(name: 'CLOUD', defaultValue: 'Hetzner', description: 'Cloud target') } environment { @@ -42,25 +41,24 @@ pipeline { echo "[INFO] Cloning CONFIG_REPO: ${params.CONFIG_REPO} (${params.CONFIG_BRANCH})" dir('postgres-packaging') { - // Anonymous clone, no prompts, no tags, shallow withEnv(['GIT_ASKPASS=', 'GIT_TERMINAL_PROMPT=0']) { try { sh ''' set -eu rm -rf ./* - git -c credential.helper= -c http.extraheader= clone \ + git -c credential.helper= clone \ --depth=1 --no-tags --single-branch \ --branch "${CONFIG_BRANCH}" \ "${CONFIG_REPO}.git" . ''' } catch (e) { - // Fallback if someone passed a private Percona-Lab URL - if ("${params.CONFIG_REPO}".matches("(?i).*/Percona-Lab/postgres-packaging$")) { - echo "[WARN] ${params.CONFIG_REPO} may require auth. Retrying with public repo: https://github.com/percona/postgres-packaging" + // If user passed Percona-Lab repo and it requires auth, fallback to public mirror + if ("${params.CONFIG_REPO}".toLowerCase().endsWith('/percona-lab/postgres-packaging')) { + echo "[WARN] ${params.CONFIG_REPO} might require auth. Retrying with public repo: https://github.com/percona/postgres-packaging" sh ''' set -eu rm -rf ./* - git -c credential.helper= -c http.extraheader= clone \ + git -c credential.helper= clone \ --depth=1 --no-tags --single-branch \ --branch "${CONFIG_BRANCH}" \ "https://github.com/percona/postgres-packaging.git" . @@ -167,7 +165,6 @@ pipeline { } failure { slackNotify( - "#releases-ci", "#FF0000", "[${env.JOB_NAME}]: ❌ Build failed for branch ${params.CONFIG_BRANCH} → ${env.BUILD_URL}" ) From 3a578211994c8146c6e942651604d2ebe7be1980 Mon Sep 17 00:00:00 2001 From: Surabhi Bhat Date: Mon, 18 Aug 2025 15:48:22 +0530 Subject: [PATCH 212/269] PKG-1047 Add Debian 13 to percona-telemetry-agent release pipeline --- .../percona-telemetry-agent.groovy | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/percona-telemetry-agent/percona-telemetry-agent.groovy b/percona-telemetry-agent/percona-telemetry-agent.groovy index f546ea1418..3d9612d0ea 100644 --- a/percona-telemetry-agent/percona-telemetry-agent.groovy +++ b/percona-telemetry-agent/percona-telemetry-agent.groovy @@ -328,6 +328,32 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bookworm(13)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bookworm(13) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } From da52b119fedd52def8af4640290410f0da62449f Mon Sep 17 00:00:00 2001 From: Surabhi Bhat Date: Mon, 18 Aug 2025 15:54:26 +0530 Subject: [PATCH 213/269] Fix TA script --- percona-telemetry-agent/percona-telemetry-agent.groovy | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/percona-telemetry-agent/percona-telemetry-agent.groovy b/percona-telemetry-agent/percona-telemetry-agent.groovy index 3d9612d0ea..4a5fd13e02 100644 --- a/percona-telemetry-agent/percona-telemetry-agent.groovy +++ b/percona-telemetry-agent/percona-telemetry-agent.groovy @@ -332,7 +332,7 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian Bookworm(13)') { + stage('Debian Trixie(13)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -345,7 +345,7 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian Bookworm(13) ARM') { + stage('Debian Trixie(13) ARM') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } From dd71403920d77383fcee2a4517e178b835ad95fa Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Mon, 18 Aug 2025 14:37:23 +0300 Subject: [PATCH 214/269] PKG-778 cloud.cd: hetzner cloud adjustments - switch to a separate private network - install different supplementary packages --- IaC/cloud.cd/init.groovy.d/htz.cloud.groovy | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/IaC/cloud.cd/init.groovy.d/htz.cloud.groovy b/IaC/cloud.cd/init.groovy.d/htz.cloud.groovy index 409d5148e0..6f3e7d9aad 100644 --- a/IaC/cloud.cd/init.groovy.d/htz.cloud.groovy +++ b/IaC/cloud.cd/init.groovy.d/htz.cloud.groovy @@ -30,7 +30,7 @@ execMap['launcher-x64-hel1'] = 30 execMap['launcher-x64-fsn1'] = 30 bootDeadlineMap =[:] -bootDeadlineMap['default'] = 3 +bootDeadlineMap['default'] = 7 bootDeadlineMap['fedora42-x64-nbg1'] = bootDeadlineMap['default'] bootDeadlineMap['fedora42-x64-hel1'] = bootDeadlineMap['default'] bootDeadlineMap['fedora42-x64-fsn1'] = bootDeadlineMap['default'] @@ -73,7 +73,7 @@ labelMap['fedora42-aarch64'] = 'docker-aarch64 docker-fedora42-aarch64 fedor labelMap['launcher-x64'] = 'launcher-x64' networkMap = [:] -networkMap['percona-vpc-eu'] = '10442325' // percona-vpc-eu +networkMap['cloud.cd.percona.com'] = '11334955' // cloud.cd.percona.com initMap = [:] initMap['fedora-docker'] = '''#!/bin/bash -x @@ -87,11 +87,12 @@ initMap['fedora-docker'] = '''#!/bin/bash -x sleep 1 echo "try again" done - until sudo dnf install -y java-21-openjdk-headless ca-certificates curl gnupg unzip git dnf-plugins-core cronie bc; do + until sudo dnf install -y java-21-openjdk-headless ca-certificates curl gnupg unzip git dnf-plugins-core cronie bc npm make; do sleep 1 echo "try again" done - until sudo dnf install -y docker npm; do + sudo dnf config-manager addrepo --from-repofile=https://download.docker.com/linux/fedora/docker-ce.repo + until sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin; do sleep 1 echo "try again" done @@ -122,7 +123,7 @@ initMap['fedora-docker'] = '''#!/bin/bash -x sudo mkdir -p /etc/docker echo '{"experimental": true, "ipv6": true, "fixed-cidr-v6": "fd3c:a8b0:18eb:5c06::/64"}' | sudo tee /etc/docker/daemon.json sudo systemctl status docker || sudo systemctl start docker - echo "* * * * * root /usr/sbin/route add default gw 10.30.232.1 eth0" | sudo tee /etc/cron.d/fix-default-route + echo "* * * * * root /usr/sbin/route add default gw 10.30.236.1 eth0" | sudo tee /etc/cron.d/fix-default-route sudo systemctl start sshd ''' initMap['fedora42-x64-nbg1'] = initMap['fedora-docker'] @@ -170,7 +171,7 @@ templates.each { it -> it.bootDeadline = bootDeadlineMap[tmplName] it.remoteFs = "/mnt/jenkins/" it.jvmOpts = jvmOptsMap[tmplName] - it.network = networkMap['percona-vpc-eu'] + it.network = networkMap['cloud.cd.percona.com'] it.userData = initMap[tmplName] } From 1372a8da352c7d5ede407ecbe96bd71cfbe22b04 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Tue, 19 Aug 2025 08:33:49 +0300 Subject: [PATCH 215/269] update tarball branch for pg --- ppg/pg_tarballs_17_nightly.groovy | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ppg/pg_tarballs_17_nightly.groovy b/ppg/pg_tarballs_17_nightly.groovy index 41b6a293ae..e46005f8a6 100644 --- a/ppg/pg_tarballs_17_nightly.groovy +++ b/ppg/pg_tarballs_17_nightly.groovy @@ -124,7 +124,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = "release-17.5.2" + def BRANCH_NAME = "TDE_REL_17_STABLE" def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl3") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" @@ -150,7 +150,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = 'release-17.5.2' + def BRANCH_NAME = 'TDE_REL_17_STABLE' def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl1.1") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" @@ -176,7 +176,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = "release-17.5.2" + def BRANCH_NAME = "TDE_REL_17_STABLE" def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl3") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" @@ -202,7 +202,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = 'release-17.5.2' + def BRANCH_NAME = 'TDE_REL_17_STABLE' def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl1.1") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" From 6dfe86bd8113a7bc83a9ac2b520817f5f7c428a7 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Tue, 19 Aug 2025 10:05:08 +0300 Subject: [PATCH 216/269] tarball build pg --- ppg/pg_tarballs_17_nightly.groovy | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ppg/pg_tarballs_17_nightly.groovy b/ppg/pg_tarballs_17_nightly.groovy index e46005f8a6..4fc96b60da 100644 --- a/ppg/pg_tarballs_17_nightly.groovy +++ b/ppg/pg_tarballs_17_nightly.groovy @@ -124,7 +124,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = "TDE_REL_17_STABLE" + def BRANCH_NAME = "release-17.5.3" def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl3") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" @@ -150,7 +150,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = 'TDE_REL_17_STABLE' + def BRANCH_NAME = 'release-17.5.3' def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl1.1") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" @@ -176,7 +176,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = "TDE_REL_17_STABLE" + def BRANCH_NAME = "release-17.5.3" def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl3") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" @@ -202,7 +202,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = 'TDE_REL_17_STABLE' + def BRANCH_NAME = 'release-17.5.3' def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl1.1") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" From f136898cf1bfc0ddee24820a1c426c3fac9e18c5 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Tue, 19 Aug 2025 16:39:47 +0300 Subject: [PATCH 217/269] fix pg tar --- ppg/pg_tarballs_17_nightly.groovy | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ppg/pg_tarballs_17_nightly.groovy b/ppg/pg_tarballs_17_nightly.groovy index 4fc96b60da..41b6a293ae 100644 --- a/ppg/pg_tarballs_17_nightly.groovy +++ b/ppg/pg_tarballs_17_nightly.groovy @@ -124,7 +124,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = "release-17.5.3" + def BRANCH_NAME = "release-17.5.2" def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl3") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" @@ -150,7 +150,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = 'release-17.5.3' + def BRANCH_NAME = 'release-17.5.2' def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl1.1") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" @@ -176,7 +176,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = "release-17.5.3" + def BRANCH_NAME = "release-17.5.2" def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl3") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" @@ -202,7 +202,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = 'release-17.5.3' + def BRANCH_NAME = 'release-17.5.2' def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl1.1") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" From 99acdf20910ece848ea7794b1187039770c50613 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Tue, 19 Aug 2025 22:01:16 +0300 Subject: [PATCH 218/269] tag is set for pg --- ppg/pg_tarballs_17_nightly.groovy | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ppg/pg_tarballs_17_nightly.groovy b/ppg/pg_tarballs_17_nightly.groovy index 41b6a293ae..4fc96b60da 100644 --- a/ppg/pg_tarballs_17_nightly.groovy +++ b/ppg/pg_tarballs_17_nightly.groovy @@ -124,7 +124,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = "release-17.5.2" + def BRANCH_NAME = "release-17.5.3" def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl3") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" @@ -150,7 +150,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = 'release-17.5.2' + def BRANCH_NAME = 'release-17.5.3' def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl1.1") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" @@ -176,7 +176,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = "release-17.5.2" + def BRANCH_NAME = "release-17.5.3" def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl3") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" @@ -202,7 +202,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = 'release-17.5.2' + def BRANCH_NAME = 'release-17.5.3' def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl1.1") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" From aba1210cb331152f095b2c195b1be12730a74055 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Tue, 19 Aug 2025 22:19:02 +0300 Subject: [PATCH 219/269] update ver --- ppg/postgresql_server_17_nightly.groovy | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ppg/postgresql_server_17_nightly.groovy b/ppg/postgresql_server_17_nightly.groovy index ddad6cd306..aa64817be4 100644 --- a/ppg/postgresql_server_17_nightly.groovy +++ b/ppg/postgresql_server_17_nightly.groovy @@ -41,19 +41,19 @@ pipeline { description: 'URL for ppg-server repository', name: 'GIT_REPO') string( - defaultValue: 'TDE_REL_17_STABLE', + defaultValue: 'release-17.5.3', description: 'Tag/Branch for postgresql', name: 'PG_BRANCH') string( - defaultValue: '17.5.2', + defaultValue: '17.5.3', description: 'Tag/Branch for ppg-server repository', name: 'GIT_BRANCH') string( - defaultValue: '2', + defaultValue: '3', description: 'RPM release value', name: 'RPM_RELEASE') string( - defaultValue: '2', + defaultValue: '3', description: 'DEB release value', name: 'DEB_RELEASE') string( From a886b9882e5444de1228c7f00dd3d2239a26a70f Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Tue, 19 Aug 2025 22:20:46 +0300 Subject: [PATCH 220/269] fix ver --- ppg/postgresql_server_17_nightly.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ppg/postgresql_server_17_nightly.groovy b/ppg/postgresql_server_17_nightly.groovy index aa64817be4..4b59d7fa85 100644 --- a/ppg/postgresql_server_17_nightly.groovy +++ b/ppg/postgresql_server_17_nightly.groovy @@ -45,7 +45,7 @@ pipeline { description: 'Tag/Branch for postgresql', name: 'PG_BRANCH') string( - defaultValue: '17.5.3', + defaultValue: '17.5.2', description: 'Tag/Branch for ppg-server repository', name: 'GIT_BRANCH') string( From d03c8723170a72906f77aa9deda81dd58d07176c Mon Sep 17 00:00:00 2001 From: Oleksandr Havryliak <88387200+olexandr-havryliak@users.noreply.github.com> Date: Thu, 21 Aug 2025 14:55:05 +0300 Subject: [PATCH 221/269] PKG-592 fix the build of unittests, fix jstests issues with memlock (#3498) --- psmdb/psmdb-regression.groovy | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/psmdb/psmdb-regression.groovy b/psmdb/psmdb-regression.groovy index 8e2c72f817..467e016de3 100644 --- a/psmdb/psmdb-regression.groovy +++ b/psmdb/psmdb-regression.groovy @@ -28,7 +28,7 @@ pipeline { booleanParam(name: 'integrationtests',defaultValue: false, description: 'Check if list of suites contains integration tests') booleanParam(name: 'benchmarktests',defaultValue: false, description: 'Check if list of suites contains benchmark tests') string(name: 'OS', defaultValue: 'debian:12', description: 'Base OS, can be changed to build the image for PBM tests') - string(name: 'scons_params', defaultValue: '--variables-files=gcc.vars --disable-warnings-as-errors --ssl --opt=size -j8 --use-sasl-client --wiredtiger --audit --inmemory --hotbackup ', description: 'Parameters for scons') + string(name: 'scons_params', defaultValue: '--variables-files=gcc.vars --disable-warnings-as-errors --ssl --link-model=dynamic --linker=gold --dbg=off --opt=off -j8 --use-sasl-client --wiredtiger --audit --inmemory --hotbackup ', description: 'Parameters for scons') string(name: 'resmoke_params', defaultValue: '--excludeWithAnyTags=featureFlagColumnstoreIndexes,featureFlagUpdateOneWithoutShardKey,featureFlagGlobalIndexesShardingCatalog,featureFlagGlobalIndexes,featureFlagTelemetry,featureFlagAuditConfigClusterParameter,serverless,does_not_support_config_fuzzer,featureFlagDeprioritizeLowPriorityOperations,featureFlagSbeFull,featureFlagQueryStats,featureFlagTransitionToCatalogShard,requires_latch_analyzer', description: 'Extra params passed to resmoke.py') } options { @@ -157,7 +157,7 @@ pipeline { sh """ echo "start suite ${suiteName}" docker run -v `pwd`/test_results:/work -w /work --rm -i ${image} bash -c 'rm -rf *' - docker run -v `pwd`/test_results:/work --rm ${image} bash -c "${script} && python buildscripts/resmoke.py run --suite ${suite} ${params.resmoke_params} --reportFile=/work/resmoke_${suiteName}_s.json > /work/resmoke_${suiteName}_s.log 2>&1" || true + docker run --ulimit memlock=-1 -v `pwd`/test_results:/work --rm ${image} bash -c "${script} && python buildscripts/resmoke.py run --suite ${suite} ${params.resmoke_params} --reportFile=/work/resmoke_${suiteName}_s.json > /work/resmoke_${suiteName}_s.log 2>&1" || true docker run -v `pwd`/test_results:/work -w /work --rm ${image} bash -c 'python /opt/percona-server-mongodb/resmoke2junit.py && chmod -R 777 /work' echo "finish suite ${suiteName}" """ @@ -166,7 +166,7 @@ pipeline { sh """ echo "start suite ${suiteName}" docker run -v `pwd`/test_results:/work -w /work --rm -i ${image} bash -c 'rm -rf *' - docker run -v `pwd`/test_results:/work --rm ${image} bash -c "python buildscripts/resmoke.py run --suite $suite ${params.resmoke_params} --reportFile=/work/resmoke_${suiteName}_s.json > /work/resmoke_${suiteName}_s.log 2>&1" || true + docker run --ulimit memlock=-1 -v `pwd`/test_results:/work --rm ${image} bash -c "python buildscripts/resmoke.py run --suite $suite ${params.resmoke_params} --reportFile=/work/resmoke_${suiteName}_s.json > /work/resmoke_${suiteName}_s.log 2>&1" || true docker run -v `pwd`/test_results:/work -w /work --rm ${image} bash -c 'python /opt/percona-server-mongodb/resmoke2junit.py && chmod -R 777 /work' echo "finish suite ${suiteName}" """ From 8d3cd2122b0a2add0aa7ac3b1947d29de3de98f5 Mon Sep 17 00:00:00 2001 From: Vadim Yalovets Date: Wed, 27 Aug 2025 10:04:06 +0300 Subject: [PATCH 222/269] Hetzner (#3506) --- ps/jenkins/mysql-shell.groovy | 32 ++ ...percona-server-for-mysql-8.0-docker.groovy | 93 ++-- .../percona-server-for-mysql-8.0.groovy | 493 +++++++----------- .../percona-server-for-mysql-9.0.groovy | 4 +- rel/jenkins/release-from-repository.groovy | 5 +- 5 files changed, 269 insertions(+), 358 deletions(-) diff --git a/ps/jenkins/mysql-shell.groovy b/ps/jenkins/mysql-shell.groovy index 06b7d885fe..944fb2554e 100644 --- a/ps/jenkins/mysql-shell.groovy +++ b/ps/jenkins/mysql-shell.groovy @@ -205,6 +205,38 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10') { + when { + expression { true } + } + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 10 ARM') { + when { + expression { true } + } + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Focal (20.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ps/jenkins/percona-server-for-mysql-8.0-docker.groovy b/ps/jenkins/percona-server-for-mysql-8.0-docker.groovy index dc65516575..cb902d2138 100644 --- a/ps/jenkins/percona-server-for-mysql-8.0-docker.groovy +++ b/ps/jenkins/percona-server-for-mysql-8.0-docker.groovy @@ -145,10 +145,14 @@ pipeline { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } parameters { - choice( - choices: [ 'Hetzner','AWS' ], - description: 'Cloud infra for build', - name: 'CLOUD' ) + choice( + choices: [ 'Hetzner','AWS' ], + description: 'Cloud infra for build', + name: 'CLOUD' ) + choice( + choices: 'perconalab\npercona', + description: 'Organization on hub.docker.com', + name: 'ORGANIZATION') string(defaultValue: 'release-8.0.28-19', description: 'Tag/Branch for percona-server repository', name: 'BRANCH') string(defaultValue: '1', description: 'RPM version', name: 'RPM_RELEASE') string(defaultValue: '1', description: 'DEB version', name: 'DEB_RELEASE') @@ -222,9 +226,11 @@ parameters { sed -i "s/percona-release enable ps-80/percona-release enable ps-8x-innovation/g" Dockerfile fi sed -i "s/percona-release enable mysql-shell/PS_REPO=\"testing\";percona-release enable mysql-shell/g" Dockerfile + sed -i "s/percona-release enable mysql-shell/PS_REPO=\"testing\";percona-release enable mysql-shell/g" Dockerfile.aarch64 fi sed -i "s/ENV PS_VERSION.*/ENV PS_VERSION ${PS_RELEASE}.${RPM_RELEASE}/g" Dockerfile.aarch64 sed -i "s/ENV PS_TELEMETRY_VERSION.*/ENV PS_TELEMETRY_VERSION ${PS_RELEASE}-${RPM_RELEASE}/g" Dockerfile.aarch64 + sed -i "s/ENV MYSQL_SHELL_VERSION.*/ENV MYSQL_SHELL_VERSION ${MYSQL_SHELL_RELEASE}-${RPM_RELEASE}/g" Dockerfile.aarch64 sed -i "s/ENV PS_REPO .*/ENV PS_REPO testing/g" Dockerfile.aarch64 if [ ${PS_MAJOR_RELEASE} != "80" ]; then if [ ${PS_MAJOR_RELEASE} = "84" ]; then @@ -234,8 +240,15 @@ parameters { fi sed -i "s/percona-release enable mysql-shell/PS_REPO=\"testing\";percona-release enable mysql-shell/g" Dockerfile.aarch64 fi - sudo docker build -t perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64 --progress plain --platform="linux/amd64" . - sudo docker buildx build --platform linux/arm64 -t perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-arm64 --load -f Dockerfile.aarch64 . + if [ ${ORGANIZATION} != "percona" ]; then + sudo docker build -t perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64 --progress plain --platform="linux/amd64" . + sudo docker buildx build --platform linux/arm64 -t perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-arm64 --load -f Dockerfile.aarch64 . + else + sudo docker pull perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64 + sudo docker tag perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64 percona/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64 + sudo docker pull perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-arm64 + sudo docker tag perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-arm64 percona/percona-server:${PS_RELEASE}.${RPM_RELEASE}-arm64 + fi cd ../mysql-router sed -i "s/ENV ROUTE_VERSION.*/ENV ROUTE_VERSION ${PS_RELEASE}.${RPM_RELEASE}/g" Dockerfile sed -i "s/ENV MYSQL_SHELL_VERSION.*/ENV MYSQL_SHELL_VERSION ${MYSQL_SHELL_RELEASE}-${RPM_RELEASE}/g" Dockerfile @@ -246,9 +259,17 @@ parameters { sed -i "s/percona-release enable ps-80 testing/percona-release enable ps-8x-innovation testing/g" Dockerfile fi fi - sudo docker build -t perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE}-amd64 --platform="linux/amd64" . - sudo docker build -t perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE}-arm64 --platform="linux/arm64" . - sudo docker tag perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE}-amd64 perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE} + if [ ${ORGANIZATION} != "percona" ]; then + sudo docker build -t perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE}-amd64 --platform="linux/amd64" . + sudo docker build -t perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE}-arm64 --platform="linux/arm64" . + sudo docker tag perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE}-amd64 perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE} + else + sudo docker pull perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE}-amd64 + sudo docker tag perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE}-amd64 percona/percona-mysql-router:${MYSQL_ROUTER_RELEASE}-amd64 + sudo docker pull perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE}-arm64 + sudo docker tag perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE}-arm64 percona/percona-mysql-router:${MYSQL_ROUTER_RELEASE}-arm64 + sudo docker tag percona/percona-mysql-router:${MYSQL_ROUTER_RELEASE}-amd64 percona/percona-mysql-router:${MYSQL_ROUTER_RELEASE} + fi sudo docker images ''' withCredentials([ @@ -265,27 +286,27 @@ parameters { else MYSQL_ROUTER_RELEASE=$(echo ${BRANCH} | sed 's/release-//g' | awk '{print substr($0, 0, 7)}' | sed 's/-//g') fi - sudo docker tag perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64 perconalab/percona-server:${PS_RELEASE}-amd64 - sudo docker push perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64 - sudo docker push perconalab/percona-server:${PS_RELEASE}-amd64 - sudo docker tag perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-arm64 perconalab/percona-server:${PS_RELEASE}-arm64 - sudo docker push perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-arm64 - sudo docker push perconalab/percona-server:${PS_RELEASE}-arm64 - sudo docker tag perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE} perconalab/percona-mysql-router:${PS_MAJOR_RELEASE} - sudo docker push perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE}-amd64 - sudo docker push perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE}-arm64 - sudo docker push perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE} - sudo docker push perconalab/percona-mysql-router:${PS_MAJOR_RELEASE} + sudo docker tag ${ORGANIZATION}/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64 ${ORGANIZATION}/percona-server:${PS_RELEASE}-amd64 + sudo docker push ${ORGANIZATION}/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64 + sudo docker push ${ORGANIZATION}/percona-server:${PS_RELEASE}-amd64 + sudo docker tag ${ORGANIZATION}/percona-server:${PS_RELEASE}.${RPM_RELEASE}-arm64 ${ORGANIZATION}/percona-server:${PS_RELEASE}-arm64 + sudo docker push ${ORGANIZATION}/percona-server:${PS_RELEASE}.${RPM_RELEASE}-arm64 + sudo docker push ${ORGANIZATION}/percona-server:${PS_RELEASE}-arm64 + sudo docker tag ${ORGANIZATION}/percona-mysql-router:${MYSQL_ROUTER_RELEASE} ${ORGANIZATION}/percona-mysql-router:${PS_MAJOR_RELEASE} + sudo docker push ${ORGANIZATION}/percona-mysql-router:${MYSQL_ROUTER_RELEASE}-amd64 + sudo docker push ${ORGANIZATION}/percona-mysql-router:${MYSQL_ROUTER_RELEASE}-arm64 + sudo docker push ${ORGANIZATION}/percona-mysql-router:${MYSQL_ROUTER_RELEASE} + sudo docker push ${ORGANIZATION}/percona-mysql-router:${PS_MAJOR_RELEASE} ''' } sh ''' PS_RELEASE=$(echo ${BRANCH} | sed 's/release-//g') - sudo docker manifest create perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} \ - perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64 \ - perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-arm64 - sudo docker manifest annotate perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-arm64 --os linux --arch arm64 --variant v8 - sudo docker manifest annotate perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64 --os linux --arch amd64 - sudo docker manifest inspect perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} + sudo docker manifest create ${ORGANIZATION}/percona-server:${PS_RELEASE}.${RPM_RELEASE} \ + ${ORGANIZATION}/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64 \ + ${ORGANIZATION}/percona-server:${PS_RELEASE}.${RPM_RELEASE}-arm64 + sudo docker manifest annotate ${ORGANIZATION}/percona-server:${PS_RELEASE}.${RPM_RELEASE} ${ORGANIZATION}/percona-server:${PS_RELEASE}.${RPM_RELEASE}-arm64 --os linux --arch arm64 --variant v8 + sudo docker manifest annotate ${ORGANIZATION}/percona-server:${PS_RELEASE}.${RPM_RELEASE} ${ORGANIZATION}/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64 --os linux --arch amd64 + sudo docker manifest inspect ${ORGANIZATION}/percona-server:${PS_RELEASE}.${RPM_RELEASE} ''' withCredentials([ usernamePassword(credentialsId: 'hub.docker.com', @@ -297,10 +318,10 @@ parameters { PS_MAJOR_RELEASE=$(echo ${BRANCH} | sed "s/release-//g" | awk '{print substr($0, 0, 3)}') PS_MAJOR_FULL_RELEASE=$(echo ${BRANCH} | sed "s/release-//g" | sed "s/-.*//g") echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin - sudo docker manifest push perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} - sudo docker buildx imagetools create -t perconalab/percona-server:${PS_RELEASE} perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} - sudo docker buildx imagetools create -t perconalab/percona-server:${PS_MAJOR_FULL_RELEASE} perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} - sudo docker buildx imagetools create -t perconalab/percona-server:${PS_MAJOR_RELEASE} perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} + sudo docker manifest push ${ORGANIZATION}/percona-server:${PS_RELEASE}.${RPM_RELEASE} + sudo docker buildx imagetools create -t ${ORGANIZATION}/percona-server:${PS_RELEASE} ${ORGANIZATION}/percona-server:${PS_RELEASE}.${RPM_RELEASE} + sudo docker buildx imagetools create -t ${ORGANIZATION}/percona-server:${PS_MAJOR_FULL_RELEASE} ${ORGANIZATION}/percona-server:${PS_RELEASE}.${RPM_RELEASE} + sudo docker buildx imagetools create -t ${ORGANIZATION}/percona-server:${PS_MAJOR_RELEASE} ${ORGANIZATION}/percona-server:${PS_RELEASE}.${RPM_RELEASE} ''' } } @@ -335,8 +356,8 @@ parameters { // 🔹 Define the image tags def PS_RELEASE = "${BRANCH}".replace('release-', '') def imageList = [ - "perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64", - "perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-arm64" + "${ORGANIZATION}/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64", + "${ORGANIZATION}/percona-server:${PS_RELEASE}.${RPM_RELEASE}-arm64" ] // 🔹 Scan images and store logs @@ -382,15 +403,15 @@ parameters { success { script { if (env.FIPSMODE == 'YES') { - slackNotify("${SLACKNOTIFY}", "#00FF00", "[${JOB_NAME}]: PRO build has been finished successfully for ${BRANCH} - [${BUILD_URL}]") + slackNotify("${SLACKNOTIFY}", "#00FF00", "[${JOB_NAME}]: (${ORGANIZATION}) PRO build has been finished successfully for ${BRANCH} - [${BUILD_URL}]") } else { - slackNotify("${SLACKNOTIFY}", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${BRANCH} - [${BUILD_URL}]") + slackNotify("${SLACKNOTIFY}", "#00FF00", "[${JOB_NAME}]: (${ORGANIZATION}) build has been finished successfully for ${BRANCH} - [${BUILD_URL}]") } } deleteDir() } failure { - slackNotify("${SLACKNOTIFY}", "#FF0000", "[${JOB_NAME}]: build failed for ${BRANCH} - [${BUILD_URL}]") + slackNotify("${SLACKNOTIFY}", "#FF0000", "[${JOB_NAME}]: (${ORGANIZATION})build failed for ${BRANCH} - [${BUILD_URL}]") deleteDir() } always { @@ -398,7 +419,7 @@ parameters { sudo rm -rf ./* ''' script { - currentBuild.description = "Built on ${BRANCH}" + currentBuild.description = "Built on ${BRANCH} for ${ORGANIZATION} organization" } deleteDir() } diff --git a/ps/jenkins/percona-server-for-mysql-8.0.groovy b/ps/jenkins/percona-server-for-mysql-8.0.groovy index 763cdc3d9c..ab9fc59982 100644 --- a/ps/jenkins/percona-server-for-mysql-8.0.groovy +++ b/ps/jenkins/percona-server-for-mysql-8.0.groovy @@ -186,7 +186,6 @@ def runPlaybook(def nodeName) { def minitestNodes = [ "min-bullseye-x64", "min-bookworm-x64", - "min-centos-7-x64", "min-ol-8-x64", "min-focal-x64", "min-amazon-2-x64", @@ -229,7 +228,7 @@ parameters { description: 'Cloud infra for build', name: 'CLOUD' ) string(defaultValue: 'https://github.com/percona/percona-server.git', description: 'github repository for build', name: 'GIT_REPO') - string(defaultValue: 'release-8.0.28-19', description: 'Tag/Branch for percona-server repository', name: 'BRANCH') + string(defaultValue: 'release-8.0.43-34', description: 'Tag/Branch for percona-server repository', name: 'BRANCH') string(defaultValue: '1', description: 'RPM version', name: 'RPM_RELEASE') string(defaultValue: '1', description: 'DEB version', name: 'DEB_RELEASE') choice( @@ -240,10 +239,6 @@ parameters { string(defaultValue: 'Percona-Server-8.0.27-18', description: 'Tag/Branch for PerconaFT repository', name: 'PERCONAFT_BRANCH') string(defaultValue: '0', description: 'TokuBackup repository', name: 'TOKUBACKUP_REPO') string(defaultValue: 'Percona-Server-8.0.27-18', description: 'Tag/Branch for TokuBackup repository', name: 'TOKUBACKUP_BRANCH') - choice( - choices: 'NO\nYES', - description: 'Prepare packages and tarballs for Centos 7', - name: 'ENABLE_EL7') choice( choices: 'ON\nOFF', description: 'Compile with ZenFS support?, only affects Ubuntu Hirsute', @@ -350,67 +345,89 @@ parameters { } // stage stage('Build PS RPMs/DEBs/Binary tarballs') { parallel { - stage('Centos 7') { + stage('Oracle Linux 8') { + when { + expression { env.FIPSMODE == 'NO' } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { - if (env.FIPSMODE == 'YES' || env.ENABLE_EL7 == 'NO') { - echo "The step is skipped" - } else { - cleanUpWS() - installCli("rpm") - unstash 'properties' - popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) - buildStage("centos:7", "--build_rpm=1") + cleanUpWS() + installCli("rpm") + unstash 'properties' + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_rpm=1") - pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) - } + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } } - stage('Oracle Linux 8') { + stage('Centos 8 ARM') { + when { + expression { env.FIPSMODE == 'NO' } + } + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + script { + cleanUpWS() + installCli("rpm") + unstash 'properties' + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("centos:8", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + } + stage('Oracle Linux 9') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { + cleanUpWS() + installCli("rpm") + unstash 'properties' + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { - echo "The step is skipped" + buildStage("oraclelinux:9", "--build_rpm=1 --with_zenfs=1 --enable_fipsmode=1") } else { - cleanUpWS() - installCli("rpm") - unstash 'properties' - popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) - buildStage("oraclelinux:8", "--build_rpm=1") - - pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1 --with_zenfs=1") } } + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Centos 8 ARM') { + stage('Oracle Linux 9 ARM') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { + cleanUpWS() + installCli("rpm") + unstash 'properties' + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { - echo "The step is skipped" + buildStage("oraclelinux:9", "--build_rpm=1 --enable_fipsmode=1") } else { - cleanUpWS() - installCli("rpm") - unstash 'properties' - popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) - buildStage("centos:8", "--build_rpm=1") - - pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + buildStage("oraclelinux:9", "--build_rpm=1") } } + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Oracle Linux 9') { +/* + stage('Oracle Linux 10') { + when { + expression { false } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } @@ -421,16 +438,19 @@ parameters { popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { - buildStage("oraclelinux:9", "--build_rpm=1 --with_zenfs=1 --enable_fipsmode=1") + buildStage("oraclelinux:10", "--build_rpm=1 --with_zenfs=1 --enable_fipsmode=1") } else { - buildStage("oraclelinux:9", "--build_rpm=1 --with_zenfs=1") + buildStage("oraclelinux:10", "--build_rpm=1 --with_zenfs=1") } } pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Oracle Linux 9 ARM') { + stage('Oracle Linux 10 ARM') { + when { + expression { false } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } @@ -441,72 +461,70 @@ parameters { popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { - buildStage("oraclelinux:9", "--build_rpm=1 --enable_fipsmode=1") + buildStage("oraclelinux:10", "--build_rpm=1 --enable_fipsmode=1") } else { - buildStage("oraclelinux:9", "--build_rpm=1") + buildStage("oraclelinux:10", "--build_rpm=1") } } pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } +*/ stage('Amazon Linux 2023') { + when { + expression { env.FIPSMODE == 'YES' } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { - if (env.FIPSMODE == 'NO') { - echo "The step is skipped" - } else { - cleanUpWS() - installCli("rpm") - unstash 'properties' - popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) - buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") + cleanUpWS() + installCli("rpm") + unstash 'properties' + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") - pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) - } + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } } stage('Amazon Linux 2023 ARM') { + when { + expression { env.FIPSMODE == 'YES' } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { script { - if (env.FIPSMODE == 'NO') { - echo "The step is skipped" - } else { - cleanUpWS() - installCli("rpm") - unstash 'properties' - popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) - buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") + cleanUpWS() + installCli("rpm") + unstash 'properties' + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") - pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) - } + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } } stage('Ubuntu Focal(20.04)') { + when { + expression { env.FIPSMODE == 'NO' } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { - if (env.FIPSMODE == 'YES') { - echo "The step is skipped" - } else { - cleanUpWS() - installCli("rpm") - unstash 'properties' - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1 --with_zenfs=1") + cleanUpWS() + installCli("rpm") + unstash 'properties' + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1 --with_zenfs=1") - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - } + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } } @@ -551,22 +569,21 @@ parameters { } } stage('Debian Bullseye(11)') { + when { + expression { env.FIPSMODE == 'NO' } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { - if (env.FIPSMODE == 'YES') { - echo "The step is skipped" - } else { - cleanUpWS() - installCli("rpm") - unstash 'properties' - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("debian:bullseye", "--build_deb=1 --with_zenfs=1") + cleanUpWS() + installCli("rpm") + unstash 'properties' + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1 --with_zenfs=1") - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - } + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } } @@ -591,22 +608,21 @@ parameters { } } stage('Ubuntu Focal(20.04) ARM') { + when { + expression { env.FIPSMODE == 'NO' } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { script { - if (env.FIPSMODE == 'YES') { - echo "The step is skipped" - } else { - cleanUpWS() - installCli("rpm") - unstash 'properties' - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1 --with_zenfs=1") + cleanUpWS() + installCli("rpm") + unstash 'properties' + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1 --with_zenfs=1") - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - } + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } } @@ -651,22 +667,21 @@ parameters { } } stage('Debian Bullseye(11) ARM') { + when { + expression { env.FIPSMODE == 'NO' } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { script { - if (env.FIPSMODE == 'YES') { - echo "The step is skipped" - } else { - cleanUpWS() - installCli("rpm") - unstash 'properties' - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("debian:bullseye", "--build_deb=1 --with_zenfs=1") + cleanUpWS() + installCli("rpm") + unstash 'properties' + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1 --with_zenfs=1") - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - } + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } } @@ -690,83 +705,41 @@ parameters { pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Centos 7 binary tarball') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' - } - steps { - script { - if (env.FIPSMODE == 'YES' || env.ENABLE_EL7 == 'NO') { - echo "The step is skipped" - } else { - cleanUpWS() - installCli("rpm") - unstash 'properties' - popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("centos:7", "--build_tarball=1") - - pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) - } - } + stage('Oracle Linux 8 binary tarball') { + when { + expression { env.FIPSMODE == 'NO' } } - } - stage('Centos 7 debug tarball') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { - if (env.FIPSMODE == 'YES' || env.ENABLE_EL7 == 'NO') { - echo "The step is skipped" - } else { - cleanUpWS() - installCli("rpm") - unstash 'properties' - popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("centos:7", "--debug=1 --build_tarball=1") + cleanUpWS() + installCli("rpm") + unstash 'properties' + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_tarball=1") - pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) - } - } - } - } - stage('Oracle Linux 8 binary tarball') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' - } - steps { - script { - if (env.FIPSMODE == 'YES') { - echo "The step is skipped" - } else { - cleanUpWS() - installCli("rpm") - unstash 'properties' - popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("oraclelinux:8", "--build_tarball=1") - - pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) - } + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } stage('Oracle Linux 8 debug tarball') { + when { + expression { env.FIPSMODE == 'NO' } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { - if (env.FIPSMODE == 'YES') { - echo "The step is skipped" - } else { - cleanUpWS() - installCli("rpm") - unstash 'properties' - popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("oraclelinux:8", "--debug=1 --build_tarball=1") + cleanUpWS() + installCli("rpm") + unstash 'properties' + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--debug=1 --build_tarball=1") - pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) - } + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -791,6 +764,9 @@ parameters { } } stage('Oracle Linux 9 ZenFS tarball') { + when { + expression { env.FIPSMODE == 'NO' } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } @@ -800,12 +776,8 @@ parameters { unstash 'properties' popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { - if (env.FIPSMODE == 'YES') { - echo "The step is skipped" - } else { - buildStage("oraclelinux:9", "--build_tarball=1 --with_zenfs=1") - pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) - } + buildStage("oraclelinux:9", "--build_tarball=1 --with_zenfs=1") + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -830,42 +802,40 @@ parameters { } } stage('Ubuntu Focal(20.04) tarball') { + when { + expression { env.FIPSMODE == 'NO' } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { - if (env.FIPSMODE == 'YES') { - echo "The step is skipped" - } else { - cleanUpWS() - installCli("rpm") - unstash 'properties' - popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_tarball=1") + cleanUpWS() + installCli("rpm") + unstash 'properties' + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_tarball=1") - pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) - } + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } stage('Ubuntu Focal(20.04) debug tarball') { + when { + expression { env.FIPSMODE == 'NO' } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { - if (env.FIPSMODE == 'YES') { - echo "The step is skipped" - } else { - cleanUpWS() - installCli("rpm") - unstash 'properties' - popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--debug=1 --build_tarball=1") + cleanUpWS() + installCli("rpm") + unstash 'properties' + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--debug=1 --build_tarball=1") - pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) - } + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } } @@ -890,6 +860,9 @@ parameters { } } stage('Ubuntu Jammy(22.04) ZenFS tarball') { + when { + expression { env.FIPSMODE == 'NO' } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } @@ -898,14 +871,9 @@ parameters { installCli("rpm") unstash 'properties' popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - script { - if (env.FIPSMODE == 'YES') { - echo "The step is skipped" - } else { - buildStage("ubuntu:jammy", "--build_tarball=1 --with_zenfs=1") - pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) - } - } + buildStage("ubuntu:jammy", "--build_tarball=1 --with_zenfs=1") + + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) } } stage('Ubuntu Jammy(22.04) debug tarball') { @@ -1005,130 +973,17 @@ parameters { } steps { script { - if (env.FIPSMODE == 'YES') { - echo "The step is skipped" - } else { - echo "====> Build docker container" - sh ''' - PS_RELEASE=$(echo ${BRANCH} | sed 's/release-//g') - PS_MAJOR_RELEASE=$(echo ${BRANCH} | sed "s/release-//g" | sed "s/\\.//g" | awk '{print substr($0, 0, 2)}') - if [ ${PS_MAJOR_RELEASE} != "80" ]; then - MYSQL_SHELL_RELEASE=$(echo ${BRANCH} | sed 's/release-//g' | awk '{print substr($0, 0, 6)}' | sed 's/-//g') - MYSQL_ROUTER_RELEASE=$(echo ${BRANCH} | sed 's/release-//g' | awk '{print substr($0, 0, 6)}' | sed 's/-//g') - else - MYSQL_SHELL_RELEASE=$(echo ${BRANCH} | sed 's/release-//g' | awk '{print substr($0, 0, 7)}' | sed 's/-//g') - MYSQL_ROUTER_RELEASE=$(echo ${BRANCH} | sed 's/release-//g' | awk '{print substr($0, 0, 7)}' | sed 's/-//g') - fi - sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common - sudo apt-get -y install apparmor - sudo aa-status - sudo systemctl stop apparmor - sudo systemctl disable apparmor - sudo apt-get install -y docker-ce docker-ce-cli containerd.io - export DOCKER_CLI_EXPERIMENTAL=enabled - sudo mkdir -p /usr/libexec/docker/cli-plugins/ - sudo curl -L https://github.com/docker/buildx/releases/download/v0.21.2/buildx-v0.21.2.linux-amd64 -o /usr/libexec/docker/cli-plugins/docker-buildx - sudo chmod +x /usr/libexec/docker/cli-plugins/docker-buildx - sudo systemctl restart docker - sudo apt-get install -y qemu-system binfmt-support qemu-user-static - sudo qemu-system-x86_64 --version - sudo lscpu | grep -q 'sse4_2' && grep -q 'popcnt' /proc/cpuinfo && echo "Supports x86-64-v2" || echo "Does NOT support x86-64-v2" - sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - git clone https://github.com/percona/percona-docker - cd percona-docker/percona-server-8.0 - sed -i "s/ENV PS_VERSION.*/ENV PS_VERSION ${PS_RELEASE}.${RPM_RELEASE}/g" Dockerfile - sed -i "s/ENV PS_TELEMETRY_VERSION.*/ENV PS_TELEMETRY_VERSION ${PS_RELEASE}-${RPM_RELEASE}/g" Dockerfile - sed -i "s/ENV MYSQL_SHELL_VERSION.*/ENV MYSQL_SHELL_VERSION ${MYSQL_SHELL_RELEASE}-${RPM_RELEASE}/g" Dockerfile - sed -i "s/ENV PS_REPO .*/ENV PS_REPO testing/g" Dockerfile - if [ ${PS_MAJOR_RELEASE} != "80" ]; then - if [ ${PS_MAJOR_RELEASE} = "84" ]; then - sed -i "s/percona-release enable ps-80/percona-release enable ps-84-lts/g" Dockerfile - else - sed -i "s/percona-release enable ps-80/percona-release enable ps-8x-innovation/g" Dockerfile - fi - sed -i "s/percona-release enable mysql-shell/PS_REPO=\"testing\";percona-release enable mysql-shell/g" Dockerfile - fi - sed -i "s/ENV PS_VERSION.*/ENV PS_VERSION ${PS_RELEASE}.${RPM_RELEASE}/g" Dockerfile.aarch64 - sed -i "s/ENV PS_TELEMETRY_VERSION.*/ENV PS_TELEMETRY_VERSION ${PS_RELEASE}-${RPM_RELEASE}/g" Dockerfile.aarch64 - sed -i "s/ENV PS_REPO .*/ENV PS_REPO testing/g" Dockerfile.aarch64 - if [ ${PS_MAJOR_RELEASE} != "80" ]; then - if [ ${PS_MAJOR_RELEASE} = "84" ]; then - sed -i "s/percona-release enable ps-80/percona-release enable ps-84-lts/g" Dockerfile.aarch64 - else - sed -i "s/percona-release enable ps-80/percona-release enable ps-8x-innovation/g" Dockerfile.aarch64 - fi - sed -i "s/percona-release enable mysql-shell/PS_REPO=\"testing\";percona-release enable mysql-shell/g" Dockerfile.aarch64 - fi - sudo docker build -t perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64 --progress plain --platform="linux/amd64" . - sudo docker buildx build --platform linux/arm64 -t perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-arm64 --load -f Dockerfile.aarch64 . - cd ../mysql-router - sed -i "s/ENV ROUTE_VERSION.*/ENV ROUTE_VERSION ${PS_RELEASE}.${RPM_RELEASE}/g" Dockerfile - sed -i "s/ENV MYSQL_SHELL_VERSION.*/ENV MYSQL_SHELL_VERSION ${MYSQL_SHELL_RELEASE}-${RPM_RELEASE}/g" Dockerfile - if [ ${PS_MAJOR_RELEASE} != "80" ]; then - if [ ${PS_MAJOR_RELEASE} = "84" ]; then - sed -i "s/percona-release enable ps-80 testing/percona-release enable ps-84-lts testing/g" Dockerfile - else - sed -i "s/percona-release enable ps-80 testing/percona-release enable ps-8x-innovation testing/g" Dockerfile - fi - fi - sudo docker build -t perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE}-amd64 --platform="linux/amd64" . - sudo docker build -t perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE}-arm64 --platform="linux/arm64" . - sudo docker tag perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE}-amd64 perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE} - sudo docker images - ''' - withCredentials([ - usernamePassword(credentialsId: 'hub.docker.com', - passwordVariable: 'PASS', - usernameVariable: 'USER' - )]) { - sh ''' - echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin - PS_RELEASE=$(echo ${BRANCH} | sed 's/release-//g') - PS_MAJOR_RELEASE=$(echo ${BRANCH} | sed "s/release-//g" | awk '{print substr($0, 0, 3)}') - if [ ${PS_MAJOR_RELEASE} != "80" ]; then - MYSQL_ROUTER_RELEASE=$(echo ${BRANCH} | sed 's/release-//g' | awk '{print substr($0, 0, 6)}' | sed 's/-//g') - else - MYSQL_ROUTER_RELEASE=$(echo ${BRANCH} | sed 's/release-//g' | awk '{print substr($0, 0, 7)}' | sed 's/-//g') - fi - sudo docker tag perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64 perconalab/percona-server:${PS_RELEASE}-amd64 - sudo docker push perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64 - sudo docker push perconalab/percona-server:${PS_RELEASE}-amd64 - sudo docker tag perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-arm64 perconalab/percona-server:${PS_RELEASE}-arm64 - sudo docker push perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-arm64 - sudo docker push perconalab/percona-server:${PS_RELEASE}-arm64 - sudo docker tag perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE} perconalab/percona-mysql-router:${PS_MAJOR_RELEASE} - sudo docker push perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE}-amd64 - sudo docker push perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE}-arm64 - sudo docker push perconalab/percona-mysql-router:${MYSQL_ROUTER_RELEASE} - sudo docker push perconalab/percona-mysql-router:${PS_MAJOR_RELEASE} - ''' - } - sh ''' - PS_RELEASE=$(echo ${BRANCH} | sed 's/release-//g') - sudo docker manifest create perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} \ - perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64 \ - perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-arm64 - sudo docker manifest annotate perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-arm64 --os linux --arch arm64 --variant v8 - sudo docker manifest annotate perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64 --os linux --arch amd64 - sudo docker manifest inspect perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} - ''' - withCredentials([ - usernamePassword(credentialsId: 'hub.docker.com', - passwordVariable: 'PASS', - usernameVariable: 'USER' - )]) { - sh ''' - PS_RELEASE=$(echo ${BRANCH} | sed 's/release-//g') - PS_MAJOR_RELEASE=$(echo ${BRANCH} | sed "s/release-//g" | awk '{print substr($0, 0, 3)}') - PS_MAJOR_FULL_RELEASE=$(echo ${BRANCH} | sed "s/release-//g" | sed "s/-.*//g") - echo "${PASS}" | sudo docker login -u "${USER}" --password-stdin - sudo docker manifest push perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} - sudo docker buildx imagetools create -t perconalab/percona-server:${PS_RELEASE} perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} - sudo docker buildx imagetools create -t perconalab/percona-server:${PS_MAJOR_FULL_RELEASE} perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} - sudo docker buildx imagetools create -t perconalab/percona-server:${PS_MAJOR_RELEASE} perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE} - ''' - } - } + build job: 'hetzner-ps8.0-docker-build', + parameters: [ + string(name: 'CLOUD', value: 'Hetzner'), + string(name: 'ORGANIZATION', value: 'perconalab'), + string(name: 'BRANCH', value: "${BRANCH}"), + string(name: 'RPM_RELEASE', value: '1'), + string(name: 'DEB_RELEASE', value: '1'), + string(name: 'FIPSMODE', value: 'NO'), + booleanParam(name: 'RUN_FAST', value: true) + ], + wait: false } } } diff --git a/ps/jenkins/percona-server-for-mysql-9.0.groovy b/ps/jenkins/percona-server-for-mysql-9.0.groovy index 5529006831..ef6e06fb0f 100644 --- a/ps/jenkins/percona-server-for-mysql-9.0.groovy +++ b/ps/jenkins/percona-server-for-mysql-9.0.groovy @@ -285,9 +285,9 @@ parameters { popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { - buildStage("debian:buster", "--build_source_deb=1 --enable_fipsmode=1") + buildStage("ubuntu:jammy", "--build_source_deb=1 --enable_fipsmode=1") } else { - buildStage("debian:buster", "--build_source_deb=1") + buildStage("ubuntu:jammy", "--build_source_deb=1") } } diff --git a/rel/jenkins/release-from-repository.groovy b/rel/jenkins/release-from-repository.groovy index 6707b703ec..890daeaa59 100644 --- a/rel/jenkins/release-from-repository.groovy +++ b/rel/jenkins/release-from-repository.groovy @@ -37,8 +37,8 @@ pipeline { name: 'PROBUILD') booleanParam(name: 'SKIP_RPM_PUSH', defaultValue: false, description: 'Skip push to RPM repository') booleanParam(name: 'SKIP_DEB_PUSH', defaultValue: false, description: 'Skip push to DEB repository') - booleanParam(name: 'SKIP_REPO_SYNC', defaultValue: false, description: 'Skip sync repos to production') booleanParam(name: 'SKIP_PACKAGES_SYNC', defaultValue: false, description: 'Skip sync packages to production download') + booleanParam(name: 'SKIP_REPO_SYNC', defaultValue: false, description: 'Skip sync repos to production') } options { skipDefaultCheckout() @@ -209,6 +209,9 @@ ENDSSH } } stage('Sync packages to production download') { + when { + expression { env.PATH_TO_BUILD?.trim() } + } steps { withCredentials([sshUserPrivateKey(credentialsId: 'repo.ci.percona.com', keyFileVariable: 'KEY_PATH', usernameVariable: 'USER')]) { sh """ From 6bf18107936cc7106f1f1d047658eb8847582a71 Mon Sep 17 00:00:00 2001 From: Varun Nagaraju Date: Tue, 15 Apr 2025 13:10:34 +0530 Subject: [PATCH 223/269] PSQLADM-567 Port PSQLADM-555 PXC fix to Hetzner branch https://perconadev.atlassian.net/browse/PSQLADM-567 Fetches the latest versions of PXC packges Replaces the hardcoded values to fetch the PXC packages to run in the jenkins job with a mechanism to always fetch the latest version of the packages available. Also, removes centos-7 and debian-buster from the qa-proxysql2-param job. --- proxysql/qa-proxysql2-param.yml | 2 -- proxysql/test-proxysql | 17 +++++++++++++++-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/proxysql/qa-proxysql2-param.yml b/proxysql/qa-proxysql2-param.yml index 43aa3fa09a..97dd6c1e27 100644 --- a/proxysql/qa-proxysql2-param.yml +++ b/proxysql/qa-proxysql2-param.yml @@ -82,12 +82,10 @@ type: user-defined name: DOCKER_OS values: - - centos:7 - centos:8 - ubuntu:jammy - ubuntu:focal - ubuntu:noble - - debian:buster - debian:bullseye - debian:bookworm builders: diff --git a/proxysql/test-proxysql b/proxysql/test-proxysql index 5191d8c684..7c23314ce9 100755 --- a/proxysql/test-proxysql +++ b/proxysql/test-proxysql @@ -170,16 +170,29 @@ enable_repo proxysql testing install_package proxysql3 if [[ "${PXC_VERSION}" == "PXC84" ]]; then + # Fetch PXC versions + LATEST_VERSION_84=$(git ls-remote --refs --sort='version:refname' --tags https://github.com/percona/percona-xtradb-cluster | \ + grep 'Percona-XtraDB-Cluster-8.4' | tail -n1 | cut -d '/' -f3 | cut -d '-' -f4) + VERSION_SUFFIX_84=$(git ls-remote --refs --sort='version:refname' --tags https://github.com/percona/percona-xtradb-cluster | \ + grep 'Percona-XtraDB-Cluster-8.4' | tail -n1 | cut -d '/' -f3 | cut -d '-' -f5) + # Downloading PXC-8.4 tarball package - sudo wget -q -O ${WORKDIR_ABS}/WORKDIR/Percona-XtraDB-Cluster_8.4.0-1.1_Linux.x86_64.glibc${glibc_version}-minimal.tar.gz https://downloads.percona.com/downloads/Percona-XtraDB-Cluster-84/Percona-XtraDB-Cluster-8.4.0/binary/tarball/Percona-XtraDB-Cluster_8.4.0-1.1_Linux.x86_64.glibc${glibc_version}-minimal.tar.gz + sudo wget -q -O ${WORKDIR_ABS}/WORKDIR/Percona-XtraDB-Cluster_${LATEST_VERSION_84}_Linux.x86_64.glibc${glibc_version}-minimal.tar.gz\ + http://downloads.percona.com/downloads/Percona-XtraDB-Cluster-84/Percona-XtraDB-Cluster-${LATEST_VERSION_84}/binary/tarball/Percona-XtraDB-Cluster_${LATEST_VERSION_84}-${VERSION_SUFFIX_84}_Linux.x86_64.glibc${glibc_version}-minimal.tar.gz # Installing PXC-8.4 client package enable_repo pxc-84-lts release install_package percona-xtradb-cluster-client elif [[ "${PXC_VERSION}" == "PXC80" ]]; then + # Fetch PXC versions + LATEST_VERSION_80=$(git ls-remote --refs --sort='version:refname' --tags https://github.com/percona/percona-xtradb-cluster | \ + grep 'Percona-XtraDB-Cluster-8.0' | tail -n1 | cut -d '/' -f3 | cut -d '-' -f4) + VERSION_SUFFIX_80=$(git ls-remote --refs --sort='version:refname' --tags https://github.com/percona/percona-xtradb-cluster | \ + grep 'Percona-XtraDB-Cluster-8.0' | tail -n1 | cut -d '/' -f3 | cut -d '-' -f5) # Downloading PXC-8.0 tarball package - sudo wget -q -O ${WORKDIR_ABS}/WORKDIR/Percona-XtraDB-Cluster_8.0.36-28.1_Linux.x86_64.glibc${glibc_version}-minimal.tar.gz https://downloads.percona.com/downloads/Percona-XtraDB-Cluster-80/Percona-XtraDB-Cluster-8.0.36/binary/tarball/Percona-XtraDB-Cluster_8.0.36-28.1_Linux.x86_64.glibc${glibc_version}-minimal.tar.gz + sudo wget -q -O ${WORKDIR_ABS}/WORKDIR/Percona-XtraDB-Cluster_${LATEST_VERSION_80}_Linux.x86_64.glibc${glibc_version}-minimal.tar.gz \ + http://downloads.percona.com/downloads/Percona-XtraDB-Cluster-80/Percona-XtraDB-Cluster-${LATEST_VERSION_80}/binary/tarball/Percona-XtraDB-Cluster_${LATEST_VERSION_80}-${VERSION_SUFFIX_80}_Linux.x86_64.glibc${glibc_version}-minimal.tar.gz # Installing PXC-8.0 client package enable_repo pxc-80 release From 3b629552943806992a64ca753dea71a641a09103 Mon Sep 17 00:00:00 2001 From: Vadim Yalovets Date: Thu, 28 Aug 2025 14:29:24 +0300 Subject: [PATCH 224/269] PKG-878 Packaging tasks for release - PS 9.4.0-1 (#3511) --- proxysql/qa-proxysql3-pipeline.groovy | 4 +- ...percona-server-for-mysql-8.0-docker.groovy | 4 + .../percona-server-for-mysql-8.0.groovy | 75 ------------------- .../percona-server-for-mysql-9.0.groovy | 42 +++++++++++ 4 files changed, 48 insertions(+), 77 deletions(-) diff --git a/proxysql/qa-proxysql3-pipeline.groovy b/proxysql/qa-proxysql3-pipeline.groovy index 4b39953739..bd3be4dbc8 100644 --- a/proxysql/qa-proxysql3-pipeline.groovy +++ b/proxysql/qa-proxysql3-pipeline.groovy @@ -77,7 +77,7 @@ pipeline { script { currentBuild.displayName = "#${BUILD_NUMBER}-${params.BRANCH}-${params.DOCKER_OS}-${params.CMAKE_BUILD_TYPE}-${params.PXC_VERSION}" } - git branch: 'hetzner', url: 'https://github.com/adivinho/jenkins-pipelines' + git branch: 'hetzner', url: 'https://github.com/percona-lab/jenkins-pipelines' echo 'Checkout ProxySQL sources' sh ''' # sudo is needed for better node recovery after compilation failure @@ -114,7 +114,7 @@ pipeline { stage('Test ProxySQL') { agent { label 'docker' } steps { - git branch: 'hetzner', url: 'https://github.com/adivinho/jenkins-pipelines' + git branch: 'hetzner', url: 'https://github.com/percona-lab/jenkins-pipelines' echo 'Test ProxySQL' withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: 'c42456e5-c28d-4962-b32c-b75d161bff27', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { sh ''' diff --git a/ps/jenkins/percona-server-for-mysql-8.0-docker.groovy b/ps/jenkins/percona-server-for-mysql-8.0-docker.groovy index cb902d2138..5ddaa07d8a 100644 --- a/ps/jenkins/percona-server-for-mysql-8.0-docker.groovy +++ b/ps/jenkins/percona-server-for-mysql-8.0-docker.groovy @@ -322,6 +322,10 @@ parameters { sudo docker buildx imagetools create -t ${ORGANIZATION}/percona-server:${PS_RELEASE} ${ORGANIZATION}/percona-server:${PS_RELEASE}.${RPM_RELEASE} sudo docker buildx imagetools create -t ${ORGANIZATION}/percona-server:${PS_MAJOR_FULL_RELEASE} ${ORGANIZATION}/percona-server:${PS_RELEASE}.${RPM_RELEASE} sudo docker buildx imagetools create -t ${ORGANIZATION}/percona-server:${PS_MAJOR_RELEASE} ${ORGANIZATION}/percona-server:${PS_RELEASE}.${RPM_RELEASE} + PS_MAJOR_RELEASE=$(echo ${BRANCH} | sed "s/release-//g" | awk '{print substr($0, 0, 3)}') + if [ ${PS_MAJOR_RELEASE} = "80" ]; then + sudo docker buildx imagetools create -t ${ORGANIZATION}/percona-server:latest ${ORGANIZATION}/percona-server:${PS_RELEASE}.${RPM_RELEASE} + fi ''' } } diff --git a/ps/jenkins/percona-server-for-mysql-8.0.groovy b/ps/jenkins/percona-server-for-mysql-8.0.groovy index ab9fc59982..d8fd03fb00 100644 --- a/ps/jenkins/percona-server-for-mysql-8.0.groovy +++ b/ps/jenkins/percona-server-for-mysql-8.0.groovy @@ -423,11 +423,7 @@ parameters { pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } -/* stage('Oracle Linux 10') { - when { - expression { false } - } agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } @@ -448,9 +444,6 @@ parameters { } } stage('Oracle Linux 10 ARM') { - when { - expression { false } - } agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } @@ -470,7 +463,6 @@ parameters { pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } -*/ stage('Amazon Linux 2023') { when { expression { env.FIPSMODE == 'YES' } @@ -998,73 +990,6 @@ parameters { } } slackNotify("${SLACKNOTIFY}", "#00FF00", "[${JOB_NAME}]: Triggering Builds for Package Testing for ${BRANCH} - [${BUILD_URL}]") - unstash 'properties' - script { - currentBuild.description = "Built on ${BRANCH}; path to packages: ${COMPONENT}/${AWS_STASH_PATH}" - REVISION = sh(returnStdout: true, script: "grep REVISION test/percona-server-8.0.properties | awk -F '=' '{ print\$2 }'").trim() - PS_RELEASE = sh(returnStdout: true, script: "echo ${BRANCH} | sed 's/release-//g'").trim() - PS8_RELEASE_VERSION = sh(returnStdout: true, script: """ echo ${BRANCH} | sed -nE '/release-(8\\.[0-9]{1})\\..*/s//\\1/p' """).trim() - - if("${PS8_RELEASE_VERSION}"){ - echo "Executing MINITESTS as VALID VALUES FOR PS8_RELEASE_VERSION:${PS8_RELEASE_VERSION}" - echo "Checking for the Github Repo VERSIONS file changes..." - withCredentials([string(credentialsId: 'GITHUB_API_TOKEN', variable: 'TOKEN')]) { - sh """ - set -x - git clone https://jenkins-pxc-cd:$TOKEN@github.com/Percona-QA/package-testing.git - cd package-testing - git config user.name "jenkins-pxc-cd" - git config user.email "it+jenkins-pxc-cd@percona.com" - echo "${PS8_RELEASE_VERSION} is the VALUE!!@!" - export RELEASE_VER_VAL="${PS8_RELEASE_VERSION}" - if [[ "\$RELEASE_VER_VAL" =~ ^8.[0-9]{1}\$ ]]; then - echo "\$RELEASE_VER_VAL is a valid version" - OLD_REV=\$(cat VERSIONS | grep PS_INN_LTS_REV | cut -d '=' -f2- ) - OLD_VER=\$(cat VERSIONS | grep PS_INN_LTS_VER | cut -d '=' -f2- ) - sed -i s/PS_INN_LTS_REV=\$OLD_REV/PS_INN_LTS_REV='"'${REVISION}'"'/g VERSIONS - sed -i s/PS_INN_LTS_VER=\$OLD_VER/PS_INN_LTS_VER='"'${PS_RELEASE}'"'/g VERSIONS - - else - echo "INVALID PS8_RELEASE_VERSION VALUE: ${PS8_RELEASE_VERSION}" - fi - git diff - if [[ -z \$(git diff) ]]; then - echo "No changes" - else - echo "There are changes" - git add -A - git commit -m "Autocommit: add ${REVISION} and ${PS_RELEASE} for ${PS8_RELEASE_VERSION} package testing VERSIONS file." - git push - fi - """ - } - echo "Start Minitests for PS" - package_tests_ps80(minitestNodes) - if("${mini_test_error}" == "True"){ - error "NOT TRIGGERING PACKAGE TESTS AND INTEGRATION TESTS DUE TO MINITEST FAILURE !!" - }else{ - echo "TRIGGERING THE PACKAGE TESTING JOB!!!" - build job: 'package-testing-ps-innovation-lts', propagate: false, wait: false, parameters: [string(name: 'product_to_test', value: "${product_to_test}"),string(name: 'install_repo', value: "testing"),string(name: 'node_to_test', value: "all"),string(name: 'action_to_test', value: "all"),string(name: 'check_warnings', value: "yes"),string(name: 'install_mysql_shell', value: "no")] - - echo "Trigger PMM_PS Github Actions Workflow" - - withCredentials([string(credentialsId: 'GITHUB_API_TOKEN', variable: 'GITHUB_API_TOKEN')]) { - sh """ - curl -i -v -X POST \ - -H "Accept: application/vnd.github.v3+json" \ - -H "Authorization: token ${GITHUB_API_TOKEN}" \ - "https://api.github.com/repos/Percona-Lab/qa-integration/actions/workflows/PMM_PS.yaml/dispatches" \ - -d '{"ref":"main","inputs":{"ps_version":"${PS_RELEASE}"}}' - """ - } - - } - } - else{ - error "Skipping MINITESTS and Other Triggers as invalid RELEASE VERSION FOR THIS JOB" - slackNotify("${SLACKNOTIFY}", "#00FF00", "[${JOB_NAME}]: Skipping MINITESTS and Other Triggers as invalid RELEASE VERSION FOR THIS JOB ${BRANCH} - [${BUILD_URL}]") - } - } deleteDir() } failure { diff --git a/ps/jenkins/percona-server-for-mysql-9.0.groovy b/ps/jenkins/percona-server-for-mysql-9.0.groovy index ef6e06fb0f..51395070fe 100644 --- a/ps/jenkins/percona-server-for-mysql-9.0.groovy +++ b/ps/jenkins/percona-server-for-mysql-9.0.groovy @@ -384,6 +384,48 @@ parameters { } } } + stage('Oracle Linux 10') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + cleanUpWS() + installCli("rpm") + unstash 'properties' + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + script { + if (env.FIPSMODE == 'YES') { + buildStage("oraclelinux:10", "--build_rpm=1 --with_zenfs=1 --enable_fipsmode=1") + } else { + buildStage("oraclelinux:10", "--build_rpm=1 --with_zenfs=1") + } + if (env.EXPERIMENTALMODE == 'NO') { + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + } + } + stage('Oracle Linux 10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + installCli("rpm") + unstash 'properties' + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + script { + if (env.FIPSMODE == 'YES') { + buildStage("oraclelinux:10", "--build_rpm=1 --enable_fipsmode=1") + } else { + buildStage("oraclelinux:10", "--build_rpm=1") + } + if (env.EXPERIMENTALMODE == 'NO') { + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + } + } /* stage('Ubuntu Focal(20.04)') { agent { From f30307f3feba16de55cae7c2aa510b9d8dce7f1f Mon Sep 17 00:00:00 2001 From: Vadim Yalovets Date: Mon, 1 Sep 2025 12:34:16 +0300 Subject: [PATCH 225/269] Hetzner (#3515) --- ps/jenkins/get-ps-branches-9.x.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ps/jenkins/get-ps-branches-9.x.groovy b/ps/jenkins/get-ps-branches-9.x.groovy index ee1e62ff28..91196a7674 100644 --- a/ps/jenkins/get-ps-branches-9.x.groovy +++ b/ps/jenkins/get-ps-branches-9.x.groovy @@ -81,7 +81,7 @@ pipeline { """ } slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: new changes for branch ${BRANCH_NAME}[commit id: ${COMMIT_ID}] were detected, build will be started soon") - build job: 'ps9.0-RELEASE', parameters: [string(name: 'BRANCH', value: BRANCH_NAME), string(name: 'COMPONENT', value: 'testing')] + build job: 'ps9.0-RELEASE', parameters: [string(name: 'BRANCH', value: BRANCH_NAME), string(name: 'COMPONENT', value: 'experimental')] } } From 98088e8a822d4bd2f9fe5280bcc34c5f7a19cf0c Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Mon, 1 Sep 2025 16:01:47 +0300 Subject: [PATCH 226/269] PKG-1083 psmdb.cd: comment out el10 build stages Disable Oracle Linux 10 (EL10) build stages for plm/pbm/mongosh until PSMDB for el10 is released --- pbm/jenkins/percona-mongodb-backup.groovy | 8 ++++---- plm/percona-link-mongodb.groovy | 8 ++++---- psmdb/jenkins/percona-mongodb-mongosh.groovy | 8 ++++---- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/pbm/jenkins/percona-mongodb-backup.groovy b/pbm/jenkins/percona-mongodb-backup.groovy index a8fbb85945..fa713870a2 100644 --- a/pbm/jenkins/percona-mongodb-backup.groovy +++ b/pbm/jenkins/percona-mongodb-backup.groovy @@ -205,7 +205,7 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Oracle Linux 10(x86_64)') { + /* stage('Oracle Linux 10(x86_64)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' } @@ -217,8 +217,8 @@ pipeline { pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } - } - stage('Oracle Linux 10(aarch64)') { + } */ // Commented out in scope of PKG-1083 + /* stage('Oracle Linux 10(aarch64)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' } @@ -230,7 +230,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } - } + } */ // Commented out in scope of PKG-1083 stage('Amazon Linux 2023(x86_64)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' diff --git a/plm/percona-link-mongodb.groovy b/plm/percona-link-mongodb.groovy index a2432f7b94..4668d4d3a5 100644 --- a/plm/percona-link-mongodb.groovy +++ b/plm/percona-link-mongodb.groovy @@ -176,7 +176,7 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Oracle Linux 10') { + /* stage('Oracle Linux 10') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -188,8 +188,8 @@ pipeline { pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } - } - stage('Oracle Linux 10 ARM') { + } */ // Commented out in scope of PKG-1083 + /* stage('Oracle Linux 10 ARM') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } @@ -201,7 +201,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } - } + } */ // Commented out in scope of PKG-1083 stage('Amazon Linux 2023') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/psmdb/jenkins/percona-mongodb-mongosh.groovy b/psmdb/jenkins/percona-mongodb-mongosh.groovy index b2fdb8c07a..6969c51a8c 100644 --- a/psmdb/jenkins/percona-mongodb-mongosh.groovy +++ b/psmdb/jenkins/percona-mongodb-mongosh.groovy @@ -147,7 +147,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } } - stage('Oracle Linux 10(x86_64)') { + /* stage('Oracle Linux 10(x86_64)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } @@ -158,8 +158,8 @@ pipeline { pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } - } - stage('Oracle Linux 10(aarch64)') { + } */ // Commented out in scope of PKG-1083 + /* stage('Oracle Linux 10(aarch64)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-64gb-aarch64' } @@ -170,7 +170,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) } - } + } */ // Commented out in scope of PKG-1083 stage('Amazon Linux 2023(x86_64)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-64gb' From b8841d5de9ab7b97208b9f42aa3b8beda5807198 Mon Sep 17 00:00:00 2001 From: Sandra Romanchenko <53295797+sandraromanchenko@users.noreply.github.com> Date: Tue, 2 Sep 2025 11:58:58 +0300 Subject: [PATCH 227/269] PBM. Add test for different storage providers and encryption types (#3397) --- pbm/hetzner-pbm-functional-tests-full.groovy | 15 +++++++++++++-- pbm/hetzner-pbm-functional-tests.groovy | 15 +++++++++++++-- pbm/pbm-release-test-run.groovy | 2 +- psmdb/psmdb-docker-arm.groovy | 2 +- psmdb/psmdb-docker.groovy | 2 +- 5 files changed, 29 insertions(+), 7 deletions(-) diff --git a/pbm/hetzner-pbm-functional-tests-full.groovy b/pbm/hetzner-pbm-functional-tests-full.groovy index 0fbe2efb95..554af06736 100644 --- a/pbm/hetzner-pbm-functional-tests-full.groovy +++ b/pbm/hetzner-pbm-functional-tests-full.groovy @@ -16,6 +16,7 @@ pipeline { choice(name: 'instance', choices: ['docker-x64','docker-aarch64'], description: 'Instance type for running tests') string(name: 'TESTING_BRANCH', defaultValue: 'main', description: 'psmdb-testing repo branch') string(name: 'PYTEST_PARAMS', defaultValue: '', description: 'Extra args passed to pytest') + booleanParam(name: 'ADD_JENKINS_MARKED_TESTS', defaultValue: false, description: 'Include tests with jenkins marker') } stages { stage('Set build name'){ @@ -43,7 +44,12 @@ pipeline { stages { stage ('Run tests') { steps { - withCredentials([string(credentialsId: 'olexandr_zephyr_token', variable: 'ZEPHYR_TOKEN')]) { + withCredentials([string(credentialsId: 'olexandr_zephyr_token', variable: 'ZEPHYR_TOKEN'), + string(credentialsId: 'KMS_ID', variable: 'KMS_ID'), + file(credentialsId: 'PBM-AWS-S3', variable: 'PBM_AWS_S3_YML'), + file(credentialsId: 'PBM-GCS-S3', variable: 'PBM_GCS_S3_YML'), + file(credentialsId: 'PBM-GCS-HMAC-S3', variable: 'PBM_GCS_HMAC_S3_YML'), + file(credentialsId: 'PBM-AZURE', variable: 'PBM_AZURE_YML')]) { sh """ docker kill \$(docker ps -a -q) || true docker rm \$(docker ps -a -q) || true @@ -61,9 +67,14 @@ pipeline { git poll: false, branch: params.TESTING_BRANCH, url: 'https://github.com/Percona-QA/psmdb-testing.git' sh """ cd pbm-functional/pytest + cp $PBM_AWS_S3_YML ./conf/pbm/aws.yaml + cp $PBM_GCS_S3_YML ./conf/pbm/gcs.yaml + cp $PBM_GCS_HMAC_S3_YML ./conf/pbm/gcs_hmac.yaml + cp $PBM_AZURE_YML ./conf/pbm/azure.yaml + if [ "${ADD_JENKINS_MARKED_TESTS}" = "true" ]; then JENKINS_FLAG="--jenkins"; else JENKINS_FLAG=""; fi PSMDB=perconalab/percona-server-mongodb:${PSMDB} docker-compose build --no-cache docker-compose up -d - docker-compose run test pytest -s --junitxml=junit.xml -k ${TEST} ${params.PYTEST_PARAMS} || true + KMS_ID="${KMS_ID}" docker-compose run test pytest -s --junitxml=junit.xml \$JENKINS_FLAG -k ${TEST} ${params.PYTEST_PARAMS} || true docker-compose down -v --remove-orphans curl -H "Content-Type:multipart/form-data" -H "Authorization: Bearer ${ZEPHYR_TOKEN}" -F "file=@junit.xml;type=application/xml" 'https://api.zephyrscale.smartbear.com/v2/automations/executions/junit?projectKey=PBM' -F 'testCycle={"name":"${JOB_NAME}-${BUILD_NUMBER}","customFields": { "PBM branch": "${PBM_BRANCH}","PSMDB docker image": "percona/percona-server-mongodb:${PSMDB}","instance": "${instance}"}};type=application/json' -i || true """ diff --git a/pbm/hetzner-pbm-functional-tests.groovy b/pbm/hetzner-pbm-functional-tests.groovy index 1bf634cc11..a05ea1e511 100644 --- a/pbm/hetzner-pbm-functional-tests.groovy +++ b/pbm/hetzner-pbm-functional-tests.groovy @@ -17,6 +17,7 @@ pipeline { choice(name: 'instance', choices: ['docker-x64','docker-aarch64'], description: 'Instance type for running tests') string(name: 'TESTING_BRANCH', defaultValue: 'main', description: 'psmdb-testing repo branch') string(name: 'PYTEST_PARAMS', defaultValue: '', description: 'Extra args passed to pytest') + booleanParam(name: 'ADD_JENKINS_MARKED_TESTS', defaultValue: false, description: 'Include tests with jenkins marker') } stages { stage('Set build name'){ @@ -40,7 +41,12 @@ pipeline { stages { stage ('Run tests') { steps { - withCredentials([string(credentialsId: 'olexandr_zephyr_token', variable: 'ZEPHYR_TOKEN')]) { + withCredentials([string(credentialsId: 'olexandr_zephyr_token', variable: 'ZEPHYR_TOKEN'), + string(credentialsId: 'KMS_ID', variable: 'KMS_ID'), + file(credentialsId: 'PBM-AWS-S3', variable: 'PBM_AWS_S3_YML'), + file(credentialsId: 'PBM-GCS-S3', variable: 'PBM_GCS_S3_YML'), + file(credentialsId: 'PBM-GCS-HMAC-S3', variable: 'PBM_GCS_HMAC_S3_YML'), + file(credentialsId: 'PBM-AZURE', variable: 'PBM_AZURE_YML')]) { sh """ docker kill \$(docker ps -a -q) || true docker rm \$(docker ps -a -q) || true @@ -61,9 +67,14 @@ pipeline { git checkout ${params.TESTING_BRANCH} cd pbm-functional/pytest + cp $PBM_AWS_S3_YML ./conf/pbm/aws.yaml + cp $PBM_GCS_S3_YML ./conf/pbm/gcs.yaml + cp $PBM_GCS_HMAC_S3_YML ./conf/pbm/gcs_hmac.yaml + cp $PBM_AZURE_YML ./conf/pbm/azure.yaml + if [ "${ADD_JENKINS_MARKED_TESTS}" = "true" ]; then JENKINS_FLAG="--jenkins"; else JENKINS_FLAG=""; fi docker-compose build docker-compose up -d - docker-compose run test pytest -s --junitxml=junit.xml -k ${TEST} ${params.PYTEST_PARAMS} || true + KMS_ID="${KMS_ID}" docker-compose run test pytest -s --junitxml=junit.xml \$JENKINS_FLAG -k ${TEST} ${params.PYTEST_PARAMS} || true docker-compose down -v --remove-orphans curl -H "Content-Type:multipart/form-data" -H "Authorization: Bearer ${ZEPHYR_TOKEN}" -F "file=@junit.xml;type=application/xml" 'https://api.zephyrscale.smartbear.com/v2/automations/executions/junit?projectKey=PBM' -F 'testCycle={"name":"${JOB_NAME}-${BUILD_NUMBER}","customFields": { "PBM branch": "${PBM_BRANCH}","PSMDB docker image": "${PSMDB}","instance": "${instance}"}};type=application/json' -i || true """ diff --git a/pbm/pbm-release-test-run.groovy b/pbm/pbm-release-test-run.groovy index ec966ffb82..98078f096f 100644 --- a/pbm/pbm-release-test-run.groovy +++ b/pbm/pbm-release-test-run.groovy @@ -21,7 +21,7 @@ pipeline { stages { stage ('Run e2e tests') { steps { - build job: 'hetzner-pbm-functional-tests-full', propagate: false, wait: true, parameters: [ string(name: 'PBM_BRANCH', value: params.PBM_BRANCH) ] + build job: 'hetzner-pbm-functional-tests-full', propagate: false, wait: true, parameters: [ string(name: 'PBM_BRANCH', value: params.PBM_BRANCH), booleanParam(name: 'ADD_JENKINS_MARKED_TESTS', value: true) ] } } stage ('Run package tests') { diff --git a/psmdb/psmdb-docker-arm.groovy b/psmdb/psmdb-docker-arm.groovy index a23fd2d20b..81d70f5748 100644 --- a/psmdb/psmdb-docker-arm.groovy +++ b/psmdb/psmdb-docker-arm.groovy @@ -235,7 +235,7 @@ pipeline { PBM_RELEASE=\$(cd percona-backup-mongodb && git branch -r | grep release | sed 's|origin/||' | sort --version-sort | tail -1) echo \$PBM_RELEASE """).trim() - build job: 'hetzner-pbm-functional-tests', propagate: false, wait: false, parameters: [string(name: 'PBM_BRANCH', value: pbm_branch ), string(name: 'PSMDB', value: psmdb_image ), string(name: 'instance', value: 'docker-aarch64'), string(name: 'TESTING_BRANCH', value: "pbm-${pbm_branch}")] + build job: 'hetzner-pbm-functional-tests', propagate: false, wait: false, parameters: [string(name: 'PBM_BRANCH', value: pbm_branch ), string(name: 'PSMDB', value: psmdb_image ), string(name: 'instance', value: 'docker-aarch64'), string(name: 'TESTING_BRANCH', value: "pbm-${pbm_branch}"), booleanParam(name: 'ADD_JENKINS_MARKED_TESTS', value: true)] } } } diff --git a/psmdb/psmdb-docker.groovy b/psmdb/psmdb-docker.groovy index 00a45a7573..2e77ff8a0c 100644 --- a/psmdb/psmdb-docker.groovy +++ b/psmdb/psmdb-docker.groovy @@ -169,7 +169,7 @@ pipeline { PBM_RELEASE=\$(cd percona-backup-mongodb && git branch -r | grep release | sed 's|origin/||' | sort --version-sort | tail -1) echo \$PBM_RELEASE """).trim() - build job: 'hetzner-pbm-functional-tests', propagate: false, wait: false, parameters: [string(name: 'PBM_BRANCH', value: pbm_branch ), string(name: 'PSMDB', value: psmdb_image ), string(name: 'TESTING_BRANCH', value: "pbm-${pbm_branch}")] + build job: 'hetzner-pbm-functional-tests', propagate: false, wait: false, parameters: [string(name: 'PBM_BRANCH', value: pbm_branch ), string(name: 'PSMDB', value: psmdb_image ), string(name: 'TESTING_BRANCH', value: "pbm-${pbm_branch}"), booleanParam(name: 'ADD_JENKINS_MARKED_TESTS', value: true)] } } } From f7192d21b56b024aada7d7b568a8c400c12f40e6 Mon Sep 17 00:00:00 2001 From: Sandra Romanchenko <53295797+sandraromanchenko@users.noreply.github.com> Date: Thu, 4 Sep 2025 13:52:44 +0300 Subject: [PATCH 228/269] PLM. Add job to site check (#3527) --- plm/hetzner-plm-site-check.groovy | 68 +++++++++++++++++++++++++++++++ plm/hetzner-plm-site-check.yml | 14 +++++++ 2 files changed, 82 insertions(+) create mode 100644 plm/hetzner-plm-site-check.groovy create mode 100644 plm/hetzner-plm-site-check.yml diff --git a/plm/hetzner-plm-site-check.groovy b/plm/hetzner-plm-site-check.groovy new file mode 100644 index 0000000000..d9b34e7115 --- /dev/null +++ b/plm/hetzner-plm-site-check.groovy @@ -0,0 +1,68 @@ +library changelog: false, identifier: "lib@hetzner", retriever: modernSCM([ + $class: 'GitSCMSource', + remote: 'https://github.com/Percona-Lab/jenkins-pipelines.git' +]) + +pipeline { + agent { + label 'docker-x64' + } + environment { + PATH = '/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin' + } + parameters { + string( + defaultValue: '0.6.0', + description: 'PLM Version for tests', + name: 'PLM_VERSION') + string( + defaultValue: 'main', + description: 'Branch for testing repository', + name: 'TESTING_BRANCH') + } + stages { + stage('Set build name'){ + steps { + script { + currentBuild.displayName = "${params.PLM_VERSION}" + } + } + } + stage('Checkout') { + steps { + deleteDir() + git poll: false, branch: TESTING_BRANCH, url: 'https://github.com/Percona-QA/psmdb-testing.git' + } + } + stage('Test') { + steps { + script { + sh """ + cd site_checks + docker run --env PLM_VERSION=${params.PLM_VERSION} --rm -v `pwd`:/tmp -w /tmp python bash -c 'pip3 install requests pytest setuptools && pytest -s --junitxml=junit.xml test_plm.py || [ \$? = 1 ] ' + """ + } + } + } + } + post { + success { + slackNotify("#mongodb_autofeed", "#00FF00", "[${JOB_NAME}]: checking packages on the main site for PLM ${PLM_VERSION} - ok [${BUILD_URL}testReport/]") + } + unstable { + slackNotify("#mongodb_autofeed", "#F6F930", "[${JOB_NAME}]: checking packages on the main site for PLM ${PLM_VERSION} - some links are broken [${BUILD_URL}testReport/]") + } + failure { + slackNotify("#mongodb_autofeed", "#FF0000", "[${JOB_NAME}]: checking packages on the main site for PLM ${PLM_VERSION} - failed [${BUILD_URL}]" ) + } + always { + script { + junit testResults: "**/junit.xml", keepLongStdio: true, allowEmptyResults: true, skipPublishingChecks: true + sh ''' + sudo rm -rf ./* + ''' + deleteDir() + } + } + } +} diff --git a/plm/hetzner-plm-site-check.yml b/plm/hetzner-plm-site-check.yml new file mode 100644 index 0000000000..fbd03960da --- /dev/null +++ b/plm/hetzner-plm-site-check.yml @@ -0,0 +1,14 @@ +- job: + name: hetzner-plm-site-check + project-type: pipeline + description: | + Do not edit this job through the web! + pipeline-scm: + scm: + - git: + url: https://github.com/Percona-Lab/jenkins-pipelines.git + branches: + - 'hetzner' + wipe-workspace: false + lightweight-checkout: true + script-path: plm/hetzner-plm-site-check.groovy From 73f56ecc7ed4586779e2cc32e0c8ce121a3a795c Mon Sep 17 00:00:00 2001 From: Manika Singhal Date: Thu, 4 Sep 2025 19:26:59 +0530 Subject: [PATCH 229/269] Bump PG version to 17.6.1 and temporarily disable tarball builds for PG16-13 --- ppg/pg_tarballs-arm.groovy | 8 ++++---- ppg/pg_tarballs.groovy | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/ppg/pg_tarballs-arm.groovy b/ppg/pg_tarballs-arm.groovy index 0b1eeb803d..b8822ac94d 100644 --- a/ppg/pg_tarballs-arm.groovy +++ b/ppg/pg_tarballs-arm.groovy @@ -124,7 +124,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = "release-17.5.2" + def BRANCH_NAME = "release-17.6.1" def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl3") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" @@ -150,7 +150,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = 'release-17.5.2' + def BRANCH_NAME = 'release-17.6.1' def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl1.1") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" @@ -168,7 +168,7 @@ pipeline { } } } - stage('Build pg_tarball 16 for OpenSSL 3') { +/* stage('Build pg_tarball 16 for OpenSSL 3') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } @@ -375,7 +375,7 @@ pipeline { uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } - } + } */ } //parallel } // stage diff --git a/ppg/pg_tarballs.groovy b/ppg/pg_tarballs.groovy index 73b1c75f4b..3d568ed02a 100644 --- a/ppg/pg_tarballs.groovy +++ b/ppg/pg_tarballs.groovy @@ -124,7 +124,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = "release-17.5.2" + def BRANCH_NAME = "release-17.6.1" def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl3") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" @@ -150,7 +150,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = 'release-17.5.2' + def BRANCH_NAME = 'release-17.6.1' def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl1.1") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Tarballs" @@ -168,7 +168,7 @@ pipeline { } } } - stage('Build pg_tarball 16 for OpenSSL 3') { +/* stage('Build pg_tarball 16 for OpenSSL 3') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -375,11 +375,11 @@ pipeline { uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } - } + } */ } //parallel } // stage - } + } post { success { slackNotify("#releases-ci", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") From 58b1966cdc7dd85feddd45c3a96b3f3e29444236 Mon Sep 17 00:00:00 2001 From: Manika Singhal Date: Fri, 5 Sep 2025 07:30:29 +0530 Subject: [PATCH 230/269] enable the tarball builds for all PG versions again --- ppg/pg_tarballs-arm.groovy | 4 ++-- ppg/pg_tarballs.groovy | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ppg/pg_tarballs-arm.groovy b/ppg/pg_tarballs-arm.groovy index b8822ac94d..e945a5028c 100644 --- a/ppg/pg_tarballs-arm.groovy +++ b/ppg/pg_tarballs-arm.groovy @@ -168,7 +168,7 @@ pipeline { } } } -/* stage('Build pg_tarball 16 for OpenSSL 3') { + stage('Build pg_tarball 16 for OpenSSL 3') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } @@ -375,7 +375,7 @@ pipeline { uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } - } */ + } } //parallel } // stage diff --git a/ppg/pg_tarballs.groovy b/ppg/pg_tarballs.groovy index 3d568ed02a..458b7c7f56 100644 --- a/ppg/pg_tarballs.groovy +++ b/ppg/pg_tarballs.groovy @@ -168,7 +168,7 @@ pipeline { } } } -/* stage('Build pg_tarball 16 for OpenSSL 3') { + stage('Build pg_tarball 16 for OpenSSL 3') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -375,7 +375,7 @@ pipeline { uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } - } */ + } } //parallel } // stage From 865c7959226203dcbaddb0d5e18154f9927f07c9 Mon Sep 17 00:00:00 2001 From: Manika Singhal Date: Fri, 5 Sep 2025 07:37:07 +0530 Subject: [PATCH 231/269] Bump PG 17.6.1 version and temporarily disable PG16-13 build --- ppg/pg_source_tarballs.groovy | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ppg/pg_source_tarballs.groovy b/ppg/pg_source_tarballs.groovy index a79a34f72f..d6cf4c30d7 100644 --- a/ppg/pg_source_tarballs.groovy +++ b/ppg/pg_source_tarballs.groovy @@ -120,7 +120,7 @@ pipeline { cleanUpWS() script { def PG_VERSION=17 - def BRANCH_NAME = "release-17.4.1" + def BRANCH_NAME = "release-17.6.1" def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl3") println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" def PRODUCT="Percona-PostgreSQL-Source-Tarballs" @@ -138,7 +138,7 @@ pipeline { } } } - stage('Build source tarball for PG 16') { +/* stage('Build source tarball for PG 16') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -241,7 +241,7 @@ pipeline { uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } - } + } */ } //parallel } // stage From 5eeb7522851deea0e60d71d4f5f11974ef9a5a96 Mon Sep 17 00:00:00 2001 From: Manika Singhal Date: Fri, 5 Sep 2025 07:56:09 +0530 Subject: [PATCH 232/269] enable all PG versions build again --- ppg/pg_source_tarballs.groovy | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ppg/pg_source_tarballs.groovy b/ppg/pg_source_tarballs.groovy index d6cf4c30d7..85a7398c35 100644 --- a/ppg/pg_source_tarballs.groovy +++ b/ppg/pg_source_tarballs.groovy @@ -138,7 +138,7 @@ pipeline { } } } -/* stage('Build source tarball for PG 16') { + stage('Build source tarball for PG 16') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -241,7 +241,7 @@ pipeline { uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } - } */ + } } //parallel } // stage From 56f27ac2fb1f27cf68f2121ea3a16b55b95b3698 Mon Sep 17 00:00:00 2001 From: Surabhi Bhat Date: Tue, 9 Sep 2025 18:12:53 +0530 Subject: [PATCH 233/269] Add Oracle Linux 10 to sysbench pipeline --- sysbench/sysbench.groovy | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/sysbench/sysbench.groovy b/sysbench/sysbench.groovy index d5635fad7d..35b6112739 100644 --- a/sysbench/sysbench.groovy +++ b/sysbench/sysbench.groovy @@ -191,6 +191,32 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Focal(20.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' From a539b97011fd96ad65970d38eaf5a65760e90bdc Mon Sep 17 00:00:00 2001 From: Sandra Romanchenko <53295797+sandraromanchenko@users.noreply.github.com> Date: Tue, 9 Sep 2025 16:16:14 +0300 Subject: [PATCH 234/269] PLM. Add option to include jenkins marked tests (#3538) --- plm/plm-functional-tests.groovy | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/plm/plm-functional-tests.groovy b/plm/plm-functional-tests.groovy index bed2f67e30..574bdb31ca 100644 --- a/plm/plm-functional-tests.groovy +++ b/plm/plm-functional-tests.groovy @@ -33,6 +33,7 @@ pipeline { choice(name: 'ARCH', choices: ['x86','arm'], description: 'Ec2 instance type for running tests') string(name: 'PSMDB_TESTING_BRANCH', defaultValue: 'main', description: 'psmdb-testing repo branch') string(name: 'TEST_FILTER', defaultValue: '', description: 'Optional pytest filter, f.e. T2 or T3') + booleanParam(name: 'ADD_JENKINS_MARKED_TESTS', defaultValue: true, description: 'Include tests with jenkins marker') } stages { stage('Set build name'){ @@ -80,10 +81,11 @@ pipeline { cd psmdb-testing/plm-pytest docker-compose build --no-cache docker-compose up -d + if [ "${ADD_JENKINS_MARKED_TESTS}" = "true" ]; then JENKINS_FLAG="--jenkins"; else JENKINS_FLAG=""; fi if [ -n "${params.TEST_FILTER}" ]; then - docker-compose run test pytest -v -s -k "${params.TEST_FILTER}" --junitxml=junit.xml || true + docker-compose run test pytest -v -s \$JENKINS_FLAG -k "${params.TEST_FILTER}" --junitxml=junit.xml || true else - docker-compose run test pytest -v -s --junitxml=junit.xml || true + docker-compose run test pytest -v -s \$JENKINS_FLAG --junitxml=junit.xml || true fi docker-compose down -v --remove-orphans curl -H "Content-Type:multipart/form-data" -H "Authorization: Bearer ${ZEPHYR_TOKEN}" -F "file=@junit.xml;type=application/xml" 'https://api.zephyrscale.smartbear.com/v2/automations/executions/junit?projectKey=PLM' -F 'testCycle={"name":"${JOB_NAME}-${BUILD_NUMBER}","customFields": { "PLM branch": "${PLM_BRANCH}","PSMDB docker image": "${MONGODB_IMAGE}","Instance": "${params.INSTANCE}"}};type=application/json' -i || true From 28b46dda09bb343191789823106f0fcbaeb658e4 Mon Sep 17 00:00:00 2001 From: Vadim Yalovets Date: Wed, 10 Sep 2025 13:41:41 +0300 Subject: [PATCH 235/269] Hetzner (#3542) --- pdps/perl-DBD-Mysql.groovy | 68 ++++-- pdpxc/percona-replication-manager.groovy | 62 +++-- proxysql/proxysql.groovy | 26 +++ proxysql/proxysql3.groovy | 6 - ps/jenkins/jemalloc.groovy | 72 ++++-- ...percona-server-for-mysql-8.0-docker.groovy | 8 +- .../percona-server-for-mysql-8.0.groovy | 3 + ps/jenkins/qpress.groovy | 46 +++- pt/jenkins/percona-toolkit.groovy | 67 ++++-- pxc/jenkins/percona-xtradb-cluster-8.0.groovy | 217 +++++++++--------- 10 files changed, 379 insertions(+), 196 deletions(-) diff --git a/pdps/perl-DBD-Mysql.groovy b/pdps/perl-DBD-Mysql.groovy index da80d88490..48e5e69063 100644 --- a/pdps/perl-DBD-Mysql.groovy +++ b/pdps/perl-DBD-Mysql.groovy @@ -11,6 +11,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { export build_dir=\$(pwd -P) docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " set -o xtrace + sed -i "s:archive.ubuntu.com:mirrors.edge.kernel.org:g" /etc/apt/sources.list cd \${build_dir} sed -i "s/^RPM_RELEASE=.*/RPM_RELEASE=${RPM_RELEASE}/g" builder.sh sed -i "s/^DEB_RELEASE=.*/DEB_RELEASE=${DEB_RELEASE}/g" builder.sh @@ -41,7 +42,7 @@ pipeline { description: 'URL for perl-DBD-MySQL repository', name: 'REPO') string( - defaultValue: '4_050', + defaultValue: '5_013', description: 'Tag/Branch for orchestartor repository', name: 'BRANCH') string( @@ -53,7 +54,7 @@ pipeline { description: 'Tag/Branch for perl-DBD-MySQL packaging repository', name: 'PACKAGE_REPO_BRANCH') string( - defaultValue: '4_050', + defaultValue: '5_013', description: 'General version of the product', name: 'VERSION') string( @@ -104,7 +105,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) @@ -117,7 +118,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_source_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) @@ -134,7 +135,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -147,7 +148,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -160,7 +161,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -173,20 +174,46 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Focal(20.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -199,7 +226,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -212,7 +239,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -225,7 +252,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -238,7 +265,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -251,7 +278,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -264,7 +291,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -277,7 +304,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -290,7 +317,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -303,7 +330,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -322,7 +349,7 @@ pipeline { stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild("tools", COMPONENT) + sync2ProdAutoBuild(params.CLOUD, "tools", COMPONENT) } } @@ -337,6 +364,9 @@ pipeline { } failure { slackNotify("#releases-ci", "#FF0000", "[${JOB_NAME}]: build failed for ${BRANCH} - [${BUILD_URL}]") + script { + currentBuild.description = "Built on ${BRANCH} by ${PACKAGE_REPO_BRANCH}" + } deleteDir() } always { diff --git a/pdpxc/percona-replication-manager.groovy b/pdpxc/percona-replication-manager.groovy index 7ce283e401..76368372c0 100644 --- a/pdpxc/percona-replication-manager.groovy +++ b/pdpxc/percona-replication-manager.groovy @@ -101,7 +101,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("centos:7", "--build_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) @@ -114,7 +114,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:xenial", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) @@ -131,7 +131,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("centos:7", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -144,7 +144,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("centos:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -157,7 +157,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -170,7 +170,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -183,20 +183,46 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Focal(20.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -209,7 +235,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -222,7 +248,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -235,7 +261,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -248,7 +274,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -261,7 +287,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -274,7 +300,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -287,7 +313,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -300,7 +326,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -313,7 +339,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -332,7 +358,7 @@ pipeline { stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(PRM_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PRM_REPO, COMPONENT) } } diff --git a/proxysql/proxysql.groovy b/proxysql/proxysql.groovy index 0c9b852519..794bd98fb3 100644 --- a/proxysql/proxysql.groovy +++ b/proxysql/proxysql.groovy @@ -193,6 +193,32 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Focal(20.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/proxysql/proxysql3.groovy b/proxysql/proxysql3.groovy index 2cf4091fa9..50731f9484 100644 --- a/proxysql/proxysql3.groovy +++ b/proxysql/proxysql3.groovy @@ -168,9 +168,6 @@ pipeline { } } stage('Oracle Linux 10') { - when { - expression { false } - } agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -184,9 +181,6 @@ pipeline { } } stage('Oracle Linux 10 ARM') { - when { - expression { false } - } agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } diff --git a/ps/jenkins/jemalloc.groovy b/ps/jenkins/jemalloc.groovy index 77d80f9dd4..e5ff53387c 100644 --- a/ps/jenkins/jemalloc.groovy +++ b/ps/jenkins/jemalloc.groovy @@ -242,7 +242,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) sh ''' echo "============>" ''' @@ -266,7 +266,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "RPM") sh ''' pwd @@ -287,7 +287,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:9", "RPM") sh ''' pwd @@ -308,7 +308,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:9", "RPM") sh ''' pwd @@ -323,13 +323,55 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "RPM") + sh ''' + pwd + ls -la test/rpm + cp -r test/srpm . + cp -r test/rpm . + ''' + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "RPM") + sh ''' + pwd + ls -la test/rpm + cp -r test/srpm . + cp -r test/rpm . + ''' + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Focal (20.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "DEB") sh ''' pwd @@ -347,7 +389,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "DEB") sh ''' pwd @@ -365,7 +407,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("debian:bullseye", "DEB") sh ''' pwd @@ -383,7 +425,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("debian:bullseye", "DEB") sh ''' pwd @@ -401,7 +443,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "DEB") sh ''' pwd @@ -419,7 +461,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "DEB") sh ''' pwd @@ -437,7 +479,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("debian:bookworm", "DEB") sh ''' pwd @@ -455,7 +497,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("debian:bookworm", "DEB") sh ''' pwd @@ -473,7 +515,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:noble", "DEB") sh ''' pwd @@ -491,7 +533,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:noble", "DEB") sh ''' pwd @@ -514,7 +556,7 @@ pipeline { stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild('tools', COMPONENT) + sync2ProdAutoBuild(params.CLOUD, 'tools', COMPONENT) } } diff --git a/ps/jenkins/percona-server-for-mysql-8.0-docker.groovy b/ps/jenkins/percona-server-for-mysql-8.0-docker.groovy index 5ddaa07d8a..d2fa537e6e 100644 --- a/ps/jenkins/percona-server-for-mysql-8.0-docker.groovy +++ b/ps/jenkins/percona-server-for-mysql-8.0-docker.groovy @@ -214,7 +214,11 @@ parameters { sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes rm -rf percona-docker git clone https://github.com/percona/percona-docker - cd percona-docker/percona-server-8.0 + if [ ${PS_MAJOR_RELEASE} = "80" ]; then + cd percona-docker/percona-server-8.0 + else + cd percona-docker/percona-server-8.4 + fi sed -i "s/ENV PS_VERSION.*/ENV PS_VERSION ${PS_RELEASE}.${RPM_RELEASE}/g" Dockerfile sed -i "s/ENV PS_TELEMETRY_VERSION.*/ENV PS_TELEMETRY_VERSION ${PS_RELEASE}-${RPM_RELEASE}/g" Dockerfile sed -i "s/ENV MYSQL_SHELL_VERSION.*/ENV MYSQL_SHELL_VERSION ${MYSQL_SHELL_RELEASE}-${RPM_RELEASE}/g" Dockerfile @@ -301,7 +305,7 @@ parameters { } sh ''' PS_RELEASE=$(echo ${BRANCH} | sed 's/release-//g') - sudo docker manifest create ${ORGANIZATION}/percona-server:${PS_RELEASE}.${RPM_RELEASE} \ + sudo docker manifest create --amend ${ORGANIZATION}/percona-server:${PS_RELEASE}.${RPM_RELEASE} \ ${ORGANIZATION}/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64 \ ${ORGANIZATION}/percona-server:${PS_RELEASE}.${RPM_RELEASE}-arm64 sudo docker manifest annotate ${ORGANIZATION}/percona-server:${PS_RELEASE}.${RPM_RELEASE} ${ORGANIZATION}/percona-server:${PS_RELEASE}.${RPM_RELEASE}-arm64 --os linux --arch arm64 --variant v8 diff --git a/ps/jenkins/percona-server-for-mysql-8.0.groovy b/ps/jenkins/percona-server-for-mysql-8.0.groovy index d8fd03fb00..e1eed2013a 100644 --- a/ps/jenkins/percona-server-for-mysql-8.0.groovy +++ b/ps/jenkins/percona-server-for-mysql-8.0.groovy @@ -960,6 +960,9 @@ parameters { } } stage('Build docker containers') { + when { + expression { env.FIPSMODE == 'NO' } + } agent { label 'launcher-x64' } diff --git a/ps/jenkins/qpress.groovy b/ps/jenkins/qpress.groovy index 4af3c2ed36..1d2f849e77 100644 --- a/ps/jenkins/qpress.groovy +++ b/ps/jenkins/qpress.groovy @@ -290,6 +290,48 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "RPM") + sh ''' + pwd + ls -la test/rpm + cp -r test/srpm . + cp -r test/rpm . + ''' + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "RPM") + sh ''' + pwd + ls -la test/rpm + cp -r test/srpm . + cp -r test/rpm . + ''' + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) + } + } stage('Amazon Linux 2023') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' @@ -516,8 +558,8 @@ pipeline { } stage('Sign packages') { steps { - signRPM(params.CLOUD) - signDEB(params.CLOUD) + signRPM() + signDEB() } } stage('Push to public repository') { diff --git a/pt/jenkins/percona-toolkit.groovy b/pt/jenkins/percona-toolkit.groovy index 8045b8204a..057f6da2c4 100644 --- a/pt/jenkins/percona-toolkit.groovy +++ b/pt/jenkins/percona-toolkit.groovy @@ -12,6 +12,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { export build_dir=\$(pwd -P) docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " set -o xtrace + sed -i "s:archive.ubuntu.com:mirrors.edge.kernel.org:g" /etc/apt/sources.list cd \${build_dir} bash -x ./pt_builder.sh --builddir=\${build_dir}/test --install_deps=1 bash -x ./pt_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --version=${VERSION} --branch=${GIT_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" @@ -40,11 +41,11 @@ pipeline { description: 'URL for percona-toolkit repository', name: 'GIT_REPO') string( - defaultValue: 'v2.1', + defaultValue: 'release-3.7.0-1', description: 'Tag/Branch for percona toolkit repository', name: 'GIT_BRANCH') string( - defaultValue: '2.5.1', + defaultValue: '3.7.0', description: 'Percona Toolkit release value', name: 'VERSION') string( @@ -99,7 +100,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) @@ -112,7 +113,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_src_deb=1") pushArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) @@ -129,7 +130,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -142,7 +143,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:8", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -155,7 +156,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) @@ -168,20 +169,46 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("srpm/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) buildStage("oraclelinux:9", "--build_rpm=1") pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("oraclelinux:10", "--build_rpm=1") + + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Ubuntu Focal(20.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -194,7 +221,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:focal", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -207,7 +234,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -220,7 +247,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:jammy", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -233,7 +260,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -246,7 +273,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("ubuntu:noble", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -259,7 +286,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -272,7 +299,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bullseye", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -285,7 +312,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -298,7 +325,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_deb/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -311,7 +338,7 @@ pipeline { } steps { cleanUpWS() - popArtifactFolder("source_tarball/", AWS_STASH_PATH) + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) buildStage("ubuntu:xenial", "--build_tarball=1") pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) @@ -331,7 +358,7 @@ pipeline { stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(PT_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PT_REPO, COMPONENT) } } stage('Build docker containers') { diff --git a/pxc/jenkins/percona-xtradb-cluster-8.0.groovy b/pxc/jenkins/percona-xtradb-cluster-8.0.groovy index 6b5d5513b1..c4b3071e95 100644 --- a/pxc/jenkins/percona-xtradb-cluster-8.0.groovy +++ b/pxc/jenkins/percona-xtradb-cluster-8.0.groovy @@ -179,44 +179,42 @@ pipeline { stage('Build PXC RPMs/DEBs/Binary tarballs') { parallel { stage('Centos 8') { + when { + expression { env.FIPSMODE == 'NO' } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { - if (env.FIPSMODE == 'YES') { - echo "The step is skipped" - } else { - cleanUpWS() - unstash 'pxc-80.properties' - popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) - buildStage("centos:8", "--build_rpm=1") + cleanUpWS() + unstash 'pxc-80.properties' + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("centos:8", "--build_rpm=1") - stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' - pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) - uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) - } + stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } } stage('Centos 8 ARM') { + when { + expression { env.FIPSMODE == 'NO' } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { script { - if (env.FIPSMODE == 'YES') { - echo "The step is skipped" - } else { - cleanUpWS() - unstash 'pxc-80.properties' - popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) - buildStage("centos:8", "--build_rpm=1") + cleanUpWS() + unstash 'pxc-80.properties' + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("centos:8", "--build_rpm=1") - stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' - pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) - uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) - } + stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } } @@ -261,86 +259,82 @@ pipeline { } } stage('Amazon Linux 2023') { + when { + expression { env.FIPSMODE == 'YES' } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { - if (env.FIPSMODE == 'NO') { - echo "The step is skipped" - } else { - cleanUpWS() - unstash 'pxc-80.properties' - popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) - buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") + cleanUpWS() + unstash 'pxc-80.properties' + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") - stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' - pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) - uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) - } + stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } } stage('Amazon Linux 2023 ARM') { + when { + expression { env.FIPSMODE == 'YES' } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { script { - if (env.FIPSMODE == 'NO') { - echo "The step is skipped" - } else { - cleanUpWS() - unstash 'pxc-80.properties' - popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) - buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") + cleanUpWS() + unstash 'pxc-80.properties' + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") - stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' - pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) - uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) - } + stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } } stage('Ubuntu Focal(20.04)') { + when { + expression { env.FIPSMODE == 'NO' } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { - if (env.FIPSMODE == 'YES') { - echo "The step is skipped" - } else { - cleanUpWS() - unstash 'pxc-80.properties' - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") + cleanUpWS() + unstash 'pxc-80.properties' + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") - stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } + stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } stage('Ubuntu Focal(20.04) ARM') { + when { + expression { env.FIPSMODE == 'NO' } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { script { - if (env.FIPSMODE == 'YES') { - echo "The step is skipped" - } else { - cleanUpWS() - unstash 'pxc-80.properties' - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") + cleanUpWS() + unstash 'pxc-80.properties' + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") - stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } + stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } @@ -429,44 +423,42 @@ pipeline { } } stage('Debian Bullseye(11)') { + when { + expression { env.FIPSMODE == 'NO' } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { - if (env.FIPSMODE == 'YES') { - echo "The step is skipped" - } else { - cleanUpWS() - unstash 'pxc-80.properties' - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("debian:bullseye", "--build_deb=1") + cleanUpWS() + unstash 'pxc-80.properties' + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") - stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } + stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } stage('Debian Bullseye(11) ARM') { + when { + expression { env.FIPSMODE == 'NO' } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { script { - if (env.FIPSMODE == 'YES') { - echo "The step is skipped" - } else { - cleanUpWS() - unstash 'pxc-80.properties' - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("debian:bullseye", "--build_deb=1") + cleanUpWS() + unstash 'pxc-80.properties' + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_deb=1") - stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } + stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } @@ -513,23 +505,22 @@ pipeline { } } stage('Centos 8 tarball') { + when { + expression { env.FIPSMODE == 'NO' } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { - if (env.FIPSMODE == 'YES') { - echo "The step is skipped" - } else { - cleanUpWS() - unstash 'pxc-80.properties' - popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("centos:8", "--build_tarball=1") + cleanUpWS() + unstash 'pxc-80.properties' + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("centos:8", "--build_tarball=1") - stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' - pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) - uploadTarballfromAWS(params.CLOUD, "test/tarball/", AWS_STASH_PATH, 'binary') - } + stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "test/tarball/", AWS_STASH_PATH, 'binary') } } } @@ -555,23 +546,22 @@ pipeline { } } stage('Debian Bullseye(11) tarball') { + when { + expression { env.FIPSMODE == 'NO' } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { - if (env.FIPSMODE == 'YES') { - echo "The step is skipped" - } else { - cleanUpWS() - unstash 'pxc-80.properties' - popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("debian:bullseye", "--build_tarball=1") + cleanUpWS() + unstash 'pxc-80.properties' + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("debian:bullseye", "--build_tarball=1") - stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' - pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) - uploadTarballfromAWS(params.CLOUD, "test/tarball/", AWS_STASH_PATH, 'binary') - } + stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' + pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "test/tarball/", AWS_STASH_PATH, 'binary') } } } @@ -652,14 +642,14 @@ pipeline { } } stage('Build docker containers') { + when { + expression { env.FIPSMODE == 'NO' } + } agent { label params.CLOUD == 'Hetzner' ? 'deb12-x64' : 'min-focal-x64' } steps { script { - if (env.FIPSMODE == 'YES') { - echo "The step is skipped" - } else { echo "====> Build docker containers" cleanUpWS() sh ''' @@ -780,7 +770,6 @@ pipeline { sudo docker buildx imagetools create -t perconalab/percona-xtradb-cluster:latest perconalab/percona-xtradb-cluster:${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE} ''' } - } } } } From b8cbc635b34b23886c2e9d974e3d1907c7653a51 Mon Sep 17 00:00:00 2001 From: Sandra Romanchenko <53295797+sandraromanchenko@users.noreply.github.com> Date: Wed, 17 Sep 2025 12:51:33 +0300 Subject: [PATCH 236/269] PBM. Update docker version (#3548) --- pbm/pbm-e2e-tests.groovy | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pbm/pbm-e2e-tests.groovy b/pbm/pbm-e2e-tests.groovy index 12e32ca3ea..647204a187 100644 --- a/pbm/pbm-e2e-tests.groovy +++ b/pbm/pbm-e2e-tests.groovy @@ -17,11 +17,11 @@ void prepareCluster(String TEST_TYPE) { sh """ sudo mkdir -p /usr/local/lib/docker/cli-plugins - sudo curl -SL https://github.com/docker/compose/releases/download/v2.29.1/docker-compose-linux-x86_64 -o /usr/local/lib/docker/cli-plugins/docker-compose + sudo curl -SL https://github.com/docker/compose/releases/download/v2.39.3/docker-compose-linux-x86_64 -o /usr/local/lib/docker/cli-plugins/docker-compose sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose docker compose version - wget https://download.docker.com/linux/static/stable/x86_64/docker-27.1.1.tgz -O /tmp/docker.tgz + wget https://download.docker.com/linux/static/stable/x86_64/docker-28.4.0.tgz -O /tmp/docker.tgz tar -xvf /tmp/docker.tgz sudo systemctl stop docker containerd sudo cp docker/* /usr/bin/ From 4790be4cb975dc45913f550f67cd30ae1b4df893 Mon Sep 17 00:00:00 2001 From: Manika Singhal Date: Thu, 18 Sep 2025 12:33:20 +0530 Subject: [PATCH 237/269] add trixie support disabling other platform builds temporarily to test trixie builds --- ppg/postgresql_server.groovy | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/ppg/postgresql_server.groovy b/ppg/postgresql_server.groovy index 13ba5b3ce1..9ba9807141 100644 --- a/ppg/postgresql_server.groovy +++ b/ppg/postgresql_server.groovy @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build PPG-SERVER RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8 AMD') { + /*stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -302,6 +302,32 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + }*/ + stage('Debian trixie(13) AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian trixie(13) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } From 4d41230bb79aa6f0782b3c11d18ca299d5ec9269 Mon Sep 17 00:00:00 2001 From: Manika Singhal Date: Thu, 18 Sep 2025 13:19:50 +0530 Subject: [PATCH 238/269] disable rpms temporarily to try trixie build --- ppg/postgresql_server.groovy | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ppg/postgresql_server.groovy b/ppg/postgresql_server.groovy index 9ba9807141..1cda766c48 100644 --- a/ppg/postgresql_server.groovy +++ b/ppg/postgresql_server.groovy @@ -94,7 +94,7 @@ pipeline { } stage('Build PPG-SERVER generic source packages') { parallel { - stage('Build PPG-SERVER generic source rpm') { + /*stage('Build PPG-SERVER generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -106,7 +106,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - } + }*/ stage('Build PPG-SERVER generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -337,7 +337,7 @@ pipeline { stage('Sign packages') { steps { - signRPM(params.CLOUD) + //signRPM(params.CLOUD) signDEB(params.CLOUD) } } From 8db3b0e8050a490bf628b46ec747e7d3074dd4a3 Mon Sep 17 00:00:00 2001 From: Manika Singhal Date: Fri, 19 Sep 2025 11:23:31 +0530 Subject: [PATCH 239/269] add debian13 support and temporarily disable all other platforms --- ppg/etcd-arm.groovy | 21 +++++++++++++++++---- ppg/etcd.groovy | 23 ++++++++++++++++++----- ppg/patroni.groovy | 21 +++++++++++++++++---- ppg/percona-postgis.groovy | 34 ++++++++++++++++++++++++++++++---- ppg/pg_gather.groovy | 34 ++++++++++++++++++++++++++++++---- ppg/pgaudit.groovy | 34 ++++++++++++++++++++++++++++++---- ppg/pgaudit_set_user.groovy | 34 ++++++++++++++++++++++++++++++---- ppg/pgbackrest.groovy | 34 ++++++++++++++++++++++++++++++---- ppg/pgbadger.groovy | 34 ++++++++++++++++++++++++++++++---- ppg/pgbouncer.groovy | 34 ++++++++++++++++++++++++++++++---- ppg/pgpool2-build.groovy | 34 ++++++++++++++++++++++++++++++---- ppg/pgrepack.groovy | 34 ++++++++++++++++++++++++++++++---- ppg/pgvector.groovy | 34 ++++++++++++++++++++++++++++++---- ppg/postgresql-common.groovy | 21 +++++++++++++++++---- ppg/ppg-server-ha.groovy | 34 ++++++++++++++++++++++++++++++---- ppg/ppg-server.groovy | 34 ++++++++++++++++++++++++++++++---- ppg/pysyncobj.groovy | 21 +++++++++++++++++---- ppg/wal2json.groovy | 34 ++++++++++++++++++++++++++++++---- ppg/ydiff.groovy | 21 +++++++++++++++++---- 19 files changed, 493 insertions(+), 77 deletions(-) diff --git a/ppg/etcd-arm.groovy b/ppg/etcd-arm.groovy index 8bd38892e3..b2f13fc572 100644 --- a/ppg/etcd-arm.groovy +++ b/ppg/etcd-arm.groovy @@ -97,7 +97,7 @@ pipeline { } stage('Build etcd generic source packages') { parallel { - stage('Build etcd generic source rpm') { + /*stage('Build etcd generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } @@ -109,7 +109,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - } + }*/ stage('Build etcd generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' @@ -127,7 +127,7 @@ pipeline { } // stage stage('Build etcd RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8') { + /*stage('Oracle Linux 8') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } @@ -214,6 +214,19 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + }*/ + stage('Debian trixie(13)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } @@ -223,7 +236,7 @@ pipeline { stage('Sign packages') { steps { - signRPM(params.CLOUD) + //signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/etcd.groovy b/ppg/etcd.groovy index 43a207961c..ed398d0588 100644 --- a/ppg/etcd.groovy +++ b/ppg/etcd.groovy @@ -94,7 +94,7 @@ pipeline { } stage('Build etcd generic source packages') { parallel { - stage('Build etcd generic source rpm') { + /*stage('Build etcd generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -106,7 +106,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - } + }*/ stage('Build etcd generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build etcd RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8 AMD') { + /*stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -292,13 +292,26 @@ pipeline { // pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) // uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) // } - //} + //}*/ + stage('Debian trixie(13) AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } } } stage('Sign packages') { steps { - signRPM(params.CLOUD) + //signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/patroni.groovy b/ppg/patroni.groovy index b9f6c96105..532d99726a 100644 --- a/ppg/patroni.groovy +++ b/ppg/patroni.groovy @@ -94,7 +94,7 @@ pipeline { } stage('Build PATRONI generic source packages') { parallel { - stage('Build PATRONI generic source rpm') { + /*stage('Build PATRONI generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -106,7 +106,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - } + }*/ stage('Build PATRONI generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build PATRONI RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8 AMD') { + /*stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -250,6 +250,19 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + }*/ + stage('Debian trixie(13)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } @@ -259,7 +272,7 @@ pipeline { stage('Sign packages') { steps { - signRPM(params.CLOUD) + //signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/percona-postgis.groovy b/ppg/percona-postgis.groovy index e301529076..8e7a62fd27 100644 --- a/ppg/percona-postgis.groovy +++ b/ppg/percona-postgis.groovy @@ -101,7 +101,7 @@ pipeline { } stage('Build POSTGIS generic source packages') { parallel { - stage('Build POSTGIS generic source rpm') { + /*stage('Build POSTGIS generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -113,7 +113,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - } + }*/ stage('Build POSTGIS generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -131,7 +131,7 @@ pipeline { } // stage stage('Build POSTGIS RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8 AMD') { + /*stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -309,6 +309,32 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + }*/ + stage('Debian trixie(13) AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian trixie(13) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } @@ -318,7 +344,7 @@ pipeline { stage('Sign packages') { steps { - signRPM(params.CLOUD) + //signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/pg_gather.groovy b/ppg/pg_gather.groovy index ebf6cceba6..f4b12bb444 100644 --- a/ppg/pg_gather.groovy +++ b/ppg/pg_gather.groovy @@ -94,7 +94,7 @@ pipeline { } stage('Build pg_gather generic source packages') { parallel { - stage('Build pg_gather generic source rpm') { + /*stage('Build pg_gather generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -106,7 +106,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - } + }*/ stage('Build pg_gather generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build pg_gather RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8 AMD') { + /*stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -302,16 +302,42 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + }*/ + stage('Debian trixie(13) AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } + stage('Debian trixie(13) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } } stage('Sign packages') { steps { - signRPM(params.CLOUD) + //signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/pgaudit.groovy b/ppg/pgaudit.groovy index e6d9210463..725c1b3054 100644 --- a/ppg/pgaudit.groovy +++ b/ppg/pgaudit.groovy @@ -94,7 +94,7 @@ pipeline { } stage('Build PG_AUDIT generic source packages') { parallel { - stage('Build PG_AUDIT generic source rpm') { + /*stage('Build PG_AUDIT generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -106,7 +106,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - } + }*/ stage('Build PG_AUDIT generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build PG_AUDIT RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8 AMD') { + /*stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -302,6 +302,32 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + }*/ + stage('Debian trixie(13) AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian trixie(13) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } @@ -311,7 +337,7 @@ pipeline { stage('Sign packages') { steps { - signRPM(params.CLOUD) + //signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/pgaudit_set_user.groovy b/ppg/pgaudit_set_user.groovy index 7ce6624435..8c175a487f 100644 --- a/ppg/pgaudit_set_user.groovy +++ b/ppg/pgaudit_set_user.groovy @@ -94,7 +94,7 @@ pipeline { } stage('Build PG_AUDIT generic source packages') { parallel { - stage('Build PG_AUDIT generic source rpm') { + /*stage('Build PG_AUDIT generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -106,7 +106,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - } + }*/ stage('Build PG_AUDIT generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build PG_AUDIT RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8 AMD') { + /*stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -302,6 +302,32 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + }*/ + stage('Debian trixie(13) AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian trixie(13) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } @@ -311,7 +337,7 @@ pipeline { stage('Sign packages') { steps { - signRPM(params.CLOUD) + //signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/pgbackrest.groovy b/ppg/pgbackrest.groovy index 0b5f66b40b..a9deeb5af2 100644 --- a/ppg/pgbackrest.groovy +++ b/ppg/pgbackrest.groovy @@ -94,7 +94,7 @@ pipeline { } stage('Build PG_BACKREST generic source packages') { parallel { - stage('Build PG_BACKREST generic source rpm') { + /*stage('Build PG_BACKREST generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -106,7 +106,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - } + }*/ stage('Build PG_BACKREST generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build PG_BACKREST RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8 AMD') { + /*stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -302,6 +302,32 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + }*/ + stage('Debian trixie(13) AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian trixie(13) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } @@ -311,7 +337,7 @@ pipeline { stage('Sign packages') { steps { - signRPM(params.CLOUD) + //signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/pgbadger.groovy b/ppg/pgbadger.groovy index ccaabfc757..195e5ada70 100644 --- a/ppg/pgbadger.groovy +++ b/ppg/pgbadger.groovy @@ -94,7 +94,7 @@ pipeline { } stage('Build PG_badger generic source packages') { parallel { - stage('Build PG_badger generic source rpm') { + /*stage('Build PG_badger generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -106,7 +106,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - } + }*/ stage('Build PG_badger generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build PG_badger RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8 AMD') { + /*stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -302,6 +302,32 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + }*/ + stage('Debian trixie(13) AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian trixie(13) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } @@ -311,7 +337,7 @@ pipeline { stage('Sign packages') { steps { - signRPM(params.CLOUD) + //signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/pgbouncer.groovy b/ppg/pgbouncer.groovy index 2db4bc3d36..18576cdd92 100644 --- a/ppg/pgbouncer.groovy +++ b/ppg/pgbouncer.groovy @@ -94,7 +94,7 @@ pipeline { } stage('Build PG_bouncer generic source packages') { parallel { - stage('Build PG_bouncer generic source rpm') { + /*stage('Build PG_bouncer generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -106,7 +106,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - } + }*/ stage('Build PG_bouncer generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build PG_bouncer RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8 AMD') { + /*stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -302,6 +302,32 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + }*/ + stage('Debian trixie(13) AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian trixie(13) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } @@ -311,7 +337,7 @@ pipeline { stage('Sign packages') { steps { - signRPM(params.CLOUD) + //signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/pgpool2-build.groovy b/ppg/pgpool2-build.groovy index abddb5ca3a..22429d644c 100644 --- a/ppg/pgpool2-build.groovy +++ b/ppg/pgpool2-build.groovy @@ -109,7 +109,7 @@ pipeline { } stage('Build pgpool2 generic source packages') { parallel { - stage('Build pgpool2 generic source rpm') { + /*stage('Build pgpool2 generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -121,7 +121,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - } + }*/ stage('Build pgpool2 generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -139,7 +139,7 @@ pipeline { } // stage stage('Build pgpool2 RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8 AMD') { + /*stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -317,6 +317,32 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + }*/ + stage('Debian trixie(13) AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian trixie(13) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } @@ -326,7 +352,7 @@ pipeline { stage('Sign packages') { steps { - signRPM(params.CLOUD) + //signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/pgrepack.groovy b/ppg/pgrepack.groovy index 6bf54fd4db..8a861839b6 100644 --- a/ppg/pgrepack.groovy +++ b/ppg/pgrepack.groovy @@ -94,7 +94,7 @@ pipeline { } stage('Build PG_REPACK generic source packages') { parallel { - stage('Build PG_REPACK generic source rpm') { + /*stage('Build PG_REPACK generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -106,7 +106,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - } + }*/ stage('Build PG_REPACK generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build PG_REPACK RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8 AMD') { + /*stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -302,6 +302,32 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + }*/ + stage('Debian trixie(13) AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian trixie(13) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } @@ -311,7 +337,7 @@ pipeline { stage('Sign packages') { steps { - signRPM(params.CLOUD) + //signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/pgvector.groovy b/ppg/pgvector.groovy index 7b9b6f54ef..b0d178a8d5 100644 --- a/ppg/pgvector.groovy +++ b/ppg/pgvector.groovy @@ -94,7 +94,7 @@ pipeline { } stage('Build pgvector generic source packages') { parallel { - stage('Build pgvector generic source rpm') { + /*stage('Build pgvector generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -106,7 +106,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - } + }*/ stage('Build pgvector generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build pgvector RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8 AMD') { + /*stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -302,6 +302,32 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + }*/ + stage('Debian trixie(13) AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian trixie(13) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } @@ -311,7 +337,7 @@ pipeline { stage('Sign packages') { steps { - signRPM(params.CLOUD) + //signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/postgresql-common.groovy b/ppg/postgresql-common.groovy index 5390f631b5..c43fb14021 100644 --- a/ppg/postgresql-common.groovy +++ b/ppg/postgresql-common.groovy @@ -94,7 +94,7 @@ pipeline { } stage('Build postgresql-common generic source packages') { parallel { - stage('Build postgresql-common generic source rpm') { + /*stage('Build postgresql-common generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -106,7 +106,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - } + }*/ stage('Build postgresql-common generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build postgresql-common RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8') { + /*stage('Oracle Linux 8') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -211,6 +211,19 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + }*/ + stage('Debian trixie(13)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } @@ -220,7 +233,7 @@ pipeline { stage('Sign packages') { steps { - signRPM(params.CLOUD) + //signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/ppg-server-ha.groovy b/ppg/ppg-server-ha.groovy index 4161365cb7..b7118de8ea 100644 --- a/ppg/ppg-server-ha.groovy +++ b/ppg/ppg-server-ha.groovy @@ -96,7 +96,7 @@ pipeline { } stage('Build PPG-SERVER_HA generic source packages') { parallel { - stage('Build PPG-SERVER_HA generic source rpm') { + /*stage('Build PPG-SERVER_HA generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -108,7 +108,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - } + }*/ stage('Build PPG-SERVER_HA generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -126,7 +126,7 @@ pipeline { } // stage stage('Build PPG-SERVER-HA RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8 AMD') { + /*stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -304,6 +304,32 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + }*/ + stage('Debian trixie(13) AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian trixie(13) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } @@ -313,7 +339,7 @@ pipeline { stage('Sign packages') { steps { - signRPM(params.CLOUD) + //signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/ppg-server.groovy b/ppg/ppg-server.groovy index 2de59a4b6f..edbfa67cab 100644 --- a/ppg/ppg-server.groovy +++ b/ppg/ppg-server.groovy @@ -90,7 +90,7 @@ pipeline { } stage('Build PPG-SERVER generic source packages') { parallel { - stage('Build PPG-SERVER generic source rpm') { + /*stage('Build PPG-SERVER generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -102,7 +102,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - } + }*/ stage('Build PPG-SERVER generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -120,7 +120,7 @@ pipeline { } // stage stage('Build PPG-SERVER RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8 AMD') { + /*stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -298,6 +298,32 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + }*/ + stage('Debian trixie(13) AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian trixie(13) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } @@ -307,7 +333,7 @@ pipeline { stage('Sign packages') { steps { - signRPM(params.CLOUD) + //signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/pysyncobj.groovy b/ppg/pysyncobj.groovy index a3e56c91d4..300d308dc9 100644 --- a/ppg/pysyncobj.groovy +++ b/ppg/pysyncobj.groovy @@ -94,7 +94,7 @@ pipeline { } stage('Build PYSYNCOBJ generic source packages') { parallel { - stage('Build PYSYNCOBJ generic source rpm') { + /*stage('Build PYSYNCOBJ generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -106,7 +106,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - } + }*/ stage('Build PYSYNCOBJ generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build PYSYNCOBJ RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8') { + /*stage('Oracle Linux 8') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -211,6 +211,19 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + }*/ + stage('Debian trixie(13)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } @@ -220,7 +233,7 @@ pipeline { stage('Sign packages') { steps { - signRPM(params.CLOUD) + //signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/wal2json.groovy b/ppg/wal2json.groovy index bb07ecf6b8..d44a08feb2 100644 --- a/ppg/wal2json.groovy +++ b/ppg/wal2json.groovy @@ -94,7 +94,7 @@ pipeline { } stage('Build wal2json generic source packages') { parallel { - stage('Build wal2json generic source rpm') { + /*stage('Build wal2json generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -106,7 +106,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - } + }*/ stage('Build wal2json generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build wal2json RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8 AMD') { + /*stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -302,6 +302,32 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + }*/ + stage('Debian trixie(13) AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian trixie(13) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } @@ -311,7 +337,7 @@ pipeline { stage('Sign packages') { steps { - signRPM(params.CLOUD) + //signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/ydiff.groovy b/ppg/ydiff.groovy index b700805efc..e6b7503f3f 100644 --- a/ppg/ydiff.groovy +++ b/ppg/ydiff.groovy @@ -94,7 +94,7 @@ pipeline { } stage('Build YDIFF generic source packages') { parallel { - stage('Build YDIFF generic source rpm') { + /*stage('Build YDIFF generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -106,7 +106,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - } + }*/ stage('Build YDIFF generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build YDIFF RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8 AMD') { + /*stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -250,6 +250,19 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + }*/ + stage('Debian trixie(13)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } @@ -259,7 +272,7 @@ pipeline { stage('Sign packages') { steps { - signRPM(params.CLOUD) + //signRPM(params.CLOUD) signDEB(params.CLOUD) } } From 232d04de98653cc55649ee3e758e84ab934da3ca Mon Sep 17 00:00:00 2001 From: Manika Singhal Date: Fri, 19 Sep 2025 13:13:12 +0530 Subject: [PATCH 240/269] add debian13 support for telemetry --- ppg/pg_percona_telemetry_autobuild.groovy | 36 ++++++++++++++++++++--- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/ppg/pg_percona_telemetry_autobuild.groovy b/ppg/pg_percona_telemetry_autobuild.groovy index ef2dbf4ee4..3e5e37daf0 100644 --- a/ppg/pg_percona_telemetry_autobuild.groovy +++ b/ppg/pg_percona_telemetry_autobuild.groovy @@ -130,7 +130,7 @@ pipeline { } //stage stage('Build percona_pg_telemetry generic source packages') { parallel { - stage('Source rpm') { + /*stage('Source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -143,7 +143,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - } + }*/ stage('Source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -162,7 +162,7 @@ pipeline { } //stage stage('Build percona_pg_telemetry RPMs') { parallel { - stage('OL 8 AMD') { + /*stage('OL 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -386,6 +386,34 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } //stage*/ + stage('Debian 13 AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + echo "====> Build percona_pg_telemetry deb on Debian 12 PG${PG_RELEASE}" + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } //stage + stage('Debian 13 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + echo "====> Build percona_pg_telemetry deb on Debian 12 PG${PG_RELEASE}" + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } @@ -394,7 +422,7 @@ pipeline { } //stage stage('Sign packages') { steps { - signRPM(params.CLOUD) + //signRPM(params.CLOUD) signDEB(params.CLOUD) } } From afbe8f94bffa10b7b675671874807cd15f7c4ad8 Mon Sep 17 00:00:00 2001 From: Manika Singhal Date: Fri, 19 Sep 2025 15:06:53 +0530 Subject: [PATCH 241/269] try trixie build --- ppg/pg_percona_telemetry_autobuild.groovy | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ppg/pg_percona_telemetry_autobuild.groovy b/ppg/pg_percona_telemetry_autobuild.groovy index 3e5e37daf0..50a65e4f08 100644 --- a/ppg/pg_percona_telemetry_autobuild.groovy +++ b/ppg/pg_percona_telemetry_autobuild.groovy @@ -160,9 +160,9 @@ pipeline { } //stage } //parallel } //stage - stage('Build percona_pg_telemetry RPMs') { + /*stage('Build percona_pg_telemetry RPMs') { parallel { - /*stage('OL 8 AMD') { + stage('OL 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -247,10 +247,10 @@ pipeline { } } //stage } //parallel - } //stage + } //stage*/ stage('Build percona_pg_telemetry DEBs') { parallel { - stage('Ubuntu 20.04 AMD') { + /*stage('Ubuntu 20.04 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -395,7 +395,7 @@ pipeline { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } steps { - echo "====> Build percona_pg_telemetry deb on Debian 12 PG${PG_RELEASE}" + echo "====> Build percona_pg_telemetry deb on Debian 13 PG${PG_RELEASE}" cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:trixie", "--build_deb=1") @@ -409,7 +409,7 @@ pipeline { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { - echo "====> Build percona_pg_telemetry deb on Debian 12 PG${PG_RELEASE}" + echo "====> Build percona_pg_telemetry deb on Debian 13 PG${PG_RELEASE}" cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:trixie", "--build_deb=1") From 413c4367821ca6543aa9d1b229d67ff07898789e Mon Sep 17 00:00:00 2001 From: Oleksandr Havryliak <88387200+olexandr-havryliak@users.noreply.github.com> Date: Fri, 19 Sep 2025 14:15:16 +0300 Subject: [PATCH 242/269] PBM bump golang version (#3552) --- pbm/pbm-functional-tests-full.groovy | 2 +- pbm/pbm-functional-tests.groovy | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pbm/pbm-functional-tests-full.groovy b/pbm/pbm-functional-tests-full.groovy index a69f93e60a..ef11b58294 100644 --- a/pbm/pbm-functional-tests-full.groovy +++ b/pbm/pbm-functional-tests-full.groovy @@ -12,7 +12,7 @@ pipeline { } parameters { string(name: 'PBM_BRANCH', defaultValue: 'main', description: 'PBM branch or commit') - string(name: 'GO_VER', defaultValue: 'bullseye', description: 'GOLANG docker image for building PBM from sources') + string(name: 'GO_VER', defaultValue: 'bookworm', description: 'GOLANG docker image for building PBM from sources') choice(name: 'instance', choices: ['docker-64gb','docker-64gb-aarch64'], description: 'Ec2 instance type for running tests') string(name: 'TESTING_BRANCH', defaultValue: 'main', description: 'psmdb-testing repo branch') } diff --git a/pbm/pbm-functional-tests.groovy b/pbm/pbm-functional-tests.groovy index 685e316dec..8ef0cc2a2f 100644 --- a/pbm/pbm-functional-tests.groovy +++ b/pbm/pbm-functional-tests.groovy @@ -13,7 +13,7 @@ pipeline { parameters { string(name: 'PBM_BRANCH', defaultValue: 'main', description: 'PBM branch') string(name: 'PSMDB', defaultValue: 'percona/percona-server-mongodb', description: 'PSMDB docker image') - string(name: 'GO_VER', defaultValue: 'bullseye', description: 'GOLANG docker image for building PBM from sources') + string(name: 'GO_VER', defaultValue: 'bookworm', description: 'GOLANG docker image for building PBM from sources') choice(name: 'instance', choices: ['docker-64gb','docker-64gb-aarch64'], description: 'Ec2 instance type for running tests') string(name: 'TESTING_BRANCH', defaultValue: 'main', description: 'psmdb-testing repo branch') } From 5b33af80ea069e8bfc9ef63c3c6329da8c8d27ae Mon Sep 17 00:00:00 2001 From: Oleksandr Havryliak <88387200+olexandr-havryliak@users.noreply.github.com> Date: Fri, 19 Sep 2025 14:56:29 +0300 Subject: [PATCH 243/269] PBM hetzner bump golang version (#3553) --- pbm/hetzner-pbm-functional-tests-full.groovy | 2 +- pbm/hetzner-pbm-functional-tests.groovy | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pbm/hetzner-pbm-functional-tests-full.groovy b/pbm/hetzner-pbm-functional-tests-full.groovy index 554af06736..8e312cd724 100644 --- a/pbm/hetzner-pbm-functional-tests-full.groovy +++ b/pbm/hetzner-pbm-functional-tests-full.groovy @@ -12,7 +12,7 @@ pipeline { } parameters { string(name: 'PBM_BRANCH', defaultValue: 'main', description: 'PBM branch or commit') - string(name: 'GO_VER', defaultValue: 'bullseye', description: 'GOLANG docker image for building PBM from sources') + string(name: 'GO_VER', defaultValue: 'bookworm', description: 'GOLANG docker image for building PBM from sources') choice(name: 'instance', choices: ['docker-x64','docker-aarch64'], description: 'Instance type for running tests') string(name: 'TESTING_BRANCH', defaultValue: 'main', description: 'psmdb-testing repo branch') string(name: 'PYTEST_PARAMS', defaultValue: '', description: 'Extra args passed to pytest') diff --git a/pbm/hetzner-pbm-functional-tests.groovy b/pbm/hetzner-pbm-functional-tests.groovy index a05ea1e511..880480254a 100644 --- a/pbm/hetzner-pbm-functional-tests.groovy +++ b/pbm/hetzner-pbm-functional-tests.groovy @@ -13,7 +13,7 @@ pipeline { parameters { string(name: 'PBM_BRANCH', defaultValue: 'main', description: 'PBM branch') string(name: 'PSMDB', defaultValue: 'percona/percona-server-mongodb', description: 'PSMDB docker image') - string(name: 'GO_VER', defaultValue: 'bullseye', description: 'GOLANG docker image for building PBM from sources') + string(name: 'GO_VER', defaultValue: 'bookworm', description: 'GOLANG docker image for building PBM from sources') choice(name: 'instance', choices: ['docker-x64','docker-aarch64'], description: 'Instance type for running tests') string(name: 'TESTING_BRANCH', defaultValue: 'main', description: 'psmdb-testing repo branch') string(name: 'PYTEST_PARAMS', defaultValue: '', description: 'Extra args passed to pytest') From d327617001c235ddf8ea19622fe4aeef7ddccf81 Mon Sep 17 00:00:00 2001 From: Manika Singhal Date: Mon, 22 Sep 2025 12:19:51 +0530 Subject: [PATCH 244/269] update the pipeline to enable PG-17.6 nightly builds again --- ppg/postgresql_server_17_nightly.groovy | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ppg/postgresql_server_17_nightly.groovy b/ppg/postgresql_server_17_nightly.groovy index 4b59d7fa85..0eaac6f6fe 100644 --- a/ppg/postgresql_server_17_nightly.groovy +++ b/ppg/postgresql_server_17_nightly.groovy @@ -41,23 +41,23 @@ pipeline { description: 'URL for ppg-server repository', name: 'GIT_REPO') string( - defaultValue: 'release-17.5.3', + defaultValue: 'TDE_REL_17_STABLE', description: 'Tag/Branch for postgresql', name: 'PG_BRANCH') string( - defaultValue: '17.5.2', + defaultValue: '17.6', description: 'Tag/Branch for ppg-server repository', name: 'GIT_BRANCH') string( - defaultValue: '3', + defaultValue: '1', description: 'RPM release value', name: 'RPM_RELEASE') string( - defaultValue: '3', + defaultValue: '1', description: 'DEB release value', name: 'DEB_RELEASE') string( - defaultValue: 'ppg-17.5', + defaultValue: 'ppg-17.6', description: 'PPG repo name', name: 'PPG_REPO') choice( From fc36f848f92edbd02799abe6b478f0f36ad76343 Mon Sep 17 00:00:00 2001 From: Sandra Romanchenko <53295797+sandraromanchenko@users.noreply.github.com> Date: Mon, 22 Sep 2025 12:21:38 +0300 Subject: [PATCH 245/269] PBM. Change filter (#3555) --- pbm/hetzner-pbm-functional-tests-full.groovy | 7 ++++++- pbm/hetzner-pbm-functional-tests.groovy | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/pbm/hetzner-pbm-functional-tests-full.groovy b/pbm/hetzner-pbm-functional-tests-full.groovy index 8e312cd724..321d5d1ce9 100644 --- a/pbm/hetzner-pbm-functional-tests-full.groovy +++ b/pbm/hetzner-pbm-functional-tests-full.groovy @@ -74,7 +74,12 @@ pipeline { if [ "${ADD_JENKINS_MARKED_TESTS}" = "true" ]; then JENKINS_FLAG="--jenkins"; else JENKINS_FLAG=""; fi PSMDB=perconalab/percona-server-mongodb:${PSMDB} docker-compose build --no-cache docker-compose up -d - KMS_ID="${KMS_ID}" docker-compose run test pytest -s --junitxml=junit.xml \$JENKINS_FLAG -k ${TEST} ${params.PYTEST_PARAMS} || true + if [ -n "${params.PYTEST_PARAMS}" ]; then + FULL_EXPR="${TEST} and ${params.PYTEST_PARAMS}" + else + FULL_EXPR="${TEST}" + fi + KMS_ID="${KMS_ID}" docker-compose run test pytest -s --junitxml=junit.xml \$JENKINS_FLAG -k "\$FULL_EXPR" || true docker-compose down -v --remove-orphans curl -H "Content-Type:multipart/form-data" -H "Authorization: Bearer ${ZEPHYR_TOKEN}" -F "file=@junit.xml;type=application/xml" 'https://api.zephyrscale.smartbear.com/v2/automations/executions/junit?projectKey=PBM' -F 'testCycle={"name":"${JOB_NAME}-${BUILD_NUMBER}","customFields": { "PBM branch": "${PBM_BRANCH}","PSMDB docker image": "percona/percona-server-mongodb:${PSMDB}","instance": "${instance}"}};type=application/json' -i || true """ diff --git a/pbm/hetzner-pbm-functional-tests.groovy b/pbm/hetzner-pbm-functional-tests.groovy index 880480254a..44fbc799e0 100644 --- a/pbm/hetzner-pbm-functional-tests.groovy +++ b/pbm/hetzner-pbm-functional-tests.groovy @@ -74,7 +74,12 @@ pipeline { if [ "${ADD_JENKINS_MARKED_TESTS}" = "true" ]; then JENKINS_FLAG="--jenkins"; else JENKINS_FLAG=""; fi docker-compose build docker-compose up -d - KMS_ID="${KMS_ID}" docker-compose run test pytest -s --junitxml=junit.xml \$JENKINS_FLAG -k ${TEST} ${params.PYTEST_PARAMS} || true + if [ -n "${params.PYTEST_PARAMS}" ]; then + FULL_EXPR="${TEST} and ${params.PYTEST_PARAMS}" + else + FULL_EXPR="${TEST}" + fi + KMS_ID="${KMS_ID}" docker-compose run test pytest -s --junitxml=junit.xml \$JENKINS_FLAG -k "\$FULL_EXPR" || true docker-compose down -v --remove-orphans curl -H "Content-Type:multipart/form-data" -H "Authorization: Bearer ${ZEPHYR_TOKEN}" -F "file=@junit.xml;type=application/xml" 'https://api.zephyrscale.smartbear.com/v2/automations/executions/junit?projectKey=PBM' -F 'testCycle={"name":"${JOB_NAME}-${BUILD_NUMBER}","customFields": { "PBM branch": "${PBM_BRANCH}","PSMDB docker image": "${PSMDB}","instance": "${instance}"}};type=application/json' -i || true """ From db0ee2a526d6603233c8a789a1f7cf5f3b08f127 Mon Sep 17 00:00:00 2001 From: Manika Singhal Date: Wed, 24 Sep 2025 12:46:02 +0530 Subject: [PATCH 246/269] typo --- ppg/pg_gather.groovy | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ppg/pg_gather.groovy b/ppg/pg_gather.groovy index f4b12bb444..7845509255 100644 --- a/ppg/pg_gather.groovy +++ b/ppg/pg_gather.groovy @@ -304,8 +304,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - }*/ + }*/ stage('Debian trixie(13) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -331,7 +330,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } - + } } } From ba4aa321765886156196ee03f6164f4aeb4ddf1a Mon Sep 17 00:00:00 2001 From: Manika Singhal Date: Thu, 25 Sep 2025 11:11:23 +0530 Subject: [PATCH 247/269] trixie support for pgsm and haproxy --- ppg/haproxy.groovy | 32 +++++++++++++++++++++++--- ppg/pg_stat_monitor-autobuild.groovy | 34 ++++++++++++++++++++++++---- 2 files changed, 59 insertions(+), 7 deletions(-) diff --git a/ppg/haproxy.groovy b/ppg/haproxy.groovy index df495cf61c..82d5b9ac69 100644 --- a/ppg/haproxy.groovy +++ b/ppg/haproxy.groovy @@ -94,7 +94,7 @@ pipeline { } stage('Build haproxy generic source packages') { parallel { - stage('Build haproxy generic source rpm') { + /*stage('Build haproxy generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -106,7 +106,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - } + }*/ stage('Build haproxy generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build haproxy RPMs/DEBs/Binary tarballs') { parallel { - stage('Oracle Linux 8') { + /*stage('Oracle Linux 8') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -302,6 +302,32 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + }*/ + stage('Debian trixie(13)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian trixie(13) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } diff --git a/ppg/pg_stat_monitor-autobuild.groovy b/ppg/pg_stat_monitor-autobuild.groovy index b4c5e19cdd..8b043019f0 100644 --- a/ppg/pg_stat_monitor-autobuild.groovy +++ b/ppg/pg_stat_monitor-autobuild.groovy @@ -109,7 +109,7 @@ pipeline { } //stage stage('Build pg_stat_monitor generic source packages') { parallel { - stage('Source rpm') { + /*stage('Source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -121,7 +121,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - } + }*/ stage('Source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -139,7 +139,7 @@ pipeline { } //stage stage('Build pg_stat_monitor RPMs') { parallel { - stage('Oracle Linux 8 AMD') { + /*stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -317,6 +317,32 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + }*/ + stage('Debian trixie(13) AMD') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian trixie(13) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } @@ -325,7 +351,7 @@ pipeline { } //stage stage('Sign packages') { steps { - signRPM(params.CLOUD) + //signRPM(params.CLOUD) signDEB(params.CLOUD) } } From bbea3a0d2181b34dc9e2163beef0adf0e1f1430f Mon Sep 17 00:00:00 2001 From: Manika Singhal Date: Thu, 25 Sep 2025 12:25:22 +0530 Subject: [PATCH 248/269] fix --- ppg/haproxy.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ppg/haproxy.groovy b/ppg/haproxy.groovy index 82d5b9ac69..51118c5738 100644 --- a/ppg/haproxy.groovy +++ b/ppg/haproxy.groovy @@ -337,7 +337,7 @@ pipeline { stage('Sign packages') { steps { - signRPM(params.CLOUD) + //signRPM(params.CLOUD) signDEB(params.CLOUD) } } From cc2ccd34e9d607bd2fc32f44f709380dbb674dc5 Mon Sep 17 00:00:00 2001 From: Manika Singhal Date: Mon, 29 Sep 2025 17:21:33 +0530 Subject: [PATCH 249/269] enable builds for all platforms again --- ppg/etcd-arm.groovy | 10 +++++----- ppg/etcd.groovy | 10 +++++----- ppg/haproxy.groovy | 10 +++++----- ppg/patroni.groovy | 10 +++++----- ppg/percona-postgis.groovy | 10 +++++----- ppg/pg_gather.groovy | 10 +++++----- ppg/pg_percona_telemetry_autobuild.groovy | 14 +++++++------- ppg/pg_stat_monitor-autobuild.groovy | 10 +++++----- ppg/pgaudit.groovy | 10 +++++----- ppg/pgaudit_set_user.groovy | 10 +++++----- ppg/pgbackrest.groovy | 10 +++++----- ppg/pgbadger.groovy | 10 +++++----- ppg/pgbouncer.groovy | 10 +++++----- ppg/pgpool2-build.groovy | 10 +++++----- ppg/pgrepack.groovy | 10 +++++----- ppg/pgvector.groovy | 10 +++++----- ppg/postgresql-common.groovy | 10 +++++----- ppg/postgresql_server.groovy | 10 +++++----- ppg/ppg-server-ha.groovy | 10 +++++----- ppg/ppg-server.groovy | 10 +++++----- ppg/pysyncobj.groovy | 10 +++++----- ppg/wal2json.groovy | 10 +++++----- ppg/ydiff.groovy | 10 +++++----- 23 files changed, 117 insertions(+), 117 deletions(-) diff --git a/ppg/etcd-arm.groovy b/ppg/etcd-arm.groovy index b2f13fc572..a5d2a5da6b 100644 --- a/ppg/etcd-arm.groovy +++ b/ppg/etcd-arm.groovy @@ -97,7 +97,7 @@ pipeline { } stage('Build etcd generic source packages') { parallel { - /*stage('Build etcd generic source rpm') { + stage('Build etcd generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } @@ -109,7 +109,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - }*/ + } stage('Build etcd generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' @@ -127,7 +127,7 @@ pipeline { } // stage stage('Build etcd RPMs/DEBs/Binary tarballs') { parallel { - /*stage('Oracle Linux 8') { + stage('Oracle Linux 8') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } @@ -217,7 +217,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } - }*/ + } stage('Debian trixie(13)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' @@ -236,7 +236,7 @@ pipeline { stage('Sign packages') { steps { - //signRPM(params.CLOUD) + signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/etcd.groovy b/ppg/etcd.groovy index ed398d0588..222863a4c1 100644 --- a/ppg/etcd.groovy +++ b/ppg/etcd.groovy @@ -94,7 +94,7 @@ pipeline { } stage('Build etcd generic source packages') { parallel { - /*stage('Build etcd generic source rpm') { + stage('Build etcd generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -106,7 +106,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - }*/ + } stage('Build etcd generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build etcd RPMs/DEBs/Binary tarballs') { parallel { - /*stage('Oracle Linux 8 AMD') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -292,7 +292,7 @@ pipeline { // pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) // uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) // } - //}*/ + //} stage('Debian trixie(13) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -311,7 +311,7 @@ pipeline { stage('Sign packages') { steps { - //signRPM(params.CLOUD) + signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/haproxy.groovy b/ppg/haproxy.groovy index 51118c5738..b30b1867b5 100644 --- a/ppg/haproxy.groovy +++ b/ppg/haproxy.groovy @@ -94,7 +94,7 @@ pipeline { } stage('Build haproxy generic source packages') { parallel { - /*stage('Build haproxy generic source rpm') { + stage('Build haproxy generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -106,7 +106,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - }*/ + } stage('Build haproxy generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build haproxy RPMs/DEBs/Binary tarballs') { parallel { - /*stage('Oracle Linux 8') { + stage('Oracle Linux 8') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -305,7 +305,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } - }*/ + } stage('Debian trixie(13)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -337,7 +337,7 @@ pipeline { stage('Sign packages') { steps { - //signRPM(params.CLOUD) + signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/patroni.groovy b/ppg/patroni.groovy index 532d99726a..8d6b88893c 100644 --- a/ppg/patroni.groovy +++ b/ppg/patroni.groovy @@ -94,7 +94,7 @@ pipeline { } stage('Build PATRONI generic source packages') { parallel { - /*stage('Build PATRONI generic source rpm') { + stage('Build PATRONI generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -106,7 +106,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - }*/ + } stage('Build PATRONI generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build PATRONI RPMs/DEBs/Binary tarballs') { parallel { - /*stage('Oracle Linux 8 AMD') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -253,7 +253,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } - }*/ + } stage('Debian trixie(13)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -272,7 +272,7 @@ pipeline { stage('Sign packages') { steps { - //signRPM(params.CLOUD) + signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/percona-postgis.groovy b/ppg/percona-postgis.groovy index 8e7a62fd27..bbcf723a85 100644 --- a/ppg/percona-postgis.groovy +++ b/ppg/percona-postgis.groovy @@ -101,7 +101,7 @@ pipeline { } stage('Build POSTGIS generic source packages') { parallel { - /*stage('Build POSTGIS generic source rpm') { + stage('Build POSTGIS generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -113,7 +113,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - }*/ + } stage('Build POSTGIS generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -131,7 +131,7 @@ pipeline { } // stage stage('Build POSTGIS RPMs/DEBs/Binary tarballs') { parallel { - /*stage('Oracle Linux 8 AMD') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -312,7 +312,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } - }*/ + } stage('Debian trixie(13) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -344,7 +344,7 @@ pipeline { stage('Sign packages') { steps { - //signRPM(params.CLOUD) + signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/pg_gather.groovy b/ppg/pg_gather.groovy index 7845509255..7a47e78969 100644 --- a/ppg/pg_gather.groovy +++ b/ppg/pg_gather.groovy @@ -94,7 +94,7 @@ pipeline { } stage('Build pg_gather generic source packages') { parallel { - /*stage('Build pg_gather generic source rpm') { + stage('Build pg_gather generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -106,7 +106,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - }*/ + } stage('Build pg_gather generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build pg_gather RPMs/DEBs/Binary tarballs') { parallel { - /*stage('Oracle Linux 8 AMD') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -304,7 +304,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - }*/ + } stage('Debian trixie(13) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -336,7 +336,7 @@ pipeline { stage('Sign packages') { steps { - //signRPM(params.CLOUD) + signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/pg_percona_telemetry_autobuild.groovy b/ppg/pg_percona_telemetry_autobuild.groovy index 50a65e4f08..7c2e3b8eb8 100644 --- a/ppg/pg_percona_telemetry_autobuild.groovy +++ b/ppg/pg_percona_telemetry_autobuild.groovy @@ -130,7 +130,7 @@ pipeline { } //stage stage('Build percona_pg_telemetry generic source packages') { parallel { - /*stage('Source rpm') { + stage('Source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -143,7 +143,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - }*/ + } stage('Source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -160,7 +160,7 @@ pipeline { } //stage } //parallel } //stage - /*stage('Build percona_pg_telemetry RPMs') { + stage('Build percona_pg_telemetry RPMs') { parallel { stage('OL 8 AMD') { agent { @@ -247,10 +247,10 @@ pipeline { } } //stage } //parallel - } //stage*/ + } //stage stage('Build percona_pg_telemetry DEBs') { parallel { - /*stage('Ubuntu 20.04 AMD') { + stage('Ubuntu 20.04 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -389,7 +389,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } - } //stage*/ + } //stage stage('Debian 13 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -422,7 +422,7 @@ pipeline { } //stage stage('Sign packages') { steps { - //signRPM(params.CLOUD) + signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/pg_stat_monitor-autobuild.groovy b/ppg/pg_stat_monitor-autobuild.groovy index 8b043019f0..3ffdff9d98 100644 --- a/ppg/pg_stat_monitor-autobuild.groovy +++ b/ppg/pg_stat_monitor-autobuild.groovy @@ -109,7 +109,7 @@ pipeline { } //stage stage('Build pg_stat_monitor generic source packages') { parallel { - /*stage('Source rpm') { + stage('Source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -121,7 +121,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - }*/ + } stage('Source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -139,7 +139,7 @@ pipeline { } //stage stage('Build pg_stat_monitor RPMs') { parallel { - /*stage('Oracle Linux 8 AMD') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -320,7 +320,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } - }*/ + } stage('Debian trixie(13) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -351,7 +351,7 @@ pipeline { } //stage stage('Sign packages') { steps { - //signRPM(params.CLOUD) + signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/pgaudit.groovy b/ppg/pgaudit.groovy index 725c1b3054..22a34ae6ec 100644 --- a/ppg/pgaudit.groovy +++ b/ppg/pgaudit.groovy @@ -94,7 +94,7 @@ pipeline { } stage('Build PG_AUDIT generic source packages') { parallel { - /*stage('Build PG_AUDIT generic source rpm') { + stage('Build PG_AUDIT generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -106,7 +106,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - }*/ + } stage('Build PG_AUDIT generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build PG_AUDIT RPMs/DEBs/Binary tarballs') { parallel { - /*stage('Oracle Linux 8 AMD') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -305,7 +305,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } - }*/ + } stage('Debian trixie(13) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -337,7 +337,7 @@ pipeline { stage('Sign packages') { steps { - //signRPM(params.CLOUD) + signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/pgaudit_set_user.groovy b/ppg/pgaudit_set_user.groovy index 8c175a487f..bd42671af1 100644 --- a/ppg/pgaudit_set_user.groovy +++ b/ppg/pgaudit_set_user.groovy @@ -94,7 +94,7 @@ pipeline { } stage('Build PG_AUDIT generic source packages') { parallel { - /*stage('Build PG_AUDIT generic source rpm') { + stage('Build PG_AUDIT generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -106,7 +106,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - }*/ + } stage('Build PG_AUDIT generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build PG_AUDIT RPMs/DEBs/Binary tarballs') { parallel { - /*stage('Oracle Linux 8 AMD') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -305,7 +305,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } - }*/ + } stage('Debian trixie(13) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -337,7 +337,7 @@ pipeline { stage('Sign packages') { steps { - //signRPM(params.CLOUD) + signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/pgbackrest.groovy b/ppg/pgbackrest.groovy index a9deeb5af2..dd2159893b 100644 --- a/ppg/pgbackrest.groovy +++ b/ppg/pgbackrest.groovy @@ -94,7 +94,7 @@ pipeline { } stage('Build PG_BACKREST generic source packages') { parallel { - /*stage('Build PG_BACKREST generic source rpm') { + stage('Build PG_BACKREST generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -106,7 +106,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - }*/ + } stage('Build PG_BACKREST generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build PG_BACKREST RPMs/DEBs/Binary tarballs') { parallel { - /*stage('Oracle Linux 8 AMD') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -305,7 +305,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } - }*/ + } stage('Debian trixie(13) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -337,7 +337,7 @@ pipeline { stage('Sign packages') { steps { - //signRPM(params.CLOUD) + signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/pgbadger.groovy b/ppg/pgbadger.groovy index 195e5ada70..7620e3d668 100644 --- a/ppg/pgbadger.groovy +++ b/ppg/pgbadger.groovy @@ -94,7 +94,7 @@ pipeline { } stage('Build PG_badger generic source packages') { parallel { - /*stage('Build PG_badger generic source rpm') { + stage('Build PG_badger generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -106,7 +106,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - }*/ + } stage('Build PG_badger generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build PG_badger RPMs/DEBs/Binary tarballs') { parallel { - /*stage('Oracle Linux 8 AMD') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -305,7 +305,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } - }*/ + } stage('Debian trixie(13) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -337,7 +337,7 @@ pipeline { stage('Sign packages') { steps { - //signRPM(params.CLOUD) + signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/pgbouncer.groovy b/ppg/pgbouncer.groovy index 18576cdd92..bf908ed6f0 100644 --- a/ppg/pgbouncer.groovy +++ b/ppg/pgbouncer.groovy @@ -94,7 +94,7 @@ pipeline { } stage('Build PG_bouncer generic source packages') { parallel { - /*stage('Build PG_bouncer generic source rpm') { + stage('Build PG_bouncer generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -106,7 +106,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - }*/ + } stage('Build PG_bouncer generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build PG_bouncer RPMs/DEBs/Binary tarballs') { parallel { - /*stage('Oracle Linux 8 AMD') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -305,7 +305,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } - }*/ + } stage('Debian trixie(13) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -337,7 +337,7 @@ pipeline { stage('Sign packages') { steps { - //signRPM(params.CLOUD) + signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/pgpool2-build.groovy b/ppg/pgpool2-build.groovy index 22429d644c..24c446d2b6 100644 --- a/ppg/pgpool2-build.groovy +++ b/ppg/pgpool2-build.groovy @@ -109,7 +109,7 @@ pipeline { } stage('Build pgpool2 generic source packages') { parallel { - /*stage('Build pgpool2 generic source rpm') { + stage('Build pgpool2 generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -121,7 +121,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - }*/ + } stage('Build pgpool2 generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -139,7 +139,7 @@ pipeline { } // stage stage('Build pgpool2 RPMs/DEBs/Binary tarballs') { parallel { - /*stage('Oracle Linux 8 AMD') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -320,7 +320,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } - }*/ + } stage('Debian trixie(13) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -352,7 +352,7 @@ pipeline { stage('Sign packages') { steps { - //signRPM(params.CLOUD) + signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/pgrepack.groovy b/ppg/pgrepack.groovy index 8a861839b6..323c15bd65 100644 --- a/ppg/pgrepack.groovy +++ b/ppg/pgrepack.groovy @@ -94,7 +94,7 @@ pipeline { } stage('Build PG_REPACK generic source packages') { parallel { - /*stage('Build PG_REPACK generic source rpm') { + stage('Build PG_REPACK generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -106,7 +106,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - }*/ + } stage('Build PG_REPACK generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build PG_REPACK RPMs/DEBs/Binary tarballs') { parallel { - /*stage('Oracle Linux 8 AMD') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -305,7 +305,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } - }*/ + } stage('Debian trixie(13) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -337,7 +337,7 @@ pipeline { stage('Sign packages') { steps { - //signRPM(params.CLOUD) + signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/pgvector.groovy b/ppg/pgvector.groovy index b0d178a8d5..eb5b1d45ec 100644 --- a/ppg/pgvector.groovy +++ b/ppg/pgvector.groovy @@ -94,7 +94,7 @@ pipeline { } stage('Build pgvector generic source packages') { parallel { - /*stage('Build pgvector generic source rpm') { + stage('Build pgvector generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -106,7 +106,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - }*/ + } stage('Build pgvector generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build pgvector RPMs/DEBs/Binary tarballs') { parallel { - /*stage('Oracle Linux 8 AMD') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -305,7 +305,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } - }*/ + } stage('Debian trixie(13) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -337,7 +337,7 @@ pipeline { stage('Sign packages') { steps { - //signRPM(params.CLOUD) + signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/postgresql-common.groovy b/ppg/postgresql-common.groovy index c43fb14021..291f327d51 100644 --- a/ppg/postgresql-common.groovy +++ b/ppg/postgresql-common.groovy @@ -94,7 +94,7 @@ pipeline { } stage('Build postgresql-common generic source packages') { parallel { - /*stage('Build postgresql-common generic source rpm') { + stage('Build postgresql-common generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -106,7 +106,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - }*/ + } stage('Build postgresql-common generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build postgresql-common RPMs/DEBs/Binary tarballs') { parallel { - /*stage('Oracle Linux 8') { + stage('Oracle Linux 8') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -214,7 +214,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } - }*/ + } stage('Debian trixie(13)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -233,7 +233,7 @@ pipeline { stage('Sign packages') { steps { - //signRPM(params.CLOUD) + signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/postgresql_server.groovy b/ppg/postgresql_server.groovy index 1cda766c48..9440af4726 100644 --- a/ppg/postgresql_server.groovy +++ b/ppg/postgresql_server.groovy @@ -94,7 +94,7 @@ pipeline { } stage('Build PPG-SERVER generic source packages') { parallel { - /*stage('Build PPG-SERVER generic source rpm') { + stage('Build PPG-SERVER generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -106,7 +106,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - }*/ + } stage('Build PPG-SERVER generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build PPG-SERVER RPMs/DEBs/Binary tarballs') { parallel { - /*stage('Oracle Linux 8 AMD') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -305,7 +305,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } - }*/ + } stage('Debian trixie(13) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -337,7 +337,7 @@ pipeline { stage('Sign packages') { steps { - //signRPM(params.CLOUD) + signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/ppg-server-ha.groovy b/ppg/ppg-server-ha.groovy index b7118de8ea..4fefd5ac33 100644 --- a/ppg/ppg-server-ha.groovy +++ b/ppg/ppg-server-ha.groovy @@ -96,7 +96,7 @@ pipeline { } stage('Build PPG-SERVER_HA generic source packages') { parallel { - /*stage('Build PPG-SERVER_HA generic source rpm') { + stage('Build PPG-SERVER_HA generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -108,7 +108,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - }*/ + } stage('Build PPG-SERVER_HA generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -126,7 +126,7 @@ pipeline { } // stage stage('Build PPG-SERVER-HA RPMs/DEBs/Binary tarballs') { parallel { - /*stage('Oracle Linux 8 AMD') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -307,7 +307,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } - }*/ + } stage('Debian trixie(13) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -339,7 +339,7 @@ pipeline { stage('Sign packages') { steps { - //signRPM(params.CLOUD) + signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/ppg-server.groovy b/ppg/ppg-server.groovy index edbfa67cab..2d96534bd3 100644 --- a/ppg/ppg-server.groovy +++ b/ppg/ppg-server.groovy @@ -90,7 +90,7 @@ pipeline { } stage('Build PPG-SERVER generic source packages') { parallel { - /*stage('Build PPG-SERVER generic source rpm') { + stage('Build PPG-SERVER generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -102,7 +102,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - }*/ + } stage('Build PPG-SERVER generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -120,7 +120,7 @@ pipeline { } // stage stage('Build PPG-SERVER RPMs/DEBs/Binary tarballs') { parallel { - /*stage('Oracle Linux 8 AMD') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -301,7 +301,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } - }*/ + } stage('Debian trixie(13) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -333,7 +333,7 @@ pipeline { stage('Sign packages') { steps { - //signRPM(params.CLOUD) + signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/pysyncobj.groovy b/ppg/pysyncobj.groovy index 300d308dc9..dd9b5d97e4 100644 --- a/ppg/pysyncobj.groovy +++ b/ppg/pysyncobj.groovy @@ -94,7 +94,7 @@ pipeline { } stage('Build PYSYNCOBJ generic source packages') { parallel { - /*stage('Build PYSYNCOBJ generic source rpm') { + stage('Build PYSYNCOBJ generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -106,7 +106,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - }*/ + } stage('Build PYSYNCOBJ generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build PYSYNCOBJ RPMs/DEBs/Binary tarballs') { parallel { - /*stage('Oracle Linux 8') { + stage('Oracle Linux 8') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -214,7 +214,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } - }*/ + } stage('Debian trixie(13)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -233,7 +233,7 @@ pipeline { stage('Sign packages') { steps { - //signRPM(params.CLOUD) + signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/wal2json.groovy b/ppg/wal2json.groovy index d44a08feb2..c424130ff6 100644 --- a/ppg/wal2json.groovy +++ b/ppg/wal2json.groovy @@ -94,7 +94,7 @@ pipeline { } stage('Build wal2json generic source packages') { parallel { - /*stage('Build wal2json generic source rpm') { + stage('Build wal2json generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -106,7 +106,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - }*/ + } stage('Build wal2json generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build wal2json RPMs/DEBs/Binary tarballs') { parallel { - /*stage('Oracle Linux 8 AMD') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -305,7 +305,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } - }*/ + } stage('Debian trixie(13) AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -337,7 +337,7 @@ pipeline { stage('Sign packages') { steps { - //signRPM(params.CLOUD) + signRPM(params.CLOUD) signDEB(params.CLOUD) } } diff --git a/ppg/ydiff.groovy b/ppg/ydiff.groovy index e6b7503f3f..57c7262e39 100644 --- a/ppg/ydiff.groovy +++ b/ppg/ydiff.groovy @@ -94,7 +94,7 @@ pipeline { } stage('Build YDIFF generic source packages') { parallel { - /*stage('Build YDIFF generic source rpm') { + stage('Build YDIFF generic source rpm') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -106,7 +106,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) } - }*/ + } stage('Build YDIFF generic source deb') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -124,7 +124,7 @@ pipeline { } // stage stage('Build YDIFF RPMs/DEBs/Binary tarballs') { parallel { - /*stage('Oracle Linux 8 AMD') { + stage('Oracle Linux 8 AMD') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -253,7 +253,7 @@ pipeline { pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } - }*/ + } stage('Debian trixie(13)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -272,7 +272,7 @@ pipeline { stage('Sign packages') { steps { - //signRPM(params.CLOUD) + signRPM(params.CLOUD) signDEB(params.CLOUD) } } From 504b12c6699b76437385908deb52a4d0dc701ddc Mon Sep 17 00:00:00 2001 From: Vadim Yalovets Date: Thu, 2 Oct 2025 17:53:48 +0300 Subject: [PATCH 250/269] Hetzner (#3575) --- proxysql/proxysql.groovy | 9 +- proxysql/proxysql3.groovy | 3 + ps/jenkins/mysql-shell.groovy | 26 ++- ...percona-server-for-mysql-8.0-docker.groovy | 66 +++--- .../percona-xtradb-cluster-8.0-docker.groovy | 2 +- pxc/jenkins/percona-xtradb-cluster-8.0.groovy | 44 +++- pxc/jenkins/percona-xtradb-cluster-9.x.groovy | 195 ++++++------------ 7 files changed, 162 insertions(+), 183 deletions(-) diff --git a/proxysql/proxysql.groovy b/proxysql/proxysql.groovy index 794bd98fb3..8999e54eb0 100644 --- a/proxysql/proxysql.groovy +++ b/proxysql/proxysql.groovy @@ -89,10 +89,13 @@ pipeline { } stages { stage('Create PROXYSQL source tarball') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } steps { // slackNotify("", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") cleanUpWS() - buildStage("centos:7", "--get_sources=1") + buildStage("oraclelinux:8", "--get_sources=1") sh ''' REPO_UPLOAD_PATH=$(grep "UPLOAD" test/proxysql.properties | cut -d = -f 2 | sed "s:$:${BUILD_NUMBER}:") AWS_STASH_PATH=$(echo ${REPO_UPLOAD_PATH} | sed "s:UPLOAD/experimental/::") @@ -113,12 +116,12 @@ pipeline { parallel { stage('Build PROXYSQL generic source rpm') { agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("centos:7", "--build_src_rpm=1") + buildStage("oraclelinux:8", "--build_src_rpm=1") pushArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) uploadRPMfromAWS(params.CLOUD, "srpm/", AWS_STASH_PATH) diff --git a/proxysql/proxysql3.groovy b/proxysql/proxysql3.groovy index 50731f9484..8d316ed43d 100644 --- a/proxysql/proxysql3.groovy +++ b/proxysql/proxysql3.groovy @@ -89,6 +89,9 @@ pipeline { } stages { stage('Create PROXYSQL source tarball') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } steps { // slackNotify("", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") cleanUpWS() diff --git a/ps/jenkins/mysql-shell.groovy b/ps/jenkins/mysql-shell.groovy index 944fb2554e..a588cef073 100644 --- a/ps/jenkins/mysql-shell.groovy +++ b/ps/jenkins/mysql-shell.groovy @@ -30,6 +30,14 @@ pipeline { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } + environment { + PS_MAJOR_RELEASE = sh( + returnStdout: true, + script: ''' + echo ${PS_BRANCH} | sed "s/release-//g" | sed "s/\\.//g" | awk '{print substr($0, 0, 2)}' + ''' + ).trim() + } parameters { choice( choices: [ 'Hetzner','AWS' ], @@ -251,22 +259,20 @@ pipeline { } } stage('Ubuntu Focal (20.04) ARM') { + when { + expression { env.PS_MAJOR_RELEASE == "80" } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { script { - PS_MAJOR_RELEASE = sh(returnStdout: true, script: ''' echo ${PS_BRANCH} | sed "s/release-//g" | sed "s/\\.//g" | awk '{print substr($0, 0, 2)}' ''').trim() - if ("${PS_MAJOR_RELEASE}" == "80") { - cleanUpWS() - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("ubuntu:focal", "--build_deb=1") - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } else { - echo "The step is skipped." - } + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } diff --git a/ps/jenkins/percona-server-for-mysql-8.0-docker.groovy b/ps/jenkins/percona-server-for-mysql-8.0-docker.groovy index d2fa537e6e..7a5e25671f 100644 --- a/ps/jenkins/percona-server-for-mysql-8.0-docker.groovy +++ b/ps/jenkins/percona-server-for-mysql-8.0-docker.groovy @@ -153,13 +153,19 @@ parameters { choices: 'perconalab\npercona', description: 'Organization on hub.docker.com', name: 'ORGANIZATION') - string(defaultValue: 'release-8.0.28-19', description: 'Tag/Branch for percona-server repository', name: 'BRANCH') + string(defaultValue: 'https://github.com/percona/percona-docker', description: 'Dockerfiles source', name: 'REPO_DOCKER') + string(defaultValue: 'main', description: 'Tag/Branch for percona-docker repository', name: 'REPO_DOCKER_BRANCH') + string(defaultValue: 'release-8.0.43-34', description: 'Tag/Branch for percona-server repository', name: 'BRANCH') string(defaultValue: '1', description: 'RPM version', name: 'RPM_RELEASE') string(defaultValue: '1', description: 'DEB version', name: 'DEB_RELEASE') choice( choices: 'NO\nYES', description: 'Enable fipsmode', name: 'FIPSMODE') + choice( + choices: 'percona\nmysql', + description: 'Which mysql-shell version have to be used in images.', + name: 'MYSQLSHELL') choice( choices: 'testing\nexperimental\nrelease', description: 'Repo component to push packages to', @@ -183,11 +189,12 @@ parameters { } steps { script { - if (env.FIPSMODE == 'YES') { - echo "The step is skipped" - } else { - echo "====> Build docker container" sh ''' + if [ "${MYSQLSHELL}" = "percona" ]; then + Dockerfile="Dockerfile" + else + Dockerfile="Dockerfile-mysqlsh-upstream" + fi PS_RELEASE=$(echo ${BRANCH} | sed 's/release-//g') PS_MAJOR_RELEASE=$(echo ${BRANCH} | sed "s/release-//g" | sed "s/\\.//g" | awk '{print substr($0, 0, 2)}') if [ ${PS_MAJOR_RELEASE} != "80" ]; then @@ -213,40 +220,42 @@ parameters { sudo lscpu | grep -q 'sse4_2' && grep -q 'popcnt' /proc/cpuinfo && echo "Supports x86-64-v2" || echo "Does NOT support x86-64-v2" sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes rm -rf percona-docker - git clone https://github.com/percona/percona-docker + git clone ${REPO_DOCKER} + cd percona-docker + git checkout ${REPO_DOCKER_BRANCH} if [ ${PS_MAJOR_RELEASE} = "80" ]; then - cd percona-docker/percona-server-8.0 + cd percona-server-8.0 else - cd percona-docker/percona-server-8.4 + cd percona-server-8.4 fi - sed -i "s/ENV PS_VERSION.*/ENV PS_VERSION ${PS_RELEASE}.${RPM_RELEASE}/g" Dockerfile - sed -i "s/ENV PS_TELEMETRY_VERSION.*/ENV PS_TELEMETRY_VERSION ${PS_RELEASE}-${RPM_RELEASE}/g" Dockerfile - sed -i "s/ENV MYSQL_SHELL_VERSION.*/ENV MYSQL_SHELL_VERSION ${MYSQL_SHELL_RELEASE}-${RPM_RELEASE}/g" Dockerfile - sed -i "s/ENV PS_REPO .*/ENV PS_REPO testing/g" Dockerfile + sed -i "s/ENV PS_VERSION.*/ENV PS_VERSION ${PS_RELEASE}.${RPM_RELEASE}/g" ${Dockerfile} + sed -i "s/ENV PS_TELEMETRY_VERSION.*/ENV PS_TELEMETRY_VERSION ${PS_RELEASE}-${RPM_RELEASE}/g" ${Dockerfile} + #sed -i "s/ENV MYSQL_SHELL_VERSION.*/ENV MYSQL_SHELL_VERSION ${MYSQL_SHELL_RELEASE}-${RPM_RELEASE}/g" ${Dockerfile} + sed -i "s/ENV PS_REPO .*/ENV PS_REPO testing/g" ${Dockerfile} if [ ${PS_MAJOR_RELEASE} != "80" ]; then if [ ${PS_MAJOR_RELEASE} = "84" ]; then - sed -i "s/percona-release enable ps-80/percona-release enable ps-84-lts/g" Dockerfile + sed -i "s/percona-release enable ps-80/percona-release enable ps-84-lts/g" ${Dockerfile} else - sed -i "s/percona-release enable ps-80/percona-release enable ps-8x-innovation/g" Dockerfile + sed -i "s/percona-release enable ps-80/percona-release enable ps-8x-innovation/g" ${Dockerfile} fi - sed -i "s/percona-release enable mysql-shell/PS_REPO=\"testing\";percona-release enable mysql-shell/g" Dockerfile - sed -i "s/percona-release enable mysql-shell/PS_REPO=\"testing\";percona-release enable mysql-shell/g" Dockerfile.aarch64 + sed -i "s/percona-release enable mysql-shell/PS_REPO=\"testing\";percona-release enable mysql-shell/g" ${Dockerfile} + sed -i "s/percona-release enable mysql-shell/PS_REPO=\"testing\";percona-release enable mysql-shell/g" ${Dockerfile}.aarch64 fi - sed -i "s/ENV PS_VERSION.*/ENV PS_VERSION ${PS_RELEASE}.${RPM_RELEASE}/g" Dockerfile.aarch64 - sed -i "s/ENV PS_TELEMETRY_VERSION.*/ENV PS_TELEMETRY_VERSION ${PS_RELEASE}-${RPM_RELEASE}/g" Dockerfile.aarch64 - sed -i "s/ENV MYSQL_SHELL_VERSION.*/ENV MYSQL_SHELL_VERSION ${MYSQL_SHELL_RELEASE}-${RPM_RELEASE}/g" Dockerfile.aarch64 - sed -i "s/ENV PS_REPO .*/ENV PS_REPO testing/g" Dockerfile.aarch64 + sed -i "s/ENV PS_VERSION.*/ENV PS_VERSION ${PS_RELEASE}.${RPM_RELEASE}/g" ${Dockerfile}.aarch64 + sed -i "s/ENV PS_TELEMETRY_VERSION.*/ENV PS_TELEMETRY_VERSION ${PS_RELEASE}-${RPM_RELEASE}/g" ${Dockerfile}.aarch64 + sed -i "s/ENV MYSQL_SHELL_VERSION.*/ENV MYSQL_SHELL_VERSION ${MYSQL_SHELL_RELEASE}-${RPM_RELEASE}/g" ${Dockerfile}.aarch64 + sed -i "s/ENV PS_REPO .*/ENV PS_REPO testing/g" ${Dockerfile}.aarch64 if [ ${PS_MAJOR_RELEASE} != "80" ]; then if [ ${PS_MAJOR_RELEASE} = "84" ]; then - sed -i "s/percona-release enable ps-80/percona-release enable ps-84-lts/g" Dockerfile.aarch64 + sed -i "s/percona-release enable ps-80/percona-release enable ps-84-lts/g" ${Dockerfile}.aarch64 else - sed -i "s/percona-release enable ps-80/percona-release enable ps-8x-innovation/g" Dockerfile.aarch64 + sed -i "s/percona-release enable ps-80/percona-release enable ps-8x-innovation/g" ${Dockerfile}.aarch64 fi - sed -i "s/percona-release enable mysql-shell/PS_REPO=\"testing\";percona-release enable mysql-shell/g" Dockerfile.aarch64 + sed -i "s/percona-release enable mysql-shell/PS_REPO=\"testing\";percona-release enable mysql-shell/g" ${Dockerfile}.aarch64 fi if [ ${ORGANIZATION} != "percona" ]; then - sudo docker build -t perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64 --progress plain --platform="linux/amd64" . - sudo docker buildx build --platform linux/arm64 -t perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-arm64 --load -f Dockerfile.aarch64 . + sudo docker build -t perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64 --progress plain --platform="linux/amd64" -f ${Dockerfile} . + sudo docker buildx build --platform linux/arm64 -t perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-arm64 --load -f ${Dockerfile}.aarch64 . else sudo docker pull perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64 sudo docker tag perconalab/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64 percona/percona-server:${PS_RELEASE}.${RPM_RELEASE}-amd64 @@ -332,7 +341,6 @@ parameters { fi ''' } - } } } } @@ -410,11 +418,7 @@ parameters { post { success { script { - if (env.FIPSMODE == 'YES') { - slackNotify("${SLACKNOTIFY}", "#00FF00", "[${JOB_NAME}]: (${ORGANIZATION}) PRO build has been finished successfully for ${BRANCH} - [${BUILD_URL}]") - } else { - slackNotify("${SLACKNOTIFY}", "#00FF00", "[${JOB_NAME}]: (${ORGANIZATION}) build has been finished successfully for ${BRANCH} - [${BUILD_URL}]") - } + slackNotify("${SLACKNOTIFY}", "#00FF00", "[${JOB_NAME}]: (${ORGANIZATION}) build has been finished successfully for ${BRANCH} - [${BUILD_URL}]") } deleteDir() } diff --git a/pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy b/pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy index 9373d77aa4..d3e1946c50 100644 --- a/pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy +++ b/pxc/jenkins/percona-xtradb-cluster-8.0-docker.groovy @@ -129,7 +129,7 @@ pipeline { sed -i "s:yum/release:yum/testing:g" Dockerfile if [ ${PXC_MAJOR_RELEASE} != "80" ]; then #sed -i "s/ENV PXB_VERSION.*/ENV PXB_VERSION ${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}/g" Dockerfile - sed -i "s/ENV PXB_VERSION.*/ENV PXB_VERSION 8.4.0-2.1/g" Dockerfile + sed -i "s/ENV PXB_VERSION.*/ENV PXB_VERSION 8.4.0-4.1/g" Dockerfile sed -i "s/ENV PS_VERSION.*/ENV PS_VERSION ${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}.${RPM_RELEASE}/g" Dockerfile if [ ${PXC_MAJOR_RELEASE} != "84" ]; then sed -i "s/tools/pxb-8x-innovation/g" Dockerfile diff --git a/pxc/jenkins/percona-xtradb-cluster-8.0.groovy b/pxc/jenkins/percona-xtradb-cluster-8.0.groovy index c4b3071e95..37c57c58a3 100644 --- a/pxc/jenkins/percona-xtradb-cluster-8.0.groovy +++ b/pxc/jenkins/percona-xtradb-cluster-8.0.groovy @@ -85,11 +85,11 @@ pipeline { description: 'Enable fipsmode', name: 'FIPSMODE') choice( - choices: 'laboratory\ntesting\nexperimental', + choices: 'testing\nexperimental\nlaboratory', description: 'Repo component to push packages to', name: 'COMPONENT') choice( - choices: '#releases\n#releases-ci', + choices: '#releases-ci\n#releases', description: 'Channel for notifications', name: 'SLACKNOTIFY') } @@ -258,6 +258,46 @@ pipeline { uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } + stage('Oracle Linux 10') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + cleanUpWS() + unstash 'pxc-80.properties' + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + script { + if (env.FIPSMODE == 'YES') { + buildStage("oraclelinux:10", "--build_rpm=1 --enable_fipsmode=1") + } else { + buildStage("oraclelinux:10", "--build_rpm=1") + } + } + stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } + stage('Oracle Linux 10 ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + unstash 'pxc-80.properties' + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + script { + if (env.FIPSMODE == 'YES') { + buildStage("oraclelinux:10", "--build_rpm=1 --enable_fipsmode=1") + } else { + buildStage("oraclelinux:10", "--build_rpm=1") + } + } + stash includes: 'test/pxc-80.properties', name: 'pxc-80.properties' + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) + } + } stage('Amazon Linux 2023') { when { expression { env.FIPSMODE == 'YES' } diff --git a/pxc/jenkins/percona-xtradb-cluster-9.x.groovy b/pxc/jenkins/percona-xtradb-cluster-9.x.groovy index 71062956be..4ef472129f 100644 --- a/pxc/jenkins/percona-xtradb-cluster-9.x.groovy +++ b/pxc/jenkins/percona-xtradb-cluster-9.x.groovy @@ -273,94 +273,90 @@ pipeline { } } } - stage('Amazon Linux 2023') { + stage('Oracle Linux 10') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { - if (env.FIPSMODE == 'NO') { - echo "The step is skipped" + cleanUpWS() + unstash 'pxc-9x.properties' + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + if (env.FIPSMODE == 'YES') { + buildStage("oraclelinux:10", "--build_rpm=1 --enable_fipsmode=1") } else { - cleanUpWS() - unstash 'pxc-9x.properties' - popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) - buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") - - stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' - if (env.EXPERIMENTALMODE == 'NO') { - pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) - uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) - } + buildStage("oraclelinux:10", "--build_rpm=1") + } + stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' + if (env.EXPERIMENTALMODE == 'NO') { + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } } } - stage('Amazon Linux 2023 ARM') { + stage('Oracle Linux 10 ARM') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { script { - if (env.FIPSMODE == 'NO') { - echo "The step is skipped" + cleanUpWS() + unstash 'pxc-9x.properties' + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + if (env.FIPSMODE == 'YES') { + buildStage("oraclelinux:10", "--build_rpm=1 --enable_fipsmode=1") } else { - cleanUpWS() - unstash 'pxc-9x.properties' - popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) - buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") - - stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' - if (env.EXPERIMENTALMODE == 'NO') { - pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) - uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) - } + buildStage("oraclelinux:10", "--build_rpm=1") + } + stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' + if (env.EXPERIMENTALMODE == 'NO') { + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } } } - stage('Ubuntu Focal(20.04)') { + stage('Amazon Linux 2023') { + when { + expression { env.FIPSMODE == 'YES' } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } steps { script { - if (env.FIPSMODE == 'YES') { - echo "The step is skipped" - } else { - cleanUpWS() - unstash 'pxc-9x.properties' - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") + cleanUpWS() + unstash 'pxc-9x.properties' + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") - stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' - if (env.EXPERIMENTALMODE == 'NO') { - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } + stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' + if (env.EXPERIMENTALMODE == 'NO') { + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } } } - stage('Ubuntu Focal(20.04) ARM') { + stage('Amazon Linux 2023 ARM') { + when { + expression { env.FIPSMODE == 'YES' } + } agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } steps { script { - if (env.FIPSMODE == 'YES') { - echo "The step is skipped" - } else { - cleanUpWS() - unstash 'pxc-9x.properties' - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("ubuntu:focal", "--build_deb=1") + cleanUpWS() + unstash 'pxc-9x.properties' + popArtifactFolder(params.CLOUD, "srpm/", AWS_STASH_PATH) + buildStage("amazonlinux:2023", "--build_rpm=1 --enable_fipsmode=1") - stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' - if (env.EXPERIMENTALMODE == 'NO') { - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } + stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' + if (env.EXPERIMENTALMODE == 'NO') { + pushArtifactFolder(params.CLOUD, "rpm/", AWS_STASH_PATH) + uploadRPMfromAWS(params.CLOUD, "rpm/", AWS_STASH_PATH) } } } @@ -381,8 +377,8 @@ pipeline { } stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } @@ -402,8 +398,8 @@ pipeline { } stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } @@ -423,10 +419,8 @@ pipeline { } stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' - if (env.EXPERIMENTALMODE == 'NO') { - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } @@ -446,56 +440,8 @@ pipeline { } stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' - if (env.EXPERIMENTALMODE == 'NO') { - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } - } - } - stage('Debian Bullseye(11)') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' - } - steps { - script { - if (env.FIPSMODE == 'YES') { - echo "The step is skipped" - } else { - cleanUpWS() - unstash 'pxc-9x.properties' - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("debian:bullseye", "--build_deb=1") - - stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' - if (env.EXPERIMENTALMODE == 'NO') { - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } - } - } - } - stage('Debian Bullseye(11) ARM') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' - } - steps { - script { - if (env.FIPSMODE == 'YES') { - echo "The step is skipped" - } else { - cleanUpWS() - unstash 'pxc-9x.properties' - popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("debian:bullseye", "--build_deb=1") - - stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' - if (env.EXPERIMENTALMODE == 'NO') { - pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) - uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) - } - } + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } } @@ -591,30 +537,7 @@ pipeline { } } } - stage('Debian Bullseye(11) tarball') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' - } - steps { - script { - if (env.FIPSMODE == 'YES') { - echo "The step is skipped" - } else { - cleanUpWS() - unstash 'pxc-9x.properties' - popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) - buildStage("debian:bullseye", "--build_tarball=1") - - stash includes: 'test/pxc-9x.properties', name: 'pxc-9x.properties' - if (env.EXPERIMENTALMODE == 'NO') { - pushArtifactFolder(params.CLOUD, "test/tarball/", AWS_STASH_PATH) - uploadTarballfromAWS(params.CLOUD, "test/tarball/", AWS_STASH_PATH, 'binary') - } - } - } - } - } - stage('Ubuntu Jammy(22.04) tarball') { + stage('Ubuntu Noble(24.04) tarball') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' } @@ -624,9 +547,9 @@ pipeline { popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) script { if (env.FIPSMODE == 'YES') { - buildStage("ubuntu:jammy", "--build_tarball=1 --enable_fipsmode=1") + buildStage("ubuntu:noble", "--build_tarball=1 --enable_fipsmode=1") } else { - buildStage("ubuntu:jammy", "--build_tarball=1") + buildStage("ubuntu:noble", "--build_tarball=1") } } From be084a83f29b0abdd5cfbe52d5a44c419c793c8c Mon Sep 17 00:00:00 2001 From: Manika Singhal Date: Fri, 3 Oct 2025 18:30:18 +0530 Subject: [PATCH 251/269] Add ssl3.5 tarballs stage and temporarily disable other ssl versions build --- ppg/pg_tarballs.groovy | 142 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 136 insertions(+), 6 deletions(-) diff --git a/ppg/pg_tarballs.groovy b/ppg/pg_tarballs.groovy index 458b7c7f56..04dce891e9 100644 --- a/ppg/pg_tarballs.groovy +++ b/ppg/pg_tarballs.groovy @@ -116,7 +116,33 @@ pipeline { stage('Build pg_tarballs') { parallel { - stage('Build pg_tarball 17 for OpenSSL 3') { + stage('Build pg_tarball 17 for OpenSSL 3.5') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + script { + def PG_VERSION=17 + def BRANCH_NAME = "release-17.6.1" + def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl35") + println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" + def PRODUCT="Percona-PostgreSQL-Tarballs" + unstash 'timestamp' + AWS_STASH_PATH_17="/srv/UPLOAD/${DESTINATION}/BUILDS/${PRODUCT}/${PRODUCT}-${PACKAGE_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH_17} > uploadPath-${PACKAGE_VERSION} + cat uploadPath-${PACKAGE_VERSION} + """ + stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" + buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION} --use_ssl35=1") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17, "binary", "${PACKAGE_VERSION}") + uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") + } + } + } + /*stage('Build pg_tarball 17 for OpenSSL 3') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -167,8 +193,34 @@ pipeline { uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } + }*/ + stage('Build pg_tarball 16 for OpenSSL 3.5') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + script { + def PG_VERSION=17 + def BRANCH_NAME = "REL_16_STABLE" + def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl35") + println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" + def PRODUCT="Percona-PostgreSQL-Tarballs" + unstash 'timestamp' + AWS_STASH_PATH_17="/srv/UPLOAD/${DESTINATION}/BUILDS/${PRODUCT}/${PRODUCT}-${PACKAGE_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH_17} > uploadPath-${PACKAGE_VERSION} + cat uploadPath-${PACKAGE_VERSION} + """ + stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" + buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION} --use_ssl35=1") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17, "binary", "${PACKAGE_VERSION}") + uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") + } + } } - stage('Build pg_tarball 16 for OpenSSL 3') { + /*stage('Build pg_tarball 16 for OpenSSL 3') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -219,8 +271,34 @@ pipeline { uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } + }*/ + stage('Build pg_tarball 15 for OpenSSL 3.5') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + script { + def PG_VERSION=17 + def BRANCH_NAME = "REL_15_STABLE" + def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl35") + println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" + def PRODUCT="Percona-PostgreSQL-Tarballs" + unstash 'timestamp' + AWS_STASH_PATH_17="/srv/UPLOAD/${DESTINATION}/BUILDS/${PRODUCT}/${PRODUCT}-${PACKAGE_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH_17} > uploadPath-${PACKAGE_VERSION} + cat uploadPath-${PACKAGE_VERSION} + """ + stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" + buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION} --use_ssl35=1") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17, "binary", "${PACKAGE_VERSION}") + uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") + } + } } - stage('Build pg_tarball 15 for OpenSSL 3') { + /*stage('Build pg_tarball 15 for OpenSSL 3') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -271,8 +349,34 @@ pipeline { uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } + }*/ + stage('Build pg_tarball 14 for OpenSSL 3.5') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + script { + def PG_VERSION=17 + def BRANCH_NAME = "REL_14_STABLE" + def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl35") + println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" + def PRODUCT="Percona-PostgreSQL-Tarballs" + unstash 'timestamp' + AWS_STASH_PATH_17="/srv/UPLOAD/${DESTINATION}/BUILDS/${PRODUCT}/${PRODUCT}-${PACKAGE_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH_17} > uploadPath-${PACKAGE_VERSION} + cat uploadPath-${PACKAGE_VERSION} + """ + stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" + buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION} --use_ssl35=1") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17, "binary", "${PACKAGE_VERSION}") + uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") + } + } } - stage('Build pg_tarball 14 for OpenSSL 3') { + /*stage('Build pg_tarball 14 for OpenSSL 3') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -323,8 +427,34 @@ pipeline { uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } + }*/ + stage('Build pg_tarball 13 for OpenSSL 3.5') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + script { + def PG_VERSION=17 + def BRANCH_NAME = "REL_13_STABLE" + def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl35") + println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" + def PRODUCT="Percona-PostgreSQL-Tarballs" + unstash 'timestamp' + AWS_STASH_PATH_17="/srv/UPLOAD/${DESTINATION}/BUILDS/${PRODUCT}/${PRODUCT}-${PACKAGE_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH_17} > uploadPath-${PACKAGE_VERSION} + cat uploadPath-${PACKAGE_VERSION} + """ + stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" + buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION} --use_ssl35=1") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17, "binary", "${PACKAGE_VERSION}") + uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") + } + } } - stage('Build pg_tarball 13 for OpenSSL 3') { + /*stage('Build pg_tarball 13 for OpenSSL 3') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -375,7 +505,7 @@ pipeline { uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } - } + }*/ } //parallel } // stage From ba183960255142b02ea3f6747ca68135aedaef0d Mon Sep 17 00:00:00 2001 From: Manika Singhal Date: Fri, 3 Oct 2025 22:46:29 +0530 Subject: [PATCH 252/269] build tarballs for PG17 and PG14 only --- ppg/pg_tarballs.groovy | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ppg/pg_tarballs.groovy b/ppg/pg_tarballs.groovy index 04dce891e9..fd2e60d035 100644 --- a/ppg/pg_tarballs.groovy +++ b/ppg/pg_tarballs.groovy @@ -194,7 +194,7 @@ pipeline { } } }*/ - stage('Build pg_tarball 16 for OpenSSL 3.5') { + /*stage('Build pg_tarball 16 for OpenSSL 3.5') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -220,7 +220,7 @@ pipeline { } } } - /*stage('Build pg_tarball 16 for OpenSSL 3') { + stage('Build pg_tarball 16 for OpenSSL 3') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -272,7 +272,7 @@ pipeline { } } }*/ - stage('Build pg_tarball 15 for OpenSSL 3.5') { + /*stage('Build pg_tarball 15 for OpenSSL 3.5') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -298,7 +298,7 @@ pipeline { } } } - /*stage('Build pg_tarball 15 for OpenSSL 3') { + stage('Build pg_tarball 15 for OpenSSL 3') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -428,7 +428,7 @@ pipeline { } } }*/ - stage('Build pg_tarball 13 for OpenSSL 3.5') { + /*stage('Build pg_tarball 13 for OpenSSL 3.5') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -454,7 +454,7 @@ pipeline { } } } - /*stage('Build pg_tarball 13 for OpenSSL 3') { + stage('Build pg_tarball 13 for OpenSSL 3') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } From 171e1c90ca24679b063a1b64cdeadd081e805e9e Mon Sep 17 00:00:00 2001 From: Manika Singhal Date: Mon, 6 Oct 2025 18:23:27 +0530 Subject: [PATCH 253/269] enable tarballs for all PG versions again --- ppg/pg_tarballs.groovy | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/ppg/pg_tarballs.groovy b/ppg/pg_tarballs.groovy index fd2e60d035..4c8fa1f795 100644 --- a/ppg/pg_tarballs.groovy +++ b/ppg/pg_tarballs.groovy @@ -142,7 +142,7 @@ pipeline { } } } - /*stage('Build pg_tarball 17 for OpenSSL 3') { + stage('Build pg_tarball 17 for OpenSSL 3') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -193,8 +193,8 @@ pipeline { uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } - }*/ - /*stage('Build pg_tarball 16 for OpenSSL 3.5') { + } + stage('Build pg_tarball 16 for OpenSSL 3.5') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -271,8 +271,8 @@ pipeline { uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } - }*/ - /*stage('Build pg_tarball 15 for OpenSSL 3.5') { + } + stage('Build pg_tarball 15 for OpenSSL 3.5') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -349,7 +349,7 @@ pipeline { uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } - }*/ + } stage('Build pg_tarball 14 for OpenSSL 3.5') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -376,7 +376,7 @@ pipeline { } } } - /*stage('Build pg_tarball 14 for OpenSSL 3') { + stage('Build pg_tarball 14 for OpenSSL 3') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -427,8 +427,8 @@ pipeline { uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } - }*/ - /*stage('Build pg_tarball 13 for OpenSSL 3.5') { + } + stage('Build pg_tarball 13 for OpenSSL 3.5') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -505,7 +505,7 @@ pipeline { uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } - }*/ + } } //parallel } // stage From 12ddb887be0a1eb51b680c25be4e677f9aeeb7bc Mon Sep 17 00:00:00 2001 From: Sandra Romanchenko <53295797+sandraromanchenko@users.noreply.github.com> Date: Mon, 6 Oct 2025 17:11:45 +0300 Subject: [PATCH 254/269] PBM. Remove PSMDB 6.0 due to EOL, remove GCS HMAC and add MinIO storage (#3588) --- pbm/pbm-e2e-tests.groovy | 71 +++------------------------------------- 1 file changed, 4 insertions(+), 67 deletions(-) diff --git a/pbm/pbm-e2e-tests.groovy b/pbm/pbm-e2e-tests.groovy index 647204a187..88811c5851 100644 --- a/pbm/pbm-e2e-tests.groovy +++ b/pbm/pbm-e2e-tests.groovy @@ -30,20 +30,20 @@ void prepareCluster(String TEST_TYPE) { git poll: false, branch: params.PBM_BRANCH, url: 'https://github.com/percona/percona-backup-mongodb.git' - withCredentials([file(credentialsId: 'PBM-AWS-S3', variable: 'PBM_AWS_S3_YML'), file(credentialsId: 'PBM-GCS-S3', variable: 'PBM_GCS_S3_YML'), file(credentialsId: 'PBM-GCS-HMAC-S3', variable: 'PBM_GCS_HMAC_S3_YML'), file(credentialsId: 'PBM-AZURE', variable: 'PBM_AZURE_YML')]) { + withCredentials([file(credentialsId: 'PBM-AWS-S3', variable: 'PBM_AWS_S3_YML'), file(credentialsId: 'PBM-GCS-S3', variable: 'PBM_GCS_S3_YML'), file(credentialsId: 'PBM-MINIO-S3', variable: 'PBM_MINIO_S3_YML'), file(credentialsId: 'PBM-AZURE', variable: 'PBM_AZURE_YML')]) { sh """ cp $PBM_AWS_S3_YML ./e2e-tests/docker/conf/aws.yaml + cp $PBM_MINIO_S3_YML ./e2e-tests/docker/conf/aws_minio.yaml cp $PBM_GCS_S3_YML ./e2e-tests/docker/conf/gcs.yaml - cp $PBM_GCS_HMAC_S3_YML ./e2e-tests/docker/conf/gcs_hmac.yaml cp $PBM_AZURE_YML ./e2e-tests/docker/conf/azure.yaml sed -i s:pbme2etest:pbme2etest-${TEST_TYPE}:g ./e2e-tests/docker/conf/aws.yaml + sed -i s:pbme2etest:pbme2etest-${TEST_TYPE}:g ./e2e-tests/docker/conf/aws_minio.yaml sed -i s:pbme2etest:pbme2etest-${TEST_TYPE}:g ./e2e-tests/docker/conf/gcs.yaml - sed -i s:pbme2etest:pbme2etest-${TEST_TYPE}:g ./e2e-tests/docker/conf/gcs_hmac.yaml sed -i s:pbme2etest:pbme2etest-${TEST_TYPE}:g ./e2e-tests/docker/conf/azure.yaml chmod 664 ./e2e-tests/docker/conf/aws.yaml + chmod 664 ./e2e-tests/docker/conf/aws_minio.yaml chmod 664 ./e2e-tests/docker/conf/gcs.yaml - chmod 664 ./e2e-tests/docker/conf/gcs_hmac.yaml chmod 664 ./e2e-tests/docker/conf/azure.yaml @@ -91,15 +91,6 @@ pipeline { runTest('run-new-cluster', '8.0', 'logical') } } - stage('New cluster 6.0 logical') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' - } - steps { - prepareCluster('60-newc-logic') - runTest('run-new-cluster', '6.0', 'logical') - } - } stage('New cluster 7.0 logical') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -118,15 +109,6 @@ pipeline { runTest('run-sharded', '8.0', 'logical') } } - stage('Sharded 6.0 logical') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' - } - steps { - prepareCluster('60-shrd-logic') - runTest('run-sharded', '6.0', 'logical') - } - } stage('Sharded 7.0 logical') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' @@ -145,15 +127,6 @@ pipeline { runTest('run-rs', '8.0', 'logical') } } - stage('Non-sharded 6.0 logical') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' - } - steps { - prepareCluster('60-rs-logic') - runTest('run-rs', '6.0', 'logical') - } - } stage('Non-sharded 7.0 logical') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -172,15 +145,6 @@ pipeline { runTest('run-single', '8.0', 'logical') } } - stage('Single-node 6.0 logical') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' - } - steps { - prepareCluster('60-single-logic') - runTest('run-single', '6.0', 'logical') - } - } stage('Single-node 7.0 logical') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -199,15 +163,6 @@ pipeline { runTest('run-sharded', '8.0', 'physical') } } - stage('Sharded 6.0 physical') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' - } - steps { - prepareCluster('60-shrd-phys') - runTest('run-sharded', '6.0', 'physical') - } - } stage('Sharded 7.0 physical') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' @@ -226,15 +181,6 @@ pipeline { runTest('run-rs', '8.0', 'physical') } } - stage('Non-sharded 6.0 physical') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' - } - steps { - prepareCluster('60-rs-phys') - runTest('run-rs', '6.0', 'physical') - } - } stage('Non-sharded 7.0 physical') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' @@ -253,15 +199,6 @@ pipeline { runTest('run-single', '8.0', 'physical') } } - stage('Single-node 6.0 physical') { - agent { - label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' - } - steps { - prepareCluster('60-single-phys') - runTest('run-single', '6.0', 'physical') - } - } stage('Single-node 7.0 physical') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' From d9ca420bc818779105f6494b89e31da84607733d Mon Sep 17 00:00:00 2001 From: Manika Singhal Date: Tue, 7 Oct 2025 11:38:39 +0530 Subject: [PATCH 255/269] update arm-tarballs for ssl3.5 and temporarily disable all other tarballs --- ppg/pg_tarballs-arm.groovy | 142 +++++++++++++++++++++++++++++++++++-- 1 file changed, 136 insertions(+), 6 deletions(-) diff --git a/ppg/pg_tarballs-arm.groovy b/ppg/pg_tarballs-arm.groovy index e945a5028c..6f18162e26 100644 --- a/ppg/pg_tarballs-arm.groovy +++ b/ppg/pg_tarballs-arm.groovy @@ -116,7 +116,33 @@ pipeline { stage('Build pg_tarballs') { parallel { - stage('Build pg_tarball 17 for OpenSSL 3') { + stage('Build pg_tarball 17 for OpenSSL 3.5') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + def PG_VERSION=17 + def BRANCH_NAME = "release-17.6.1" + def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl35") + println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" + def PRODUCT="Percona-PostgreSQL-Tarballs" + unstash 'timestamp' + AWS_STASH_PATH_17="/srv/UPLOAD/${DESTINATION}/BUILDS/${PRODUCT}/${PRODUCT}-${PACKAGE_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH_17} > uploadPath-${PACKAGE_VERSION} + cat uploadPath-${PACKAGE_VERSION} + """ + stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" + buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION} --use_ssl35=1") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17, "binary", "${PACKAGE_VERSION}") + uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") + } + } + } + /*stage('Build pg_tarball 17 for OpenSSL 3') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } @@ -167,8 +193,34 @@ pipeline { uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } + }*/ + stage('Build pg_tarball 16 for OpenSSL 3.5') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + def PG_VERSION=17 + def BRANCH_NAME = "REL_16_STABLE" + def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl35") + println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" + def PRODUCT="Percona-PostgreSQL-Tarballs" + unstash 'timestamp' + AWS_STASH_PATH_17="/srv/UPLOAD/${DESTINATION}/BUILDS/${PRODUCT}/${PRODUCT}-${PACKAGE_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH_17} > uploadPath-${PACKAGE_VERSION} + cat uploadPath-${PACKAGE_VERSION} + """ + stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" + buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION} --use_ssl35=1") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17, "binary", "${PACKAGE_VERSION}") + uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") + } + } } - stage('Build pg_tarball 16 for OpenSSL 3') { + /*stage('Build pg_tarball 16 for OpenSSL 3') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } @@ -219,8 +271,34 @@ pipeline { uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } + }*/ + stage('Build pg_tarball 15 for OpenSSL 3.5') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + def PG_VERSION=17 + def BRANCH_NAME = "REL_15_STABLE" + def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl35") + println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" + def PRODUCT="Percona-PostgreSQL-Tarballs" + unstash 'timestamp' + AWS_STASH_PATH_17="/srv/UPLOAD/${DESTINATION}/BUILDS/${PRODUCT}/${PRODUCT}-${PACKAGE_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH_17} > uploadPath-${PACKAGE_VERSION} + cat uploadPath-${PACKAGE_VERSION} + """ + stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" + buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION} --use_ssl35=1") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17, "binary", "${PACKAGE_VERSION}") + uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") + } + } } - stage('Build pg_tarball 15 for OpenSSL 3') { + /*stage('Build pg_tarball 15 for OpenSSL 3') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } @@ -271,8 +349,34 @@ pipeline { uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } + }*/ + stage('Build pg_tarball 14 for OpenSSL 3.5') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + def PG_VERSION=17 + def BRANCH_NAME = "REL_14_STABLE" + def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl35") + println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" + def PRODUCT="Percona-PostgreSQL-Tarballs" + unstash 'timestamp' + AWS_STASH_PATH_17="/srv/UPLOAD/${DESTINATION}/BUILDS/${PRODUCT}/${PRODUCT}-${PACKAGE_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH_17} > uploadPath-${PACKAGE_VERSION} + cat uploadPath-${PACKAGE_VERSION} + """ + stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" + buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION} --use_ssl35=1") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17, "binary", "${PACKAGE_VERSION}") + uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") + } + } } - stage('Build pg_tarball 14 for OpenSSL 3') { + /*stage('Build pg_tarball 14 for OpenSSL 3') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } @@ -323,8 +427,34 @@ pipeline { uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } + }*/ + stage('Build pg_tarball 13 for OpenSSL 3.5') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + script { + def PG_VERSION=17 + def BRANCH_NAME = "REL_13_STABLE" + def PACKAGE_VERSION = getPostgreSQLVersion(BRANCH_NAME, "configure.${PG_VERSION}.ssl35") + println "Returned PACKAGE_VERSION: ${PACKAGE_VERSION}" + def PRODUCT="Percona-PostgreSQL-Tarballs" + unstash 'timestamp' + AWS_STASH_PATH_17="/srv/UPLOAD/${DESTINATION}/BUILDS/${PRODUCT}/${PRODUCT}-${PACKAGE_VERSION}/${TIMESTAMP}" + sh """ + echo ${AWS_STASH_PATH_17} > uploadPath-${PACKAGE_VERSION} + cat uploadPath-${PACKAGE_VERSION} + """ + stash includes: "uploadPath-${PACKAGE_VERSION}", name: "uploadPath-${PACKAGE_VERSION}" + buildStage("oraclelinux:8", "--version=${PACKAGE_VERSION} --use_ssl35=1") + pushArtifactFolder(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17) + uploadPGTarballfromAWS(params.CLOUD, "tarballs-${PACKAGE_VERSION}/", AWS_STASH_PATH_17, "binary", "${PACKAGE_VERSION}") + uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") + } + } } - stage('Build pg_tarball 13 for OpenSSL 3') { + /*stage('Build pg_tarball 13 for OpenSSL 3') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } @@ -375,7 +505,7 @@ pipeline { uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } - } + }*/ } //parallel } // stage From edc6021d8660363cc1c674f273da3d6b68393df5 Mon Sep 17 00:00:00 2001 From: Surabhi Bhat Date: Tue, 7 Oct 2025 12:09:49 +0530 Subject: [PATCH 256/269] PKG-1091 Extend PLM build pipeline to build tarball --- plm/percona-link-mongodb.groovy | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/plm/percona-link-mongodb.groovy b/plm/percona-link-mongodb.groovy index 4668d4d3a5..83d7ed0558 100644 --- a/plm/percona-link-mongodb.groovy +++ b/plm/percona-link-mongodb.groovy @@ -332,6 +332,19 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } + stage('Oraclelinux 8 tarball') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("oraclelinux:8", "--build_tarball=1") + + pushArtifactFolder(params.CLOUD, "tarball/", AWS_STASH_PATH) + uploadTarballfromAWS(params.CLOUD, "tarball/", AWS_STASH_PATH, 'binary') + } + } } } @@ -347,6 +360,11 @@ pipeline { sync2ProdAutoBuild(params.CLOUD, PTA_REPO, COMPONENT) } } + stage('Push Tarballs to TESTING download area') { + steps { + uploadTarballToDownloadsTesting(params.CLOUD, "plm", "${VERSION}") + } + } } post { From 9c72e5005fc257e7c430efcc8c4b8fbf4e983763 Mon Sep 17 00:00:00 2001 From: Manika Singhal Date: Tue, 7 Oct 2025 16:19:21 +0530 Subject: [PATCH 257/269] enable all builds again --- ppg/pg_tarballs-arm.groovy | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/ppg/pg_tarballs-arm.groovy b/ppg/pg_tarballs-arm.groovy index 6f18162e26..e8971c8841 100644 --- a/ppg/pg_tarballs-arm.groovy +++ b/ppg/pg_tarballs-arm.groovy @@ -142,7 +142,7 @@ pipeline { } } } - /*stage('Build pg_tarball 17 for OpenSSL 3') { + stage('Build pg_tarball 17 for OpenSSL 3') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } @@ -193,7 +193,7 @@ pipeline { uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } - }*/ + } stage('Build pg_tarball 16 for OpenSSL 3.5') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' @@ -220,7 +220,7 @@ pipeline { } } } - /*stage('Build pg_tarball 16 for OpenSSL 3') { + stage('Build pg_tarball 16 for OpenSSL 3') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } @@ -271,7 +271,7 @@ pipeline { uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } - }*/ + } stage('Build pg_tarball 15 for OpenSSL 3.5') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' @@ -298,7 +298,7 @@ pipeline { } } } - /*stage('Build pg_tarball 15 for OpenSSL 3') { + stage('Build pg_tarball 15 for OpenSSL 3') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } @@ -349,7 +349,7 @@ pipeline { uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } - }*/ + } stage('Build pg_tarball 14 for OpenSSL 3.5') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' @@ -376,7 +376,7 @@ pipeline { } } } - /*stage('Build pg_tarball 14 for OpenSSL 3') { + stage('Build pg_tarball 14 for OpenSSL 3') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } @@ -427,7 +427,7 @@ pipeline { uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } - }*/ + } stage('Build pg_tarball 13 for OpenSSL 3.5') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' @@ -454,7 +454,7 @@ pipeline { } } } - /*stage('Build pg_tarball 13 for OpenSSL 3') { + stage('Build pg_tarball 13 for OpenSSL 3') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' } @@ -505,7 +505,7 @@ pipeline { uploadTarballToTestingDownloadServer("pg_tarballs", "${PACKAGE_VERSION}") } } - }*/ + } } //parallel } // stage From 85c2625f713466693d3f75d7ab8f786997044806 Mon Sep 17 00:00:00 2001 From: Surabhi Bhat Date: Tue, 7 Oct 2025 15:11:42 +0530 Subject: [PATCH 258/269] Upload tarballs to TESTING downloads area for PBM --- pbm/jenkins/percona-mongodb-backup.groovy | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pbm/jenkins/percona-mongodb-backup.groovy b/pbm/jenkins/percona-mongodb-backup.groovy index fa713870a2..53399f55d4 100644 --- a/pbm/jenkins/percona-mongodb-backup.groovy +++ b/pbm/jenkins/percona-mongodb-backup.groovy @@ -369,6 +369,14 @@ pipeline { sync2ProdAutoBuild(params.CLOUD, PBM_REPO, COMPONENT) } } + stage('Push Tarballs to TESTING download area') { + when { + expression { return params.BUILD_PACKAGES == 'true' } + } + steps { + uploadTarballToDownloadsTesting(params.CLOUD, "pbm", "${VERSION}") + } + } stage('Build docker containers for PerconaLab') { when { allOf { From 133cdad21206ba312792805992b736f50838f899 Mon Sep 17 00:00:00 2001 From: Sandra Romanchenko <53295797+sandraromanchenko@users.noreply.github.com> Date: Thu, 9 Oct 2025 16:33:40 +0300 Subject: [PATCH 259/269] PBM_e2e_tests. Return HMAC for tests (#3610) --- pbm/pbm-e2e-tests.groovy | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pbm/pbm-e2e-tests.groovy b/pbm/pbm-e2e-tests.groovy index 88811c5851..b5ea37c33e 100644 --- a/pbm/pbm-e2e-tests.groovy +++ b/pbm/pbm-e2e-tests.groovy @@ -30,20 +30,23 @@ void prepareCluster(String TEST_TYPE) { git poll: false, branch: params.PBM_BRANCH, url: 'https://github.com/percona/percona-backup-mongodb.git' - withCredentials([file(credentialsId: 'PBM-AWS-S3', variable: 'PBM_AWS_S3_YML'), file(credentialsId: 'PBM-GCS-S3', variable: 'PBM_GCS_S3_YML'), file(credentialsId: 'PBM-MINIO-S3', variable: 'PBM_MINIO_S3_YML'), file(credentialsId: 'PBM-AZURE', variable: 'PBM_AZURE_YML')]) { + withCredentials([file(credentialsId: 'PBM-AWS-S3', variable: 'PBM_AWS_S3_YML'), file(credentialsId: 'PBM-GCS-S3', variable: 'PBM_GCS_S3_YML'), file(credentialsId: 'PBM-GCS-HMAC-S3', variable: 'PBM_GCS_HMAC_S3_YML'), file(credentialsId: 'PBM-MINIO-S3', variable: 'PBM_MINIO_S3_YML'), file(credentialsId: 'PBM-AZURE', variable: 'PBM_AZURE_YML')]) { sh """ cp $PBM_AWS_S3_YML ./e2e-tests/docker/conf/aws.yaml cp $PBM_MINIO_S3_YML ./e2e-tests/docker/conf/aws_minio.yaml cp $PBM_GCS_S3_YML ./e2e-tests/docker/conf/gcs.yaml + cp $PBM_GCS_HMAC_S3_YML ./e2e-tests/docker/conf/gcs_hmac.yaml cp $PBM_AZURE_YML ./e2e-tests/docker/conf/azure.yaml sed -i s:pbme2etest:pbme2etest-${TEST_TYPE}:g ./e2e-tests/docker/conf/aws.yaml sed -i s:pbme2etest:pbme2etest-${TEST_TYPE}:g ./e2e-tests/docker/conf/aws_minio.yaml sed -i s:pbme2etest:pbme2etest-${TEST_TYPE}:g ./e2e-tests/docker/conf/gcs.yaml + sed -i s:pbme2etest:pbme2etest-${TEST_TYPE}:g ./e2e-tests/docker/conf/gcs_hmac.yaml sed -i s:pbme2etest:pbme2etest-${TEST_TYPE}:g ./e2e-tests/docker/conf/azure.yaml chmod 664 ./e2e-tests/docker/conf/aws.yaml chmod 664 ./e2e-tests/docker/conf/aws_minio.yaml chmod 664 ./e2e-tests/docker/conf/gcs.yaml + chmod 664 ./e2e-tests/docker/conf/gcs_hmac.yaml chmod 664 ./e2e-tests/docker/conf/azure.yaml From dcb5547e34020ce00d3eaef93ce68dabc77f1ee2 Mon Sep 17 00:00:00 2001 From: Surabhi Bhat Date: Fri, 10 Oct 2025 11:22:32 +0530 Subject: [PATCH 260/269] Add Debian 13 to sysbench and qpress pipeline --- ps/jenkins/qpress.groovy | 38 +++++++++++++++++++++++++++++++++++++- sysbench/sysbench.groovy | 30 ++++++++++++++++++++++++++++-- 2 files changed, 65 insertions(+), 3 deletions(-) diff --git a/ps/jenkins/qpress.groovy b/ps/jenkins/qpress.groovy index 1d2f849e77..59e79c4ce4 100644 --- a/ps/jenkins/qpress.groovy +++ b/ps/jenkins/qpress.groovy @@ -106,7 +106,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { PKGLIST=\\"\\\${PKGLIST} libldap2-dev libnuma-dev libjemalloc-dev libc6-dbg valgrind libjson-perl\\" PKGLIST=\\"\\\${PKGLIST} libmecab2 mecab mecab-ipadic zip unzip wget\\" PKGLIST=\\"\\\${PKGLIST} build-essential debhelper devscripts lintian diffutils patch patchutils\\" - if [ \\\$DEBIAN_VERSION = focal -o \\\$DEBIAN_VERSION = bullseye -o \\\$DEBIAN_VERSION = jammy -o \\\$DEBIAN_VERSION = bookworm -o \\\$DEBIAN_VERSION = noble ]; then + if [ \\\$DEBIAN_VERSION = focal -o \\\$DEBIAN_VERSION = bullseye -o \\\$DEBIAN_VERSION = jammy -o \\\$DEBIAN_VERSION = bookworm -o \\\$DEBIAN_VERSION = trixie -o \\\$DEBIAN_VERSION = noble ]; then PKGLIST=\\"\\\${PKGLIST} python3-mysqldb\\" else PKGLIST=\\"\\\${PKGLIST} python-mysqldb\\" @@ -518,6 +518,42 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } + stage('Debian Trixie (13)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("debian:trixie", "DEB") + sh ''' + pwd + ls -la test/deb + cp -r test/deb . + ''' + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Trixie (13) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("debian:trixie", "DEB") + sh ''' + pwd + ls -la test/deb + cp -r test/deb . + ''' + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } stage('Ubuntu Noble (24.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/sysbench/sysbench.groovy b/sysbench/sysbench.groovy index 35b6112739..4cfeafeed6 100644 --- a/sysbench/sysbench.groovy +++ b/sysbench/sysbench.groovy @@ -328,7 +328,7 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("debian:bullseye", "--build_deb=1") + buildStage("debian:bookworm", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) @@ -341,7 +341,33 @@ pipeline { steps { cleanUpWS() popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) - buildStage("debian:bullseye", "--build_deb=1") + buildStage("debian:bookworm", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Trixie(13)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Trixie(13) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) From f19c2afac1ab91dbdc1faaed69c060d7d432c757 Mon Sep 17 00:00:00 2001 From: Surabhi Bhat Date: Mon, 13 Oct 2025 15:50:13 +0530 Subject: [PATCH 261/269] Add debian 13 to PS build pipeline --- .../percona-server-for-mysql-8.0.groovy | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/ps/jenkins/percona-server-for-mysql-8.0.groovy b/ps/jenkins/percona-server-for-mysql-8.0.groovy index e1eed2013a..ee2f6ebee3 100644 --- a/ps/jenkins/percona-server-for-mysql-8.0.groovy +++ b/ps/jenkins/percona-server-for-mysql-8.0.groovy @@ -599,6 +599,26 @@ parameters { pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } +/* stage('Debian Trixie(13)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64' : 'docker-32gb' + } + steps { + cleanUpWS() + installCli("rpm") + unstash 'properties' + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + script { + if (env.FIPSMODE == 'YES') { + buildStage("debian:trixie", "--build_deb=1 --with_zenfs=1 --enable_fipsmode=1") + } else { + buildStage("debian:trixie", "--build_deb=1 --with_zenfs=1") + } + } + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + } + }*/ stage('Ubuntu Focal(20.04) ARM') { when { expression { env.FIPSMODE == 'NO' } @@ -697,6 +717,26 @@ parameters { pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) } } +/* stage('Debian Trixie(13) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + installCli("rpm") + unstash 'properties' + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + script { + if (env.FIPSMODE == 'YES') { + buildStage("debian:trixie", "--build_deb=1 --with_zenfs=1 --enable_fipsmode=1") + } else { + buildStage("debian:trixie", "--build_deb=1 --with_zenfs=1") + } + } + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + } + }*/ stage('Oracle Linux 8 binary tarball') { when { expression { env.FIPSMODE == 'NO' } From ca26344ed2d2b95b0ed4d1176e974f60b5ddc70f Mon Sep 17 00:00:00 2001 From: Surabhi Bhat Date: Mon, 13 Oct 2025 18:30:17 +0530 Subject: [PATCH 262/269] PKG-1134 Add debian 13 support to jemalloc --- ps/jenkins/jemalloc.groovy | 46 +++++++++++++++++++++++++++++++++++--- ps/jenkins/jemalloc.yml | 2 +- 2 files changed, 44 insertions(+), 4 deletions(-) diff --git a/ps/jenkins/jemalloc.groovy b/ps/jenkins/jemalloc.groovy index e5ff53387c..1e4a319cf6 100644 --- a/ps/jenkins/jemalloc.groovy +++ b/ps/jenkins/jemalloc.groovy @@ -112,10 +112,12 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { DEBIAN_FRONTEND=noninteractive apt-get -y purge eatmydata || true if [ \\\$DEBIAN_VERSION = focal -o \\\$DEBIAN_VERSION = bullseye -o \\\$DEBIAN_VERSION = jammy -o \\\$DEBIAN_VERSION = noble ]; then PKGLIST=\\"gcc-9\\" + elif [ \\\$DEBIAN_VERSION = trixie ]; then + PKGLIST=\\"gcc-13\\" else PKGLIST=\\"gcc-11\\" fi - if [ \\\$DEBIAN_VERSION = focal -o \\\$DEBIAN_VERSION = bullseye -o \\\$DEBIAN_VERSION = jammy -o \\\$DEBIAN_VERSION = bookworm -o \\\$DEBIAN_VERSION = noble ]; then + if [ \\\$DEBIAN_VERSION = focal -o \\\$DEBIAN_VERSION = bullseye -o \\\$DEBIAN_VERSION = jammy -o \\\$DEBIAN_VERSION = bookworm -o \\\$DEBIAN_VERSION = noble -o \\\$DEBIAN_VERSION = trixie ]; then PKGLIST=\\"\\\${PKGLIST} python3-mysqldb\\" else PKGLIST=\\"\\\${PKGLIST} python-mysqldb\\" @@ -139,8 +141,10 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { dpkg-source -x jemalloc_3.6.0-2.dsc cd jemalloc-3.6.0 sed -i 's/@EXTRA_LDFLAGS@/@EXTRA_LDFLAGS@ -Wl,--allow-multiple-definition/g' Makefile.in - if [ \\\$DEBIAN_VERSION = bookworm -a \\\$ARCH = aarch64 ]; then - sed -i 's/make check/#make check/g' debian/rules + if [ \\\$DEBIAN_VERSION = bookworm -o \\\$DEBIAN_VERSION = trixie ]; then + if [ \\\$ARCH = aarch64 ]; then + sed -i 's/make check/#make check/g' debian/rules + fi fi sed -i 's/override_dh_auto_test:/override_dh_builddeb:\\n\\tdh_builddeb -- -Zgzip\n\noverride_dh_auto_test:/g' debian/rules cat debian/rules @@ -509,6 +513,42 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } + stage('Debian Trixie (13)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("debian:trixie", "DEB") + sh ''' + pwd + ls -la test/deb + cp -r test/deb . + ''' + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Trixie (13) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_tarball/", AWS_STASH_PATH) + buildStage("debian:trixie", "DEB") + sh ''' + pwd + ls -la test/deb + cp -r test/deb . + ''' + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } stage('Ubuntu Noble (24.04)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' diff --git a/ps/jenkins/jemalloc.yml b/ps/jenkins/jemalloc.yml index 950a67f390..09fd8f6f31 100644 --- a/ps/jenkins/jemalloc.yml +++ b/ps/jenkins/jemalloc.yml @@ -1,5 +1,5 @@ - job: - name: hetzner-jemalloc-RELEASE + name: jemalloc-RELEASE project-type: pipeline description: | Do not edit this job through the web! From fd48f9084a58a31a971c796dc02694fcb2cdb671 Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Wed, 15 Oct 2025 16:02:42 +0300 Subject: [PATCH 263/269] PG-1951 fix pgbackrest docker pipelines --- ppg/ppg-pgbackrest-docker-arm.groovy | 4 ++-- ppg/ppg-pgbackrest-docker.groovy | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ppg/ppg-pgbackrest-docker-arm.groovy b/ppg/ppg-pgbackrest-docker-arm.groovy index 6444735afd..b47e91ca17 100644 --- a/ppg/ppg-pgbackrest-docker-arm.groovy +++ b/ppg/ppg-pgbackrest-docker-arm.groovy @@ -34,8 +34,8 @@ pipeline { sh """ git clone https://github.com/percona/percona-docker cd percona-docker/percona-pgbackrest - sed -E "s/ENV PG_VERSION (.+)/ENV PG_VERSION ${params.PPG_VERSION}/" -i Dockerfile - sed -E "s/ENV PPG_REPO (.+)/ENV PPG_REPO ${params.PPG_REPO}/" -i Dockerfile + sed -E "s/ARG PG_VERSION=(.+)/ARG PG_VERSION=${params.PPG_VERSION}/" -i Dockerfile + sed -E "s/ARG PPG_REPO=(.+)/ARG PPG_REPO=${params.PPG_REPO}/" -i Dockerfile docker build . -t percona-pgbackrest """ } diff --git a/ppg/ppg-pgbackrest-docker.groovy b/ppg/ppg-pgbackrest-docker.groovy index f8597bd4df..0e1df0183e 100644 --- a/ppg/ppg-pgbackrest-docker.groovy +++ b/ppg/ppg-pgbackrest-docker.groovy @@ -34,8 +34,8 @@ pipeline { sh """ git clone https://github.com/percona/percona-docker cd percona-docker/percona-pgbackrest - sed -E "s/ENV PG_VERSION (.+)/ENV PG_VERSION ${params.PPG_VERSION}/" -i Dockerfile - sed -E "s/ENV PPG_REPO (.+)/ENV PPG_REPO ${params.PPG_REPO}/" -i Dockerfile + sed -E "s/ARG PG_VERSION=(.+)/ARG PG_VERSION=${params.PPG_VERSION}/" -i Dockerfile + sed -E "s/ARG PPG_REPO=(.+)/ARG PPG_REPO=${params.PPG_REPO}/" -i Dockerfile docker build . -t percona-pgbackrest """ } From cef9511a3c6786ffff2255fba1c286aa0b7a059a Mon Sep 17 00:00:00 2001 From: Manika Singhal Date: Thu, 16 Oct 2025 10:29:21 +0530 Subject: [PATCH 264/269] Update the jobs to accommodate the packaging improvements made under PG-1838 --- ppg/etcd-arm.groovy | 23 +++++--------- ppg/etcd.groovy | 23 +++++--------- ppg/patroni.groovy | 25 +++++----------- ppg/percona-postgis.groovy | 37 +++++++---------------- ppg/pg_gather.groovy | 23 +++++--------- ppg/pgaudit.groovy | 23 +++++--------- ppg/pgaudit_set_user.groovy | 25 +++++----------- ppg/pgbackrest.groovy | 25 +++++----------- ppg/pgbadger.groovy | 25 +++++----------- ppg/pgbouncer.groovy | 25 +++++----------- ppg/pgpool2-build.groovy | 58 +++++++++++------------------------- ppg/pgrepack.groovy | 25 +++++----------- ppg/pgvector.groovy | 23 +++++--------- ppg/postgresql-common.groovy | 23 +++++--------- ppg/postgresql_server.groovy | 25 +++++----------- ppg/ppg-server-ha.groovy | 21 +++++-------- ppg/ppg-server.groovy | 21 +++++-------- ppg/pysyncobj.groovy | 25 +++++----------- ppg/wal2json.groovy | 23 +++++--------- ppg/ydiff.groovy | 25 +++++----------- 20 files changed, 165 insertions(+), 358 deletions(-) diff --git a/ppg/etcd-arm.groovy b/ppg/etcd-arm.groovy index a5d2a5da6b..1e6ad382ea 100644 --- a/ppg/etcd-arm.groovy +++ b/ppg/etcd-arm.groovy @@ -8,6 +8,9 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace mkdir test wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/etcd/etcd_builder.sh -O builder.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/versions.sh -O versions.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/install-deps.sh -O install-deps.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/common-functions.sh -O common-functions.sh pwd -P ls -laR export build_dir=\$(pwd -P) @@ -15,7 +18,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace cd \${build_dir} bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 - bash -x ./builder.sh --builddir=\${build_dir}/test --pg_version=${GIT_BRANCH} --etcd_version=${ETCD_VERSION} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + bash -x ./builder.sh --builddir=\${build_dir}/test ${STAGE_PARAM}" """ } @@ -38,26 +41,14 @@ pipeline { name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', - description: 'URL for etcd repository', + description: 'URL for packaging repository', name: 'GIT_REPO') string( - defaultValue: '3.5.13', - description: 'etcd version', - name: 'ETCD_VERSION') - string( - defaultValue: '16.2', + defaultValue: '17.6', description: 'Tag/Branch for etcd packaging repository', name: 'GIT_BRANCH') string( - defaultValue: '1', - description: 'RPM release value', - name: 'RPM_RELEASE') - string( - defaultValue: '1', - description: 'DEB release value', - name: 'DEB_RELEASE') - string( - defaultValue: 'ppg-16.2', + defaultValue: 'ppg-17.6', description: 'PPG repo name', name: 'PPG_REPO') choice( diff --git a/ppg/etcd.groovy b/ppg/etcd.groovy index 222863a4c1..e914216855 100644 --- a/ppg/etcd.groovy +++ b/ppg/etcd.groovy @@ -8,6 +8,9 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace mkdir test wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/etcd/etcd_builder.sh -O builder.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/versions.sh -O versions.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/install-deps.sh -O install-deps.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/common-functions.sh -O common-functions.sh pwd -P ls -laR export build_dir=\$(pwd -P) @@ -15,7 +18,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace cd \${build_dir} bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 - bash -x ./builder.sh --builddir=\${build_dir}/test --pg_version=${GIT_BRANCH} --etcd_version=${ETCD_VERSION} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + bash -x ./builder.sh --builddir=\${build_dir}/test ${STAGE_PARAM}" """ } @@ -38,26 +41,14 @@ pipeline { name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', - description: 'URL for etcd repository', + description: 'URL for packaging repository', name: 'GIT_REPO') string( - defaultValue: '3.5.13', - description: 'etcd version', - name: 'ETCD_VERSION') - string( - defaultValue: '16.2', + defaultValue: '17.6', description: 'Tag/Branch for etcd packaging repository', name: 'GIT_BRANCH') string( - defaultValue: '1', - description: 'RPM release value', - name: 'RPM_RELEASE') - string( - defaultValue: '1', - description: 'DEB release value', - name: 'DEB_RELEASE') - string( - defaultValue: 'ppg-16.2', + defaultValue: 'ppg-17.6', description: 'PPG repo name', name: 'PPG_REPO') choice( diff --git a/ppg/patroni.groovy b/ppg/patroni.groovy index 8d6b88893c..34e6649c08 100644 --- a/ppg/patroni.groovy +++ b/ppg/patroni.groovy @@ -8,6 +8,9 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace mkdir test wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/patroni/patroni_builder.sh -O builder.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/versions.sh -O versions.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/install-deps.sh -O install-deps.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/common-functions.sh -O common-functions.sh pwd -P ls -laR export build_dir=\$(pwd -P) @@ -15,7 +18,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace cd \${build_dir} bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 - bash -x ./builder.sh --builddir=\${build_dir}/test --branch=${PG_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + bash -x ./builder.sh --builddir=\${build_dir}/test ${STAGE_PARAM}" """ } @@ -38,26 +41,14 @@ pipeline { name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', - description: 'URL for patroni repository', + description: 'URL for packaging repository', name: 'GIT_REPO') string( - defaultValue: '3.1.0', - description: 'Tag/Branch for postgresql', - name: 'PG_BRANCH') - string( - defaultValue: '16.0', - description: 'Tag/Branch for patroni repository', + defaultValue: '17.6', + description: 'Tag/Branch for patroni packaging repository', name: 'GIT_BRANCH') string( - defaultValue: '1', - description: 'RPM release value', - name: 'RPM_RELEASE') - string( - defaultValue: '1', - description: 'DEB release value', - name: 'DEB_RELEASE') - string( - defaultValue: 'ppg-16.0', + defaultValue: 'ppg-17.6', description: 'PPG repo name', name: 'PPG_REPO') choice( diff --git a/ppg/percona-postgis.groovy b/ppg/percona-postgis.groovy index bbcf723a85..3760d3f8d3 100644 --- a/ppg/percona-postgis.groovy +++ b/ppg/percona-postgis.groovy @@ -8,13 +8,16 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace mkdir test wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/postgis/postgis_builder.sh -O postgis_builder.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/versions.sh -O versions.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/install-deps.sh -O install-deps.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/common-functions.sh -O common-functions.sh pwd -P export build_dir=\$(pwd -P) docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " set -o xtrace cd \${build_dir} bash -x ./postgis_builder.sh --builddir=\${build_dir}/test --install_deps=1 - bash -x ./postgis_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --postgis_gitrepo=${POSTGIS_GITREPO} --postgis_branch=${POSTGIS_BRANCH} --postgis_ver=${POSTGIS_VERSION} --branch=${GIT_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + bash -x ./postgis_builder.sh --builddir=\${build_dir}/test ${STAGE_PARAM}" """ } @@ -37,36 +40,16 @@ pipeline { name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', - description: 'URL for postgis packaging repository', + description: 'URL for packaging repository', name: 'GIT_REPO') string( - defaultValue: '15.4', + defaultValue: '17.6', description: 'Tag/Branch for postgis packaging repository', name: 'GIT_BRANCH') string( - defaultValue: 'https://github.com/postgis/postgis.git', - description: 'URL for postgis repository', - name: 'POSTGIS_GITREPO') - string( - defaultValue: 'stable-3.3', - description: 'Tag/Branch for postgis repository', - name: 'POSTGIS_BRANCH') - string( - defaultValue: '3.3', - description: 'POSTGIS release value', - name: 'POSTGIS_VERSION') - string( - defaultValue: '1', - description: 'RPM release value', - name: 'RPM_RELEASE') - string( - defaultValue: '1', - description: 'DEB release value', - name: 'DEB_RELEASE') - string( - defaultValue: 'ppg-15.4', - description: 'POSTGIS repo name', - name: 'POSTGIS_REPO') + defaultValue: 'ppg-17.6', + description: 'PPG repo name', + name: 'PPG_REPO') choice( choices: 'laboratory\ntesting\nexperimental', description: 'Repo component to push packages to', @@ -351,7 +334,7 @@ pipeline { stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(params.CLOUD, POSTGIS_REPO, COMPONENT) + sync2ProdAutoBuild(params.CLOUD, PPG_REPO, COMPONENT) } } diff --git a/ppg/pg_gather.groovy b/ppg/pg_gather.groovy index 7a47e78969..00ebd48cec 100644 --- a/ppg/pg_gather.groovy +++ b/ppg/pg_gather.groovy @@ -8,6 +8,9 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace mkdir test wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/pg_gather/pggather_builder.sh -O builder.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/versions.sh -O versions.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/install-deps.sh -O install-deps.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/common-functions.sh -O common-functions.sh pwd -P ls -laR export build_dir=\$(pwd -P) @@ -15,7 +18,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace cd \${build_dir} bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 - bash -x ./builder.sh --builddir=\${build_dir}/test --branch=${PG_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + bash -x ./builder.sh --builddir=\${build_dir}/test ${STAGE_PARAM}" """ } @@ -38,26 +41,14 @@ pipeline { name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', - description: 'URL for pg_gather repository', + description: 'URL for packaging repository', name: 'GIT_REPO') string( - defaultValue: 'ver_1.4.4', - description: 'Tag/Branch for pg_gather repository', - name: 'PG_BRANCH') - string( - defaultValue: '16.0', + defaultValue: '17.6', description: 'Tag/Branch for pg_gather packaging repository', name: 'GIT_BRANCH') string( - defaultValue: '1', - description: 'RPM release value', - name: 'RPM_RELEASE') - string( - defaultValue: '1', - description: 'DEB release value', - name: 'DEB_RELEASE') - string( - defaultValue: 'ppg-16.0', + defaultValue: 'ppg-17.6', description: 'PPG repo name', name: 'PPG_REPO') choice( diff --git a/ppg/pgaudit.groovy b/ppg/pgaudit.groovy index 22a34ae6ec..52bc8c16ec 100644 --- a/ppg/pgaudit.groovy +++ b/ppg/pgaudit.groovy @@ -8,6 +8,9 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace mkdir test wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/pgaudit/pgaudit_builder.sh -O builder.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/versions.sh -O versions.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/install-deps.sh -O install-deps.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/common-functions.sh -O common-functions.sh pwd -P ls -laR export build_dir=\$(pwd -P) @@ -15,7 +18,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace cd \${build_dir} bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 - bash -x ./builder.sh --builddir=\${build_dir}/test --branch=${PG_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + bash -x ./builder.sh --builddir=\${build_dir}/test ${STAGE_PARAM}" """ } @@ -38,26 +41,14 @@ pipeline { name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', - description: 'URL for pg_audit repository', + description: 'URL for packaging repository', name: 'GIT_REPO') string( - defaultValue: 'ver_1.4.4', - description: 'Tag/Branch for pg_audit repository', - name: 'PG_BRANCH') - string( - defaultValue: '16.0', + defaultValue: '17.6', description: 'Tag/Branch for pg_audit packaging repository', name: 'GIT_BRANCH') string( - defaultValue: '1', - description: 'RPM release value', - name: 'RPM_RELEASE') - string( - defaultValue: '1', - description: 'DEB release value', - name: 'DEB_RELEASE') - string( - defaultValue: 'ppg-16.0', + defaultValue: 'ppg-17.6', description: 'PPG repo name', name: 'PPG_REPO') choice( diff --git a/ppg/pgaudit_set_user.groovy b/ppg/pgaudit_set_user.groovy index bd42671af1..fcdd53e064 100644 --- a/ppg/pgaudit_set_user.groovy +++ b/ppg/pgaudit_set_user.groovy @@ -8,6 +8,9 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace mkdir test wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/pgaudit_set_user/pgaudit_builder.sh -O builder.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/versions.sh -O versions.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/install-deps.sh -O install-deps.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/common-functions.sh -O common-functions.sh pwd -P ls -laR export build_dir=\$(pwd -P) @@ -15,7 +18,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace cd \${build_dir} bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 - bash -x ./builder.sh --builddir=\${build_dir}/test --branch=${PG_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + bash -x ./builder.sh --builddir=\${build_dir}/test ${STAGE_PARAM}" """ } @@ -38,26 +41,14 @@ pipeline { name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', - description: 'URL for pg_audit repository', + description: 'URL for packaging repository', name: 'GIT_REPO') string( - defaultValue: 'ver_1.4.4', - description: 'Tag/Branch for postgresql', - name: 'PG_BRANCH') - string( - defaultValue: '16.0', - description: 'Tag/Branch for pg_audit repository', + defaultValue: '17.6', + description: 'Tag/Branch for pg_audit packaging repository', name: 'GIT_BRANCH') string( - defaultValue: '1', - description: 'RPM release value', - name: 'RPM_RELEASE') - string( - defaultValue: '1', - description: 'DEB release value', - name: 'DEB_RELEASE') - string( - defaultValue: 'ppg-16.0', + defaultValue: 'ppg-17.6', description: 'PPG repo name', name: 'PPG_REPO') choice( diff --git a/ppg/pgbackrest.groovy b/ppg/pgbackrest.groovy index dd2159893b..a02ddcc1a7 100644 --- a/ppg/pgbackrest.groovy +++ b/ppg/pgbackrest.groovy @@ -8,6 +8,9 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace mkdir test wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/pgbackrest/pgbackrest_builder.sh -O builder.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/versions.sh -O versions.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/install-deps.sh -O install-deps.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/common-functions.sh -O common-functions.sh pwd -P ls -laR export build_dir=\$(pwd -P) @@ -15,7 +18,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace cd \${build_dir} bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 - bash -x ./builder.sh --builddir=\${build_dir}/test --branch=${PG_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + bash -x ./builder.sh --builddir=\${build_dir}/test ${STAGE_PARAM}" """ } @@ -38,26 +41,14 @@ pipeline { name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', - description: 'URL for pg_BACKREST repository', + description: 'URL for packaging repository', name: 'GIT_REPO') string( - defaultValue: 'ver_1.4.4', - description: 'Tag/Branch for postgresql', - name: 'PG_BRANCH') - string( - defaultValue: '16.0', - description: 'Tag/Branch for pg_BACKREST repository', + defaultValue: '17.6', + description: 'Tag/Branch for pg_BACKREST packaging repository', name: 'GIT_BRANCH') string( - defaultValue: '1', - description: 'RPM release value', - name: 'RPM_RELEASE') - string( - defaultValue: '1', - description: 'DEB release value', - name: 'DEB_RELEASE') - string( - defaultValue: 'ppg-16.0', + defaultValue: 'ppg-17.6', description: 'PPG repo name', name: 'PPG_REPO') choice( diff --git a/ppg/pgbadger.groovy b/ppg/pgbadger.groovy index 7620e3d668..d681262a19 100644 --- a/ppg/pgbadger.groovy +++ b/ppg/pgbadger.groovy @@ -8,6 +8,9 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace mkdir test wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/pgbadger/pgbadger_builder.sh -O builder.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/versions.sh -O versions.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/install-deps.sh -O install-deps.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/common-functions.sh -O common-functions.sh pwd -P ls -laR export build_dir=\$(pwd -P) @@ -15,7 +18,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace cd \${build_dir} bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 - bash -x ./builder.sh --builddir=\${build_dir}/test --branch=${PG_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + bash -x ./builder.sh --builddir=\${build_dir}/test ${STAGE_PARAM}" """ } @@ -38,26 +41,14 @@ pipeline { name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', - description: 'URL for pg_badger repository', + description: 'URL for packaging repository', name: 'GIT_REPO') string( - defaultValue: 'ver_1.4.4', - description: 'Tag/Branch for postgresql', - name: 'PG_BRANCH') - string( - defaultValue: '16.0', - description: 'Tag/Branch for pg_badger repository', + defaultValue: '17.6', + description: 'Tag/Branch for pg_badger packaging repository', name: 'GIT_BRANCH') string( - defaultValue: '1', - description: 'RPM release value', - name: 'RPM_RELEASE') - string( - defaultValue: '1', - description: 'DEB release value', - name: 'DEB_RELEASE') - string( - defaultValue: 'ppg-16.0', + defaultValue: 'ppg-17.6', description: 'PPG repo name', name: 'PPG_REPO') choice( diff --git a/ppg/pgbouncer.groovy b/ppg/pgbouncer.groovy index bf908ed6f0..571aff8520 100644 --- a/ppg/pgbouncer.groovy +++ b/ppg/pgbouncer.groovy @@ -8,6 +8,9 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace mkdir test wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/pgbouncer/pgbouncer_builder.sh -O builder.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/versions.sh -O versions.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/install-deps.sh -O install-deps.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/common-functions.sh -O common-functions.sh pwd -P ls -laR export build_dir=\$(pwd -P) @@ -15,7 +18,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace cd \${build_dir} bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 - bash -x ./builder.sh --builddir=\${build_dir}/test --branch=${PG_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + bash -x ./builder.sh --builddir=\${build_dir}/test ${STAGE_PARAM}" """ } @@ -38,26 +41,14 @@ pipeline { name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', - description: 'URL for pg_bouncer repository', + description: 'URL for packaging repository', name: 'GIT_REPO') string( - defaultValue: 'ver_1.4.4', - description: 'Tag/Branch for postgresql', - name: 'PG_BRANCH') - string( - defaultValue: '16.0', - description: 'Tag/Branch for pg_bouncer repository', + defaultValue: '17.6', + description: 'Tag/Branch for pg_bouncer packaging repository', name: 'GIT_BRANCH') string( - defaultValue: '1', - description: 'RPM release value', - name: 'RPM_RELEASE') - string( - defaultValue: '1', - description: 'DEB release value', - name: 'DEB_RELEASE') - string( - defaultValue: 'ppg-16.0', + defaultValue: 'ppg-17.6', description: 'PPG repo name', name: 'PPG_REPO') choice( diff --git a/ppg/pgpool2-build.groovy b/ppg/pgpool2-build.groovy index 24c446d2b6..10ebd36ee6 100644 --- a/ppg/pgpool2-build.groovy +++ b/ppg/pgpool2-build.groovy @@ -7,14 +7,17 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { sh """ set -o xtrace mkdir test - wget \$(echo ${GIT_BUILD_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${BUILD_BRANCH}/pgpool2/pgpool2_builder.sh -O pgpool2_builder.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/pgpool2/pgpool2_builder.sh -O pgpool2_builder.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/versions.sh -O versions.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/install-deps.sh -O install-deps.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/common-functions.sh -O common-functions.sh pwd -P export build_dir=\$(pwd -P) docker run -u root -v \${build_dir}:\${build_dir} ${DOCKER_OS} sh -c " set -o xtrace cd \${build_dir} bash -x ./pgpool2_builder.sh --builddir=\${build_dir}/test --install_deps=1 - bash -x ./pgpool2_builder.sh --builddir=\${build_dir}/test --branch=\${BRANCH} --repo=\${GIT_REPO} --pp_branch=\${BUILD_BRANCH} --pp_repo=\${GIT_BUILD_REPO} --rpm_release=\${RPM_RELEASE} --deb_release=\${DEB_RELEASE} --pg_release=\${PG_RELEASE} $STAGE_PARAM" + bash -x ./pgpool2_builder.sh --builddir=\${build_dir}/test $STAGE_PARAM" """ } @@ -35,45 +38,20 @@ pipeline { choices: [ 'Hetzner','AWS' ], description: 'Cloud infra for build', name: 'CLOUD' ) - string( - defaultValue: '4.4.2', - description: 'General version of the product', - name: 'VERSION' - ) - string( - defaultValue: 'https://git.postgresql.org/git/pgpool2.git', - description: 'pgpool2 repo', - name: 'GIT_REPO' - ) - string( - defaultValue: 'V4_4_STABLE', - description: 'Branch for pgpool2 repo', - name: 'BRANCH' - ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', - description: 'Build pgpool2 repo', - name: 'GIT_BUILD_REPO' - ) - string( - defaultValue: 'main', - description: 'Branch for build repo', - name: 'BUILD_BRANCH' - ) - string( - defaultValue: '1', - description: 'rpm release number', - name: 'RPM_RELEASE' + description: 'URL for packaging repository', + name: 'GIT_REPO' ) string( - defaultValue: '1', - description: 'deb release number', - name: 'DEB_RELEASE' + defaultValue: '17.6', + description: 'Tag/Branch for pgpool2 packaging repository', + name: 'GIT_BRANCH' ) string( - defaultValue: '16.1', - description: 'PPG major version to test', - name: 'PG_RELEASE' + defaultValue: '17.6', + description: 'PPG repo name', + name: 'PPG_REPO' ) choice( choices: 'laboratory\ntesting\nexperimental\nrelease', @@ -88,7 +66,7 @@ pipeline { stages { stage('Create pgpool2 source tarball') { steps { - slackNotify("", "#00FF00", "[${JOB_NAME}]: starting build for ${BUILD_BRANCH} - [${BUILD_URL}]") + slackNotify("", "#00FF00", "[${JOB_NAME}]: starting build for ${GIT_BRANCH} - [${BUILD_URL}]") cleanUpWS() buildStage("oraclelinux:8", "--get_sources=1") sh ''' @@ -359,21 +337,21 @@ pipeline { stage('Push to public repository') { steps { // sync packages - sync2ProdAutoBuild(params.CLOUD, "ppg-${PG_RELEASE}", COMPONENT) + sync2ProdAutoBuild(params.CLOUD, "ppg-${PPG_REPO}", COMPONENT) } } } post { success { - slackNotify("", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${BUILD_BRANCH} - [${BUILD_URL}]") + slackNotify("", "#00FF00", "[${JOB_NAME}]: build has been finished successfully for ${GIT_BRANCH} - [${BUILD_URL}]") script { - currentBuild.description = "Built on ${BUILD_BRANCH}" + currentBuild.description = "Built on ${GIT_BRANCH}" } deleteDir() } failure { - slackNotify("", "#FF0000", "[${JOB_NAME}]: build failed for ${BUILD_BRANCH} - [${BUILD_URL}]") + slackNotify("", "#FF0000", "[${JOB_NAME}]: build failed for ${GIT_BRANCH} - [${BUILD_URL}]") deleteDir() } always { diff --git a/ppg/pgrepack.groovy b/ppg/pgrepack.groovy index 323c15bd65..1bfcbab42d 100644 --- a/ppg/pgrepack.groovy +++ b/ppg/pgrepack.groovy @@ -8,6 +8,9 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace mkdir test wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/pg_repack/pgrepack_builder.sh -O builder.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/versions.sh -O versions.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/install-deps.sh -O install-deps.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/common-functions.sh -O common-functions.sh pwd -P ls -laR export build_dir=\$(pwd -P) @@ -15,7 +18,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace cd \${build_dir} bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 - bash -x ./builder.sh --builddir=\${build_dir}/test --branch=${PG_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + bash -x ./builder.sh --builddir=\${build_dir}/test ${STAGE_PARAM}" """ } @@ -38,26 +41,14 @@ pipeline { name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', - description: 'URL for pg_repack repository', + description: 'URL for packaging repository', name: 'GIT_REPO') string( - defaultValue: 'ver_1.4.4', - description: 'Tag/Branch for postgresql', - name: 'PG_BRANCH') - string( - defaultValue: '16.0', - description: 'Tag/Branch for pg_repack repository', + defaultValue: '17.6', + description: 'Tag/Branch for pg_repack packaging repository', name: 'GIT_BRANCH') string( - defaultValue: '1', - description: 'RPM release value', - name: 'RPM_RELEASE') - string( - defaultValue: '1', - description: 'DEB release value', - name: 'DEB_RELEASE') - string( - defaultValue: 'ppg-16.0', + defaultValue: 'ppg-17.6', description: 'PPG repo name', name: 'PPG_REPO') choice( diff --git a/ppg/pgvector.groovy b/ppg/pgvector.groovy index eb5b1d45ec..c70e301b18 100644 --- a/ppg/pgvector.groovy +++ b/ppg/pgvector.groovy @@ -8,6 +8,9 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace mkdir test wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/pgvector/pgvector_builder.sh -O builder.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/versions.sh -O versions.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/install-deps.sh -O install-deps.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/common-functions.sh -O common-functions.sh pwd -P ls -laR export build_dir=\$(pwd -P) @@ -15,7 +18,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace cd \${build_dir} bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 - bash -x ./builder.sh --builddir=\${build_dir}/test --branch=${PG_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + bash -x ./builder.sh --builddir=\${build_dir}/test ${STAGE_PARAM}" """ } @@ -38,26 +41,14 @@ pipeline { name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', - description: 'URL for pgvector repository', + description: 'URL for packaging repository', name: 'GIT_REPO') string( - defaultValue: 'ver_1.4.4', - description: 'Tag/Branch for pgvector repository', - name: 'PG_BRANCH') - string( - defaultValue: '16.0', + defaultValue: '17.6', description: 'Tag/Branch for pgvector packaging repository', name: 'GIT_BRANCH') string( - defaultValue: '1', - description: 'RPM release value', - name: 'RPM_RELEASE') - string( - defaultValue: '1', - description: 'DEB release value', - name: 'DEB_RELEASE') - string( - defaultValue: 'ppg-16.0', + defaultValue: 'ppg-17.6', description: 'PPG repo name', name: 'PPG_REPO') choice( diff --git a/ppg/postgresql-common.groovy b/ppg/postgresql-common.groovy index 291f327d51..205aa71e37 100644 --- a/ppg/postgresql-common.groovy +++ b/ppg/postgresql-common.groovy @@ -8,6 +8,9 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace mkdir test wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/postgres-common/ppg-common_builder.sh -O builder.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/versions.sh -O versions.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/install-deps.sh -O install-deps.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/common-functions.sh -O common-functions.sh pwd -P ls -laR export build_dir=\$(pwd -P) @@ -15,7 +18,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace cd \${build_dir} bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 - bash -x ./builder.sh --builddir=\${build_dir}/test --branch=${PG_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + bash -x ./builder.sh --builddir=\${build_dir}/test ${STAGE_PARAM}" """ } @@ -38,26 +41,14 @@ pipeline { name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', - description: 'URL for postgresql-common repository', + description: 'URL for packaging repository', name: 'GIT_REPO') string( - defaultValue: 'debian/256', - description: 'Tag/Branch for postgresql-common repository', - name: 'PG_BRANCH') - string( - defaultValue: '16.0', + defaultValue: '17.6', description: 'Tag/Branch for postgresql-common packaging repository', name: 'GIT_BRANCH') string( - defaultValue: '1', - description: 'RPM release value', - name: 'RPM_RELEASE') - string( - defaultValue: '1', - description: 'DEB release value', - name: 'DEB_RELEASE') - string( - defaultValue: 'ppg-16.0', + defaultValue: 'ppg-17.6', description: 'PPG repo name', name: 'PPG_REPO') choice( diff --git a/ppg/postgresql_server.groovy b/ppg/postgresql_server.groovy index 9440af4726..3c0001bdd1 100644 --- a/ppg/postgresql_server.groovy +++ b/ppg/postgresql_server.groovy @@ -8,6 +8,9 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace mkdir test wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/postgres/ppg_builder.sh -O ppg-server_builder.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/versions.sh -O versions.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/install-deps.sh -O install-deps.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/common-functions.sh -O common-functions.sh pwd -P ls -laR export build_dir=\$(pwd -P) @@ -15,7 +18,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace cd \${build_dir} bash -x ./ppg-server_builder.sh --builddir=\${build_dir}/test --install_deps=1 - bash -x ./ppg-server_builder.sh --builddir=\${build_dir}/test --branch=${PG_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + bash -x ./ppg-server_builder.sh --builddir=\${build_dir}/test ${STAGE_PARAM}" """ } @@ -38,26 +41,14 @@ pipeline { name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', - description: 'URL for ppg-server repository', + description: 'URL for packaging repository', name: 'GIT_REPO') string( - defaultValue: 'REL_15_RELEASE', - description: 'Tag/Branch for postgresql', - name: 'PG_BRANCH') - string( - defaultValue: '15.3', - description: 'Tag/Branch for ppg-server repository', + defaultValue: '17.6', + description: 'Tag/Branch for ppg-server packaging repository', name: 'GIT_BRANCH') string( - defaultValue: '1', - description: 'RPM release value', - name: 'RPM_RELEASE') - string( - defaultValue: '1', - description: 'DEB release value', - name: 'DEB_RELEASE') - string( - defaultValue: 'ppg-15.3', + defaultValue: 'ppg-17.6', description: 'PPG repo name', name: 'PPG_REPO') choice( diff --git a/ppg/ppg-server-ha.groovy b/ppg/ppg-server-ha.groovy index 4fefd5ac33..76047a5ac0 100644 --- a/ppg/ppg-server-ha.groovy +++ b/ppg/ppg-server-ha.groovy @@ -8,6 +8,9 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace mkdir test wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/ppg-server-ha/ppg-server-ha_builder.sh -O ppg-server-ha_builder.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/versions.sh -O versions.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/install-deps.sh -O install-deps.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/common-functions.sh -O common-functions.sh pwd -P ls -laR export build_dir=\$(pwd -P) @@ -15,7 +18,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace cd \${build_dir} bash -x ./ppg-server-ha_builder.sh --builddir=\${build_dir}/test --install_deps=1 - bash -x ./ppg-server-ha_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --version=${PPG_REPO} --branch=${GIT_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + bash -x ./ppg-server-ha_builder.sh --builddir=\${build_dir}/test ${STAGE_PARAM}" """ } @@ -38,22 +41,14 @@ pipeline { name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', - description: 'URL for ppg-server-ha repository', + description: 'URL for packaging repository', name: 'GIT_REPO') string( - defaultValue: '14.4', - description: 'Tag/Branch for ppg-server-ha repository', + defaultValue: '17.6', + description: 'Tag/Branch for ppg-server-ha packaging repository', name: 'GIT_BRANCH') string( - defaultValue: '1', - description: 'RPM release value', - name: 'RPM_RELEASE') - string( - defaultValue: '1', - description: 'DEB release value', - name: 'DEB_RELEASE') - string( - defaultValue: 'ppg-14.4', + defaultValue: 'ppg-17.6', description: 'PPG repo name', name: 'PPG_REPO') choice( diff --git a/ppg/ppg-server.groovy b/ppg/ppg-server.groovy index 2d96534bd3..9eb81b7977 100644 --- a/ppg/ppg-server.groovy +++ b/ppg/ppg-server.groovy @@ -8,6 +8,9 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace mkdir test wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/ppg-server/ppg-server_builder.sh -O ppg-server_builder.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/versions.sh -O versions.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/install-deps.sh -O install-deps.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/common-functions.sh -O common-functions.sh pwd -P ls -laR export build_dir=\$(pwd -P) @@ -15,7 +18,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace cd \${build_dir} bash -x ./ppg-server_builder.sh --builddir=\${build_dir}/test --install_deps=1 - bash -x ./ppg-server_builder.sh --builddir=\${build_dir}/test --repo=${GIT_REPO} --version=${PPG_REPO} --branch=${GIT_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + bash -x ./ppg-server_builder.sh --builddir=\${build_dir}/test ${STAGE_PARAM}" """ } @@ -38,22 +41,14 @@ pipeline { name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', - description: 'URL for ppg-server repository', + description: 'URL for packaging repository', name: 'GIT_REPO') string( - defaultValue: '14.4', - description: 'Tag/Branch for ppg-server repository', + defaultValue: '17.6', + description: 'Tag/Branch for ppg-server packaging repository', name: 'GIT_BRANCH') string( - defaultValue: '1', - description: 'RPM release value', - name: 'RPM_RELEASE') - string( - defaultValue: '1', - description: 'DEB release value', - name: 'DEB_RELEASE') - string( - defaultValue: 'ppg-14.4', + defaultValue: 'ppg-17.6', description: 'PPG repo name', name: 'PPG_REPO') choice( diff --git a/ppg/pysyncobj.groovy b/ppg/pysyncobj.groovy index dd9b5d97e4..a53a56994b 100644 --- a/ppg/pysyncobj.groovy +++ b/ppg/pysyncobj.groovy @@ -8,6 +8,9 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace mkdir test wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/pysyncobj/pysyncobj_builder.sh -O builder.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/versions.sh -O versions.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/install-deps.sh -O install-deps.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/common-functions.sh -O common-functions.sh pwd -P ls -laR export build_dir=\$(pwd -P) @@ -15,7 +18,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace cd \${build_dir} bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 - bash -x ./builder.sh --builddir=\${build_dir}/test --branch=${PG_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + bash -x ./builder.sh --builddir=\${build_dir}/test ${STAGE_PARAM}" """ } @@ -38,26 +41,14 @@ pipeline { name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', - description: 'URL for pysyncobj repository', + description: 'URL for packaging repository', name: 'GIT_REPO') string( - defaultValue: '0.3.10', - description: 'Tag/Branch for pysyncobj repository', - name: 'PG_BRANCH') - string( - defaultValue: '16.3', - description: 'Tag/Branch for postgresql packaging repository', + defaultValue: '17.6', + description: 'Tag/Branch for pysyncobj packaging repository', name: 'GIT_BRANCH') string( - defaultValue: '1', - description: 'RPM release value', - name: 'RPM_RELEASE') - string( - defaultValue: '1', - description: 'DEB release value', - name: 'DEB_RELEASE') - string( - defaultValue: 'ppg-16.3', + defaultValue: 'ppg-17.6', description: 'PPG repo name', name: 'PPG_REPO') choice( diff --git a/ppg/wal2json.groovy b/ppg/wal2json.groovy index c424130ff6..b38079053c 100644 --- a/ppg/wal2json.groovy +++ b/ppg/wal2json.groovy @@ -8,6 +8,9 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace mkdir test wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/wal2json/wal2json_builder.sh -O builder.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/versions.sh -O versions.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/install-deps.sh -O install-deps.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/common-functions.sh -O common-functions.sh pwd -P ls -laR export build_dir=\$(pwd -P) @@ -15,7 +18,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace cd \${build_dir} bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 - bash -x ./builder.sh --builddir=\${build_dir}/test --branch=${PG_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + bash -x ./builder.sh --builddir=\${build_dir}/test ${STAGE_PARAM}" """ } @@ -38,26 +41,14 @@ pipeline { name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', - description: 'URL for wal2json repository', + description: 'URL for packaging repository', name: 'GIT_REPO') string( - defaultValue: 'ver_1.4.4', - description: 'Tag/Branch for wal2json repository', - name: 'PG_BRANCH') - string( - defaultValue: '16.0', + defaultValue: '17.6', description: 'Tag/Branch for wal2json packaging repository', name: 'GIT_BRANCH') string( - defaultValue: '1', - description: 'RPM release value', - name: 'RPM_RELEASE') - string( - defaultValue: '1', - description: 'DEB release value', - name: 'DEB_RELEASE') - string( - defaultValue: 'ppg-16.0', + defaultValue: 'ppg-17.6', description: 'PPG repo name', name: 'PPG_REPO') choice( diff --git a/ppg/ydiff.groovy b/ppg/ydiff.groovy index 57c7262e39..7a164af763 100644 --- a/ppg/ydiff.groovy +++ b/ppg/ydiff.groovy @@ -8,6 +8,9 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace mkdir test wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/ydiff/ydiff_builder.sh -O builder.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/versions.sh -O versions.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/install-deps.sh -O install-deps.sh + wget \$(echo ${GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\\.git\$||')/${GIT_BRANCH}/common-functions.sh -O common-functions.sh pwd -P ls -laR export build_dir=\$(pwd -P) @@ -15,7 +18,7 @@ void buildStage(String DOCKER_OS, String STAGE_PARAM) { set -o xtrace cd \${build_dir} bash -x ./builder.sh --builddir=\${build_dir}/test --install_deps=1 - bash -x ./builder.sh --builddir=\${build_dir}/test --branch=${PG_BRANCH} --rpm_release=${RPM_RELEASE} --deb_release=${DEB_RELEASE} ${STAGE_PARAM}" + bash -x ./builder.sh --builddir=\${build_dir}/test ${STAGE_PARAM}" """ } @@ -38,26 +41,14 @@ pipeline { name: 'CLOUD' ) string( defaultValue: 'https://github.com/percona/postgres-packaging.git', - description: 'URL for ydiff repository', + description: 'URL for packaging repository', name: 'GIT_REPO') string( - defaultValue: '1.2', - description: 'Tag/Branch for ydiff repository', - name: 'PG_BRANCH') - string( - defaultValue: '16.3', - description: 'Tag/Branch for postgresql packaging repository', + defaultValue: '17.6', + description: 'Tag/Branch for ydiff packaging repository', name: 'GIT_BRANCH') string( - defaultValue: '1', - description: 'RPM release value', - name: 'RPM_RELEASE') - string( - defaultValue: '1', - description: 'DEB release value', - name: 'DEB_RELEASE') - string( - defaultValue: 'ppg-16.3', + defaultValue: 'ppg-17.6', description: 'PPG repo name', name: 'PPG_REPO') choice( From 33d5f7c6cd0709d190c459e79f0b4aefc68568d0 Mon Sep 17 00:00:00 2001 From: Oleksandr Miroshnychenko Date: Thu, 16 Oct 2025 12:26:27 +0300 Subject: [PATCH 265/269] PG-1951 fix pgbouncer docker build pipelines --- ppg/ppg-pgbouncer-docker-arm.groovy | 4 ++-- ppg/ppg-pgbouncer-docker.groovy | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ppg/ppg-pgbouncer-docker-arm.groovy b/ppg/ppg-pgbouncer-docker-arm.groovy index 7f2bd68b0a..2d21fc2d71 100644 --- a/ppg/ppg-pgbouncer-docker-arm.groovy +++ b/ppg/ppg-pgbouncer-docker-arm.groovy @@ -34,8 +34,8 @@ pipeline { sh """ git clone https://github.com/percona/percona-docker cd percona-docker/percona-pgbouncer - sed -E "s/ENV PG_VERSION (.+)/ENV PG_VERSION ${params.PPG_VERSION}/" -i Dockerfile - sed -E "s/ENV PPG_REPO (.+)/ENV PPG_REPO ${params.PPG_REPO}/" -i Dockerfile + sed -E "s/ARG PG_VERSION=(.+)/ARG PG_VERSION=${params.PPG_VERSION}/" -i Dockerfile + sed -E "s/ARG PPG_REPO=(.+)/ARG PPG_REPO=${params.PPG_REPO}/" -i Dockerfile docker build . -t percona-pgbouncer """ } diff --git a/ppg/ppg-pgbouncer-docker.groovy b/ppg/ppg-pgbouncer-docker.groovy index f18dece44b..e69112dff2 100644 --- a/ppg/ppg-pgbouncer-docker.groovy +++ b/ppg/ppg-pgbouncer-docker.groovy @@ -34,8 +34,8 @@ pipeline { sh """ git clone https://github.com/percona/percona-docker cd percona-docker/percona-pgbouncer - sed -E "s/ENV PG_VERSION (.+)/ENV PG_VERSION ${params.PPG_VERSION}/" -i Dockerfile - sed -E "s/ENV PPG_REPO (.+)/ENV PPG_REPO ${params.PPG_REPO}/" -i Dockerfile + sed -E "s/ARG PG_VERSION=(.+)/ARG PG_VERSION=${params.PPG_VERSION}/" -i Dockerfile + sed -E "s/ARG PPG_REPO=(.+)/ARG PPG_REPO=${params.PPG_REPO}/" -i Dockerfile docker build . -t percona-pgbouncer """ } From 6f341b1f69d5669c80ab84307176c933db67e4d9 Mon Sep 17 00:00:00 2001 From: Surabhi Bhat Date: Tue, 21 Oct 2025 10:29:09 +0530 Subject: [PATCH 266/269] PG-1961 Dockerfiles for all ppg versions contain old versions --- ppg/ppg-docker-arm.groovy | 4 ++-- ppg/ppg-docker.groovy | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ppg/ppg-docker-arm.groovy b/ppg/ppg-docker-arm.groovy index ee371c2646..0f5be9ff7b 100644 --- a/ppg/ppg-docker-arm.groovy +++ b/ppg/ppg-docker-arm.groovy @@ -37,8 +37,8 @@ pipeline { echo \$MIN_VER git clone https://github.com/percona/percona-docker cd percona-docker/percona-distribution-postgresql-\$MAJ_VER - sed -E "s/ENV PPG_VERSION (.+)/ENV PPG_VERSION ${params.PPG_VERSION}/" -i Dockerfile.aarch64 - sed -E "s/ENV PPG_REPO (.+)/ENV PPG_REPO ${params.PPG_REPO}/" -i Dockerfile.aarch64 + sed -E "s/ARG PPG_VERSION (.+)/ARG PPG_VERSION ${params.PPG_VERSION}/" -i Dockerfile.aarch64 + sed -E "s/ARG PPG_REPO (.+)/ARG PPG_REPO ${params.PPG_REPO}/" -i Dockerfile.aarch64 sed -E "s/ENV PPG_MAJOR_VERSION (.+)/ENV PPG_MAJOR_VERSION \$MAJ_VER/" -i Dockerfile.aarch64 sed -E "s/ENV PPG_MINOR_VERSION (.+)/ENV PPG_MINOR_VERSION \$MIN_VER/" -i Dockerfile.aarch64 docker build . -t percona-distribution-postgresql -f Dockerfile.aarch64 diff --git a/ppg/ppg-docker.groovy b/ppg/ppg-docker.groovy index 179af39dbb..ffff4b1758 100644 --- a/ppg/ppg-docker.groovy +++ b/ppg/ppg-docker.groovy @@ -37,8 +37,8 @@ pipeline { echo \$MIN_VER git clone https://github.com/percona/percona-docker cd percona-docker/percona-distribution-postgresql-\$MAJ_VER - sed -E "s/ENV PPG_VERSION (.+)/ENV PPG_VERSION ${params.PPG_VERSION}/" -i Dockerfile - sed -E "s/ENV PPG_REPO (.+)/ENV PPG_REPO ${params.PPG_REPO}/" -i Dockerfile + sed -E "s/ARG PPG_VERSION (.+)/ARG PPG_VERSION ${params.PPG_VERSION}/" -i Dockerfile + sed -E "s/ARG PPG_REPO (.+)/ARG PPG_REPO ${params.PPG_REPO}/" -i Dockerfile sed -E "s/ENV PPG_MAJOR_VERSION (.+)/ENV PPG_MAJOR_VERSION \$MAJ_VER/" -i Dockerfile sed -E "s/ENV PPG_MINOR_VERSION (.+)/ENV PPG_MINOR_VERSION \$MIN_VER/" -i Dockerfile docker build . -t percona-distribution-postgresql:\$MAJ_VER From dbde6e395bacb57695e117694cff899400460ddf Mon Sep 17 00:00:00 2001 From: Surabhi Bhat Date: Tue, 21 Oct 2025 11:17:58 +0530 Subject: [PATCH 267/269] Revert PG-1961 changes --- ppg/ppg-docker-arm.groovy | 4 ++-- ppg/ppg-docker.groovy | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ppg/ppg-docker-arm.groovy b/ppg/ppg-docker-arm.groovy index 0f5be9ff7b..ee371c2646 100644 --- a/ppg/ppg-docker-arm.groovy +++ b/ppg/ppg-docker-arm.groovy @@ -37,8 +37,8 @@ pipeline { echo \$MIN_VER git clone https://github.com/percona/percona-docker cd percona-docker/percona-distribution-postgresql-\$MAJ_VER - sed -E "s/ARG PPG_VERSION (.+)/ARG PPG_VERSION ${params.PPG_VERSION}/" -i Dockerfile.aarch64 - sed -E "s/ARG PPG_REPO (.+)/ARG PPG_REPO ${params.PPG_REPO}/" -i Dockerfile.aarch64 + sed -E "s/ENV PPG_VERSION (.+)/ENV PPG_VERSION ${params.PPG_VERSION}/" -i Dockerfile.aarch64 + sed -E "s/ENV PPG_REPO (.+)/ENV PPG_REPO ${params.PPG_REPO}/" -i Dockerfile.aarch64 sed -E "s/ENV PPG_MAJOR_VERSION (.+)/ENV PPG_MAJOR_VERSION \$MAJ_VER/" -i Dockerfile.aarch64 sed -E "s/ENV PPG_MINOR_VERSION (.+)/ENV PPG_MINOR_VERSION \$MIN_VER/" -i Dockerfile.aarch64 docker build . -t percona-distribution-postgresql -f Dockerfile.aarch64 diff --git a/ppg/ppg-docker.groovy b/ppg/ppg-docker.groovy index ffff4b1758..179af39dbb 100644 --- a/ppg/ppg-docker.groovy +++ b/ppg/ppg-docker.groovy @@ -37,8 +37,8 @@ pipeline { echo \$MIN_VER git clone https://github.com/percona/percona-docker cd percona-docker/percona-distribution-postgresql-\$MAJ_VER - sed -E "s/ARG PPG_VERSION (.+)/ARG PPG_VERSION ${params.PPG_VERSION}/" -i Dockerfile - sed -E "s/ARG PPG_REPO (.+)/ARG PPG_REPO ${params.PPG_REPO}/" -i Dockerfile + sed -E "s/ENV PPG_VERSION (.+)/ENV PPG_VERSION ${params.PPG_VERSION}/" -i Dockerfile + sed -E "s/ENV PPG_REPO (.+)/ENV PPG_REPO ${params.PPG_REPO}/" -i Dockerfile sed -E "s/ENV PPG_MAJOR_VERSION (.+)/ENV PPG_MAJOR_VERSION \$MAJ_VER/" -i Dockerfile sed -E "s/ENV PPG_MINOR_VERSION (.+)/ENV PPG_MINOR_VERSION \$MIN_VER/" -i Dockerfile docker build . -t percona-distribution-postgresql:\$MAJ_VER From 47b4d6225b1ebf0c074971880df86fbf5d9d3ec3 Mon Sep 17 00:00:00 2001 From: Surabhi Bhat Date: Tue, 21 Oct 2025 13:30:14 +0530 Subject: [PATCH 268/269] PKG-1143 PKG-1144 Add Debian 13 to orchestrator and percona-replication-manager pipeline --- .../jenkins/orchestrator-packaging.groovy | 26 +++++++++++++++++++ pdpxc/percona-replication-manager.groovy | 26 +++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/orchestrator/jenkins/orchestrator-packaging.groovy b/orchestrator/jenkins/orchestrator-packaging.groovy index 3786b92db0..aa33a20d4b 100644 --- a/orchestrator/jenkins/orchestrator-packaging.groovy +++ b/orchestrator/jenkins/orchestrator-packaging.groovy @@ -333,6 +333,32 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Trixie(13)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Trixie(13) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } diff --git a/pdpxc/percona-replication-manager.groovy b/pdpxc/percona-replication-manager.groovy index 76368372c0..fa37d4e690 100644 --- a/pdpxc/percona-replication-manager.groovy +++ b/pdpxc/percona-replication-manager.groovy @@ -342,6 +342,32 @@ pipeline { popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) buildStage("debian:bookworm", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bookworm(13)') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) + uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) + } + } + stage('Debian Bookworm(13) ARM') { + agent { + label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' + } + steps { + cleanUpWS() + popArtifactFolder(params.CLOUD, "source_deb/", AWS_STASH_PATH) + buildStage("debian:trixie", "--build_deb=1") + pushArtifactFolder(params.CLOUD, "deb/", AWS_STASH_PATH) uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } From cddeb54daa9a9df93bd0925ba0c3d3cb154b7d50 Mon Sep 17 00:00:00 2001 From: Surabhi Bhat Date: Tue, 21 Oct 2025 13:51:22 +0530 Subject: [PATCH 269/269] Update percona-replication-manager pipeline --- pdpxc/percona-replication-manager.groovy | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pdpxc/percona-replication-manager.groovy b/pdpxc/percona-replication-manager.groovy index fa37d4e690..dc02d7b04f 100644 --- a/pdpxc/percona-replication-manager.groovy +++ b/pdpxc/percona-replication-manager.groovy @@ -346,7 +346,7 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian Bookworm(13)') { + stage('Debian Trixie(13)') { agent { label params.CLOUD == 'Hetzner' ? 'docker-x64-min' : 'docker' } @@ -359,7 +359,7 @@ pipeline { uploadDEBfromAWS(params.CLOUD, "deb/", AWS_STASH_PATH) } } - stage('Debian Bookworm(13) ARM') { + stage('Debian Trixie(13) ARM') { agent { label params.CLOUD == 'Hetzner' ? 'docker-aarch64' : 'docker-32gb-aarch64' }