简体   繁体   中英

azure DevOps pipeline CI/CD

I am using an Open-Source project Magda ( https://magda.io/docs/building-and-running ) and want to make an Azure CI/CD Pipeline.

For this project, there are some prerequisites like having sbt + yarn + docker + java installed. How can I specify those requirements in the azure-pipelines.yml file.

Is it possible in azure-pipelines.yml file, to just write scripts? Without any use of jobs or tasks? And what's the difference between them (Tasks,Jobs... ) (I'm currently starting with it, so I don't have much experience)

That's my current azure-pipelines.yml file (if there is something wrong please tell me)

# 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 '

I recommend you read this Key concepts for new Azure Pipelines users

It is possible to put all your stuff in one script step, but now you have logical separation, and this helps navigate and read file than one really long step.

Here you have some bascis from above mentioned documentation:

  • A trigger tells a Pipeline to run.
  • A pipeline is made up of one or more stages. A pipeline can deploy to one or more environments.
  • A stage is a way of organizing jobs in a pipeline and each stage can have one or more jobs.
  • Each job runs on one agent. A job can also be agentless.
  • Each agent runs a job that contains one or more steps.
  • A step can be a task or script and is the smallest building block of a pipeline.
  • A task is a pre-packaged script that performs an action, such as invoking a REST API or publishing a build artifact.
  • An artifact is a collection of files or packages published by a run.

But I really recommend you to go through it.

For this project, there are some prerequisites like having sbt + yarn + docker + java installed. How can i specifiy those requirements in the azure-pipelines.yml file.

If you are using Microsoft hosted agents you cannot specify demands

Demands and capabilities apply only to self-hosted agents. When using Microsoft-hosted agents, you select an image for the hosted agent. You cannot use capabilities with hosted agents.

So if you need sth what is not inside the agent you can install it and use taht new piece of sfotware. Later when you job is finished agent is restroed to original version. If you go for self hosted agent you can specify demands and based on agents capabilities it can be assigned to your job.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM