如何在Jenkins管道脚本中将代码推送回git?

时间:2017-08-26 00:28:11

标签: jenkins jenkins-pipeline

如何从git中查看代码

stage('Checkout code') {
   checkout scm
}

并在后续阶段修改存储库?比如git标签或版本提交。

2 个答案:

答案 0 :(得分:2)

我能想到的最好的。

stage('Stage Checkout') {
        checkout([
            $class                           : 'GitSCM',
            branches                         : scm.branches,
            doGenerateSubmoduleConfigurations: scm.doGenerateSubmoduleConfigurations,
            extensions                       : [] + [
                $class     : 'LocalBranch'
            ],
            userRemoteConfigs                : scm.userRemoteConfigs,
        ])
    }

    //do git stuff

    stage('Push Version Back to Git') {
        withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'jenkins', usernameVariable: 'GIT_AUTHOR_NAME', passwordVariable: 'GIT_PASSWORD']]) {
            sh 'echo ${GIT_AUTHOR_NAME} pushing '
            sh 'git config --global user.email "user@test.com"'
            sh 'git config --global user.name "Jenkins"'
            sh 'git config --global push.default simple'
            sh('git push https://${GIT_AUTHOR_NAME}:${GIT_PASSWORD}@github.com/a/a.git')
        }
    }

答案 1 :(得分:0)

具有以下功能使其对我有用。另外要记住的一件事是,如果您的密码或用户名包含任何特殊字符,请确保已将它们与编码的字符一起保存在凭据中。其他它永远都行不通。

这件事也发生在我身上,我浪费了很多时间……疯狂的……

pipeline {

    // ..

    stages {
        stage('Clone') {
            steps {
                sh "git config --global user.email 'root@my-domain.com'"
                sh "git config --global user.name 'My Name'"
                sh 'git config --global push.default simple'

                withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: '123123ghghjg13123', usernameVariable: 'GIT_AUTHOR_NAME', passwordVariable: 'GIT_PASSWORD']]) {
                    sh('git clone https://${GIT_AUTHOR_NAME}:${GIT_PASSWORD}@my-repo.git')
                }

            }
        }
        stage('Build') {
            steps {
                // ...
            }
        }
        stage('Publish') {
            steps {
                withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: '123123ghghjg13123', usernameVariable: 'GIT_AUTHOR_NAME', passwordVariable: 'GIT_PASSWORD']]) {
                    sh('git push https://${GIT_AUTHOR_NAME}:${GIT_PASSWORD}@my-repo.git  --tags -f --no-verify')
                }
            }
        }
    }
}