我怎么才能从詹金斯那里推到GIT呢? [英] How do I push to git from Jenkins?
问题描述
以下代码是Jenkins中的"执行Shell"构建步骤。作业从包含文件ranger-policies/policies.json
的回购中提取。我想要做的是更新该文件(在本例中使用curl命令),然后将更改提交给源代码管理并更新远程repo。作业使用SSH密钥通过SSH成功地从作业配置页的"源代码管理"部分的远程存储库中拉出。但是,当作业到达"Execute Shell"步骤中的"Git Push Origin Master"行时,我收到一个Permission denied (publickey)
错误,好像那些允许我成功拉取repo的SSH密钥在我想推送时在"Execute Shell"步骤中不可用。
curl -X GET --header "text/json" -H "Content-Type: text/json" -u user:pass "http://my-url.com/exportJson" > ranger-policies/policies.json
git add ranger-policies/policies.json
git commit -m "udpate policies.json with latest ranger policies `echo "$(date +'%Y-%m-%d')"`"
git push origin master
推荐答案
我最终弄清楚了如何使其工作。该解决方案涉及使用SSH代理插件。下面是描述我是如何做到这一点的分步指南,希望能对其他人有所帮助:
- 首先,创建一个新的管道作业。
然后,按照Jenkins文档的thisPOST中的提示,转到新管道作业的主屏幕,并单击"Pipeline语法"。选择"git:git"作为"示例步骤",并在"存储库URL"字段中输入要推送到的git存储库。然后从"Credentials"下拉列表中为该存储库选择相应的有效SSH密钥。所有内容应如下所示: 获取上面屏幕截图中用红色突出显示的"redentialsId"的值。你稍后会用到的。
安装"工作区清理插件"(https://wiki.jenkins.io/display/JENKINS/Workspace+Cleanup+Plugin,可选)和"SSH代理插件"(https://jenkins.io/doc/pipeline/steps/ssh-agent/,非可选,此过程需要)。
/li>- 现在返回到新的管道作业并单击"Configure",这将把您带到定义作业的屏幕。将以下代码放入"Pipeline"部分("定义"应设置为"管道脚本"):https://gist.github.com/ScottNeaves/5cdce294296437043b24f0f3f0a8f1d8
- 将您的"redentialsId"放入上述Jenkinsfile中的适当位置,并将repo名称设置为您想要的repo,您就应该可以了。
相关文档:
- https://jenkins.io/doc/pipeline/examples/#push-git-repo
- https://gist.github.com/blaisep/eb8aa720b06eff4f095e4b64326961b5#file-jenkins-pipeline-git-cred-md
- https://issues.jenkins-ci.org/browse/JENKINS-28335?focusedCommentId=269000&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-269000
这篇关于我怎么才能从詹金斯那里推到GIT呢?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!