blob: 6f14866bf4577156298f85625bfa8277cd8a3944 [file] [log] [blame]
def common = new com.mirantis.mk.Common()
def git = new com.mirantis.mk.Git()
stage('Mirror') {
timeout(time: 12, unit: 'HOURS') {
node() {
try {
def sourceCreds = env.SOURCE_CREDENTIALS
if (sourceCreds && common.getCredentialsById(sourceCreds, 'password')) {
withCredentials([
[$class : 'UsernamePasswordMultiBinding',
credentialsId : sourceCreds,
passwordVariable: 'GIT_PASS',
usernameVariable: 'GIT_USER']
]) {
sh """
set +x
git config --global credential.${SOURCE_URL}.username \${GIT_USER}
echo "echo \${GIT_PASS}" > askpass.sh && chmod +x askpass.sh
"""
env.GIT_ASKPASS = "${env.WORKSPACE}/askpass.sh"
}
}
if (BRANCHES == '*' || BRANCHES.contains('*')) {
branches = git.getBranchesForGitRepo(SOURCE_URL, BRANCHES)
} else {
branches = BRANCHES.tokenize(',')
}
common.infoMsg('branches to fetch:' + branches.toString())
def pollBranches = []
for (i = 0; i < branches.size(); i++) {
pollBranches.add([name: branches[i]])
}
dir('source') {
checkout changelog: true, poll: true,
scm: [$class : 'GitSCM', branches: pollBranches, doGenerateSubmoduleConfigurations: false,
extensions: [[$class: 'CleanCheckout']], submoduleCfg: [],
userRemoteConfigs: [[credentialsId: sourceCreds, url: SOURCE_URL]]]
git.mirrorGit(SOURCE_URL, TARGET_URL, CREDENTIALS_ID, branches, true)
}
} catch (Throwable e) {
// If there was an error or exception thrown, the build failed
currentBuild.result = 'FAILURE'
currentBuild.description = currentBuild.description ? e.message + '' + currentBuild.description : e.message
throw e
} finally {
sh "git config --global --unset credential.${SOURCE_URL}.username || true"
deleteDir()
}
}
}
}