2017-04-22 99 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' 
      } 
     } 
    } 
} 
} 
相关问题