如何将工件从 EC2 slave 发送回 master
How to send artifacts back to master from EC2 slave
我正在使用 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
}
}
}
}
但它似乎不起作用,因为我在任何地方都看不到我的文件。
我找到了一种使用 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'
}
}
}
}
}
我正在使用 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
}
}
}
}
但它似乎不起作用,因为我在任何地方都看不到我的文件。
我找到了一种使用 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'
}
}
}
}
}