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
.
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 }}
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários