2014-09-29 77 views
0

有没有办法在没有访问回购的情况下获取上次提交信息? svn log --limit 1尝试连接到回购。SVN离线获取上次提交信息

编辑:我有凭据设置和使用它们来检查出源。

我想要实现的是让Jenkins根据提交消息触发另一个作业,即它包含字符串“#build”启动作业X.我的尝试是在Shell构建步骤中解析它并根据其结果执行工作。但由于我没有匿名访问repo,也不想在shell脚本中嵌入凭据,所以我不知道如何实现这一点。

接下来会的git ..

+0

您必须拥有一些凭据才能真正更新Jenkins中的回购?你是对的,git在本地存储这个历史记录,但它处于相同的位置:它无法更新没有证书。您的Jenkins服务器的管理员能否安排足够的回购权限? – Rup 2014-09-29 11:44:20

+0

我拥有一些凭据,问题是,我不希望它们在我的shell脚本中解析提交消息的明文中显示。 – atx 2014-09-29 16:11:47

回答

3

这是Jenkins Credentials插件的用途。

您可以在Jenkins全局配置上安全地配置凭据,并让作业参考该凭证。无需在脚本中写入任何内容。

编辑:
为了安全地从一个壳步骤

  • 内使用密码安装EnvInject plugin
  • Jenkins全局配置,找到全局密码部分。
  • 添加一个名称(这将是环境变量名称)和密码(将加星标****)。
  • 根据作业配置,找到构建环境部分。
  • 选中标记将构建的密码注入为环境变量
  • 然后选中标记全局密码

在任何构建步骤中,现在您可以使用$name(如前所定义)引用密码,就像您使用纯文本键入密码时一样。

  • 密码变量只能在作业执行时间被注入(通过自身的服务器的命令行中输入$name不会产生任何东西,像所有的詹金斯的变量,它不是持久性的)。
  • 作业控制台日志将显示****而不是密码(如果显示)。
  • 您可以为每个作业配置密码,而不是全局配置,以便其他作业无法使用它。

唯一的安全担心的是,如果某人有管理权限来配置你的工作,他们可以写echo $name > secretpassword.txt为构建步骤,然后查看工作区中的文件。但你应该小心你分配管理权限。

+0

我意识到这一点,但我的问题是如何获得第一个提交信息。我使用凭证检查源代码,但接下来我想检查提交消息是否包含“#build”或其他内容。 – atx 2014-09-29 16:03:28

+0

用替代方法编辑 – Slav 2014-09-29 16:18:38

0

我相信,在SVN资源库的操作使用SVN仓库的凭证设置。但是,如果您有权访问托管SVN存储库的服务器,则可以创建一个自己的脚本来读取{repository-root}/db/revprops文件夹。在这里你可以找到所有修订提交信息。

+0

如果您有读取访问权限,您可以使用带有'file:// URL'的标准SVN客户端为您执行日志,这将绕过由Apache或svnserve添加的任何身份验证。 – Rup 2014-09-29 13:07:59

+1

其实我没有任何访问SVN服务器本身 – atx 2014-09-29 15:51:27