2016-04-25 10 views
11

मैं जेनकींस कॉपी आर्टिफैक्ट्स प्लगइन का उपयोग जेनकींस पाइपलाइनों (वर्कफ़्लोज़) के भीतर से करने का एक उदाहरण खोजने का प्रयास कर रहा हूं।मैं जेनकिंस कॉपी आर्टिफैक्ट्स प्लगइन का उपयोग पाइपलाइनों (जेनकिन्सफाइल) के भीतर से कैसे कर सकता हूं?

क्या कोई इसका उपयोग कर रहे नमूने ग्रोवी कोड को इंगित कर सकता है?

उत्तर

18

तो बनाता ही पाइप लाइन में नहीं चल रहे हैं यदि आप सीधे CopyArtifact प्लगइन का उपयोग कर सकते हैं, यहाँ उदाहरण है: https://www.cloudbees.com/blog/copying-artifacts-between-builds-jenkins-workflow और उदाहरण कोड:

node { 
    // setup env.. 
    // copy the deployment unit from another Job... 
    step ([$class: 'CopyArtifact', 
      projectName: 'webapp_build', 
      filter: 'target/orders.war']); 
    // deploy 'target/orders.war' to an app host 
} 
13

आप अपने गुरु में गुलामों का उपयोग कर रहे हैं और आप उदाहरण के लिए, एक दूसरे को आप गुप्त कोष/unstash उपयोग कर सकते हैं के बीच कलाकृतियों की नकल करना चाहते हैं:

:

stage 'build' 
node{ 
    git 'https://github.com/cloudbees/todo-api.git' 
    stash includes: 'pom.xml', name: 'pom' 
} 

stage name: 'test', concurrency: 3 
node { 
    unstash 'pom' 
    sh 'cat pom.xml' 
} 

आप इस लिंक में इस उदाहरण देख सकते हैं

https://dzone.com/refcardz/continuous-delivery-with-jenkins-workflow

1
name = "/" + "${env.JOB_NAME}" 
def archiveName = 'relNum' 
try { 
    step($class: 'hudson.plugins.copyartifact.CopyArtifact', projectName: name, filter: archiveName) 
} catch (none) { 
    echo 'No artifact to copy from ' + name + ' with name relNum' 
    writeFile file: archiveName, text: '3' 
} 

def content = readFile(archiveName).trim() 
echo 'value archived: ' + content 

प्रतिलिपि विरूपण साक्ष्य प्लगइन का उपयोग कर कि कोशिश

7
एक कथात्मक Jenkinsfile साथ

, तो आपको निम्न पाइप लाइन का उपयोग कर सकते हैं:

pipeline { 
    agent any 
    stages { 
     stage ('push artifact') { 
      steps { 
       sh 'mkdir archive' 
       sh 'echo test > archive/test.txt' 
       zip zipFile: 'test.zip', archive: false, dir: 'archive' 
       archiveArtifacts artifacts: 'test.zip', fingerprint: true 
      } 
     } 

     stage('pull artifact') { 
      steps { 
       step([ $class: 'CopyArtifact', 
         filter: 'test.zip', 
         fingerprintArtifacts: true, 
         projectName: '${JOB_NAME}', 
         selector: [$class: 'SpecificBuildSelector', buildNumber: '${BUILD_NUMBER}'] 
       ]) 
       unzip zipFile: 'test.zip', dir: './archive_new' 
       sh 'cat archive_new/test.txt' 
      } 
     } 
    } 
} 

CopyArtifact के साथ, मैं '$ {JOB_NAME}' का उपयोग प्रोजेक्ट नाम के रूप में करता हूं जो वर्तमान चल रहा प्रोजेक्ट है।

CopyArtifact द्वारा उपयोग किए गए डिफ़ॉल्ट चयनकर्ता अंतिम सफल परियोजना निर्माण संख्या का उपयोग करते हैं, कभी भी वर्तमान नहीं (क्योंकि यह अभी तक सफल नहीं है, या नहीं)। SpecificBuildSelector के साथ आप '$ {BUILD_NUMBER}' चुन सकते हैं जिसमें वर्तमान चल रहे प्रोजेक्ट बिल्ड नंबर शामिल हैं।

इस पाइपलाइन समानांतर चरणों के साथ काम करता है और विशाल फाइलों का प्रबंधन कर सकते हैं

इस पाइपलाइन मेरी जेनकींस 2.74 के साथ पूरी तरह से काम करता है, बशर्ते आप (मैं एक 300MB फ़ाइल का उपयोग कर रहा है, यह नहीं गुप्त कोष/unstash साथ काम करता है) सभी आवश्यक प्लगइन्स

+0

क्या आपको पता है कि यह कदम कहां है ([$ वर्ग: 'CopyArtifact', वाक्यविन्यास दस्तावेज है? मुझे लगता है कि मुझे याद है कि यह स्निपेट जनरेटर द्वारा उत्पन्न किया गया था, अब इसे नहीं मिला .. मैं विशेष रूप से सोच रहा हूं कि आप पैरामीट्रिज्ड बिल्ड चयनकर्ता का उपयोग कैसे कर सकते हैं। – inger

+0

मैंने एक उदाहरण देखा [यहां] (https://wiki.jenkins.io/dis प्ले/जेनकींस/कॉपी + विरूपण साक्ष्य + प्लगइन)। 'विशिष्ट बिल्डर चयनकर्ता' के बारे में, मैंने इसे [प्लगइन कोड] का विश्लेषण करके अनुमान लगाया है (https://github.com/jenkinsci/copyartifact-plugin/tree/copyartifact-1.38.1/src/main/java/hudson/plugins/copyartifact) –

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

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