【问题标题】:SVN get the last commit message offlineSVN离线获取最后一条commit消息
【发布时间】:2014-09-29 11:36:51
【问题描述】:

有没有办法在不访问 repo 的情况下获取最后的提交消息? svn log --limit 1 尝试连接到 repo。

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

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

接下来是 git..

【问题讨论】:

  • 您必须有一些凭据才能在 Jenkins 中实际更新 repo?你是对的 git 在本地存储此历史记录,但它处于相同位置:它也无法在没有凭据的情况下更新。你不能为你的 Jenkins 服务器安排足够的访问权限吗?
  • 我拥有一些凭据,但问题是,我不希望它们在解析提交消息的 shell 脚本中以明文形式显示。

标签: git svn jenkins


【解决方案1】:

这就是Jenkins Credentials 插件的用途。

您在 Jenkins 全局配置上安全地配置凭据,并让作业引用它。无需在脚本中编写任何内容。

编辑:
在 shell 步骤中安全地使用密码

  • 安装EnvInject plugin
  • Jenkins 全局配置 下,找到 全局密码 部分。
  • 添加名称(这将是环境变量名称)和密码(将加星号****)。
  • 作业配置下,找到构建环境部分。
  • 勾选将密码作为环境变量注入构建
  • 然后勾选全局密码

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

  • 密码变量仅在作业执行时注入(在服务器命令行上键入 $name 本身不会产生任何内容,并且与所有 Jenkins 变量一样,它不是持久的)。
  • 作业控制台日志将显示****,而不是密码(如果出现)。
  • 您可以为每个作业而不是全局配置密码,以便其他作业无法使用它。

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

【讨论】:

  • 我知道这一点,但我的问题是如何从中获取第一个提交消息。我使用凭据来检查源代码,但随后我想检查提交消息是否包含“#build”或其他内容。
  • 用替代方法编辑
【解决方案2】:

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

【讨论】:

  • 如果你对 repo 有读取权限,你可以使用带有file:// URL 的标准 SVN 客户端为你做日志,这将绕过 Apache 或 svnserve 添加的任何身份验证。
  • 其实我对SVN服务器本身没有任何访问权限
猜你喜欢
  • 2015-09-17
  • 2016-06-27
  • 2019-12-26
  • 2017-05-24
  • 2016-10-12
  • 1970-01-01
  • 2018-07-28
  • 1970-01-01
  • 2022-08-18
相关资源
最近更新 更多