diff options
author | Christian Poessinger <christian@poessinger.com> | 2021-02-06 19:42:36 +0100 |
---|---|---|
committer | Christian Poessinger <christian@poessinger.com> | 2021-02-07 13:01:03 +0100 |
commit | 095f1e02cc7e9f07c84a54858729c18be11bb513 (patch) | |
tree | 03c386cf57ace07b69a90e114954250f9f7b63e0 /vars/cloneAndBuild.groovy | |
parent | c4e71fd8f71d10408a8bd2697a21279f1ce6051d (diff) | |
download | vyos-build-095f1e02cc7e9f07c84a54858729c18be11bb513.tar.gz vyos-build-095f1e02cc7e9f07c84a54858729c18be11bb513.zip |
Jenkins: add support for arm64 package builds
Diffstat (limited to 'vars/cloneAndBuild.groovy')
-rw-r--r-- | vars/cloneAndBuild.groovy | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/vars/cloneAndBuild.groovy b/vars/cloneAndBuild.groovy new file mode 100644 index 00000000..4c3c937a --- /dev/null +++ b/vars/cloneAndBuild.groovy @@ -0,0 +1,62 @@ +#!/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') {
+ // 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 ->
+ dir(env.BASE_DIR + 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(env.BASE_DIR + pkg.name) {
+ sh pkg.buildCmd
+ }
+ }
+ } else if (buildCmd) {
+ sh buildCmd
+ } else {
+ sh "dpkg-buildpackage -uc -us -tc -b"
+ }
+ }
+ if (architecture == 'amd64') {
+ archiveArtifacts artifacts: "**/*.deb", fingerprint: true
+ } else {
+ archiveArtifacts artifacts: "**/*_${architecture}.deb", fingerprint: true
+ }
+}
|