gpt4 book ai didi

git - 如何生成变更日志 : git log since last Hudson build?

转载 作者:IT王子 更新时间:2023-10-29 00:58:46 25 4
gpt4 key购买 nike

我正在使用 Phing 在 Hudson 中执行后期构建任务。

我想生成包含自上次成功构建 Hudson 以来所有提交的变更日志。但是看起来 Hudson 和 Hudson 的 Git 插件都不提供 %last_build_time% 变量。

这将是令人满意的解决方案,(但如何获得时间?):

git log --pretty="%s" --since="%last_build_time%"

我目前看到的唯一方法是从工作 xml 文件中提取它,但我不知道 Phing 是否可行。

您如何生成更改日志?

最佳答案

如果您有权访问 build.xml 文件,@takeshin 的回答很好,但这可能会中断,特别是如果您在从节点上构建(因为从节点没有引用的 build.xml)。

不用担心,因为您可以使用 Jenkins 的远程访问 API 直接访问此信息:

https://wiki.jenkins-ci.org/display/JENKINS/Remote+access+API

例如:

http://<host>/jenkins/job/<job_name>/lastSuccessfulBuild/api/xml

(将为您提供 xml 内容...例如,您可以将 xml 替换为 json 以取回 json 内容而不是 XML)。

请注意,如果您已将 Jenkins 实例设置为需要它,则可能需要使用身份验证。再一次,不要害怕:https://wiki.jenkins-ci.org/display/JENKINS/Authenticating+scripted+clients

然后根据需要解析 XML 是一件简单的事情。可能是这样的:

curl --silent --user $USER:$API_TOKEN $URL | grep "<lastBuiltRevision>" | sed 's|.*<lastBuiltRevision>.*<SHA1>\(.*\)</SHA1>.*<branch>.*|\1|'

因此,将它们整合在一起,您可以得到一个(相对)简单的 shell 脚本来从 Jenkins 检索最后一个正确的修订散列:

#!/bin/sh
GIT_LOG_FORMAT="%ai %an: %s"
USER=<username>
API_TOKEN=<api_token>

LAST_SUCCESS_URL_SUFFIX="lastSuccessfulBuild/api/xml"
#JOB_URL gets populated by Jenkins as part of the build environment
URL="$JOB_URL$LAST_SUCCESS_URL_SUFFIX"

LAST_SUCCESS_REV=$(curl --silent --user $USER:$API_TOKEN $URL | grep "<lastBuiltRevision>" | sed 's|.*<lastBuiltRevision>.*<SHA1>\(.*\)</SHA1>.*<branch>.*|\1|')
# Pulls all commit comments since the last successfully built revision
LOG=$(git log --pretty="$GIT_LOG_FORMAT" $LAST_SUCCESS_REV..HEAD)
echo $LOG

干杯,

李维

关于git - 如何生成变更日志 : git log since last Hudson build?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2798703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com