Parâmetros de runtime

Serviços do Azure DevOps | Azure DevOps Server 2022 | Azure DevOps Server 2020

Os parâmetros de runtime permitem-lhe ter mais controlo sobre os valores que podem ser transmitidos para um pipeline. Com os parâmetros de runtime, pode:

  • Fornecer valores diferentes para scripts e tarefas no runtime
  • Tipos de parâmetros de controlo, intervalos permitidos e predefinições
  • Selecionar dinamicamente tarefas e fases com expressões de modelo

Pode especificar parâmetros em modelos e no pipeline. Os parâmetros têm tipos de dados, como número e cadeia, e podem ser restringidos a um subconjunto de valores. A parameters secção num YAML define que parâmetros estão disponíveis.

Os parâmetros só estão disponíveis no tempo de análise de modelos. Os parâmetros são expandidos imediatamente antes da execução do pipeline para que os valores rodeados por sejam substituídos por ${{ }} valores de parâmetros. Utilize variáveis se precisar que os seus valores estejam mais amplamente disponíveis durante a execução do pipeline.

Nota

Esta documentação de orientação não se aplica a pipelines clássicos. Para parâmetros em pipelines clássicos, veja Parâmetros de processo (clássico).

Os parâmetros têm de conter um nome e um tipo de dados. Os parâmetros não podem ser opcionais. É necessário atribuir um valor predefinido no ficheiro YAML ou ao executar o pipeline. Se não atribuir um valor predefinido ou definido default como false, é utilizado o primeiro valor disponível.

Utilize templateContext para transmitir propriedades adicionais para fases, passos e trabalhos que são utilizados como parâmetros num modelo.

Utilizar parâmetros em pipelines

Defina parâmetros de runtime no início de um YAML.

Este pipeline de exemplo inclui um image parâmetro com três agentes alojados como string opções. Na secção tarefas, o pool valor especifica o agente do parâmetro utilizado para executar a tarefa. O trigger está definido como nenhum para que possa selecionar o valor de image quando aciona manualmente o pipeline para ser executado.

parameters:
- name: image
  displayName: Pool Image
  type: string
  default: ubuntu-latest
  values:
  - windows-latest
  - ubuntu-latest
  - macOS-latest

trigger: none

jobs:
- job: build
  displayName: build
  pool: 
    vmImage: ${{ parameters.image }}
  steps:
  - script: echo building $(Build.BuildNumber) with ${{ parameters.image }}

Quando o pipeline for executado, selecione a Imagem do Conjunto. Se não efetuar uma seleção, será utilizada a opção predefinida ubuntu-latest .

parâmetros de runtime

Utilizar condicionais com parâmetros

Também pode utilizar parâmetros como parte da lógica condicional. Com condicionais, parte de um YAML é executado se cumprir os if critérios.

Utilizar parâmetros para determinar que passos são executados

Este pipeline adiciona um segundo parâmetro booleano, test, que pode ser utilizado para controlar se deve ou não executar testes no pipeline. Quando o valor de test é verdadeiro, o passo que produz a execução de todos os testes é executado.

parameters:
- name: image
  displayName: Pool Image
  values:
  - windows-latest
  - ubuntu-latest
  - macOS-latest
- name: test
  displayName: Run Tests?
  type: boolean
  default: false

trigger: none

jobs:
- job: build
  displayName: Build and Test
  pool: 
    vmImage: ${{ parameters.image }}
  steps:
  - script: echo building $(Build.BuildNumber)
  - ${{ if eq(parameters.test, true) }}:
    - script: echo "Running all the tests"

Utilizar parâmetros para definir a configuração utilizada

Também pode utilizar parâmetros para definir que tarefa é executada. Neste exemplo, diferentes arquiteturas são compilados consoante o valor do config parâmetro, que é um string tipo. Por predefinição, as x86 arquiteturas e x64 são criadas.

parameters:
- name: configs
  type: string
  default: 'x86,x64'

trigger: none

jobs:
- ${{ if contains(parameters.configs, 'x86') }}:
  - job: x86
    steps:
    - script: echo Building x86...
- ${{ if contains(parameters.configs, 'x64') }}:
  - job: x64
    steps:
    - script: echo Building x64...
