Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Serviços de DevOps do Azure | Azure DevOps Server | Azure DevOps Server 2022
Os trabalhos do Azure Pipelines consistem em etapas, que podem ser tarefas ou scripts. Uma tarefa é um script ou procedimento pré-empacotado que executa uma ação ou usa um conjunto de entradas para definir a automação do pipeline. Este artigo descreve tarefas de pipeline e como usá-las. Para obter informações sobre o esquema, consulte a definição steps.task .
O Azure Pipelines inclui muitas tarefas internas que permitem cenários fundamentais de compilação e implantação. Para obter uma lista de tarefas internas disponíveis do Azure Pipelines, consulte a referência da tarefa Azure Pipelines. Você também pode instalar tarefas do Visual Studio Marketplace ou criar tarefas personalizadas.
Por padrão, todas as etapas de um trabalho são executadas em sequência no mesmo contexto, seja no host ou em um contêiner de trabalho. Opcionalmente, você pode usar destinos de etapa para controlar o contexto de tarefas individuais. Para executar algumas tarefas em paralelo em vários agentes, ou sem usar um agente, consulte Especificar trabalhos em seu pipeline.
Gestão de tarefas
As tarefas estão disponíveis e instaladas no nível da organização do Azure DevOps. Você só pode usar tarefas e versões de tarefas que existem para sua organização.
Você pode desabilitar tarefas internas, tarefas do Marketplace ou ambas em Configurações>>, em Restrições de tarefas. Se você desabilitar as tarefas internas e do Marketplace, somente as tarefas instaladas usando a CLI do Nó para DevOps do Azure estarão disponíveis.
A desativação das tarefas do Marketplace pode ajudar a melhorar a segurança do pipeline. Na maioria das circunstâncias, você não deve desativar tarefas internas. Para obter mais informações, consulte Controlar tarefas disponíveis.
Tarefas personalizadas
O Visual Studio Marketplace oferece muitas extensões que você pode instalar para estender o catálogo de tarefas do Azure Pipelines. Você também pode criar tarefas personalizadas. Para obter mais informações, consulte Adicionar uma extensão de tarefa de pipelines personalizada.
Em pipelines YAML, você se refere a tarefas pelo nome. Se o nome da tarefa personalizada corresponder a um nome de tarefa interno, o pipeline usará a tarefa interna. Para evitar essa situação, você pode fazer referência à sua tarefa personalizada usando o GUID exclusivo da tarefa que você atribuiu quando criou a tarefa. Para obter mais informações, consulte Compreender task.json componentes.
Versões de tarefas
As tarefas são versionadas e você deve especificar a versão principal das tarefas que você usa em seu pipeline. Especificar a versão ajuda a evitar problemas quando novas versões de uma tarefa são lançadas.
Os pipelines são atualizados automaticamente para usar novas versões de tarefas secundárias, como 1.2 a 1.3. As versões de tarefas secundárias são normalmente compatíveis com versões anteriores, mas em alguns cenários você pode encontrar erros imprevisíveis quando uma tarefa é atualizada automaticamente.
Se uma nova versão de tarefa principal, como versões 2.0, seu pipeline continuará a usar a versão principal especificada até que você edite o pipeline para alterar manualmente para a nova versão principal. Os logs de compilação fornecem alertas quando novas versões principais estão disponíveis. Você só pode usar versões de tarefas que existem para sua organização.
No YAML, você especifica a versão principal usando @ o nome da tarefa. Por exemplo, para usar a PublishTestResults versão 2 da tarefa, especifique PublishTestResults@2. Você pode especificar qual versão secundária usar fornecendo o número completo da versão da tarefa após o @, como GoTool@0.3.1.
Opções de tarefa
As propriedades a seguir estão disponíveis para as etapas de pipeline task do YAML. Para obter mais informações, consulte a definição steps.task .
| Propriedade | Tipo | Description |
|---|---|---|
task |
cadeia (de caracteres) | Obrigatório como primeira propriedade. Nome da tarefa a ser executada. |
inputs |
cadeia (de caracteres) | Entradas para a tarefa, usando pares nome/valor. |
condition |
cadeia (de caracteres) | Condições em que a tarefa é executada. |
continueOnError |
Booleano | Se deve continuar a correr mesmo em caso de falha. |
displayName |
cadeia (de caracteres) | Nome legível por humanos para a tarefa. |
enabled |
Booleano | Se essa tarefa deve ser executada quando o trabalho é executado. |
env |
cadeia (de caracteres) | Variáveis para mapear no ambiente de processo, usando pares nome/valor. |
name |
cadeia (de caracteres) | ID da etapa. |
retryCountOnTaskFailure |
cadeia (de caracteres) | Número de novas tentativas se a tarefa falhar. |
target |
cadeia (de caracteres) | Ambiente para executar esta tarefa. |
timeoutInMinutes |
cadeia (de caracteres) | O tempo máximo que a tarefa pode ser executada antes de ser cancelada automaticamente. |
Condições
Uma tarefa não pode determinar se deve continuar o trabalho de pipeline após a conclusão da tarefa, apenas fornecer um status final, como succeeded ou failed. As tarefas e trabalhos a jusante podem então definir um condition com base nesse status para determinar se devem ser executados.
A propriedade conditions especifica as condições sob as quais essa tarefa é executada. Por padrão, uma etapa é executada se nada em seu trabalho ainda falhou e a etapa imediatamente anterior foi concluída.
Você pode substituir ou personalizar esses padrões definindo a etapa para ser executada mesmo se ou somente se uma dependência anterior falhar ou tiver outro resultado. Você também pode definir condições personalizadas, que são compostas por expressões.
Nota
As condições aplicam-se a todas as dependências diretas e indiretas anteriores com o mesmo pool de agentes. Estágios ou trabalhos em diferentes pools de agentes são executados simultaneamente.
As condições baseadas no status de dependência anterior incluem:
-
Êxito: execute somente se todas as dependências anteriores forem bem-sucedidas. Esse comportamento é o padrão se nenhuma condição estiver definida no YAML. Para aplicar essa condição, especifique
condition: succeeded(). -
Êxito ou falha: execute mesmo se uma dependência anterior falhar, a menos que a execução seja cancelada. Para aplicar essa condição, especifique
condition: succeededOrFailed(). -
Sempre: Executar mesmo se uma dependência anterior falhar, mesmo que a execução seja cancelada. Para aplicar essa condição, especifique
condition: always(). -
Falha: Execute somente quando uma dependência anterior falhar. Para aplicar essa condição, especifique
condition: failed().
No exemplo YAML a seguir, PublishTestResults@2 é executado mesmo se a etapa anterior falhou, devido à sua condição succeededOrFailed .
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.x'
architecture: 'x64'
- task: PublishTestResults@2
inputs:
testResultsFiles: "**/TEST-*.xml"
condition: succeededOrFailed()
Continuar com o erro
A continueOnError propriedade informa à tarefa se deve continuar a execução e relatar o sucesso, independentemente das falhas. Se definido como true, essa propriedade informa à tarefa para ignorar um failed status e continuar a execução. As etapas e trabalhos a jusante tratam o resultado da tarefa como success quando tomam suas decisões de execução.
Ativado(a)
Por padrão, a tarefa é executada sempre que o trabalho é executado. Você pode definir enabled como false para desativar a tarefa. A desativação temporária da tarefa é útil para removê-la do processo para fins de teste ou para implantações específicas.
Contar novas tentativas com falha na tarefa
A retryCountOnTaskFailure propriedade especifica o número de vezes que a tarefa será repetida se ela falhar. O padrão é zero tentativas.
- O número máximo de tentativas permitidas é 10.
- O tempo de espera antes de tentar novamente aumenta após cada tentativa falhada, seguindo uma estratégia de recuo exponencial. A primeira tentativa acontece após 1 segundo, a segunda após 4 segundos e a décima após 100 segundos.
- Repetir a tarefa não fornece idempotência. Os efeitos colaterais da primeira tentativa, como a criação parcial de um recurso externo, podem fazer com que as tentativas falhem.
- Nenhuma informação sobre o número de novas tentativas é disponibilizada para a tarefa.
- A falha da tarefa adiciona um aviso aos logs de tarefas indicando que ela falhou antes de tentar novamente a tarefa.
- Todas as tentativas de repetição são exibidas na interface do usuário como parte do mesmo nó de tarefa.
Nota
A retryCountOnTaskFailure propriedade requer a versão do agente 2.194.0 ou posterior. No Azure DevOps Server 2022, não há suporte para novas tentativas para tarefas sem agente. Para obter mais informações, consulte Atualização do serviço Azure DevOps 16 de novembro de 2021 - Repetições automáticas para uma tarefa e Atualização do serviço Azure DevOps 14 de junho de 2025 - Repetições para tarefas do servidor.
Target
As tarefas são executadas em um contexto de execução, que é o host do agente ou um contêiner. Uma tarefa pode substituir seu contexto especificando um targetarquivo . As opções disponíveis são host direcionar o agente, o host e todos os contêineres definidos no pipeline. No exemplo a seguir, SampleTask@1 é executado no host e AnotherTask@1 executado em um contêiner.
resources:
containers:
- container: pycontainer
image: python:3.11
steps:
- task: SampleTask@1
target: host
- task: AnotherTask@1
target: pycontainer
Limite de tempo excedido
O período de tempo limite começa quando a tarefa começa a ser executada e não inclui o tempo em que a tarefa está enfileirada ou aguardando um agente.
Nota
Os pipelines podem especificar um tempo limite de nível de trabalho, além de um tempo limite de nível de tarefa. Se o intervalo de tempo limite do nível do trabalho decorrer antes da conclusão de uma tarefa, o trabalho em execução será encerrado, mesmo que a tarefa esteja configurada com um intervalo de tempo limite maior. Para obter mais informações, consulte Tempos limites.
Variáveis de ambiente
Você pode usar variáveis de ambiente para mapear informações definidas pelo sistema ou pelo usuário no processo de tarefa.
Uma tarefa de pipeline YAML pode especificar uma env propriedade, que lista cadeias de caracteres de nome/valor que representam variáveis de ambiente.
- task: AzureCLI@2
env:
ENV_VARIABLE_NAME: value
ENV_VARIABLE_NAME2: value
...
Você pode definir variáveis de ambiente usando script etapas ou scripts em tarefas de linha de comando, Bash ou PowerShell.
O exemplo a seguir executa uma script etapa que atribui um valor à ENV_VARIABLE_NAME variável de ambiente e ecoa o valor.
- script: echo "This is " $ENV_VARIABLE_NAME
env:
ENV_VARIABLE_NAME: value
displayName: 'echo environment variable'
O script anterior é funcionalmente o mesmo que executar uma tarefa Bash@3 com uma script entrada. O exemplo a seguir usa a task sintaxe.
- task: Bash@3
inputs:
script: echo "This is " $ENV_VARIABLE_NAME
env:
ENV_VARIABLE_NAME: value
displayName: 'echo environment variable'
Tarefas do instalador da ferramenta de compilação
As tarefas do instalador da ferramenta de compilação permitem que seu pipeline de compilação instale e controle dependências. Você pode usar as tarefas do instalador da ferramenta de compilação para:
- Instale uma ferramenta ou tempo de execução para uma compilação, inclusive em agentes hospedados pela Microsoft.
- Valide seu aplicativo ou biblioteca em relação a várias versões de uma dependência, como Node.js.
Para obter uma lista de tarefas do instalador de ferramentas, consulte Tarefas de ferramentas.
Exemplo: testar e validar um aplicativo em várias versões do Node.js
O exemplo a seguir configura um pipeline de compilação para executar e validar um aplicativo em várias versões do Node.js.
Crie um arquivo azure-pipelines.yml que tenha o seguinte conteúdo no diretório base do seu projeto.
pool:
vmImage: 'windows-latest'
jobs:
- job: NodeJS
strategy:
matrix:
node14:
nodeVersion: '14.x'
node16:
nodeVersion: '16.x'
maxParallel: 2
steps:
- task: NodeTool@0
displayName: 'Install Node.js $(nodeVersion)'
inputs:
versionSpec: '$(nodeVersion)'
checkLatest: true
- script: |
echo Using Node version $(nodeVersion)
node --version
displayName: 'Verify Node Installation'
Salve e execute o pipeline. O trabalho é executado duas vezes, uma para cada versão do Node.js especificado na nodeVersion variável.
O Node.js Tool Installer baixa a versão Node.js se ela ainda não estiver no agente. O script de linha de comando grava a versão instalada na linha de comando.
Conteúdo relacionado
Ajuda e suporte
- Explore as dicas de solução de problemas.
- Obtenha conselhos sobre Stack Overflow.
- Publique suas perguntas, procure respostas ou sugira um recurso na Comunidade de Desenvolvedores do Azure DevOps.
- Obtenha suporte para o Azure DevOps.