如何从EC2从站将工件发送回主站

时间:2017-04-22 13:54:02

标签: jenkins amazon-ec2 jenkins-pipeline artifact-deployer

我用Jenkins建立我的持续交付系统。为了避免花费很多钱,我设置了我的jenkins,以便在对Bitbucket进行新的推送时生成一个新的EC2 m4.large实例。这样我才会在工作时付钱。

现在的问题是我的工件留在奴隶中,当实例终止时我无法再访问我的文件。

要存档工件,我以这种方式设置管道:

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
        }
    }
}

}

但它似乎无法正常工作,因为我无法在任何地方看到我的文件。

1 个答案:

答案 0 :(得分:2)

我找到了一种使用stash和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'
          }
        }
    }
}
}