- ${{ if contains(parameters.configs, 'arm') }}:
  - job: arm
    steps:
    - script: echo Building arm...

Excluir seletivamente uma fase

Também pode utilizar parâmetros para definir se uma fase é executada. Neste exemplo, existe um pipeline com quatro fases e tarefas diferentes para cada fase. A fase Teste de Desempenho é executada se o parâmetro runPerfTests for verdadeiro. O valor predefinido de runPerfTests é falso, pelo que, sem atualizações, apenas três das quatro fases são executadas.

parameters:
- name: runPerfTests
  type: boolean
  default: false

trigger: none

stages:
- stage: Build
  displayName: Build
  jobs:
  - job: Build
    steps:
    - script: echo running Build


- stage: UnitTest
  displayName: Unit Test
  dependsOn: Build
  jobs:
  - job: UnitTest
    steps:
    - script: echo running UnitTest


- ${{ if eq(parameters.runPerfTests, true) }}:
  - stage: PerfTest
    displayName: Performance Test
    dependsOn: Build
    jobs:
    - job: PerfTest
      steps:
      - script: echo running PerfTest


- stage: Deploy
  displayName: Deploy
  dependsOn: UnitTest
  jobs:
  - job: Deploy
    steps:
    - script: echo running UnitTest

Percorrer os parâmetros

Também pode percorrer a cadeia, o número e os parâmetros booleanos.

Neste exemplo, percorre os parâmetros e imprime o nome e o valor de cada parâmetro. Existem quatro parâmetros diferentes e cada um representa um tipo diferente. myStringName é uma cadeia de linha única. myMultiString é uma cadeia de várias linhas. myNumber is a number. myBoolean é um valor booleano. Na secção passos, as tarefas de script produzem a chave e o valor de cada parâmetro.

# start.yaml
parameters:
- name: myStringName
  type: string
  default: a string value
- name: myMultiString
  type: string
  default: default
  values:
  - default
  - ubuntu
- name: myNumber
  type: number
  default: 2
  values:
  - 1
  - 2
  - 4
  - 8
  - 16
- name: myBoolean
  type: boolean
  default: true

steps: 
- ${{ each parameter in parameters }}:
  - script: echo ${{ parameter.Key }} 
  - script: echo ${{ parameter.Value }}
# azure-pipeline.yaml
trigger: none

extends:
  template: start.yaml

Verificar se existe um objeto de parâmetro vazio

Pode utilizar a length()expressão para verificar se um parâmetro de objeto não tem valor.

parameters:
- name: foo
  type: object
  default: []

steps:
- checkout: none
- ${{ if eq(length(parameters.foo), 0) }}:
  - script: echo Foo is empty
    displayName: Foo is empty

Tipos de dados de parâmetros

Tipo de dados Notas
string string
number pode ser restringido a values:, caso contrário, qualquer cadeia de carateres semelhante a um número é aceite
boolean true ou false
object qualquer estrutura YAML
step um único passo
stepList sequência de passos
job uma única tarefa
jobList sequência de tarefas
deployment uma única tarefa de implementação
deploymentList sequência de tarefas de implementação
stage uma única fase
stageList sequência de fases

Todos os tipos de dados stepList, job, jobList, deployment, deploymentList, stage e stageList utilizam o formato de esquema YAML padrão. Este exemplo inclui cadeia, número, booleano, objeto, passo e stepList.

parameters:
- name: myString
  type: string
  default: a string
- name: myMultiString
  type: string
  default: default
  values:
  - default
  - ubuntu
- name: myNumber
  type: number
  default: 2
  values:
  - 1
  - 2
  - 4
  - 8
  - 16
- name: myBoolean
  type: boolean
  default: true
- name: myObject
  type: object
  default:
    foo: FOO
    bar: BAR
    things:
    - one
    - two
    - three
    nested:
      one: apple
      two: pear
      count: 3
- name: myStep
  type: step
  default:
    script: echo my step
- name: mySteplist
  type: stepList
  default:
    - script: echo step one
    - script: echo step two

trigger: none

jobs: 
- job: stepList
  steps: ${{ parameters.mySteplist }}
- job: myStep
  steps:
    - ${{ parameters.myStep }}