T6674: remove all references to Jenkins

This commit is contained in:
Christian Breunig 2024-12-23 09:47:19 +01:00
parent 3b95165b03
commit 38395e86d5
17 changed files with 4 additions and 688 deletions

View File

@ -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

View File

@ -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: in your commit message, as shown below:
* `ddclient: T1030: auto create runtime directories` * `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 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. commits of your pull request, we have to ask you to amend the commit message.

View File

@ -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}"
}
}
}
}
}
}
}
}
}

View File

@ -40,7 +40,6 @@ There are several directories with their own purpose:
* `scripts/` Scripts that are used for the build process * `scripts/` Scripts that are used for the build process
* `tools/` Scripts that are used for maintainer's tasks automation and other * `tools/` Scripts that are used for maintainer's tasks automation and other
purposes, but not during ISO build process purposes, but not during ISO build process
* `vars/` Jenkins Pipeline library for reusable functions
# Building VyOS # Building VyOS

View File

@ -204,7 +204,6 @@ RUN wget https://salsa.debian.org/klausenbusk-guest/debootstrap/commit/a9a603b17
sudo dpkg -i ../debootstrap*.deb sudo dpkg -i ../debootstrap*.deb
# Packages needed for Linux Kernel # Packages needed for Linux Kernel
# gnupg2 is required by Jenkins for the TAR verification
# cmake required by accel-ppp # cmake required by accel-ppp
RUN apt-get update && apt-get install -y \ RUN apt-get update && apt-get install -y \
cmake \ cmake \

View File

@ -5,9 +5,9 @@
# About # About
VyOS runs on a custom Linux Kernel (which is 4.19) at the time of this writing. VyOS runs on a custom Linux Kernel (which is 6.6) at the time of this writing.
This repository holds a Jenkins Pipeline which is used to build the Custom This repository holds build scripts that are used to build the Custom Kernel
Kernel (x86_64/amd64 at the moment) and all required out-of tree modules. (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 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. 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 network interface card drivers). Module source code is retrieved from the
upstream repository and - when needed - patched so it can be build using this upstream repository and - when needed - patched so it can be build using this
pipeline. 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.

View File

@ -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.

View File

@ -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()
}
}
}
}
}
}

View File

@ -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
}
}

View File

@ -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
}

View File

@ -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]
}

View File

@ -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()
}

View File

@ -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
}

View File

@ -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
}

View File

@ -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()
}

View File

@ -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
}

View File

@ -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()
}