我正在使用开源项目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 '
非常感谢
答案 0 :(得分:1)
我建议您阅读此Key concepts for new Azure Pipelines users
可以将所有内容放在一个脚本步骤中,但是现在您有了逻辑上的分隔,这比一个真正漫长的步骤有助于导航和读取文件。
这里有来自上述文档的一些基础知识:
- 触发器告诉管道运行。
- 管道由一个或多个阶段组成。管道可以部署到一个或多个环境。
- 阶段是在管道中组织工作的一种方式,每个阶段可以有一个或多个工作。
- 每个作业都在一个代理上运行。一项工作也可以是无代理的。
- 每个代理运行的作业包含一个或多个步骤。
- 步骤可以是任务或脚本,并且是管道的最小构建块。
- 任务是一种预先打包的脚本,它执行某种操作,例如调用REST API或发布构建工件。
- 工件是运行中发布的文件或软件包的集合。
但我真的建议您仔细阅读。
对于此项目,有一些先决条件,例如安装sbt + yarn + docker + java。我如何在azure-pipelines.yml文件中指定那些要求。
如果您使用的是Microsoft托管代理,则不能指定demands
需求和功能仅适用于自托管代理。使用Microsoft托管代理时,请为托管代理选择映像。您不能对托管代理使用功能。
因此,如果您需要代理中没有的东西,则可以安装它并使用新的sfotware。稍后,当您完成工作时,代理将还原为原始版本。如果您选择自托管代理,则可以指定需求,并可以根据代理功能将其分配给您的工作。