天蓝色DevOps管道CI / CD

时间:2020-05-15 11:54:28

标签: azure azure-devops continuous-integration azure-pipelines

我正在使用开源项目Magda(https://magda.io/docs/building-and-running),并希望创建Azure CI / CD管道。

对于此项目,有一些先决条件,例如安装sbt + yarn + docker + java。 我如何在azure-pipelines.yml文件中指定那些要求。

在azure-pipelines.yml文件中是否可以仅编写脚本?不使用任何工作或任务?以及它们之间有什么区别(任务,工作...) (我目前是从此开始的,所以我没有太多经验)

那是我当前的azure-pipelines.yml文件(如果出现问题,请告诉我)

# Node.js
# Build a general Node.js project with npm.
# Add steps that analyze code, save build artifacts, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/javascript

trigger:
- release

pool:
  vmImage: 'ubuntu-latest'

steps:
- task: NodeTool@0
  inputs:
    versionSpec: '10.0.0'
  displayName: 'Install Node.js'

- script: |
    npm install
    npm run build
  displayName: 'npm install and build'


- script: |
    curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
  displayName: 'install Helm '

- script: |
    yarn global add lerna
    yarn global add @gov.au/pancake 
    yarn install
  displayName: 'install lerna & pancake packages'

- script: |
    export NODE_OPTIONS=--max-old-space-size=8192
  displayName: 'set Env Variable '

- script: |
    lerna run build --stream --concurrency=1 --include-dependencies
    lerna run docker-build-local --stream --concurrency=4 --include-filtered-dependencies
 displayName: 'Build lerna '

非常感谢

1 个答案:

答案 0 :(得分:1)

我建议您阅读此Key concepts for new Azure Pipelines users

可以将所有内容放在一个脚本步骤中,但是现在您有了逻辑上的分隔,这比一个真正漫长的步骤有助于导航和读取文件。

这里有来自上述文档的一些基础知识:

  • 触发器告诉管道运行。
  • 管道由一个或多个阶段组成。管道可以部署到一个或多个环境。
  • 阶段是在管道中组织工作的一种方式,每个阶段可以有一个或多个工作。
  • 每个作业都在一个代理上运行。一项工作也可以是无代理的。
  • 每个代理运行的作业包含一个或多个步骤。
  • 步骤可以是任务或脚本,并且是管道的最小构建块。
  • 任务是一种预先打包的脚本,它执行某种操作,例如调用REST API或发布构建工件。
  • 工件是运行中发布的文件或软件包的集合。

但我真的建议您仔细阅读。

对于此项目,有一些先决条件,例如安装sbt + yarn + docker + java。我如何在azure-pipelines.yml文件中指定那些要求。

如果您使用的是Microsoft托管代理,则不能指定demands

需求和功能仅适用于自托管代理。使用Microsoft托管代理时,请为托管代理选择映像。您不能对托管代理使用功能。

因此,如果您需要代理中没有的东西,则可以安装它并使用新的sfotware。稍后,当您完成工作时,代理将还原为原始版本。如果您选择自托管代理,则可以指定需求,并可以根据代理功能将其分配给您的工作。