如何在 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 中的发布配置文件选项?

如何升级 azure CI 以使用 c# 8.0

用于运行进程的 Azure DevOps 管道

使用调度程序和变量组运行 Azure DevOps CI 管道

跨两个不同组织配置 Azure CI CD 管道

我们如何使用管道将azure devops中的应用程序部署到具有不同订阅和组织的azure app服务