diff --git a/jobs/templates/debian/gbp-buildpackage.groovy b/jobs/templates/debian/gbp-buildpackage.groovy.j2 similarity index 81% rename from jobs/templates/debian/gbp-buildpackage.groovy rename to jobs/templates/debian/gbp-buildpackage.groovy.j2 index 95f7240..c3d21f7 100644 --- a/jobs/templates/debian/gbp-buildpackage.groovy +++ b/jobs/templates/debian/gbp-buildpackage.groovy.j2 @@ -1,501 +1,501 @@ -def repo_name = '{repo_name}' +def repo_name = '{{repo_name}}' def changelog_distribution def repo_host = 'pergamon.internal.softwareheritage.org' def repo_user = 'swhdebianrepo' def repo_path = '/srv/softwareheritage/repository' -def upload_target = "${{repo_path}}/incoming" -def repo_command = "umask 002; reprepro -vb ${{repo_path}} processincoming incoming" +def upload_target = "${repo_path}/incoming" +def repo_command = "umask 002; reprepro -vb ${repo_path} processincoming incoming" def backport_job = '/' + (currentBuild.fullProjectName.split('/')[0..-2] + ['automatic-backport']).join('/') -pipeline {{ - agent {{ label 'debian' }} - environment {{ +pipeline { + agent { label 'debian' } + environment { PHAB_CONDUIT_URL = 'https://forge.softwareheritage.org/api/' - }} - stages {{ - stage('Notify Phabricator start') {{ - when {{ + } + stages { + stage('Notify Phabricator start') { + when { beforeAgent true - expression {{ params.PHID }} - }} - agent {{ label 'swh-tox' }} - steps {{ + expression { params.PHID } + } + agent { label 'swh-tox' } + steps { withCredentials([ string(credentialsId: 'swh-public-ci', - variable: 'PHAB_CONDUIT_TOKEN')]) {{ + variable: 'PHAB_CONDUIT_TOKEN')]) { sh ''' python3 -m pyarcanist send-message work $PHID ''' - }} - }} - }} - stage('Checkout') {{ - steps {{ + } + } + } + stage('Checkout') { + steps { cleanWs() checkout([ $class: 'GitSCM', branches: [[name: params.GIT_REVISION]], userRemoteConfigs: [[ - url: "https://forge.softwareheritage.org/source/${{repo_name}}.git", + url: "https://forge.softwareheritage.org/source/${repo_name}.git", ]], extensions: [ [$class: 'RelativeTargetDirectory', relativeTargetDir: repo_name], ], ]) - script {{ - dir(repo_name) {{ - if(!fileExists('debian/changelog')) {{ + script { + dir(repo_name) { + if(!fileExists('debian/changelog')) { error('Trying to build a debian package without a debian/changelog') - }} + } changelog_distribution = sh( script: 'dpkg-parsechangelog -SDistribution', returnStdout: true, ).trim() def parsed_gbp_config = readProperties( file: 'debian/gbp.conf', defaults: ['debian-branch': 'master'], ) def debian_branch = parsed_gbp_config['debian-branch'] sh """ - git checkout -b ${{debian_branch}} + git checkout -b ${debian_branch} git branch -f pristine-tar origin/pristine-tar git branch -f debian/upstream origin/debian/upstream """ - }} - }} - }} - }} - stage('Write extra keys') {{ - when {{ + } + } + } + } + stage('Write extra keys') { + when { beforeAgent true - expression {{ changelog_distribution != 'UNRELEASED' }} - }} - steps {{ - dir('keys') {{ + expression { changelog_distribution != 'UNRELEASED' } + } + steps { + dir('keys') { writeFile( file: 'ceph.asc', text: '''-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1 mQINBFX4hgkBEADLqn6O+UFp+ZuwccNldwvh5PzEwKUPlXKPLjQfXlQRig1flpCH E0HJ5wgGlCtYd3Ol9f9+qU24kDNzfbs5bud58BeE7zFaZ4s0JMOMuVm7p8JhsvkU C/Lo/7NFh25e4kgJpjvnwua7c2YrA44ggRb1QT19ueOZLK5wCQ1mR+0GdrcHRCLr 7Sdw1d7aLxMT+5nvqfzsmbDullsWOD6RnMdcqhOxZZvpay8OeuK+yb8FVQ4sOIzB FiNi5cNOFFHg+8dZQoDrK3BpwNxYdGHsYIwU9u6DWWqXybBnB9jd2pve9PlzQUbO eHEa4Z+jPqxY829f4ldaql7ig8e6BaInTfs2wPnHJ+606g2UH86QUmrVAjVzlLCm nqoGymoAPGA4ObHu9X3kO8viMBId9FzooVqR8a9En7ZE0Dm9O7puzXR7A1f5sHoz JdYHnr32I+B8iOixhDUtxIY4GA8biGATNaPd8XR2Ca1hPuZRVuIiGG9HDqUEtXhV fY5qjTjaThIVKtYgEkWMT+Wet3DPPiWT3ftNOE907e6EWEBCHgsEuuZnAbku1GgD LBH4/a/yo9bNvGZKRaTUM/1TXhM5XgVKjd07B4cChgKypAVHvef3HKfCG2U/DkyA LjteHt/V807MtSlQyYaXUTGtDCrQPSlMK5TjmqUnDwy6Qdq8dtWN3DtBWQARAQAB tCpDZXBoLmNvbSAocmVsZWFzZSBrZXkpIDxzZWN1cml0eUBjZXBoLmNvbT6JAjgE EwECACIFAlX4hgkCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEOhKwsBG DzmUXdIQAI8YPcZMBWdv489q8CzxlfRIRZ3Gv/G/8CH+EOExcmkVZ89mVHngCdAP DOYCl8twWXC1lwJuLDBtkUOHXNuR5+Jcl5zFOUyldq1Hv8u03vjnGT7lLJkJoqpG l9QD8nBqRvBU7EM+CU7kP8+09b+088pULil+8x46PwgXkvOQwfVKSOr740Q4J4nm /nUOyTNtToYntmt2fAVWDTIuyPpAqA6jcqSOC7Xoz9cYxkVWnYMLBUySXmSS0uxl 3p+wK0lMG0my/gb+alke5PAQjcE5dtXYzCn+8Lj0uSfCk8Gy0ZOK2oiUjaCGYN6D u72qDRFBnR3jaoFqi03bGBIMnglGuAPyBZiI7LJgzuT9xumjKTJW3kN4YJxMNYu1 FzmIyFZpyvZ7930vB2UpCOiIaRdZiX4Z6ZN2frD3a/vBxBNqiNh/BO+Dex+PDfI4 TqwF8zlcjt4XZ2teQ8nNMR/D8oiYTUW8hwR4laEmDy7ASxe0p5aijmUApWq5UTsF +s/QbwugccU0iR5orksM5u9MZH4J/mFGKzOltfGXNLYI6D5Mtwrnyi0BsF5eY0u6 vkdivtdqrq2DXY+ftuqLOQ7b+t1RctbcMHGPptlxFuN9ufP5TiTWSpfqDwmHCLsT k2vFiMwcHdLpQ1IH8ORVRgPPsiBnBOJ/kIiXG2SxPUTjjEGOVgeA =/Tod -----END PGP PUBLIC KEY BLOCK----- ''' ) // wget https://www.postgresql.org/media/keys/ACCC4CF8.asc writeFile( file: 'postgres.asc', text: '''-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =DA1T -----END PGP PUBLIC KEY BLOCK----- ''' ) // wget https://artifacts.elastic.co/GPG-KEY-elasticsearch writeFile( file: 'elasticsearch.asc', text: '''-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v2.0.14 (GNU/Linux) mQENBFI3HsoBCADXDtbNJnxbPqB1vDNtCsqhe49vFYsZN9IOZsZXgp7aHjh6CJBD A+bGFOwyhbd7at35jQjWAw1O3cfYsKAmFy+Ar3LHCMkV3oZspJACTIgCrwnkic/9 CUliQe324qvObU2QRtP4Fl0zWcfb/S8UYzWXWIFuJqMvE9MaRY1bwUBvzoqavLGZ j3SF1SPO+TB5QrHkrQHBsmX+Jda6d4Ylt8/t6CvMwgQNlrlzIO9WT+YN6zS+sqHd 1YK/aY5qhoLNhp9G/HxhcSVCkLq8SStj1ZZ1S9juBPoXV1ZWNbxFNGwOh/NYGldD 2kmBf3YgCqeLzHahsAEpvAm8TBa7Q9W21C8vABEBAAG0RUVsYXN0aWNzZWFyY2gg KEVsYXN0aWNzZWFyY2ggU2lnbmluZyBLZXkpIDxkZXZfb3BzQGVsYXN0aWNzZWFy Y2gub3JnPokBOAQTAQIAIgUCUjceygIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgEC F4AACgkQ0n1mbNiOQrRzjAgAlTUQ1mgo3nK6BGXbj4XAJvuZDG0HILiUt+pPnz75 nsf0NWhqR4yGFlmpuctgCmTD+HzYtV9fp9qW/bwVuJCNtKXk3sdzYABY+Yl0Cez/ 7C2GuGCOlbn0luCNT9BxJnh4mC9h/cKI3y5jvZ7wavwe41teqG14V+EoFSn3NPKm TxcDTFrV7SmVPxCBcQze00cJhprKxkuZMPPVqpBS+JfDQtzUQD/LSFfhHj9eD+Xe 8d7sw+XvxB2aN4gnTlRzjL1nTRp0h2/IOGkqYfIG9rWmSLNlxhB2t+c0RsjdGM4/ eRlPWylFbVMc5pmDpItrkWSnzBfkmXL3vO2X3WvwmSFiQbkBDQRSNx7KAQgA5JUl zcMW5/cuyZR8alSacKqhSbvoSqqbzHKcUQZmlzNMKGTABFG1yRx9r+wa/fvqP6OT RzRDvVS/cycws8YX7Ddum7x8uI95b9ye1/Xy5noPEm8cD+hplnpU+PBQZJ5XJ2I+ 1l9Nixx47wPGXeClLqcdn0ayd+v+Rwf3/XUJrvccG2YZUiQ4jWZkoxsA07xx7Bj+ Lt8/FKG7sHRFvePFU0ZS6JFx9GJqjSBbHRRkam+4emW3uWgVfZxuwcUCn1ayNgRt KiFv9jQrg2TIWEvzYx9tywTCxc+FFMWAlbCzi+m4WD+QUWWfDQ009U/WM0ks0Kww EwSk/UDuToxGnKU2dQARAQABiQEfBBgBAgAJBQJSNx7KAhsMAAoJENJ9ZmzYjkK0 c3MIAIE9hAR20mqJWLcsxLtrRs6uNF1VrpB+4n/55QU7oxA1iVBO6IFu4qgsF12J TavnJ5MLaETlggXY+zDef9syTPXoQctpzcaNVDmedwo1SiL03uMoblOvWpMR/Y0j 6rm7IgrMWUDXDPvoPGjMl2q1iTeyHkMZEyUJ8SKsaHh4jV9wp9KmC8C+9CwMukL7 vM5w8cgvJoAwsp3Fn59AxWthN3XJYcnMfStkIuWgR7U2r+a210W6vnUxU4oN0PmM cursYPyeV0NX/KQeUeNMwGTFB6QHS/anRaGQewijkrYYoTNtfllxIu9XYmiBERQ/ qPDlGRlOgVTd9xUfHFkzB52c70E= =92oX -----END PGP PUBLIC KEY BLOCK----- ''' ) // wget https://www.apache.org/dist/cassandra/KEYS writeFile( file: 'cassandra.asc', text: '''-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =ws34 -----END PGP PUBLIC KEY BLOCK----- ''' ) - }} - }} - }} - stage('Build package') {{ - when {{ + } + } + } + stage('Build package') { + when { beforeAgent true - expression {{ changelog_distribution != 'UNRELEASED' }} - }} - steps {{ - script {{ - dir (repo_name) {{ + expression { changelog_distribution != 'UNRELEASED' } + } + steps { + script { + dir (repo_name) { def wanted_extra_repositories = params.EXTRA_REPOSITORIES.split(',') def build_dep_resolver def extra_repositories = [] def extra_repository_keys = [] def base_distribution = changelog_distribution.split('-')[0] def backports = changelog_distribution.endsWith('-backports') def swh = changelog_distribution.endsWith('-swh') - if (base_distribution in ['unstable', 'experimental'] || 'incoming' in wanted_extra_repositories) {{ + if (base_distribution in ['unstable', 'experimental'] || 'incoming' in wanted_extra_repositories) { def suites = [] - if (base_distribution == 'unstable') {{ + if (base_distribution == 'unstable') { suites = ['buildd-unstable'] - }} else if (base_distribution == 'experimental') {{ + } else if (base_distribution == 'experimental') { suites = ['buildd-unstable', 'buildd-experimental'] - }} else {{ - suites = ["buildd-${{base_distribution}}-proposed-updates"] - if (backports || swh) {{ - suites.add("buildd-${{base_distribution}}-backports") - }} - }} - suites.each {{suite -> - extra_repositories.add("deb http://incoming.debian.org/debian-buildd/ ${{suite}} main") - }} - }} - - if (swh || 'swh' in wanted_extra_repositories) {{ - def swh_distribution = "${{base_distribution}}-swh" - if (base_distribution in ['unstable', 'experimental']) {{ + } else { + suites = ["buildd-${base_distribution}-proposed-updates"] + if (backports || swh) { + suites.add("buildd-${base_distribution}-backports") + } + } + suites.each {suite -> + extra_repositories.add("deb http://incoming.debian.org/debian-buildd/ ${suite} main") + } + } + + if (swh || 'swh' in wanted_extra_repositories) { + def swh_distribution = "${base_distribution}-swh" + if (base_distribution in ['unstable', 'experimental']) { swh_distribution = 'unstable' - }} - extra_repositories.add("deb [trusted=yes] https://debian.softwareheritage.org/ ${{swh_distribution}} main") - }} + } + extra_repositories.add("deb [trusted=yes] https://debian.softwareheritage.org/ ${swh_distribution} main") + } - if ((backports || swh || 'backports' in wanted_extra_repositories) && !(base_distribution in ['unstable', 'experimental'])) {{ - extra_repositories.add("deb http://deb.debian.org/debian/ ${{base_distribution}}-backports main") + if ((backports || swh || 'backports' in wanted_extra_repositories) && !(base_distribution in ['unstable', 'experimental'])) { + extra_repositories.add("deb http://deb.debian.org/debian/ ${base_distribution}-backports main") build_dep_resolver = 'aptitude' - }} + } - if ('ceph' in wanted_extra_repositories && !(base_distribution in ['unstable', 'experimental'])) {{ + if ('ceph' in wanted_extra_repositories && !(base_distribution in ['unstable', 'experimental'])) { if (base_distribution == 'buster') ceph_distribution = 'stretch' else ceph_distribution = base_distribution - extra_repositories.add("deb https://download.ceph.com/debian-luminous/ ${{ceph_distribution}} main") + extra_repositories.add("deb https://download.ceph.com/debian-luminous/ ${ceph_distribution} main") extra_repository_keys.add('../keys/ceph.asc') - }} + } - if ('pgdg' in wanted_extra_repositories && !(base_distribution in ['unstable', 'experimental'])) {{ - extra_repositories.add("deb http://apt.postgresql.org/pub/repos/apt/ ${{base_distribution}}-pgdg main") + if ('pgdg' in wanted_extra_repositories && !(base_distribution in ['unstable', 'experimental'])) { + extra_repositories.add("deb http://apt.postgresql.org/pub/repos/apt/ ${base_distribution}-pgdg main") extra_repository_keys.add('../keys/postgres.asc') - }} + } - if ('elasticsearch' in wanted_extra_repositories) {{ + if ('elasticsearch' in wanted_extra_repositories) { extra_repositories.add("deb https://artifacts.elastic.co/packages/7.x/apt stable main") extra_repository_keys.add('../keys/elasticsearch.asc') - }} + } - if ('cassandra' in wanted_extra_repositories) {{ + if ('cassandra' in wanted_extra_repositories) { extra_repositories.add("deb http://www.apache.org/dist/cassandra/debian 40x main") extra_repository_keys.add('../keys/cassandra.asc') - }} + } - if (params.BUILD_DEP_RESOLVER) {{ + if (params.BUILD_DEP_RESOLVER) { build_dep_resolver = params.BUILD_DEP_RESOLVER - }} + } def hostname = sh( script: "hostname --fqdn", returnStdout: true, ).trim(); def short_hostname = hostname - '.internal.softwareheritage.org'; - def uploader = "Software Heritage autobuilder (on ${{short_hostname}}) " + def uploader = "Software Heritage autobuilder (on ${short_hostname}) " def gbp_buildpackage = [ 'gbp buildpackage', '--git-builder=sbuild', '--nolog', '--batch', '--no-clean-source', '--no-run-lintian', '--arch-all', '--source', '--force-orig-source', - "--uploader='${{uploader}}'", + "--uploader='${uploader}'", ] - if (build_dep_resolver != null) {{ - gbp_buildpackage.add("--build-dep-resolver=${{build_dep_resolver}}") - }} + if (build_dep_resolver != null) { + gbp_buildpackage.add("--build-dep-resolver=${build_dep_resolver}") + } - extra_repositories.each {{ repo -> - gbp_buildpackage.add("--extra-repository='${{repo}}'") - }} + extra_repositories.each { repo -> + gbp_buildpackage.add("--extra-repository='${repo}'") + } - extra_repository_keys.each {{ key -> - gbp_buildpackage.add("--extra-repository-key='${{key}}'") - }} + extra_repository_keys.each { key -> + gbp_buildpackage.add("--extra-repository-key='${key}'") + } def gbp_buildpackage_cmd = gbp_buildpackage.join(' ') sh(script: gbp_buildpackage_cmd) - }} + } - if (params.DO_UPLOAD) {{ + if (params.DO_UPLOAD) { sh(script: 'debsign *.changes') - }} + } archiveArtifacts( artifacts: sh( script: 'dcmd echo *.changes', returnStdout: true ).split().join(','), fingerprint: true, ) - }} - }} - }} - stage('Upload package') {{ - when {{ + } + } + } + stage('Upload package') { + when { beforeAgent true - expression {{ changelog_distribution != 'UNRELEASED' }} - expression {{ params.DO_UPLOAD }} - }} - steps {{ - sshagent (credentials: ['jenkins-debian-repo-ssh']) {{ + expression { changelog_distribution != 'UNRELEASED' } + expression { params.DO_UPLOAD } + } + steps { + sshagent (credentials: ['jenkins-debian-repo-ssh']) { sh """ - dcmd rsync -v *.changes ${{repo_user}}@${{repo_host}}:${{upload_target}} - ssh ${{repo_user}}@${{repo_host}} '${{repo_command}}' + dcmd rsync -v *.changes ${repo_user}@${repo_host}:${upload_target} + ssh ${repo_user}@${repo_host} '${repo_command}' """ - }} - }} - }} - stage('Prepare backport') {{ - when {{ + } + } + } + stage('Prepare backport') { + when { beforeAgent true - expression {{ changelog_distribution != 'UNRELEASED' }} - expression {{ params.BACKPORT_ON_SUCCESS }} - expression {{ jobExists(backport_job) }} - }} - steps {{ - script {{ - params.BACKPORT_ON_SUCCESS.split(',').each {{ bpo_pair -> + expression { changelog_distribution != 'UNRELEASED' } + expression { params.BACKPORT_ON_SUCCESS } + expression { jobExists(backport_job) } + } + steps { + script { + params.BACKPORT_ON_SUCCESS.split(',').each { bpo_pair -> def (src_suite, dst_suite) = bpo_pair.split('>') - if (src_suite == changelog_distribution) {{ + if (src_suite == changelog_distribution) { build( job: backport_job, parameters: [ string(name: 'GIT_TAG', value: params.GIT_REVISION), string(name: 'SOURCE', value: src_suite), string(name: 'DESTINATION', value: dst_suite), ], wait: false, ) - }} - }} - }} - }} - }} - }} - post {{ - always {{ - node('swh-tox') {{ + } + } + } + } + } + } + post { + always { + node('swh-tox') { withCredentials([ string(credentialsId: 'swh-public-ci', - variable: 'PHAB_CONDUIT_TOKEN')]) {{ - withEnv(["JOBSTATUS=${{currentBuild.currentResult}}"]) {{ + variable: 'PHAB_CONDUIT_TOKEN')]) { + withEnv(["JOBSTATUS=${currentBuild.currentResult}"]) { sh ''' if [ "$JOBSTATUS" = "SUCCESS" ]; then MSGTYPE=pass else MSGTYPE=fail fi echo "Current job status is $JOBSTATUS -> $MGSTYPE" if [ -n "$PHID" ]; then python3 -m pyarcanist send-message $MSGTYPE $PHID fi ''' - }} - }} - }} - }} - }} -}} + } + } + } + } + } +} diff --git a/jobs/templates/debian/gbp-buildpackage.yaml b/jobs/templates/debian/gbp-buildpackage.yaml index 2fef063..237d715 100644 --- a/jobs/templates/debian/gbp-buildpackage.yaml +++ b/jobs/templates/debian/gbp-buildpackage.yaml @@ -1,71 +1,71 @@ - job-template: &gbp_buildpackage name: 'debian/packages/{name}/gbp-buildpackage' description: | Build Debian package auth-token: 'ph4br1cat0r' deb-extra-repositories: deb-backport-on-success: unstable-swh>buster-swh project-type: pipeline parameters: - string: name: GIT_REVISION default: debian/unstable-swh description: Git revision to build - string: name: PHID description: PHID of the phabricator target object on which results will be reported - extended-choice: name: EXTRA_REPOSITORIES description: extra repositories needed to build this package type: checkbox value: !join: - ',' - - incoming - backports - swh - ceph - pgdg - elasticsearch - cassandra value-description: !join: - ',' - - The buildd incoming repository (default for builds from unstable) - The debian backports repository (default for builds for stable-swh) - The Software Heritage debian repository (default for builds for swh branches) - The ceph repository - PostgreSQL Global Dvt Group repository (for stable-swh builds requiring latest postgresql) - Elasticsearch 7.x repository (for builds requiring elasticsearch installed) - Cassandra 4.x repository (for builds requiring cassandra installed) default-value: '{deb-extra-repositories}' - choice: name: BUILD_DEP_RESOLVER description: | the sbuild build dependency resolver (overrides the automatic detection) choices: - '' - apt - aptitude - bool: name: DO_UPLOAD description: upload the built package default: false - extended-choice: name: BACKPORT_ON_SUCCESS description: If the build is successful, which backports should we perform? type: checkbox value: !join: - ',' - - unstable-swh>stretch-swh - unstable-swh>buster-swh - unstable-swh>bullseye-swh - buster-swh>stretch-swh default-value: '{deb-backport-on-success}' dsl: - !include-raw: gbp-buildpackage.groovy + !include-jinja2: gbp-buildpackage.groovy.j2 - job-template: name: 'debian/deps/{name}/gbp-buildpackage' <<: *gbp_buildpackage