summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/PULL_REQUEST_TEMPLATE.md21
-rw-r--r--.github/workflows/check-scripts-executable.yml32
-rw-r--r--.github/workflows/cleanup-mirror-pr-branch.yml15
-rw-r--r--.github/workflows/trigger-pr-mirror-repo-sync.yml12
-rw-r--r--.github/workflows/trigger_rebuild_packages.yml2
-rw-r--r--CODEOWNERS3
-rw-r--r--CONTRIBUTING.md2
-rw-r--r--Jenkinsfile.docker84
-rw-r--r--README.md1
-rw-r--r--docker/Dockerfile1
-rw-r--r--scripts/package-build/blackbox_exporter/.gitignore1
l---------scripts/package-build/blackbox_exporter/build.py1
-rwxr-xr-xscripts/package-build/blackbox_exporter/build.sh66
-rw-r--r--scripts/package-build/blackbox_exporter/package.toml5
-rw-r--r--scripts/package-build/linux-kernel/README.md12
-rw-r--r--scripts/package-build/linux-kernel/arch/arm64/configs/vyos_defconfig2
-rw-r--r--scripts/package-build/linux-kernel/arch/x86/configs/vyos_defconfig2
-rw-r--r--vars/README.md6
-rw-r--r--vars/buildPackage.groovy267
-rw-r--r--vars/cloneAndBuild.groovy87
-rw-r--r--vars/getChangeSetPath.groovy26
-rw-r--r--vars/getGitBranchName.groovy21
-rw-r--r--vars/getGitRepoName.groovy20
-rw-r--r--vars/getGitRepoURL.groovy20
-rw-r--r--vars/getJenkinsfilePath.groovy24
-rw-r--r--vars/isCustomBuild.groovy26
-rw-r--r--vars/isPullRequest.groovy21
-rw-r--r--vars/setDescription.groovy42
28 files changed, 114 insertions, 708 deletions
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index 8c71c80d..e686e187 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -1,7 +1,7 @@
<!-- All PR should follow this template to allow a clean and transparent review -->
<!-- Text placed between these delimiters is considered a comment and is not rendered -->
-## Change Summary
+## Change summary
<!--- Provide a general summary of your changes in the Title above -->
## Types of changes
@@ -21,27 +21,14 @@ the box, please use [x]
<!-- optional: Link to related other tasks on Phabricator. -->
<!-- * https://vyos.dev/Txxxx -->
-## Component(s) name
-<!-- A rather incomplete list of components: ethernet, wireguard, bgp, mpls, ldp, l2tp, dhcp ... -->
-
-## Proposed changes
-<!--- Describe your changes in detail -->
-
-## How to test
-<!---
-Please describe in detail how you tested your changes. Include details of your testing
-environment, and the tests you ran. When pasting configs, logs, shell output, backtraces,
-and other large chunks of text, surround this text with triple backtics
-```
-like this
-```
--->
+## Related PR(s)
+<!-- Link here any PRs in other repositories that are required by this PR -->
## Checklist:
<!--- Go over all the following points, and put an `x` in all the boxes that apply. -->
<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
<!--- The entire development process is outlined here: https://docs.vyos.io/en/latest/contributing/development.html -->
-- [ ] I have read the [**CONTRIBUTING**](https://github.com/vyos/vyos-build/blob/current/CONTRIBUTING.md) document
+- [ ] I have read the [**CONTRIBUTING**](https://github.com/vyos/vyos-1x/blob/current/CONTRIBUTING.md) document
- [ ] I have linked this PR to one or more Phabricator Task(s)
- [ ] My commit headlines contain a valid Task id
- [ ] My change requires a change to the documentation
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/.github/workflows/cleanup-mirror-pr-branch.yml b/.github/workflows/cleanup-mirror-pr-branch.yml
new file mode 100644
index 00000000..bbe6aa2f
--- /dev/null
+++ b/.github/workflows/cleanup-mirror-pr-branch.yml
@@ -0,0 +1,15 @@
+name: Cleanup pr mirror branch
+
+on:
+ pull_request:
+ types: [closed]
+ branches:
+ - current
+
+permissions:
+ contents: write
+
+jobs:
+ call-delete-branch:
+ uses: vyos/.github/.github/workflows/cleanup-mirror-pr-branch.yml@current
+ secrets: inherit
diff --git a/.github/workflows/trigger-pr-mirror-repo-sync.yml b/.github/workflows/trigger-pr-mirror-repo-sync.yml
new file mode 100644
index 00000000..d5e8ce3b
--- /dev/null
+++ b/.github/workflows/trigger-pr-mirror-repo-sync.yml
@@ -0,0 +1,12 @@
+name: Trigger Mirror PR and Repo Sync
+on:
+ pull_request_target:
+ types:
+ - closed
+ branches:
+ - current
+
+jobs:
+ call-trigger-mirror-pr-repo-sync:
+ uses: vyos/.github/.github/workflows/trigger-pr-mirror-repo-sync.yml@current
+ secrets: inherit
diff --git a/.github/workflows/trigger_rebuild_packages.yml b/.github/workflows/trigger_rebuild_packages.yml
index 33679a76..ffff020f 100644
--- a/.github/workflows/trigger_rebuild_packages.yml
+++ b/.github/workflows/trigger_rebuild_packages.yml
@@ -29,6 +29,8 @@ jobs:
- 'scripts/package-build/amazon-ssm-agent/**'
aws-gwlbtun:
- 'scripts/package-build/aws-gwlbtun/**'
+ blackbox_exporter:
+ - 'scripts/package-build/blackbox_exporter/**'
ddclient:
- 'scripts/package-build/ddclient/**'
dropbear:
diff --git a/CODEOWNERS b/CODEOWNERS
index cf2ba0ac..4891a032 100644
--- a/CODEOWNERS
+++ b/CODEOWNERS
@@ -1 +1,2 @@
-* @vyos/reviewers
+# Users from reviewers github team
+* @dmbaturin @sarthurdev @jestabro @sever-sever @c-po @fett0 @nicolas-fort @zdc
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}"
- }
- }
- }
- }
- }
- }
- }
- }
-}
diff --git a/README.md b/README.md
index 782de7e9..0a1fd85f 100644
--- a/README.md
+++ b/README.md
@@ -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/blackbox_exporter/.gitignore b/scripts/package-build/blackbox_exporter/.gitignore
new file mode 100644
index 00000000..435e791f
--- /dev/null
+++ b/scripts/package-build/blackbox_exporter/.gitignore
@@ -0,0 +1 @@
+/blackbox_exporter/
diff --git a/scripts/package-build/blackbox_exporter/build.py b/scripts/package-build/blackbox_exporter/build.py
new file mode 120000
index 00000000..3c76af73
--- /dev/null
+++ b/scripts/package-build/blackbox_exporter/build.py
@@ -0,0 +1 @@
+../build.py \ No newline at end of file
diff --git a/scripts/package-build/blackbox_exporter/build.sh b/scripts/package-build/blackbox_exporter/build.sh
new file mode 100755
index 00000000..39a08230
--- /dev/null
+++ b/scripts/package-build/blackbox_exporter/build.sh
@@ -0,0 +1,66 @@
+#!/bin/sh
+CWD=$(pwd)
+set -e
+
+BUILD_ARCH=$(dpkg-architecture -qDEB_TARGET_ARCH)
+
+SRC="blackbox_exporter"
+if [ ! -d ${SRC} ]; then
+ echo "Source directory does not exist, please 'git clone'"
+ exit 1
+fi
+
+cd $SRC
+
+mkdir -p debian
+
+echo "I: Create $SRC/debian/control"
+cat <<EOF > debian/control
+Source: blackbox-exporter
+Section: net
+Priority: optional
+Maintainer: VyOS Package Maintainers <maintainers@vyos.net>
+Build-Depends: debhelper-compat (= 13)
+Standards-Version: 4.5.1
+Homepage: https://github.com/prometheus/blackbox_exporter
+
+Package: blackbox-exporter
+Architecture: ${BUILD_ARCH}
+Depends: \${shlibs:Depends}, \${misc:Depends}
+Description: The blackbox exporter allows blackbox probing of endpoints over HTTP, HTTPS, DNS, TCP, ICMP and gRPC.
+EOF
+
+echo "I: Create $SRC/debian/changelog"
+cat <<EOF > debian/changelog
+blackbox-exporter (0.25.0) UNRELEASED; urgency=medium
+
+ * Upstream package
+
+ -- VyOS Maintainers <maintainers@vyos.io> Thu, 26 Sep 2024 12:35:47 +0000
+EOF
+
+echo "I: Create $SRC/debian/rules"
+cat <<EOF > debian/rules
+#!/usr/bin/make -f
+
+clean:
+ @# Do nothing
+
+build:
+ @# Do nothing
+
+binary:
+ mkdir -p debian/blackbox-exporter
+ mkdir -p debian/blackbox-exporter/usr/sbin
+ mkdir -p debian/blackbox-exporter/run/blackbox_exporter
+ cp blackbox_exporter debian/blackbox-exporter/usr/sbin/blackbox_exporter
+ dh_gencontrol
+ dh_builddeb
+EOF
+chmod +x debian/rules
+
+echo "I: Build blackbox_exporter"
+go build
+
+echo "I: Build Debian Package"
+dpkg-buildpackage -uc -us -tc -b -d
diff --git a/scripts/package-build/blackbox_exporter/package.toml b/scripts/package-build/blackbox_exporter/package.toml
new file mode 100644
index 00000000..3cdc21b8
--- /dev/null
+++ b/scripts/package-build/blackbox_exporter/package.toml
@@ -0,0 +1,5 @@
+[[packages]]
+name = "blackbox_exporter"
+commit_id = "v0.25.0"
+scm_url = "https://github.com/prometheus/blackbox_exporter"
+build_cmd = "cd ..; y | ./build.sh"
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/scripts/package-build/linux-kernel/arch/arm64/configs/vyos_defconfig b/scripts/package-build/linux-kernel/arch/arm64/configs/vyos_defconfig
index 7b49f05f..91f26660 100644
--- a/scripts/package-build/linux-kernel/arch/arm64/configs/vyos_defconfig
+++ b/scripts/package-build/linux-kernel/arch/arm64/configs/vyos_defconfig
@@ -6194,7 +6194,7 @@ CONFIG_VFAT_FS=m
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
CONFIG_FAT_DEFAULT_UTF8=y
-# CONFIG_EXFAT_FS is not set
+CONFIG_EXFAT_FS=m
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS3_FS is not set
# end of DOS/FAT/EXFAT/NT Filesystems
diff --git a/scripts/package-build/linux-kernel/arch/x86/configs/vyos_defconfig b/scripts/package-build/linux-kernel/arch/x86/configs/vyos_defconfig
index 4c1a4adc..0230e949 100644
--- a/scripts/package-build/linux-kernel/arch/x86/configs/vyos_defconfig
+++ b/scripts/package-build/linux-kernel/arch/x86/configs/vyos_defconfig
@@ -5452,7 +5452,7 @@ CONFIG_VFAT_FS=m
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
CONFIG_FAT_DEFAULT_UTF8=y
-# CONFIG_EXFAT_FS is not set
+CONFIG_EXFAT_FS=m
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS3_FS is not set
# end of DOS/FAT/EXFAT/NT Filesystems
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()
-}
-