Jenkins如何通过用户名和密码凭证进行结帐提取操作

AKS

我有Jenkins / Mercurial最新版本。机器是Red Hat Linux 6.6。

我在Jenkins中使用Release插件。Maven插件(maven-scm-plugin,maven-version-plugin和maven-enforcer-plugin),用于在项目上进行发布过程。所有这些版本都使用最新的可用版本,并且配置正确。

在詹金斯(Jenkins)的工作中,我正在从位于RhodeCode(Mercurial hg)后面的Project中签出源代码。 在此处输入图片说明

输出显示如下:

06:00:02 Started by timer
06:00:02 [EnvInject] - Loading node environment variables.
06:00:03 Building on master in workspace /main/jenkins/instance2/workspace/MyCoolProject
06:00:06 [MyCoolProject] $ hg --config auth.jenkins.prefix=* --config ******** --config ******** --config "auth.jenkins.schemes=http https" showconfig paths.default
06:00:06 [MyCoolProject] $ hg --config auth.jenkins.prefix=* --config ******** --config ******** --config "auth.jenkins.schemes=http https" pull --rev default
06:00:12 pulling from http://mercurialserver.my.company.com:9001/csa/MyCoolProject/
06:00:12 no changes found
06:00:12 [MyCoolProject] $ hg --config auth.jenkins.prefix=* --config ******** --config ******** --config "auth.jenkins.schemes=http https" update --clean --rev default
06:00:13 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
06:00:13 [MyCoolProject] $ hg --config auth.jenkins.prefix=* --config ******** --config ******** --config "auth.jenkins.schemes=http https" --config extensions.purge= clean --all
06:00:13 [MyCoolProject] $ hg --config auth.jenkins.prefix=* --config ******** --config ******** --config "auth.jenkins.schemes=http https" log --rev . --template {node}
06:00:13 [MyCoolProject] $ hg --config auth.jenkins.prefix=* --config ******** --config ******** --config "auth.jenkins.schemes=http https" log --rev . --template {rev}
06:00:13 [MyCoolProject] $ hg --config auth.jenkins.prefix=* --config ******** --config ******** --config "auth.jenkins.schemes=http https" log --rev 

如上所示,由于我们指定了用户在Mercurial DVCS工具中执行读取/签出操作,因此Jenkins在启动hg命令时传递了一堆参数,例如

--config auth.jenkins.prefix = * --config ******** --config ******** --config“ auth.jenkins.schemes = http https”

当我使用Maven SCM插件及其目标时,我试图找出发送方法。

scm:checkin
scm:tag
等被调用时,会启动底层版本控制命令(在我的情况下,是hg分支,hg传出,hg push命令)。

目前,上述hg命令失败,原因用户没有〜/ .hgrc文件,其中包含用户名密码变量集,或者用户没有对目标RhodeCode / Mercurial存储库的“写”访问权限。

20:16:26 [INFO] --- maven-scm-plugin:1.9.4:checkin (default-cli) @ MyCoolProject ---
20:16:27 [INFO] EXECUTING: /bin/sh -c cd /main/jenkins/instance2/workspace/MyCoolProject && hg branch
20:16:27 [INFO] EXECUTING: /bin/sh -c cd /main/jenkins/instance2/workspace/MyCoolProject && hg outgoing
20:16:29 [INFO] EXECUTING: /bin/sh -c cd /main/jenkins/instance2/workspace/MyCoolProject && hg status
20:16:29 [INFO] [pom.xml:modified]
20:16:29 [INFO] [jenkins-MyCoolProject-43.appVersion.txt:unknown]
20:16:29 [INFO] [pom.xml.versionsBackup:unknown]
20:16:29 [INFO] EXECUTING: /bin/sh -c cd /main/jenkins/instance2/workspace/MyCoolProject && hg commit --message '"CM Jenkins - Release plugin auto check-in and creation of release tag = 0.0.29'
20:16:30 [INFO] EXECUTING: /bin/sh -c cd /main/jenkins/instance2/workspace/MyCoolProject && hg push http://cmprod2merc.my.company.com:9001/csa/MyCoolProject
20:16:34 [ERROR] 
20:16:34 EXECUTION FAILED
20:16:34   Execution of cmd : push failed with exit code: 255.
20:16:34   Working directory was: 
20:16:34     /main/jenkins/instance2/workspace/MyCoolProject
20:16:34   Your Hg installation seems to be valid and complete.
20:16:34     Hg version: 1.9.2 (OK)
  • 我尝试配置〜/ .hgrc文件(根据Mercurial docs),如果您在此文件中指定的用户名对目标源代码存储库/项目具有有效的WRITE访问权限,则一切正常,那么上述错误消息将不会出现。

  • 如果我在构建机器上安装/配置密钥环和mercurial_keyring扩展/插件,也可以解决此问题(根据在线mercurial密钥环文档,这很容易)。

