Использование сохраненных учетных данных Jenkins в Pipeline как yml для git push

Я пишу Pipeline в Jenkins, где мне нужно отправить изменения обратно в BitBucket с помощью скрипта. Я использовал сохраненные учетные данные для получения кода из BitBucket, но не смог отправить его обратно на сервер. Вот мой сценарий:

  - stage: Pull Code and Merge master in UAT
  steps:
    script:
      - "git credentialsId: '0b69d4a0-623b-4ba6-8e2c-8419ced4a31a', url: 'repo url'"
      - sh 'git status'
      - sh 'git checkout release/uat'
      - sh 'git merge -m "merging changes from main to UAT" origin/master'
      - "git push credentialsId: '0b69d4a0-623b-4ba6-8e2c-8419ced4a31a',url: 'repo url"  
      - sh 'git status'

git push вызывает ошибки. Я не знаю, как сделать push, используя сохраненные учетные данные

Я использую это плагин для запуска пайплайна как yaml.

Вот вылетает ошибка:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 14: expecting '}', found ':' @ line 14, column 33.
         git push credentialsId: '0b69d4a0-623b-4ba6-8e2c-8419ced4a31a',url: 'http://10.0.110.4:7990/scm/ceye/ceye-admin.git
                               ^

1 error

at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:310)
at org.codehaus.groovy.control.ErrorCollector.addFatalError(ErrorCollector.java:150)
at org.codehaus.groovy.control.ErrorCollector.addError(ErrorCollector.java:120)
at org.codehaus.groovy.control.ErrorCollector.addError(ErrorCollector.java:132)
at org.codehaus.groovy.control.SourceUnit.addError(SourceUnit.java:350)
at org.codehaus.groovy.antlr.AntlrParserPlugin.transformCSTIntoAST(AntlrParserPlugin.java:144)
at org.codehaus.groovy.antlr.AntlrParserPlugin.parseCST(AntlrParserPlugin.java:110)
at org.codehaus.groovy.control.SourceUnit.parse(SourceUnit.java:234)
at org.codehaus.groovy.control.CompilationUnit$1.call(CompilationUnit.java:168)
at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:943)
at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:605)
at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:581)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:558)
at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
at groovy.lang.GroovyShell.parseClass(GroovyShell.java:688)
at groovy.lang.GroovyShell.parse(GroovyShell.java:700)
at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.doParse(CpsGroovyShell.java:142)
at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.reparse(CpsGroovyShell.java:127)
at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.parseScript(CpsFlowExecution.java:571)
at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.start(CpsFlowExecution.java:523)
at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:337)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:429)

Завершено: НЕУДАЧА


person Jamshaid    schedule 12.02.2021    source источник
comment
Я не знаю BitBucket, но у меня была аналогичная проблема с Gitlab. В моем случае ветка master была защищена. Это означает, что только «мейнтейнерам» было разрешено вносить изменения в основную ветку. Возможно, что-то подобное и ваша проблема. Проверьте эту ссылку: stackoverflow.com/questions/38864405/   -  person frank    schedule 12.02.2021
comment
@frank я администратор репозитория. В синтаксисе git push есть проблема. Если бы вы могли взглянуть на это   -  person Jamshaid    schedule 12.02.2021


Ответы (1)


Команда Jenkins git в основном является оболочкой git clone/pull, у нее нет опции push. Синтаксическая ошибка вызвана тем, что Jenkins ожидает имя параметра, но получает push.

Чтобы это работало, вы можете либо использовать ключ ssh, либо закодировать имя пользователя и пароль в URL-адресе, например:

sh "git push https://${username}:${password}@github.com/...repo.../.com

Если пароль не является URL-сохранением (содержит & и т. д.), вы должны сначала экранировать его.

person smelm    schedule 12.02.2021
comment
как добавить ${имя пользователя} и пароль в качестве переменной? - person Jamshaid; 12.02.2021
comment
можете ли вы использовать среду withCredentials в настройках yaml? - person smelm; 12.02.2021
comment
Да. я могу использовать это - person Jamshaid; 12.02.2021
comment
withCredentials генерирует эти две переменные для вас (с учетом учетных данных), вы можете указать, как должны вызываться переменные, или он использует некоторые значения по умолчанию. - person smelm; 12.02.2021
comment
см. здесь для получения дополнительной информации: jenkins.io/doc/pipeline/steps/credentials -связывание - person smelm; 12.02.2021