我怎么才能从詹金斯那里推到GIT呢? [英] How do I push to git from Jenkins?

查看:30
本文介绍了我怎么才能从詹金斯那里推到GIT呢?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下代码是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代理插件。下面是描述我是如何做到这一点的分步指南,希望能对其他人有所帮助:

  1. 首先,创建一个新的管道作业。
  2. 然后,按照Jenkins文档的thisPOST中的提示,转到新管道作业的主屏幕,并单击"Pipeline语法"。选择"git:git"作为"示例步骤",并在"存储库URL"字段中输入要推送到的git存储库。然后从"Credentials"下拉列表中为该存储库选择相应的有效SSH密钥。所有内容应如下所示: 获取上面屏幕截图中用红色突出显示的"redentialsId"的值。你稍后会用到的。

  3. 安装"工作区清理插件"(https://wiki.jenkins.io/display/JENKINS/Workspace+Cleanup+Plugin,可选)和"SSH代理插件"(https://jenkins.io/doc/pipeline/steps/ssh-agent/,非可选,此过程需要)。

    /li>
  4. 现在返回到新的管道作业并单击"Configure",这将把您带到定义作业的屏幕。将以下代码放入"Pipeline"部分("定义"应设置为"管道脚本"):https://gist.github.com/ScottNeaves/5cdce294296437043b24f0f3f0a8f1d8
  5. 将您的"redentialsId"放入上述Jenkinsfile中的适当位置,并将repo名称设置为您想要的repo,您就应该可以了。

相关文档:

  1. https://jenkins.io/doc/pipeline/examples/#push-git-repo
  2. https://gist.github.com/blaisep/eb8aa720b06eff4f095e4b64326961b5#file-jenkins-pipeline-git-cred-md
  3. https://issues.jenkins-ci.org/browse/JENKINS-28335?focusedCommentId=269000&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-269000

这篇关于我怎么才能从詹金斯那里推到GIT呢?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