如何在 Azure CI 管道中手动添加“脚本”?
Posted
技术标签:
【中文标题】如何在 Azure CI 管道中手动添加“脚本”?【英文标题】:How to manually add "script" in an Azure CI Pipeline? 【发布时间】:2021-02-16 13:46:12 【问题描述】:我在 BitBucket 中有一个 node.js/typescript/angular 项目,我想在 Azure Devops 上为其创建构建 (CI) 管道。我使用经典编辑器创建管道(原因如下)并尝试添加以下任务/步骤:
-
npm install @types/node@8.10.52
ng 构建(ng 是有角度的)
如果要使用 YAML 配置,生成的 YAML 文件如下所示,那么如何在经典编辑器中的节点任务之后手动创建“脚本”?我只有将“npm”添加为任务的选项,这就是为什么我添加了 3 个 npm 任务,如上图所示,使用 3 个单独的自定义命令来模仿下面 YML 文件中的步骤配置。这是使用自定义命令的方式吗?
通过 YAML 配置的 YAML 文件 npm/角度表示:
trigger:
- master
pool:
vmImage: 'ubuntu-latest'
steps:
- task: NodeTool@0
inputs:
versionSpec: '10.x'
displayName: 'Install Node.js'
- script: |
npm install -g @angular/cli
npm install
ng build --prod
displayName: 'npm install and build'
我使用经典编辑器的原因:
当我尝试保存 YAML 配置管道时,我收到“来自 bitbucket 的错误:出现问题”错误,根据我从 Atlassian 论坛发现的内容,这似乎是一个写入权限问题。
所以我最终只使用了经典的管道编辑器,这样我就能够选择一个特定的分支(即 dev)而不是 master(prod)分支。
【问题讨论】:
【参考方案1】:我处理这个问题的方法是在你的package.json
中添加一个脚本:
"scripts":
"ng": "ng",
"build": "ng build",
"build-prod": "ng build --configuration=production"
"build-dev": "ng build --configuration=dev"
,
...
然后,您只需从自定义 NPM 任务中调用 run-script:
或者您可以选择在任务上调用run-script build --prod
,因为您可以在任务上传递参数。
这些相同的步骤在 YAML 中可用,看起来像这样:
steps:
- task: NodeTool@0
inputs:
versionSpec: '10.x'
displayName: 'Install node.js'
- task: Npm@1
inputs:
command: 'install'
displayName: npm install
- task: Npm@1
inputs:
command: 'custom'
customCommand: 'run-script build --prod'
displayName: 'npm build'
【讨论】:
我明白了!由于其他人创建了这个项目,我不知道这个 package.json 文件。我导航到 angular 文件夹,发现有多个名称中包含 package 的 json 文件,尽管我确实看到一个严格来说是“package.json”。这是我添加到的唯一脚本吗?另外,如果我不想为生产而构建,而只是开发,它会是:run-script build
only?
是的,相信package.json
文件。我假设您看到类似package-lock.json
的内容。你可以看看这个answer。
啊哈!这就说得通了!所以它有点像 gradle 文件,但有角度。基本上是默认创建的处理版本的文件。
是的,如果您配置了依赖项,甚至可能不需要安装 @angular/cli。我认为它可能只是作为安装命令发生。我更新了您询问的其他说明。
明白了。顺便说一句,每次对 repo 进行提交/更改时,这些任务/安装是否真的需要运行?我正在考虑它,似乎它只是一遍又一遍地安装......这不是没有意义吗?我只需要构建步骤吗?我正在使用 Azure 管道池(例如 windows 2019),所以我不确定是否需要安装步骤,因为管道每次运行时都在不同的机器上运行(我认为)以上是关于如何在 Azure CI 管道中手动添加“脚本”?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Azure 管道中使用 Visual Studio 中的发布配置文件选项?