#!/usr/bin/env groovy /* * job name: mock-pipe-repos */ def CopyRPMS(project) { copyArtifacts([ filter: 'rpms/*/*.rpm', flatten: false, projectName: project, selector: lastSuccessful(), target: "." ]) } def CreateNoarch() { sh ''' for dir in rpms/*; do noarch="${dir%-*}-noarch" echo "# move noarch: $dir -> $noarch" for file in $dir/*.noarch.rpm; do test -f "$file" || continue dest="${noarch}${file#$dir}" if test -f "$dest"; then rm -v -f "$file" else mkdir -p "$noarch" mv -v "$file" "$dest" fi done createrepo $dir done ''' } def CreateRepos() { sh ''' for dir in rpms/*; do echo "# create repo $(basename $dir)" createrepo $dir done ''' } pipeline { agent { node 'dist-rhel-7-x86_64' } options { buildDiscarder(logRotator(numToKeepStr: '3')) disableConcurrentBuilds() } triggers { upstream(upstreamProjects: 'mock-pipe-libdvdcss,mock-pipe-kraxel.org', threshold: hudson.model.Result.SUCCESS) } stages { stage ('cleanup') { steps { dir('rpms') { deleteDir() } } } stage ('copy rpms') { steps { CopyRPMS('mock-pipe-libdvdcss') CopyRPMS('mock-pipe-kraxel.org') } } stage ('create repos') { steps { CreateNoarch() CreateRepos() archiveArtifacts 'rpms/*/*.rpm,rpms/*/repodata/*' } } } }