首页 > 解决方案 > ng build 命令在詹金斯管道中不起作用

问题描述

我对詹金斯还很陌生。我在 Jenkins 中为 Angular 7 应用程序设置了一个管道。这是我的詹金斯文件:

pipeline {
  agent any
  stages {
    stage('Checkout') {
      steps {
        echo 'Checkout master branch'
        checkout scm
        dir('webapp') {
          bat 'npm install'
        }
      }
    }
    stage('Build') {
      steps {
        echo 'Building..'
        dir('webapp') {
          bat 'npm run ng -- build --prod --baseHref=/webapp/ -optimization=true'
        }
      }
    }
    stage('Deploy') {
      steps {
        echo 'Deploying....'
        ftpPublisher paramPublish: null, masterNodeName: '', alwaysPublishFromMaster: true, continueOnError: false, failOnError: true, publishers: [
          [configName: 'mattdailey.net', verbose: true, transfers: [
            [asciiMode: false, cleanRemote: true, excludes: '', flatten: false, makeEmptyDirs: tur, noDefaultExcludes: false, patternSeparator: '[, ]+',
              remoteDirectory: "webapp", removePrefix: "webapp/dist", remoteDirectorySDF: false, sourceFiles: 'webapp/dist/**'
            ]
          ], usePromotionTimestamp: false, useWorkspaceInPromotion: false]
        ]
      }
    }
  }
  post {
    success {
      slackSend(color: '#00FF00', message: "Build Successful")
    }
    failure {
      slackSend(color: '#FF0000', message: "Build Failed")
    }
  }
}

当我创建一个构建时,我收到以下错误:

ng "build" "--prod" "--baseHref=/webapp/" "-optimization=true"

Unknown option: '-n'    
npm ERR! code ELIFECYCLE    
npm ERR! errno 1

我在 Windows 10 中使用 Jenkins 2.150.3、Angular CLI 7.3.4、NodeJS 10.15.1。如果我在 ng 和 build 之间取出“--”,则该命令有效,但它在构建后忽略了标志。我想我需要为 angular cli 添加一个路径变量,但我不确定在哪里添加它或正确的语法是什么。

标签: angularjenkins

解决方案


我在使用 Octopus CICD 构建时遇到了同样的问题。以下解决方案对我有用。

  1. 更改包 json 脚本,例如"build": "ng build --prod",
  2. 从 CICD 运行命令,如npm run build

希望有帮助!


推荐阅读