![](/img/trans.png)
[英]How to include git changelog w/ email with jenkins since last successful build?
[英]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 "e;
entity”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.