Eventos
Crie aplicativos e agentes de IA
17 de mar., 21 - 21 de mar., 10
Junte-se à série de encontros para criar soluções de IA escaláveis com base em casos de uso do mundo real com outros desenvolvedores e especialistas.
Registrar agoraNão há mais suporte para esse navegador.
Atualize o Microsoft Edge para aproveitar os recursos, o suporte técnico e as atualizações de segurança mais recentes.
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Quando você usa scripts do Bash e do PowerShell em seus pipelines, normalmente é de grande utilidade poder definir as variáveis que você pode usar em tarefas futuras. As variáveis recém-definidas não estão disponíveis na mesma tarefa.
Os scripts são ótimos para quando você deseja fazer algo sem suporte de uma tarefa. Por exemplo, você pode usar um script para chamar uma API REST personalizada e analisar a resposta.
Use o comando de logging task.setvariable
para definir variáveis nos scripts PowerShell e Bash.
Observação
Os trabalhos de implantação usam uma sintaxe diferente para variáveis de saída. Para saber mais sobre o suporte para variáveis de saída em trabalhos de implantação, confira Trabalhos de implantação.
Para usar uma variável com uma condição em um pipeline, confira Especificar condições.
Quando você adiciona uma variável com task.setvariable
, as tarefas a seguir podem usar a variável usando a sintaxe de macro $(myVar)
. Por padrão, a variável só está disponível para tarefas no mesmo trabalho. Se você adicionar o parâmetro isOutput
, a sintaxe para chamar suas variáveis muda. Para obter mais informações, consulte Definir uma variável de saída para uso no mesmo trabalho.
Defina a variável myVar
com o valor foo
.
- bash: |
echo "##vso[task.setvariable variable=myVar;]foo"
Leia a variável myVar
:
- bash: |
echo "You can use macro syntax for variables: $(myVar)"
O comando task.setvariable
inclui propriedades para definir uma variável como segredo, como variável de saída e como somente leitura. As propriedades disponíveis incluem:
variable
= nome da variável (Obrigatório)isSecret
= booliano (opcional, o padrão é false)isOutput
= booliano (opcional, o padrão é false)isReadOnly
= booliano (opcional, o padrão é false)Para usar a variável na próxima fase, defina a propriedade isOutput
como true
. Para fazer referência a uma variável com isOutput
definida como verdadeira, você incluirá o nome da tarefa. Por exemplo, $(TaskName.myVar)
.
Quando você define uma variável como somente leitura, as tarefas downstream não podem substituí-las. Defina isreadonly
como true
. Definir uma variável como leitura só aumenta a segurança tornando essa variável imutável.
Quando issecret
for definido como true, o valor da variável será salvo como segredo e mascarado dos logs.
Observação
O Azure Pipelines faz um esforço para mascarar segredos ao emitir dados para logs de pipeline, para que você possa ver variáveis adicionais, dados mascarados na saída e logs que não são definidos como segredos.
Defina a variável secreta mySecretVal
.
- bash: |
echo "##vso[task.setvariable variable=mySecretVal;issecret=true]secretvalue"
Obtenha a variável secreta mySecretVal
.
- bash: |
echo "##vso[task.setvariable variable=mySecretVal;issecret=true]secretvalue"
- bash: |
echo $(mySecretVal)
Saída de variável secreta no bash.
Há quatro tipos diferentes de variáveis de saída com sintaxes distintas:
isOutput
. Para fazer referência a essas variáveis, você usa a sintaxe de macro. Exemplo: $(myVar)
.isOutput
. Para fazer referência a essas variáveis, você inclui o nome da tarefa. Exemplo: $(myTask.myVar)
.variables
com a sintaxe dependency
.variables
com a sintaxe stageDependencies
.Observação
Estágios ou trabalhos futuros só podem acessar variáveis de saída se dependerem do estágio ou trabalho em que a variável foi definida. Para tornar uma variável de saída acessível, certifique-se de que o próximo estágio ou trabalho dependa do estágio ou trabalho em que você criou a variável. Se vários estágios ou trabalhos precisarem usar a mesma variável de saída, use a condição dependsOn
para estabelecer essa dependência.
O nome de uma variável de saída poderá mudar se o pipeline usar uma estratégia de execução como um trabalho de matriz. Para esses casos, exiba sua variável para teste primeiro para verificar seu nome. Você também pode imprimir todas as variáveis disponíveis em um pipeline com o script env
.
- script: env
displayName: 'Print all variables'
Ao usar uma variável de saída no mesmo trabalho, você não precisa usar a propriedade isOutput
. Por padrão, a variável está disponível para etapas downstream dentro do mesmo trabalho. No entanto, se adicionar a propriedade isOutput
, você precisará referenciar a variável com o nome da tarefa.
Aqui o script define a mesma variável de saída de trabalho myJobVar
sem especificar isOutput
e define myOutputJobVar
com isOutput=true
.
jobs:
- job: A
steps:
- bash: |
echo "##vso[task.setvariable variable=myJobVar]this is the same job"
- bash: |
echo "##vso[task.setvariable variable=myOutputJobVar;isOutput=true]this is the same job too"
name: setOutput
Esse script obtém as mesmas variáveis de trabalho myJobVar
e myOutputJobVar
. Observe que a sintaxe muda para referenciar uma variável de saída, assim que isOutput=true
é adicionada.
jobs:
- job: A
steps:
- bash: |
echo "##vso[task.setvariable variable=myJobVar]this is the same job"
- bash: |
echo "##vso[task.setvariable variable=myOutputJobVar;isOutput=true]this is the same job too"
name: setOutput
- bash: |
echo $(myJobVar)
- bash: |
echo $(setOutput.myOutputJobVar)
Ao usar variáveis de saída em trabalhos, você as referencia com dependencies
. A sintaxe para acessar uma variável de saída em um trabalho ou fase futura varia de acordo com a relação entre o setter e o consumidor da variável. Saiba mais sobre cada caso em dependências.
Primeiro, defina a variável de saída myOutputVar
.
jobs:
- job: A
steps:
- bash: |
echo "##vso[task.setvariable variable=myOutputVar;isOutput=true]this is from job A"
name: passOutput
Em seguida, acesse myOutputVar
em um trabalho futuro e gere a saída da variável como myVarFromJobA
. Para usar dependencies
, você precisa definir a propriedade dependsOn
no trabalho futuro usando o nome do trabalho anterior no qual a variável de saída foi definida.
jobs:
- job: A
steps:
- bash: |
echo "##vso[task.setvariable variable=myOutputVar;isOutput=true]this is from job A"
name: passOutput
- job: B
dependsOn: A
variables:
myVarFromJobA: $[ dependencies.A.outputs['passOutput.myOutputVar'] ]
steps:
- bash: |
echo $(myVarFromJobA)
As variáveis de saída podem ser usadas entre fases em pipelines. Você pode usar variáveis de saída para passar informações úteis, como a ID de uma saída gerada, de uma fase para o outra.
Ao definir uma variável com a propriedade isOutput
, você pode referenciar essa variável em fases posteriores com o nome da tarefa e a sintaxe stageDependencies
. Saiba mais sobre dependências.
As variáveis de saída só estão disponíveis na próxima fase downstream. Se várias fases consumirem a mesma variável de saída, use a condição dependsOn
.
Primeiro, defina a variável de saída myStageVal
.
steps:
- bash: echo "##vso[task.setvariable variable=myStageVal;isOutput=true]this is a stage output variable"
name: MyOutputVar
Em seguida, em uma fase futura, mapeie a variável de saída myStageVal
para uma variável de fase, trabalho ou escopo de tarefa como, por exemplo, myStageAVar
. Observe que a sintaxe de mapeamento usa uma expressão de runtime $[]
e rastreia o caminho de stageDependencies
até a variável de saída usando o nome do estágio (A
) e o nome do trabalho (A1
) para qualificar totalmente a variável.
stages:
- stage: A
jobs:
- job: A1
steps:
- bash: echo "##vso[task.setvariable variable=myStageVal;isOutput=true]this is a stage output variable"
name: MyOutputVar
- stage: B
dependsOn: A
jobs:
- job: B1
variables:
myStageAVar: $[stageDependencies.A.A1.outputs['MyOutputVar.myStageVal']]
steps:
- bash: echo $(myStageAVar)
Caso o valor contenha novas linhas, você poderá fazer o escape delas e o agente desfazer automaticamente:
steps:
- bash: |
escape_data() {
local data=$1
data="${data//'%'/'%AZP25'}"
data="${data//$'\n'/'%0A'}"
data="${data//$'\r'/'%0D'}"
echo "$data"
}
echo "##vso[task.setvariable variable=myStageVal;isOutput=true]$(escape_data $'foo\nbar')"
name: MyOutputVar
Há alguns motivos pelos quais a variável de saída pode não aparecer.
isOutput
não estão disponíveis no mesmo trabalho e, em vez disso, só estão disponíveis em trabalhos downstream.$(var)
) são processadas antes da tarefa ser executada. Por outro lado, variáveis com sintaxe de modelo são processadas no runtime ($[variables.var]
). Normalmente, você deseja usar a sintaxe de runtime ao definir variáveis de saída. Para obter mais informações sobre a sintaxe de variável, confira Definir variáveis.isOutput=true
.Você pode solucionar problemas de dependencies
saída para um trabalho ou estágio de pipeline adicionando uma variável para as dependências e, em seguida, imprimindo essa variável. Por exemplo, neste trabalho de pipeline A
define a variável de saída MyTask
. O segundo trabalho (B
) depende do trabalho A
. Uma nova variável, deps
contém a representação JSON das dependências de trabalho. A segunda etapa na tarefa B
usa PowerShell para exibir deps
, permitindo que você veja as dependências da tarefa.
trigger:
- '*'
pool:
vmImage: 'ubuntu-latest'
jobs:
- job: A
steps:
- script: |
echo "##vso[task.setvariable variable=MyTask;isOutput=true]theoutputval"
name: ProduceVar
- job: B
dependsOn: A
variables:
varFromA: $[ dependencies.A.outputs['ProduceVar.MyTask'] ]
deps: $[convertToJson(dependencies)] # create a variable with the job dependencies
steps:
- script: echo $(varFromA) #
- powershell: Write-Host "$(deps)"
Eventos
Crie aplicativos e agentes de IA
17 de mar., 21 - 21 de mar., 10
Junte-se à série de encontros para criar soluções de IA escaláveis com base em casos de uso do mundo real com outros desenvolvedores e especialistas.
Registrar agoraTreinamento
Módulo
Gerenciar e modularizar tarefas e modelos - Training
Gerenciar e modularizar tarefas e modelos
Documentação
Definir variáveis - Azure Pipelines
As variáveis são pares nome-valor definidos por você para uso em um pipeline. Você pode usar variáveis como entradas para tarefas e em seus scripts.
Saiba mais sobre como você pode usar expressões no Azure Pipelines.
Variáveis predefinidas - Azure Pipelines
Uma lista abrangente de todas as variáveis predefinidas disponíveis