簡體   English   中英

如何生成changelog:自上次Hudson構建以來的git log?

[英]How to generate changelog: git log since last Hudson build?

我正在使用Phing在Hudson中完成構建任務。

我想生成包含自上次成功構建Hudson以來所有提交的更改日志。 但看起來Hudson和Hudson的Git插件都沒有提供%last_build_time%變量。

這將是令人滿意的解決方案,(但如何獲得時間?):

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

我現在看到的唯一方法是從作業xml文件中提取它,但我不知道是否可以使用Phing。

如何生成更改日志?

如果你有權訪問build.xml文件,@ takeshin的答案很好,但這可能會中斷,特別是如果你在一個從屬節點上構建(因為奴隸沒有引用的build.xml)。

不要害怕,因為您可以使用其遠程訪問API直接通過Jenkins訪問此信息:

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

例如:

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

(將為您提供xml內容...例如,您可以用json替換xml以獲取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

干杯,

列維

我使用bash提取了上一個成功的構建日期:

git log --pretty="%s" --since="`date -r ./../lastSuccessful/build.xml "+%F %T"`"

(在xml文件中,我必須替換" with &quote; entity”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM