我们有nodejs应用程序,通过使用angular npm build,我们正在使用Azuredevops管道构建它。下面是ADO任务中的构建脚本。
- bash: |
set -e
node --version
npm --version
echo "npm cache location"
npm config get cache
echo "cleaning up workspace"
rm -rf .angular
rm -rf build
rm -rf dist
echo "Installing angular/cli"
jf npm install -g --prefer-offline --audit=false --no-audit
if [[ "${{ parameters.cleanBuild }}" == "True" ]]; then
echo "Running npm ci"
jf npm ci --prefer-offline --audit=false --no-audit
else
echo "Running npm install"
jf npm install --prefer-offline --audit=false --no-audit
fi
echo "Running npm lint:"
npm run lint$subProject
echo "Running npm build:"
npm run build$subProject
echo "Running npm test:"
npm run test$subProject
displayName: 'Build and test project'
现在,我们计划启用Jfrog Xray扫描构建,并在Jfrog cli中查找上面给出的命令的确切替换。
我们尝试了多个选项,但均因命令错误而失败。
我们使用的是jfrogcli v2。
误差
11:11:45 [Warn] npm list command failed with error: error while running the command :'/node/16.14.2/x64/bin/npm ls --prefer-offline --audit=false --no-audit --threads=1 --json --all --long'
Error output is:
npm ERR! code ELSPROBLEMS
npm ERR! invalid: @angular/common@13.3.0 node_modules/@angular/common
npm ERR! invalid: @angular/core@13.3.0 node_modules/@angular/core
npm ERR! invalid: @angular/compiler-cli@13.3.0 node_modules/@angular/compiler-cli
npm ERR! invalid: @angular/compiler@13.3.0 node_modules/@angular/compiler
{
"error": {
"code": "ELSPROBLEMS",
"summary": "invalid: @angular/common@13.3.0 node_modules/@angular/common\ninvalid: @angular/core@13.3.0 node_modules/@angular/core\ninvalid: @angular/compiler-cli@13.3.0 node_modules/@angular/compiler-cli\ninvalid: @angular/compiler@13.3.0 node_modules/@angular/compiler",
"detail": ""
}
}
1条答案
按热度按时间mqkwyuun1#
看起来是脚本中的jf npm list命令导致了这个错误。npm ls命令用于列出项目中已安装的包,但它似乎不是构建过程所必需的。
您可以使用jfrog rt npm-install命令来安装来自JFrog Artifactory的npm包,而不是jf npm list。此命令将解析来自Artifactory的npm包并将其安装到您的项目中。
下面是如何在脚本中使用jfrog rt npm-install命令的示例:
jfrog rt npm安装--内部版本名称= --内部版本编号=
您需要将和替换为实际的内部版本名称和编号。
您还可以使用jfrog rt npm ci从JFrog Artifactory安装npm包,也可以从package-lock.json安装这些包。
下面是如何在脚本中使用jfrog rt npm ci命令的示例:jfrog实时npm ci --内部版本名称= --内部版本编号=
您需要将和替换为实际的内部版本名称和编号。
您可能还需要配置.npmrc文件以指向JFrog Artifactory示例,以便jfrog rt npm-install和jfrog rt npm ci命令可以从那里解析包。
之后,您可以使用jfrog rt npm-scan命令,使用JFrog Xray扫描从JFrog Artifactory下载的npm包中的漏洞。
下面是一个示例,说明如何在脚本中使用jfrog rt npm-scan命令jfrog rt npm-scan --build-name= --build-number=您需要用实际的构建名称和编号替换和。
请注意,CLI版本2不再受支持,您应该升级到最新版本的JFrog CLI。