2010-05-09 8 views
10

मैं हडसन में पोस्ट बिल्ड कार्यों को करने के लिए फ़िंग का उपयोग कर रहा हूं।चेंजलॉग कैसे उत्पन्न करें: पिछले हडसन के निर्माण के बाद से गिट लॉग?

मैं अंतिम सफल हडसन बिल्ड के बाद से सभी कामों में चेंजलॉग उत्पन्न करना चाहता हूं। लेकिन ऐसा लगता है कि हडसन के लिए न तो हडसन और न ही गिट प्लगइन %last_build_time% चर प्रदान नहीं करता है।

यह संतोषजनक समाधान, (लेकिन कैसे समय पाने के लिए?) होगा:

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

एक ही रास्ता मैं अब काम xml फ़ाइल से निकाल रहा है के लिए देखते हैं, लेकिन मैं जानता हूँ कि अगर यह नहीं है फ़िंग के साथ संभव है।

आप अपने परिवर्तन लॉग कैसे उत्पन्न करते हैं?

उत्तर

7

मैं पिछले सफल निर्माण तिथि निकाला है बैश का उपयोग कर:

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

(xml फ़ाइल में मैं &quote; संस्था के साथ " को बदलने के लिए था)।

14

@ takeshin का जवाब ठीक है अगर आपके पास build.xml फ़ाइल तक पहुंच है, लेकिन यह तोड़ सकता है, खासकर यदि आप गुलाम नोड पर निर्माण कर रहे हैं (क्योंकि दास के पास संदर्भित build.xml नहीं है)।

डर नहीं है, क्योंकि आप सीधे जेनकींस के माध्यम से इस जानकारी का उपयोग कर सकते हैं, इसके लिए दूरदराज के उपयोग एपीआई का उपयोग कर:

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

उदाहरण के लिए:

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

(आप एक्सएमएल सामग्री दे देंगे। .. उदाहरण के लिए, एक्सएमएल की बजाय जेसन सामग्री वापस पाने के लिए आप एक्सएमएल को जेसन से बदल सकते हैं)।

ध्यान दें कि अगर आप अपने जेनकींस इंस्टेंस को इसकी आवश्यकता के लिए सेट अप करते हैं तो आपको प्रमाणीकरण का उपयोग करने की आवश्यकता हो सकती है। दोबारा, डर न करें: https://wiki.jenkins-ci.org/display/JENKINS/Authenticating+scripted+clients

फिर यह एक्सएमएल को पार्स करने का एक साधारण मामला है जो आप चाहते हैं। कुछ इस तरह, शायद:

#!/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 

चीयर्स:

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

इसलिए, यह सब एक साथ खींच, आप जेनकींस से पिछले अच्छा संशोधन हैश प्राप्त करने के लिए (अपेक्षाकृत) सरल खोल स्क्रिप्ट के साथ समाप्त कर सकते हैं ,

लेवी

+0

+1 - बहुत बेहतर उत्तर –

संबंधित मुद्दे