diff options
-rw-r--r-- | .github/workflows/check-scripts-executable.yml | 32 | ||||
-rw-r--r-- | CONTRIBUTING.md | 2 | ||||
-rw-r--r-- | Jenkinsfile.docker | 84 | ||||
-rw-r--r-- | README.md | 1 | ||||
-rw-r--r-- | docker/Dockerfile | 1 | ||||
-rw-r--r-- | scripts/package-build/linux-kernel/README.md | 12 | ||||
-rw-r--r-- | vars/README.md | 6 | ||||
-rw-r--r-- | vars/buildPackage.groovy | 267 | ||||
-rw-r--r-- | vars/cloneAndBuild.groovy | 87 | ||||
-rw-r--r-- | vars/getChangeSetPath.groovy | 26 | ||||
-rw-r--r-- | vars/getGitBranchName.groovy | 21 | ||||
-rw-r--r-- | vars/getGitRepoName.groovy | 20 | ||||
-rw-r--r-- | vars/getGitRepoURL.groovy | 20 | ||||
-rw-r--r-- | vars/getJenkinsfilePath.groovy | 24 | ||||
-rw-r--r-- | vars/isCustomBuild.groovy | 26 | ||||
-rw-r--r-- | vars/isPullRequest.groovy | 21 | ||||
-rw-r--r-- | vars/setDescription.groovy | 42 |
17 files changed, 4 insertions, 688 deletions
diff --git a/.github/workflows/check-scripts-executable.yml b/.github/workflows/check-scripts-executable.yml deleted file mode 100644 index 123e9895..00000000 --- a/.github/workflows/check-scripts-executable.yml +++ /dev/null @@ -1,32 +0,0 @@ -name: "Check for Jenkins build scripts has executable bit" - -on: - pull_request: - branches: - - current - - circinus - - sagitta - - equuleus - -permissions: - contents: read - -jobs: - check-scripts-executable: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - with: - repository: ${{ github.repository }} - - name: Checking scripts are executable - run: | - files=$(find packages/ -type f -name '*.py' -or -name '*.sh' -not -executable -print) - if [[ -n $files ]]; then - echo "Found files without executable bit:" - for file in $files; do - echo $file; - done; - exit 1; - fi - shell: bash diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3ff00df8..2f57a272 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -40,7 +40,7 @@ task first. Once there is an entry in Phabricator, you should reference its id in your commit message, as shown below: * `ddclient: T1030: auto create runtime directories` -* `Jenkins: add current Git commit ID to build description` +* `keepalived: T1234: do not autostart service, will be done by CLI` If there is no [Phabricator](https://vyos.dev) reference in the commits of your pull request, we have to ask you to amend the commit message. diff --git a/Jenkinsfile.docker b/Jenkinsfile.docker deleted file mode 100644 index 2cac4548..00000000 --- a/Jenkinsfile.docker +++ /dev/null @@ -1,84 +0,0 @@ -#!/usr/bin/env groovy -// Copyright (C) 2019-2021 VyOS maintainers and contributors -// -// This program is free software; you can redistribute it and/or modify -// in order to easy exprort images built to "external" world -// it under the terms of the GNU General Public License version 2 or later as -// published by the Free Software Foundation. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <http://www.gnu.org/licenses/>. -@NonCPS - -// Using a version specifier library, use 'current' branch. The underscore (_) -// is not a typo! You need this underscore if the line immediately after the -// @Library annotation is not an import statement! -@Library('vyos-build@current')_ -setDescription() - -pipeline { - agent none - environment { - GIT_BRANCH_NAME = getGitBranchName() - } - options { - disableConcurrentBuilds() - timeout(time: 240, unit: 'MINUTES') - timestamps() - buildDiscarder(logRotator(numToKeepStr: '20')) - } - stages { - stage('Build containers') { - when { - beforeOptions true - beforeAgent true - // Only run ISO image build process of explicit user request or - // once a night triggered by the timer. - anyOf { - changeset pattern: "**/docker/*" - changeset pattern: "**/Jenkinsfile.docker" - triggeredBy cause: "UserIdCause" - } - } - parallel { - stage('x86_64') { - agent { - label "ec2_amd64" - } - steps { - script { - DOCKER_IMAGE_AMD64 = "vyos/vyos-build:" + env.GIT_BRANCH_NAME - sh "docker build --no-cache --tag ${DOCKER_IMAGE_AMD64} docker" - if (! isCustomBuild()) { - withDockerRegistry([credentialsId: "DockerHub"]) { - sh "docker push ${DOCKER_IMAGE_AMD64}" - } - } - } - } - } - stage('arm64') { - agent { - label "ec2_arm64" - } - steps { - script { - DOCKER_IMAGE_ARM64 = "vyos/vyos-build:" + env.GIT_BRANCH_NAME + "-arm64" - sh "docker build --no-cache --tag ${DOCKER_IMAGE_ARM64} --build-arg ARCH=arm64v8/ docker" - if (! isCustomBuild()) { - withDockerRegistry([credentialsId: "DockerHub"]) { - sh "docker push ${DOCKER_IMAGE_ARM64}" - } - } - } - } - } - } - } - } -} @@ -40,7 +40,6 @@ There are several directories with their own purpose: * `scripts/` Scripts that are used for the build process * `tools/` Scripts that are used for maintainer's tasks automation and other purposes, but not during ISO build process - * `vars/` Jenkins Pipeline library for reusable functions # Building VyOS diff --git a/docker/Dockerfile b/docker/Dockerfile index 53f98512..a2e0a74d 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -204,7 +204,6 @@ RUN wget https://salsa.debian.org/klausenbusk-guest/debootstrap/commit/a9a603b17 sudo dpkg -i ../debootstrap*.deb # Packages needed for Linux Kernel -# gnupg2 is required by Jenkins for the TAR verification # cmake required by accel-ppp RUN apt-get update && apt-get install -y \ cmake \ diff --git a/scripts/package-build/linux-kernel/README.md b/scripts/package-build/linux-kernel/README.md index 56954e5a..927e880c 100644 --- a/scripts/package-build/linux-kernel/README.md +++ b/scripts/package-build/linux-kernel/README.md @@ -5,9 +5,9 @@ # About -VyOS runs on a custom Linux Kernel (which is 4.19) at the time of this writing. -This repository holds a Jenkins Pipeline which is used to build the Custom -Kernel (x86_64/amd64 at the moment) and all required out-of tree modules. +VyOS runs on a custom Linux Kernel (which is 6.6) at the time of this writing. +This repository holds build scripts that are used to build the Custom Kernel +(x86_64/amd64 at the moment) and all required out-of tree modules. VyOS does not utilize the build in Intel Kernel drivers for its NICs as those Kernels sometimes lack features e.g. configurable receive-side-scaling queues. @@ -33,9 +33,3 @@ VyOS utilizes several Out-of-Tree modules (e.g. WireGuard, Accel-PPP and Intel network interface card drivers). Module source code is retrieved from the upstream repository and - when needed - patched so it can be build using this pipeline. - -In the past VyOS maintainers had a fork of the Linux Kernel, WireGuard and -Accel-PPP. This is fine but increases maintenance effort. By utilizing vanilla -repositories upgrading to new versions is very easy - only the branch/commit/tag -used when cloning the repository via [Jenkinsfile](Jenkinsfile) needs to be -adjusted. diff --git a/vars/README.md b/vars/README.md deleted file mode 100644 index ca2f821f..00000000 --- a/vars/README.md +++ /dev/null @@ -1,6 +0,0 @@ -# Jenkins Build Library - -Instead of writing the same code over and over again, place the common -parts into a Jenkins Library which is then consumed by every individual -build Job. This not only makes it less complex, it also increases -maintainability by several magnitudes. diff --git a/vars/buildPackage.groovy b/vars/buildPackage.groovy deleted file mode 100644 index 531e51d9..00000000 --- a/vars/buildPackage.groovy +++ /dev/null @@ -1,267 +0,0 @@ -#!/usr/bin/env groovy -// Copyright (C) 2020-2021 VyOS maintainers and contributors -// -// This program is free software; you can redistribute it and/or modify -// in order to easy exprort images built to "external" world -// it under the terms of the GNU General Public License version 2 or later as -// published by the Free Software Foundation. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <http://www.gnu.org/licenses/>. - -def call(description=null, pkgList=null, buildCmd=null, buildArm=false, changesPattern="**", buildLabel="ec2_amd64") { - // - description: Arbitrary text to print on Jenkins Job Description - // instead of package name - // - pkgList: Multiple packages can be build at once in a single Pipeline run - // - buildCmd: replace default build command "dpkg-buildpackage -uc -us -tc -b" - // with this custom version - // - buildArm: package will also be build for the arm64 platform - // - changesPattern: package will only be build if a change file matching this - // pattern is found - // - buildLabel: used to describe where the job should run. amd64 inside the - // string will be replaced with arm64 when those builds are enabled. - // Example: ec2_amd64 -> ec2_arm64 or foo_amd64 -> foo_arm64 - - setDescription(description) - - pipeline { - agent none - options { - disableConcurrentBuilds() - timeout(time: 240, unit: 'MINUTES') - timestamps() - buildDiscarder(logRotator(numToKeepStr: '10')) - } - stages { - stage('Define Agent') { - agent { - label "${buildLabel}" - } - when { - anyOf { - changeset "${changesPattern}" - triggeredBy cause: "UserIdCause" - } - } - steps { - script { - // create container name on demand - def branchName = getGitBranchName() - // Adjust PR target branch name so we can re-map it to the proper Docker image. - if (isPullRequest()) - branchName = env.CHANGE_TARGET.toLowerCase() - if (branchName.equals('master')) - branchName = 'current' - - env.DOCKER_IMAGE = 'vyos/vyos-build:' + branchName - - // Get the current UID and GID from the jenkins agent to allow use of the same UID inside Docker - env.USR_ID = sh(returnStdout: true, script: 'id -u').toString().trim() - env.GRP_ID = sh(returnStdout: true, script: 'id -g').toString().trim() - env.DOCKER_ARGS = '--sysctl net.ipv6.conf.lo.disable_ipv6=0 -e GOSU_UID=' + env.USR_ID + ' -e GOSU_GID=' + env.GRP_ID - } - } - } - stage('Build Code') { - when { - anyOf { - changeset pattern: changesPattern, caseSensitive: true - triggeredBy cause: "UserIdCause" - } - } - parallel { - stage('amd64') { - agent { - docker { - label "${buildLabel}" - args "${env.DOCKER_ARGS}" - image "${env.DOCKER_IMAGE}" - alwaysPull true - reuseNode true - } - } - steps { - script { - cloneAndBuild(description, 'amd64', pkgList, buildCmd) - stash includes: '**/*.deb', name: 'binary-amd64', allowEmpty: true - try { - stash includes: '**/*.dsc', name: 'source-dsc' - stash includes: '**/*.tar.*z', name: 'source-tar' - } catch (e) { - print "Stashing failed, ignoring - no source packages" - currentBuild.result = 'SUCCESS' - } - } - } - post { - cleanup { - deleteDir() - } - } - } - stage('arm64') { - agent { - docker { - label "${buildLabel.replace('amd64', 'arm64')}" - args "${env.DOCKER_ARGS}" - image "${env.DOCKER_IMAGE}-arm64" - alwaysPull true - reuseNode true - } - } - when { - equals expected: true, actual: buildArm - } - steps { - script { - cloneAndBuild(description, 'arm64', pkgList, buildCmd) - stash includes: '**/*arm64.deb', name: 'binary-arm64', allowEmpty: true - } - } - post { - cleanup { - deleteDir() - } - } - } - } - } - stage("Finalize") { - when { - anyOf { - changeset pattern: changesPattern, caseSensitive: true - triggeredBy cause: "UserIdCause" - } - } - agent { - label "${buildLabel}" - } - steps { - script { - // Unpack files for amd64, sources and arm64 if packages got build - try { - unstash 'binary-amd64' - unstash 'binary-arm64' - } catch (e) { - print "Unstash failed, ignoring - could be because there exists no arm64 build" - currentBuild.result = 'SUCCESS' - } - try { - unstash 'source-dsc' - unstash 'source-tar' - } catch (e) { - print "Unstash failed, ignoring - no source packages" - currentBuild.result = 'SUCCESS' - } - if (isCustomBuild()) { - echo "Build not started from official Git repository! Artifacts are not uploaded to external repository" - return - } - - echo "Uploading Artifacts to external repository" - copyArtifacts fingerprintArtifacts: true, projectName: '${JOB_NAME}', selector: specific('${BUILD_NUMBER}') - - // build up some fancy groovy variables so we do not need to write/copy - // every option over and over again! - def RELEASE = getGitBranchName() - if (getGitBranchName() == "master") - RELEASE = 'current' - - def VYOS_REPO_PATH = '/home/sentrium/web/dev.packages.vyos.net/public_html/repositories/' + RELEASE - if (getGitBranchName() == "crux") - VYOS_REPO_PATH += '/vyos' - - def SSH_OPTS = '-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o LogLevel=ERROR' - def SSH_REMOTE = env.DEV_PACKAGES_VYOS_NET_HOST // defined as global variable - def SSH_DIR = '~/VyOS/' + RELEASE - - sshagent(['SSH-dev.packages.vyos.net']) { - - sh(script: "ssh ${SSH_OPTS} ${SSH_REMOTE} -t \"bash --login -c 'mkdir -p ${SSH_DIR}'\"") - - // Removing of source and binary packages should be BEFORE adding new ones. Else "reprepro [remove/removesrc]" command may remove [source/binary] package correspondingly (behavior depends on package links). - // To omit this feature(bug?) do not merge removing-adding sequence by sources and binaries as it used to be - files = findFiles(glob: '**/*.dsc') - if (files) { - echo "Remove deprecated source package(s) from the repository..." - files.each { FILE -> - def PACKAGE = sh(returnStdout: true, script: "cat ${FILE} | grep Source ").trim().tokenize(' ').last() - sh(script: "ssh ${SSH_OPTS} ${SSH_REMOTE} -t \"uncron-add 'reprepro -v -b ${VYOS_REPO_PATH} removesrc ${RELEASE} ${PACKAGE}'\"") - } - } - files = findFiles(glob: '**/*-build-deps_*.deb') - if (files) { - echo "Remove Debian build dependency files from the workspace..." - files.each { FILE -> - sh(script: "rm -f ${FILE}") - } - } - - files = findFiles(glob: '**/*.deb') - if (files) { - echo "Remove deprecated binary package(s) from the repository..." - files.each { FILE -> - // NOTE: Groovy is a pain in the ass and " quotes differ from ', so all shell code must use " in the beginning - def PACKAGE = sh(returnStdout: true, script: "dpkg-deb -f ${FILE} Package").trim() - def PACKAGE_ARCH = sh(returnStdout: true, script: "dpkg-deb -f ${FILE} Architecture").trim() - def ARCH = '' - if (PACKAGE_ARCH != 'all') - ARCH = '-A ' + PACKAGE_ARCH - sh(script: "ssh ${SSH_OPTS} ${SSH_REMOTE} -t \"uncron-add 'reprepro -v -b ${VYOS_REPO_PATH} ${ARCH} remove ${RELEASE} ${PACKAGE}'\"") - } - } - - files = findFiles(glob: '**/*.tar.*z') - if (files) { - echo "Uploading tarball package(s) to the repository..." - files.each { FILE -> - sh(script: "scp ${SSH_OPTS} ${FILE} ${SSH_REMOTE}:${SSH_DIR}") - } - } - - files = findFiles(glob: '**/*.dsc') - if (files) { - echo "Uploading *.dsc package(s) to the repository..." - files.each { FILE -> - def PACKAGE = sh(returnStdout: true, script: "cat ${FILE} | grep Source ").trim().tokenize(' ').last() - sh(script: "scp ${SSH_OPTS} ${FILE} ${SSH_REMOTE}:${SSH_DIR}") - def FILENAME = FILE.toString().tokenize('/').last() - sh(script: "ssh ${SSH_OPTS} ${SSH_REMOTE} -t \"uncron-add 'reprepro -v -b ${VYOS_REPO_PATH} includedsc ${RELEASE} ${SSH_DIR}/${FILENAME}'\"") - } - } - - files = findFiles(glob: '**/*.deb') - if (files) { - echo "Uploading binary package(s) to the repository ..." - files.each { FILE -> - // NOTE: Groovy is a pain in the ass and " quotes differ from ', so all shell code must use " in the beginning - def PACKAGE = sh(returnStdout: true, script: "dpkg-deb -f ${FILE} Package").trim() - def PACKAGE_ARCH = sh(returnStdout: true, script: "dpkg-deb -f ${FILE} Architecture").trim() - def ARCH = '' - if (PACKAGE_ARCH != 'all') - ARCH = '-A ' + PACKAGE_ARCH - sh(script: "scp ${SSH_OPTS} ${FILE} ${SSH_REMOTE}:${SSH_DIR}") - // Packages like FRR produce their binary in a nested path e.g. packages/frr/frr-rpki-rtrlib-dbgsym_7.5_arm64.deb, - // thus we will only extract the filename portion from FILE as the binary is scp'ed to SSH_DIR without any subpath. - def FILENAME = FILE.toString().tokenize('/').last() - sh(script: "ssh ${SSH_OPTS} ${SSH_REMOTE} -t \"uncron-add 'reprepro -v -b ${VYOS_REPO_PATH} ${ARCH} includedeb ${RELEASE} ${SSH_DIR}/${FILENAME}'\"") - } - sh(script: "ssh ${SSH_OPTS} ${SSH_REMOTE} -t \"uncron-add 'reprepro -v -b ${VYOS_REPO_PATH} deleteunreferenced'\"") - } - } - } - } - post { - cleanup { - deleteDir() - } - } - } - } - } -} diff --git a/vars/cloneAndBuild.groovy b/vars/cloneAndBuild.groovy deleted file mode 100644 index f4114a68..00000000 --- a/vars/cloneAndBuild.groovy +++ /dev/null @@ -1,87 +0,0 @@ -#!/usr/bin/env groovy -// Copyright (C) 2021 VyOS maintainers and contributors -// -// This program is free software; you can redistribute it and/or modify -// in order to easy exprort images built to "external" world -// it under the terms of the GNU General Public License version 2 or later as -// published by the Free Software Foundation. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <http://www.gnu.org/licenses/>. - -def call(description, architecture, pkgList, buildCmd) { - // package build must be done in "any" subdir. Without it the Debian build system - // is unable to generate the *.deb files in the sources parent directory, which - // will cause a "Permission denied" error. - dir ("build-${architecture}") { - // cleanup - deleteDir() - - // checkout git repository which hold 'Jenkinsfile' - checkout scm - - // Display Git commit Id used with the Jenkinsfile on the Job "Build History" pane - def commitId = sh(returnStdout: true, script: 'git rev-parse --short=11 HEAD').trim() - currentBuild.description = sprintf('Git SHA1: %s', commitId[-11..-1]) - - if (pkgList) { - // Fetch individual package source code, but only if a URL is defined, this will - // let us reuse this script for packages like vyos-1x which ship a Jenkinfile in - // their repositories root folder. - pkgList.each { pkg -> - if (pkg.scmUrl && pkg.scmCommit) { - dir(getJenkinsfilePath() + pkg.name) { - checkout([$class: 'GitSCM', - doGenerateSubmoduleConfigurations: false, - extensions: [[$class: 'CleanCheckout']], - branches: [[name: pkg.scmCommit]], - userRemoteConfigs: [[url: pkg.scmUrl]]]) - } - } - } - } - - // compile the source(s) ... - if (pkgList) { - pkgList.each { pkg -> - dir(getJenkinsfilePath() + pkg.name) { - sh pkg.buildCmd - } - } - } else if (buildCmd) { - sh buildCmd - } else { - // build dependency package and install it - sh """ - if [ -f debian/control ]; then - sudo mk-build-deps --install --tool "apt-get --yes --no-install-recommends" - sudo dpkg -i *build-deps*.deb - fi - """ - try { - sh 'dpkg-buildpackage -uc -us -tc -F' - } catch (e) { - print "Source packages build failed, ignoring - building binaries only" - currentBuild.result = 'SUCCESS' - sh 'dpkg-buildpackage -uc -us -tc -b' - } - } - } - if (architecture == 'amd64') { - archiveArtifacts artifacts: "**/*.deb", fingerprint: true - try { - archiveArtifacts artifacts: "**/*.dsc", fingerprint: true - archiveArtifacts artifacts: "**/*.tar.*z", fingerprint: true - } catch (e) { - print "Archiving failed, ignoring - no source packages" - currentBuild.result = 'SUCCESS' - } - } else { - archiveArtifacts artifacts: "**/*_${architecture}.deb", fingerprint: true - } -} diff --git a/vars/getChangeSetPath.groovy b/vars/getChangeSetPath.groovy deleted file mode 100644 index 195f999a..00000000 --- a/vars/getChangeSetPath.groovy +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env groovy -// Copyright (C) 2020 VyOS maintainers and contributors -// -// This program is free software; you can redistribute it and/or modify -// in order to easy exprort images built to "external" world -// it under the terms of the GNU General Public License version 2 or later as -// published by the Free Software Foundation. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <http://www.gnu.org/licenses/>. - -def call() { - tmp = getJenkinsfilePath() - if (tmp) - tmp = "**/" + tmp + "*" - else - tmp = "**/*" - echo tmp - return tmp -} - diff --git a/vars/getGitBranchName.groovy b/vars/getGitBranchName.groovy deleted file mode 100644 index 133734da..00000000 --- a/vars/getGitBranchName.groovy +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env groovy -// Copyright (C) 2020 VyOS maintainers and contributors -// -// This program is free software; you can redistribute it and/or modify -// in order to easy exprort images built to "external" world -// it under the terms of the GNU General Public License version 2 or later as -// published by the Free Software Foundation. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <http://www.gnu.org/licenses/>. - -def call() { - def branch = scm.branches[0].name - return branch.split('/')[-1] -} - diff --git a/vars/getGitRepoName.groovy b/vars/getGitRepoName.groovy deleted file mode 100644 index 058e4ff5..00000000 --- a/vars/getGitRepoName.groovy +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env groovy -// Copyright (C) 2020 VyOS maintainers and contributors -// -// This program is free software; you can redistribute it and/or modify -// in order to easy exprort images built to "external" world -// it under the terms of the GNU General Public License version 2 or later as -// published by the Free Software Foundation. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <http://www.gnu.org/licenses/>. - -def call() { - return getGitRepoURL().split('/').last() -} - diff --git a/vars/getGitRepoURL.groovy b/vars/getGitRepoURL.groovy deleted file mode 100644 index d36b48e6..00000000 --- a/vars/getGitRepoURL.groovy +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env groovy -// Copyright (C) 2020 VyOS maintainers and contributors -// -// This program is free software; you can redistribute it and/or modify -// in order to easy exprort images built to "external" world -// it under the terms of the GNU General Public License version 2 or later as -// published by the Free Software Foundation. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <http://www.gnu.org/licenses/>. - -def call() { - return scm.userRemoteConfigs[0].url -} - diff --git a/vars/getJenkinsfilePath.groovy b/vars/getJenkinsfilePath.groovy deleted file mode 100644 index a6690f5e..00000000 --- a/vars/getJenkinsfilePath.groovy +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env groovy -// Copyright (C) 2020 VyOS maintainers and contributors -// -// This program is free software; you can redistribute it and/or modify -// in order to easy exprort images built to "external" world -// it under the terms of the GNU General Public License version 2 or later as -// published by the Free Software Foundation. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <http://www.gnu.org/licenses/>. - -def call() { - tmp = currentBuild.rawBuild.parent.definition.scriptPath.replace('Jenkinsfile', '') - if (tmp == null) { - tmp = '' - } - return tmp -} - diff --git a/vars/isCustomBuild.groovy b/vars/isCustomBuild.groovy deleted file mode 100644 index c60ed883..00000000 --- a/vars/isCustomBuild.groovy +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env groovy -// Copyright (C) 2020 VyOS maintainers and contributors -// -// This program is free software; you can redistribute it and/or modify -// in order to easy exprort images built to "external" world -// it under the terms of the GNU General Public License version 2 or later as -// published by the Free Software Foundation. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <http://www.gnu.org/licenses/>. - -def call() { - // Returns true if this is a custom build launched on any project fork. - // Returns false if this is build from git@github.com:vyos/<reponame>. - // <reponame> can be e.g. vyos-1x.git - // GitHub organisation base URL - def gitURI = 'git@github.com:vyos/' + getGitRepoName() - def httpURI = 'https://github.com/vyos/' + getGitRepoName() - - return !((getGitRepoURL() == gitURI) || (getGitRepoURL() == httpURI)) || isPullRequest() -} diff --git a/vars/isPullRequest.groovy b/vars/isPullRequest.groovy deleted file mode 100644 index 813341bc..00000000 --- a/vars/isPullRequest.groovy +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (C) 2020 VyOS maintainers and contributors -// -// This program is free software; you can redistribute it and/or modify -// in order to easy exprort images built to "external" world -// it under the terms of the GNU General Public License version 2 or later as -// published by the Free Software Foundation. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <http://www.gnu.org/licenses/>. - -def call() { - if (env.CHANGE_ID) { - return true - } - return false -} diff --git a/vars/setDescription.groovy b/vars/setDescription.groovy deleted file mode 100644 index 683dc20c..00000000 --- a/vars/setDescription.groovy +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env groovy -// Copyright (C) 2020 VyOS maintainers and contributors -// -// This program is free software; you can redistribute it and/or modify -// in order to easy exprort images built to "external" world -// it under the terms of the GNU General Public License version 2 or later as -// published by the Free Software Foundation. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <http://www.gnu.org/licenses/>. - -def call(text = null) { - def item = Jenkins.instance.getItemByFullName(env.JOB_NAME) - - // build up the main description text - def description = "" - if (text) { - description += "<h2>VyOS package build: " + text + "</h2>" - } else { - description += "<h2>VyOS package build: " + getGitRepoName().replace('.git', '') + "</h2>" - } - - if (isCustomBuild()) { - description += "<p style='border: 3px dashed red; width: 50%;'>" - description += "<b>Build not started from official Git repository!</b><br>" - description += "<br>" - description += "Repository: <font face = 'courier'>" + getGitRepoURL() + "</font><br>" - description += "Branch: <font face = 'courier'>" + getGitBranchName() + "</font><br>" - description += "</p>" - } else { - description += "Sources taken from Git branch: <font face = 'courier'>" + getGitBranchName() + "</font><br>" - } - - item.setDescription(description) - item.save() -} - |