Экранирование специального символа пароля git в сценарии Jenkins groovy - PullRequest
0 голосов
/ 09 апреля 2020

Неудачный конвейер Jenkins на этапе, когда я git извлекаю "http: {username}: {пароль rout@myrepo.github.com".

В пароле есть @ в соответствии с политика паролей.

pipelinescript. groovy ниже

def credId = 'Идентификатор кредита, сохраненного в учетных данных Jenkins'

stage('Some Stage'){
   withCredentials([usernamePassword(credId: "${cred}", passwordVariable: 'GIT_PASSWORD', usernameVariable: 'GIT_USERNAME']){
 sh """
  git checkout ${myBranch}
  git status

  git pull https://${GIT_USERNAME}:${GIT_PASSWORD}@github.myorg.com/myrepo.git
 """
  }

}

GIT_PASSWORD - "@hello"

Этап завершается с ошибкой не удается разрешить хост: 4hello@github.myorg.com

Я не могу закодировать @ в% 40 и жестко закодировать пароль в указанном выше URL.

I попробовал ниже вместо GIT_PASSWORD

echo -n $ GIT_PASSWORD | od -A n -t x1 | sed 's / /% / g', который выдает% 40% 68% 65% 6c% 6c% 6f

git pull https://${GIT_USERNAME}:$(echo -n $GIT_PASSWORD | od -A n -t x1 | sed 's/ /%/g')@github.myorg.com/myrepo.git

, не уверен, нужен ли плагин или уже установлен в моей организации для помощника по учетным данным, но попытался

sh "git config --global credential.helper \"!echo password=${GIT_PASSWORD}; echo\""

Перепробовал много вещей, размещенных в сети, не смог найти работающее решение. Пожалуйста, помогите

1 Ответ

1 голос
/ 09 апреля 2020

Сделайте, как показано ниже:

git branch: 'master',
    credentialsId: 'your-credential-id',
    url: 'ssh://git@github.myorg.com/myrepo.git'

ИЛИ

Как насчет просто использования кассового этапа scm. Таким образом, вам не нужно беспокоиться о специальных символах в вашем пароле.

stage('Some Stage') {
  steps {
   checkout([$class: 'GitSCM', 
    branches: [[name: '*/master']], 
    doGenerateSubmoduleConfigurations: false, 
    extensions: [[$class: 'CleanCheckout']], 
    submoduleCfg: [], 
    userRemoteConfigs: [[credentialsId: 'your-credential-id', url: 'https://github.myorg.com/myrepo.git']]
  ])
 }
}

На предыдущем этапе будет проверена основная ветвь. Если вы хотите оформить заказ в какой-либо другой ветви, просто замените текст на имя филиала, к которому вы хотите оформить заказ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...