我想找出的是
如何将--config xxxxx参数(例如Jenkins在执行结帐/提取操作时正在传递-由于我们在Jenkins作业的“源代码管理”下输入的设置值而来)传递给的被调用时命令的Maven SCM插件正在启动SCM:签入/ SCM:标签,其最终调用目标汞柱命令(HG传出,汞)/无设定〜/ .hgrc和安装mercurial_keyring所有汞柱命令?

AKS

找到了解决方案:

  1. 即使用户(jenkins)在目标RhodeCode / Merurial存储库上具有有效的WRITE访问权限,并且成功配置了〜/ .hgrc或mercurial_keyring设置(即,在手动输入一次后,用户名/密码少了hg操作),Maven SCM插件scm: checkin和scm:tag操作仍然失败。

原因是(Maven SCM插件的)scm:checkin / scm:tag目标调用了版本工具命令(在我的情况下是hg命令),但未传递身份验证参数(用户名/密码)。为此,我可以使用maven-scm-plugin插件的配置在项目pom.xml中添加和值,或者在〜/ .m2 / settings.xml中添加-和 (更安全的方法是)创建/使用2个新的Jenkins全局级别的变量(具有密码类型)以创建用户名/密码变量,并将其使用/传递给scm:checkin / scm:tag目标,同时在Jenkins的Release插件的配置设置中调用这些目标,即-Dusername = $ username和-Dpassword = $密码(由于这些值来自Jenkins,因此将被自动屏蔽)。

我沿用了Jenkins路由,并在“配置系统”>“全局参数/密码”部分下的Jenkins全局配置中创建了2个密码类型的全局变量,然后将它们传递给scm:checkin / tag目标,同时在Invoke Maven步骤中调用它们(在Release插件中) Jenkins中的配置)。

