| // input parameters: |
| // boolean: BUILD_FROM_SOURCE |
| // boolean: REPO_DISTRO |
| // boolean: COMMIT_ID |
| // boolean: UPSTREAM_SUFFIX |
| // string: NODE |
| // string: RSYNC_DESTINATION |
| // string: REPO_BASE_URL |
| // string: REPO_KEY_NAME |
| // string: RELEASE |
| |
| node("${params.NODE}") { |
| |
| stage("Setup") { |
| tag_or_branch = params.COMMIT_ID.replaceAll(/\./,"") |
| container_name_prefix = "osm-${tag_or_branch}" |
| container_name = "${container_name_prefix}-${BUILD_NUMBER}" |
| } |
| |
| stage("Checkout") { |
| checkout scm |
| } |
| |
| // Copy the artifacts from the upstream jobs |
| stage("Copy Artifacts") { |
| // cleanup any previous repo |
| sh 'rm -rf repo' |
| |
| dir('repo') { |
| // grab all stable upstream builds based on the |
| // given target UPSTREAM_SUFFIX |
| |
| def list = ["SO", "UI", "RO", "openvim", "osmclient"] |
| for (component in list) { |
| step ([$class: 'CopyArtifact', |
| projectName: "${component}_${params.UPSTREAM_SUFFIX}"]) |
| sh "dpkg-sig --sign builder -k dpkg1 pool/${component}/*" |
| // cleanup any prevously defined dists |
| sh "rm -rf dists" |
| } |
| |
| // now create the distro |
| for (component in list) { |
| sh "mkdir -p dists/${params.REPO_DISTRO}/${component}/binary-amd64/" |
| sh "apt-ftparchive packages pool/${component} > dists/${params.REPO_DISTRO}/${component}/binary-amd64/Packages" |
| sh "gzip -9fk dists/${params.REPO_DISTRO}/${component}/binary-amd64/Packages" |
| } |
| |
| // create and sign the release file |
| sh "apt-ftparchive release dists/${params.REPO_DISTRO} > dists/${params.REPO_DISTRO}/Release" |
| sh "gpg --yes -abs -u dpkg1 -o dists/${params.REPO_DISTRO}/Release.gpg dists/${params.REPO_DISTRO}/Release" |
| sh "rsync -avz . ${params.RSYNC_DESTINATION}/${params.RELEASE}" |
| } |
| } |
| |
| stage("Cleanup") { |
| // check for previous containers and clean them up |
| sh "jenkins/system/delete_old_containers.sh ${container_name_prefix}" |
| } |
| |
| stage("Build") { |
| from_source = '' |
| if ( params.BUILD_FROM_SOURCE ) |
| { |
| from_source = '--source' |
| } |
| |
| sh """ |
| export OSM_USE_LOCAL_DEVOPS=true |
| jenkins/host/start_build system --build-container ${container_name} \ |
| -b ${params.COMMIT_ID} \ |
| -r ${params.REPO_DISTRO} \ |
| -u ${params.REPO_BASE_URL} \ |
| -k ${params.REPO_KEY_NAME} \ |
| -R ${params.RELEASE} \ |
| ${from_source} |
| """ |
| } |
| |
| stage("Archive Artifacts") { |
| sh "echo ${container_name} > build_version.txt" |
| sh "tar -zcvf repo.tar.gz repo" |
| archiveArtifacts artifacts: "build_version.txt, repo.tar.gz", fingerprint: true |
| } |
| } |