我如何在Jenkins的下一个阶段获得我的构建文件夹

umuewwlo  于 2023-08-03  发布在  Jenkins
关注(0)|答案(2)|浏览(89)

我试图使用Jenkins管道将React应用程序部署到我的Mac上运行的流浪机器上。
在我成功构建应用程序之后,构建文件夹仅驻留在构建阶段。在下一阶段中看不到此生成文件夹。当我试图在构建后的下一阶段列出构建文件夹的内容时,我得到了这个错误;

ls: cannot access './build': No such file or directory

字符串
我已经存档了文件夹,但我一直得到同样的错误。
这是我的管道;

@Library('shared-library') _
pipeline {
    agent none

    stages{
        stage("Test"){
            agent {
                docker {
                    image 'node:lts-alpine'
                    args '-u root:root'
                }
            }
            steps{
                sh "chmod +x -R ${env.WORKSPACE}"
                sh './app/scripts/test.sh'
            }
        }
        stage("Build"){
            agent {
                docker {
                    image 'node:lts-alpine'
                    args '-u root:root'
                }
            }
            steps{
                dir('./app'){
                    sh "chmod +x -R ${env.WORKSPACE}"
                    sh "npm install"
                    sh "./scripts/deliver-for-development.sh"
                
                    archiveArtifacts artifacts: "build/**", fingerprint: true
                }
                
            }
        }

        stage("Deliver for Development"){
            agent any
            when {
                branch "development"
            }
            steps{
                sh 'ls ./build'
            }
        }
   }
}


这是管道中./scripts/deliver-for-development.sh脚本的内容。

#!/bin/sh

set -x
npm run build
set +x


请问我该如何解决这个问题?

b91juud3

b91juud31#

使用stash将文件从一个阶段复制到另一个阶段,将Jenkins文件存储到其他阶段
应该和这个差不多

@Library('shared-library') _
pipeline {
    agent none

    stages{
        stage("Test"){
            agent {
                docker {
                    image 'node:lts-alpine'
                    args '-u root:root'
                }
            }
            steps{
                sh "chmod +x -R ${env.WORKSPACE}"
                sh './app/scripts/test.sh'
            }
        }
        stage("Build"){
            agent {
                docker {
                    image 'node:lts-alpine'
                    args '-u root:root'
                }
            }
            steps{
                dir('./app'){
                    sh "chmod +x -R ${env.WORKSPACE}"
                    sh "npm install"
                    sh "./scripts/deliver-for-development.sh"
                    stash includes: 'build/**', name: 'buildfiles'
                }    
            }
        }

        stage("Deliver for Development"){
            agent any
            when {
                branch "development"
            }
            steps{
                unstash 'buildfiles'
                sh 'ls ./build'
            }
        }
   }
}

字符串

juzqafwq

juzqafwq2#

正如你在构建阶段所看到的,它在docker内部构建,在紧接着的下一个阶段,代理丢失了,jenkins可能正在寻找与前一阶段docker不同的位置。如果在此步骤后立即执行ls,sh“./scripts/deliver-for-development.sh“,则可以看到内容。您可以在构建步骤期间将构建文件夹复制到控制器中的某个位置并部署它。

相关问题