2017-04-22 65 views
0

我正在與Jenkins建立我的持續交付系統。爲了避免花費大量金錢,我建立了我的jenkins,以便在對Bitbucket進行新推動時生成新的EC2 m4.large實例。這樣我只在工作時付錢。如何將工件從EC2從設備發送回主設備

現在的問題是,我的工件留在奴隸和實例終止時,我不能再訪問我的文件。

要歸檔設置我的管道在這樣的假象:

pipeline { 
agent { 
    node { 
    label 'jenkins-slave-spawn' 
    } 
} 
stages { 
    stage('prepare') { 
     steps { 
      sh 'npm install' 
      sh 'npm update' 
      dir ('./scripts/Web') { 
       sh 'bower install' 
       sh 'bower update' 
      } 
      dir ('./scripts/App') { 
       sh 'bower install' 
       sh 'bower update' 
      } 
      dir ('./scripts/Site'){ 
       sh 'bower install' 
       sh 'bower update' 
      } 
      dir ('./scripts/Assistance'){ 
       sh 'bower install' 
       sh 'bower update' 
      } 
     } 
    } 
    stage('build') { 
     steps { 
      sh 'grunt build-beta' 
     } 
    } 
    stage('archive') { 
     steps { 
      archiveArtifacts artifacts: '**/builds/*', onlyIfSuccessful: true 
     } 
    } 
} 

}

但它似乎並不工作,因爲我看不到我的文件的任何地方。

+0

你肯定有目錄中的文件從文件名匹配模式的方法嗎?也就是說,如果你在存檔之前做了'ls',它顯示了什麼? – Rik

回答

1

我發現使用藏匿和unstash和交換節點

pipeline { 
agent { 
    node { 
    label 'jenkins-slave-spawn' 
    } 
} 
stages { 
    stage('prepare') { 
     steps { 
      sh 'npm install' 
      sh 'npm update' 
      dir ('./scripts/Web') { 
       sh 'bower install' 
       sh 'bower update' 
      } 
      dir ('./scripts/App') { 
       sh 'bower install' 
       sh 'bower update' 
      } 
      dir ('./scripts/Site'){ 
       sh 'bower install' 
       sh 'bower update' 
      } 
      dir ('./scripts/Assistance'){ 
       sh 'bower install' 
       sh 'bower update' 
      } 
     } 
    } 
    stage('build') { 
     steps { 
      sh 'grunt build-beta' 
     } 
    } 
    stage('deploy') { 
     steps { 
      echo 'here will use pm2 to start node app' 
     } 
    } 
    stage('archive') { 
     steps { 
      stash includes: 'builds/**', name: 'slave-artifacts' 
      node('master'){ 
       unstash 'slave-artifacts' 
      } 
     } 
    } 
} 
}