【发布时间】:2015-04-30 18:09:07
【问题描述】:
我有 Jenkins / Mercurial 最新版本。机器是 Red Hat Linux 6.6。
我在 Jenkins 中使用 Release 插件。 Maven 插件(maven-scm-plugin、maven-version-plugin 和 maven-enforcer-plugin)用于在项目上进行发布过程。所有这些版本都使用最新的可用版本,并且配置设置正确。
在 Jenkins 工作中,我正在检查位于 RhodeCode (Mercurial hg) 后面的项目的源代码。
输出显示如下:
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:签入
单片机:标签
ETC
当被调用时,启动底层版本控制命令(在我的例子中,hg 分支、hg 传出、hg 推送命令)。
目前,由于 either 用户没有包含 username 文件的 ~/.hgrc 文件,因此上述 hg 命令失败em> 和 password 变量设置 OR 用户没有对目标 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 文档),如果您在此文件中指定的用户名对目标源代码存储库/项目具有有效的 WRITE 访问权限,则一切正常,则上述错误消息 不会来。
如果我在构建机器上安装/配置密钥环和 mercurial_keyring 扩展/插件也可以解决此问题(根据在线 mercurial 密钥环文档很容易)。
我想要找出的是:
我怎样才能传递 --config xxxxx 参数(就像 Jenkins 在结帐/拉取时传递操作 - 由于我们在 Jenkins 作业的 Source Code Management 下输入的设置值)到 Maven SCM 插件时调用的 hg 命令 正在启动 scm:checkin / scm:tag 目标,最终调用 hg 命令(hg outgoing,hg push) / 所有 hg 命令都没有设置 ~/.hgrc 和安装 mercurial_keyring?
【问题讨论】:
标签: jenkins mercurial mercurial-extension maven-scm-plugin mercurial-keyring