मुझे यकीन नहीं है कि यह जेनकींस का डिफ़ॉल्ट व्यवहार है।
मेरे पास तीन समानांतर चरण हैं जिनमें से प्रत्येक मानता है कि पिछले चरण में उत्पादित फाइलें निर्देशिका में मौजूद हैं।
मैं यार्न इंस्टॉल
को चरण 1 में और यार्न बिल्ड
को चरण 2 में और चरण 3में चलाता हूं मजबूत> मेरे पास <कोड>यार्न पैकेजकोड> है।
प्रत्येक चरण स्रोत की जांच करने का प्रयास करता है और शिकायत करता है, उदाहरण के लिए, चरण 2 शिकायत करता है कि node_modules
मौजूद नहीं है, जब मैंने निरीक्षण किया तो मैंने पाया कि चरण 1 कार्यक्षेत्र रीसेट हो गया था।
मंच पूरा होने के बाद कार्यक्षेत्र में निर्देशिकाओं/फ़ाइलों को बनाए रखने का कोई तरीका है?
कोई भी मदद बहुत ही सराहनीय होगी।
1 संपादित करें
pipeline {
agent none
options {
skipDefaultCheckout true
}
environment {
BRANCH_NAME = 'mater'
}
stages {
stage ('Checkout source') {
agent any
steps {
checkout([
$class: 'GitSCM',
branches: [[name: "${env.BRANCH_NAME}"]],
doGenerateSubmoduleConfigurations: false,
extensions: [],
submoduleCfg: [],
userRemoteConfigs: [[
credentialsId: '5db9bedc-fa88-4f64-9e6a-3e9a9d5c999f',
url: 'git@gitserver.io:acme/acme-repo.git'
]]
])
}
}
stage ('Test') {
parallel {
stage ('[Test] Mac') {
agent {
node {
label 'iMac'
customWorkspace "/Users/acme/workspace/acme-repo/nightly/${env.BRANCH_NAME}"
}
}
steps {
sh 'npm install yarn -g'
sh 'yarn install --network-timeout 1000000'
sh 'yarn build'
sh 'yarn test -u'
}
}
stage ('[Test] Linux') {
agent {
node {
label 'master'
customWorkspace "/var/lib/jenkins/acme/acme-repo/nightly/${env.BRANCH_NAME}"
}
}
steps {
sh 'sudo npm install yarn -g'
sh 'yarn install --network-timeout 1000000'
sh 'yarn build'
sh 'yarn test -u'
}
}
stage ('[Test] Windows') {
agent {
node {
label 'win'
customWorkspace "E:\\jenkins_agent\\acme\\nightly\\${env.BRANCH_NAME}"
}
}
steps {
bat 'npm install yarn -g'
bat 'yarn install --network-timeout 1000000'
bat 'yarn build'
bat 'yarn test -u'
}
}
}
}
stage ('Package') {
parallel {
stage ('Mac') {
agent {
node {
label 'iMac'
customWorkspace "/Users/acme/workspace/acme-repo/nightly/${env.BRANCH_NAME}"
}
}
steps {
sh 'yarn package-mac'
}
}
stage ('Linux') {
agent {
node {
label 'master'
customWorkspace "/var/lib/jenkins/acme/acme-repo/nightly/${env.BRANCH_NAME}"
}
}
steps {
sh './node_modules/.bin/yarn package-linux'
}
}
stage ('Windows') {
agent {
node {
label 'win'
customWorkspace "E:\\jenkins_agent\\acme\\nightly\\${env.BRANCH_NAME}"
}
}
steps {
bat 'yarn package-win'
}
}
}
}
stage ('Publish') {
parallel {
stage ('[Publish] Mac') {
agent {
node {
label 'iMac'
customWorkspace "/Users/acme/workspace/acme-repo/nightly/${env.BRANCH_NAME}"
}
}
steps {
sh 'yarn publish-mac'
}
}
stage ('[Publish] Linux') {
agent {
node {
label 'master'
customWorkspace "/var/lib/jenkins/acme/acme-repo/nightly/${env.BRANCH_NAME}"
}
}
steps {
sh './node_modules/.bin/yarn publish-linux'
}
}
stage ('[Publish] Windows') {
agent {
node {
label 'win'
customWorkspace "E:\\jenkins_agent\\acme\\nightly\\${env.BRANCH_NAME}"
}
}
steps {
bat 'yarn publish-win'
}
}
}
}
stage ('Tag & Push') {
agent {
node {
label 'master'
customWorkspace "/var/lib/jenkins/acme/acme-repo/nightly/${env.BRANCH_NAME}"
}
}
steps {
sh "yarn version --patch"
sh 'git push git@gitserver.io:acme/acme-repo.git HEAD:$BRANCH_NAME'
}
}
}
}
बस अधिक विवरण देने के लिए - वहाँ हैं
- चेकआउट स्रोत
- परीक्षण (समानांतर)
- पैकेज (समानांतर)
- प्रकाशित (समानांतर)
इन चरणों में से प्रत्येक को विभिन्न वातावरण के लिए परिभाषित किया गया है। समस्या तब है जब package
चरण चल रहा है, जाहिर है, कार्यक्षेत्र साफ हो गया है इसलिए पैकेज चलाने के लिए कुछ भी नहीं है
1 उत्तर
जैसा कि यह पता चला है, मुझे उपयोग करने की आवश्यकता है -
options {
// This is key setting that enables one checkout across different stages
skipDefaultCheckout true
}
डिफ़ॉल्ट चेकआउट छोड़ने के लिए।