मैं जेनकींस में हमारे सभी निर्माणों के लिए जेनकिन्स फ़ाइल का उपयोग करने की कोशिश कर रहा हूं, और मुझे निम्नलिखित समस्या है। हम मूल रूप से 3 तरह का बनाता है:जेनकिन्सफाइल और शाखाओं के लिए विभिन्न रणनीतियों
- पुल अनुरोध निर्माण - यह कोड की समीक्षा के बाद गुरु विलय हो जाएगा, और निर्माण काम करता है
- मैनुअल पुल अनुरोध निर्माण - निर्माण के समान ही होता है उपर्युक्त, लेकिन उपयोगकर्ता द्वारा मैन्युअल रूप से ट्रिगर किया जा सकता है (उदाहरण के लिए यदि हमारे पास कुछ अस्थिर परीक्षण है)
- प्रारंभिक निरंतर वितरण पाइपलाइन - यह कोड का निर्माण करेगा, भंडार पर तैनात करेगा, लक्ष्य सर्वर पर भंडार से कलाकृतियों को स्थापित करेगा और प्रारंभ करें आवेदन वहाँ
मुझे उपर्युक्त सभी बिल्डों को एक जेनकिन्सफाइल में कैसे शामिल करना चाहिए। अभी मेरे पास एकमात्र विचार है जो एक विशालकाय बनाना है यदि वह जांच करेगा कि यह कौन सी शाखा है और यह कदम उठाएगी।
तो मैं दो प्रश्न हैं:
1. कि उचित तरीके से Jenkinsfile में यह करने के लिए है?
- बहु-शाखा नौकरी प्रकार में वर्तमान में निष्पादित शाखा का नाम कैसे प्राप्त करें?
संदर्भ के लिए, मेरे वर्तमान Jenkinsfile
है:
def servers = ['server1', 'server2']
def version = "1.0.0-${env.BUILD_ID}"
stage 'Build, UT, IT'
node {
checkout scm
env.PATH = "${tool 'Maven'}/bin:${env.PATH}"
withEnv(["PATH+MAVEN=${tool 'Maven'}/bin"]) {
sh "mvn -e org.codehaus.mojo:versions-maven-plugin:2.1:set -DnewVersion=$version -DgenerateBackupPoms=false"
sh 'mvn -e clean deploy'
sh 'mvn -e scm:tag'
}
}
def nodes = [:]
for (int i = 0; i < servers.size(); i++) {
def server = servers.get(i)
nodes["$server"] = {
stage "Deploy to INT ($server)"
node {
sshagent(['SOME-ID']) {
sh """
ssh ${server}.example.com <<END
hostname
/apps/stop.sh
yum -y update-to my-app.noarch
/apps/start.sh
END""".stripIndent()
}
}
}
}
parallel nodes
संपादित करें: हटा राय आधारित प्रश्न
की संभावित डुप्लिकेट [जेनकींस Multibranch पाइपलाइन: क्या शाखा का नाम चर रहा है] (http://stackoverflow.com/questions/32789619/jenkins-multibranch-pipeline-what- is-the-branch-name-variable) –