我发现,如果您在〜/ .hgrc中设置了仅用户名,则Jenkins checkout / pull命令开始失败,因为Jenkins进程停止使用我用来拉/克隆源代码的凭据(看起来像是当Jenkins作业/进程正在使用jenkins用户运行时,优先使用〜/ .hgrc用户名,并且因为在〜/ .hgrc中未设置密码变量/字段,因此pull / clone由于某种原因而失败(它应该如果我将〜/ .hgrc移至〜/ .hgrc-backup,则Jenkins的checkout / pull / clone可以正常工作(因为它使用了凭据)我在“ Mercurial”的“源代码管理”部分提到的内容,但在Maven SCM插件未处理底层hg命令的过程中仍然失败。

PS:在工作区上运行“ hg push”已成功运行(独立运行,在命令行上),但是当Maven SCM插件调用这些目标并且目标正在调用hg命令时,由于某种原因,它不起作用。

解决方案是:

  1. 将-Dusername = $ username -Dpassword = $ password变量传递给scm:checkin / scm:tag目标

  2. 确保〜/ .hgrc设置了用户名/密码变量--OR mercurial_keyring设置为可与存储库一起使用(不提示输入用户名和密码)。

  3. Maven SCM插件目标..调用hg命令不起作用的原因是由于插件的问题。解决方法是使用-D pushChanges = false调用这些目标,这样,目标将不会调用底层版本控制推送操作,因此它将成功。然后,您必须以“执行Shell /执行Windows批处理命令”方式在“发布詹金斯配置中的插件”中手动添加另一步骤,以运行“汞推”。然后,它将起作用,在这种情况下,您无需将-Dusername和-Dpassword参数传递给这些目标。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何通过$ _session []使用用户名和密码进行搜索?

来自分类Dev

如何使用$ _session []的用户名和密码进行搜索?

来自分类Dev

如何通过git push提供用户名和密码

来自分类Dev

如何使用用户名和密码保护纯文本凭证文件?

来自分类Dev

如何针对盐和哈希密码和用户名对用户进行身份验证?

来自分类Dev

如何针对盐和散列的密码和用户名对用户进行身份验证?

来自分类Dev

在 Cassandra 中通过用户名和密码进行身份验证

来自分类Dev

当spring-security收到空凭证(用户名和密码)时,如何创建自定义响应?

来自分类Dev

Jenkins在Openshift上的用户名和密码

来自分类Dev

如何通过API获取用户的用户名和密码在GitHub中注册?

来自分类Dev

用于通过 ID(不是用户名)删除 Jenkins 全局凭证用户的 Groovy 脚本

来自分类Dev

如何在jenkins作业xml中为github设置用户名和密码?

来自分类Dev

使用用户名和密码进行密钥验证

来自分类Dev

使用Cookie通过Javascript设置用户名和密码

来自分类Dev

如何在安全模块Play 1.2.5中对用户名和密码进行硬编码

来自分类Dev

如何通过Facebook SDK在iOS中获取用户名和密码

来自分类Dev

如何通过阅读注册表在Inno Setup中验证用户名和密码

来自分类Dev

如何通过JNDI设置ActiveMQ连接用户名和密码

来自分类Dev

如何使用spring-security通过用户名和密码登录?

来自分类Dev

如何发布数据用户名密码进行登录

来自分类Dev

如何发布数据用户名密码进行登录

来自分类Dev

如何在Git中保存用户名和密码?

来自分类Dev

如何获取CouchDB用户名和密码

来自分类Dev

如何更改MySQL的用户名和密码?

来自分类Dev

如何从用户名和密码获取WindowsPrincipal

来自分类Dev

如何保护Sqoop中的密码和用户名?

来自分类Dev

如何从CSV检查用户名和密码。文件

来自分类Dev

如何使用RestClient发送用户名和密码

来自分类Dev

iOS如何从plist中查询用户名和密码

Related 相关文章

  1. 1

    如何通过$ _session []使用用户名和密码进行搜索?

  2. 2

    如何使用$ _session []的用户名和密码进行搜索?

  3. 3

    如何通过git push提供用户名和密码

  4. 4

    如何使用用户名和密码保护纯文本凭证文件?

  5. 5

    如何针对盐和哈希密码和用户名对用户进行身份验证?

  6. 6

    如何针对盐和散列的密码和用户名对用户进行身份验证?

  7. 7

    在 Cassandra 中通过用户名和密码进行身份验证

  8. 8

    当spring-security收到空凭证(用户名和密码)时,如何创建自定义响应?

  9. 9

    Jenkins在Openshift上的用户名和密码

  10. 10

    如何通过API获取用户的用户名和密码在GitHub中注册?

  11. 11

    用于通过 ID(不是用户名)删除 Jenkins 全局凭证用户的 Groovy 脚本

  12. 12

    如何在jenkins作业xml中为github设置用户名和密码?

  13. 13

    使用用户名和密码进行密钥验证

  14. 14

    使用Cookie通过Javascript设置用户名和密码

  15. 15

    如何在安全模块Play 1.2.5中对用户名和密码进行硬编码

  16. 16

    如何通过Facebook SDK在iOS中获取用户名和密码

  17. 17

    如何通过阅读注册表在Inno Setup中验证用户名和密码

  18. 18

    如何通过JNDI设置ActiveMQ连接用户名和密码

  19. 19

    如何使用spring-security通过用户名和密码登录?

  20. 20

    如何发布数据用户名密码进行登录

  21. 21

    如何发布数据用户名密码进行登录

  22. 22

    如何在Git中保存用户名和密码?

  23. 23

    如何获取CouchDB用户名和密码

  24. 24

    如何更改MySQL的用户名和密码?

  25. 25

    如何从用户名和密码获取WindowsPrincipal

  26. 26

    如何保护Sqoop中的密码和用户名?

  27. 27

    如何从CSV检查用户名和密码。文件

  28. 28

    如何使用RestClient发送用户名和密码

  29. 29

    iOS如何从plist中查询用户名和密码

热门标签

归档