如何生成变更日志:自上次Hudson构建以来的git日志?

10

жҲ‘жӯЈеңЁдҪҝз”ЁPhingжқҘеңЁHudsonдёӯжү§иЎҢжһ„е»әеҗҺд»»еҠЎгҖӮ

жҲ‘жғіз”ҹжҲҗеҢ…еҗ«иҮӘдёҠж¬ЎжҲҗеҠҹзҡ„Hudsonжһ„е»әд»ҘжқҘзҡ„жүҖжңүжҸҗдәӨзҡ„еҸҳжӣҙж—Ҙеҝ—гҖӮдҪҶзңӢиө·жқҘHudsonжҲ–Hudsonзҡ„GitжҸ’件йғҪжІЎжңүжҸҗдҫӣ%last_build_time%еҸҳйҮҸгҖӮ

д»ҘдёӢи§ЈеҶіж–№жЎҲеҸҜиғҪдјҡд»Өдәәж»Ўж„ҸпјҲдҪҶеҰӮдҪ•иҺ·еҫ—ж—¶й—ҙпјҹпјүпјҡ

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

目前我看到的唯一方法是从作业xml文件中提取它,但我不知道是否可以使用Phing实现。

你是如何生成你的变更日志的?

2个回答

14

如果您可以访问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内容,例如)。

请注意,如果您设置了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

祝好,

Levi


7
我已经使用bash提取了最后一次成功构建的日期:
git log --pretty="%s" --since="`date -r ./../lastSuccessful/build.xml "+%F %T"`"

在XML文件中,我需要使用&quote;实体替换"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接