Добавьте тег в репозиторий с конвейером Jenkinsfile с учетными данными - PullRequest
0 голосов
/ 10 апреля 2020

Я новичок в Jenkinsfile и пытаюсь передать свою работу в Jenkinsfile. Я успешно создал все необходимые шаги, но не могу добавить тег к своему git репозиторию, как я использую с интерфейсом и плагином "git publisher".

Вот что я У меня сейчас:

stage('Tag') {
 steps {
     script {
         env.POM_VERSION = readMavenPom().getVersion()
     }
     // creating the name of the tag
     sh '''#!/bin/bash -xe
       currentDate=$(date +"%Y-%m-%d_%Hh%Mm%Ss")
       customTagName="${CUSTOMER_NAME}--${POM_VERSION}--${currentDate}"
       echo CUSTOM_TAG_NAME=${customTagName} >> ${PROPERTIES_FILE_NAME}
     '''
     script {
         def PROPERTIES = readProperties file: "${PROPERTIES_FILE_NAME}"
         env.CUSTOM_TAG_NAME = PROPERTIES.CUSTOM_TAG_NAME
     }
     withCredentials([usernamePassword(credentialsId: "${GIT_CREDENTIALS_ID}", passwordVariable: 'GIT_PASSWORD', usernameVariable: 'GIT_USERNAME')]) {
         sh "git tag -a ${CUSTOM_TAG_NAME} -m 'Jenkinsfile push tag'"
         sh "git push https://${GIT_USERNAME}:${GIT_PASSWORD}@git.repohere.com/scm/reponamehere.git ${CUSTOM_TAG_NAME}"
     }
  }

}

, но у меня есть эта проблема в журналах:

[Pipeline] sh + git pu sh 'https: // ****: ****@git.repohere.com/scm/reponamehere.git' name - 4.36.0--2020-04-10_22h00m50s

неустранимо: невозможно получить доступ к «https: // ****: ****@git.repohere.com/scm/reponamehere.git/»: не удалось разрешить хост: **** ; Неизвестная ошибка [Pipeline]} [Pipeline] // withCredentials

Я застрял в этом на несколько часов, как я могу добавить и pu sh тег с учетными данными, добавленными в конфигурации jenkins. Спасибо!

1 Ответ

0 голосов
/ 11 апреля 2020

Есть ли у вас эта переменная ${GIT_CREDENTIALS_ID}, объявленная уже в директиве environment в вашем конвейере? Если вы не объявляете это сначала или используете значение переменной напрямую, как указано ниже:

withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'MyID', usernameVariable: 'GIT_USERNAME', passwordVariable: 'GIT_PASSWORD']]) {
    sh("git tag -a some_tag -m 'Jenkins'")
    sh("git push https://${env.GIT_USERNAME}:${env.GIT_PASSWORD}@<REPO> --tags")
}

ИЛИ

Вам не нужно передавать пароль вместе с вашим GIT URL репо в jenkinsfile, если вы используете sshagent для создания тега и pu sh.

pipeline {
    agent any
    stages {
        stage("Tag and Push") {
            when { branch 'master' }
            environment { 
                GIT_TAG = "jenkins-$BUILD_NUMBER"
            }
            steps {
                sh('''
                    git config user.name 'my-ci-user'
                    git config user.email 'my-ci-user@users.noreply.github.example.com'
                    git tag -a \$GIT_TAG -m "[Jenkins CI] New Tag"
                ''')

                sshagent(['my-ssh-credentials-id']) {
                    sh("""
                        #!/usr/bin/env bash
                        set +x
                        export GIT_SSH_COMMAND="ssh -oStrictHostKeyChecking=no"
                        git push origin \$GIT_TAG
                     """)
                }
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...