mirror of
https://github.com/vyos/vyos-build.git
synced 2025-10-01 20:28:40 +02:00
T6674: remove all references to Jenkins
This commit is contained in:
parent
3b95165b03
commit
38395e86d5
32
.github/workflows/check-scripts-executable.yml
vendored
32
.github/workflows/check-scripts-executable.yml
vendored
@ -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
|
||||
@ -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.
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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 \
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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.
|
||||
@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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]
|
||||
}
|
||||
|
||||
@ -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()
|
||||
}
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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()
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
@ -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()
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user