मेरे पास जेनकींस में एक सेटअप है जो देव से उत्पादन के लिए अच्छी तरह से काम करता है।
यहां पहली कस्टम मॉड्यूल भंडार के लिए dependencies.yml में विन्यास
repositories:
- modules:
type: chain
using:
- localModules:
type: local
descriptor: "${application.path}/../[module]/conf/dependencies.yml"
artifact: "${application.path}/../[module]"
- repoModules:
type: http
artifact: "http://mynexus/nexus/content/repositories/releases/com/myorg/[module]/[revision]/[module]-[revision].zip"
contains:
- com.myorg -> *
इस डेवलपर्स के साथ
और जेनकींस एक ही भंडार में सबसे पहले खोज करते हैं एक मॉड्यूल मौजूद है और यदि नहीं देख रहा है, मिल गया आर्टिफैक्ट डाउनलोड करने के लिए नेक्सस भंडार।
जेनकींस में मेरी मॉड्यूल का निर्माण करने के मैं इस
#!/bin/bash
APPLICATION="myModule"
PLAY_PATH="/usr/local/play"
set –xe
$PLAY_PATH/play deps --sync
$PLAY_PATH/play build-module --require 1.2.3
VERSION=`grep self conf/dependencies.yml | sed "s/.*$APPLICATION //"`
echo "Sending $APPLICATION-$VERSION.zip to nexus repository"
curl --request POST --user user:passwd http://mynexus/nexus/content/repositories/releases/com/myorg/$APPLICATION/$VERSION/$APPLICATION-$VERSION.zip -F "[email protected]/$APPLICATION-$VERSION.zip" --verbose
इस स्क्रिप्ट आप गठजोड़ करने के लिए अपने मॉड्यूल पुश करने के लिए पर एक जेनकींस निर्माण में सक्षम हैं के साथ
की तरह एक कस्टम श स्क्रिप्ट का उपयोग। यह वास्तव में मैं नहीं करता हूं। मैं जेनकिंस रिलीज मॉड्यूल का उपयोग केवल तभी दबाता हूं जब मैं रिलीज करता हूं। एक रिलीज के लिए मैं एक विशेष स्क्रिप्ट
#!/bin/bash
APPLICATION="myModule"
PLAY_PATH="/usr/local/play"
set –xe
if [ -z "$RELEASE_VERSION" ]
then
echo "Parameter RELEASE_VERSION is mandatory"
exit 1
fi
if [ -z "$DEVELOPMENT_VERSION" ]
then
echo "Parameter DEVELOPMENT_VERSION is mandatory"
exit 1
fi
echo "Release version : $RELEASE_VERSION"
echo "Development version : $DEVELOPMENT_VERSION"
VERSION=`grep self conf/dependencies.yml | sed "s/.*$APPLICATION //"`
if [ "$RELEASE_VERSION" != "$VERSION" ]
then
echo "Release version $RELEASE_VERSION and play version $VERSION in dependencies.yml does not match : release failed"
exit 1
fi
REVISION=`svnversion .`
echo "Tag svn repository in revision $REVISION with version $VERSION"
svn copy -m "Version $VERSION" -r $REVISION http://mysvn/myRepo/$APPLICATION/trunk/ http://mysvn/myRepo/$APPLICATION/tags/$VERSION
echo "svn tag applied"
echo "Sending $APPLICATION-$VERSION.zip to nexus repository"
curl --request POST --user user:passwd http://mynexus/nexus/content/repositories/releases/com/myorg/$APPLICATION/$VERSION/$APPLICATION-$VERSION.zip -F "[email protected]/$APPLICATION-$VERSION.zip" --verbose
echo "$APPLICATION-$VERSION.zip sent to nexus repository"
echo "Update module to version $DEVELOPMENT_VERSION"
sed -i "s/self\(.*\)$VERSION/self\1$DEVELOPMENT_VERSION/g" conf/dependencies.yml
svn commit -m "Version $DEVELOPMENT_VERSION" conf/dependencies.yml
svn update
echo "Version $DEVELOPMENT_VERSION créée"
यह स्क्रिप्ट हमारे SVN भंडार में एक टैग डाल दिया है, मॉड्यूल नेक्सस और dependencies.yml फ़ाइल अद्यतन करने के लिए धक्का।
इस जेनकींस एक ऐप बना सकते हैं जो मॉड्यूल के स्थानीय संस्करण पर रिलीज़ होने पर निर्भर करता है और उसके बाद नेक्सस रिपोजिटरी से मॉड्यूल आर्टिफैट डाउनलोड करके ऐप बना सकता है। डेवलपर्स
स्रोत
2011-11-30 11:08:27
मुझे लगता है कि इस तकनीक को अपना सेटअप में एक फर्क करने जा रहा है; मेरे पास अभी तक कोशिश करने का समय नहीं है, इसलिए मैंने इसे अभी तक स्वीकार नहीं किया है। फॉलो-अप प्रश्न: आपके स्थानीय मॉड्यूल रेपो कॉन्फ़िगरेशन ऐसा नहीं लगता है कि यह एक सामान्य जेनकींस सेटअप से मेल खाता है, जहां बिल्ड वर्कस्पेस आसन्न निर्देशिका में नहीं हैं। मैं थोड़ा उलझन में हूं जहां से आपकी जेनकींस देव के लिए निर्भरताएं पुनर्प्राप्त करती हैं (रिलीज के विपरीत) संस्करण। – Ladlestein
जेनकींस में मेरे पास केवल एक कार्यक्षेत्र है और मेरी सभी मॉड्यूल निर्देशिकाएं देव के रूप में आसन्न हैं। यदि नहीं, तो आपको हर बार एक मॉड्यूल बनाने के दौरान अपने आर्टेफैक्ट को नेक्सस में प्रकाशित करना होगा, किसी प्रकार का स्नैपशॉट वर्जनिंग जो सेटअप और उपयोग के लिए अधिक कठिन होगा –