sh 'npm install' cmd 在 jenkins 管道中不起作用。注意:jenkins安装在windows内部

问题描述 投票:0回答:1

我正在编写一个简单的詹金斯文件来测试、构建和部署角度应用程序。 但我的詹金斯管道在 sh 'npm install' 处失败

这是我的詹金斯管道脚本

pipeline {
    agent any
    stages {
        stage('Checkout') {
            steps {
                git branch: 'main', url: 'https://github.com/0APOCALYPSE0/ngrx-task.git'
            }
        }
        stage('Test') {
            steps {
                sh 'npm install'
                sh 'ng test'
            }
        }
        stage('Build') {
          steps {
            sh 'ng build'
          }
        }
        stage('Deploy') {
            steps {
                bat 'move dist\\ngrx-task\\*.* C:\\nginx\\'
            }
        }
    }
}

我还附上了错误的屏幕截图: enter image description here

错误:

Found unhandled java.io.IOException exception:
Cannot run program "nohup" (in directory "C:\ProgramData\Jenkins\.jenkins\workspace\Angular build and deploy"): CreateProcess error=2, The system cannot find the file specified
    java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1170)
    java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1089)
    hudson.Proc$LocalProc.(Proc.java:252)
    hudson.Proc$LocalProc.(Proc.java:221)
    hudson.Launcher$LocalLauncher.launch(Launcher.java:994)
    hudson.Launcher$ProcStarter.start(Launcher.java:506)
    org.jenkinsci.plugins.durabletask.BourneShellScript.launchWithCookie(BourneShellScript.java:180)
    org.jenkinsci.plugins.durabletask.FileMonitoringTask.launch(FileMonitoringTask.java:134)
    org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.start(DurableTaskStep.java:329)
    org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:323)
    org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:196)
    org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:124)

我尝试谷歌搜索,但找不到解决方案。我是詹金斯/devops 的新手。我认为 sh cmd 有问题,也许 Windows 中安装的 jenkins 有问题,这就是它无法运行 sh cmd 的原因。

有人可以帮我吗?

谢谢

node.js angular jenkins npm jenkins-pipeline
1个回答
0
投票

我想您正在运行默认代理希望是内置节点希望不推荐,您必须设置代理 Windows 代理(希望您必须使用 PowerShell“bat”)或设置 Linux 代理希望使用“sh”。 代理可以是虚拟机、树莓派或远程服务器,任何带有命令行的东西。 这是有关如何在 YouTube 上设置 Linux 虚拟机代理的指南: https://www.youtube.com/watch?v=99DddJiH7lM&t=403s&ab_channel=CloudBeesTV 和代理文件 此外,您必须在其上并在路径中安装 Node.js。 或者,您可以使用 docker 容器作为代理,您需要安装 docker 并在路径中 请参阅 Docker with Pipeline 文档: https://www.jenkins.io/doc/book/pipeline/docker/ 经验:

pipeline {
    agent {
        docker { image 'node:20.16.0-alpine3.20' }
    }
    stages {
        stage('Test') {
            steps {
                sh 'node --version'
            }
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.