Criando Tasks Customizadas para Pipelines no Azure DevOps

Contexto/Desafio 📜

Solução 💡

Show me the Code! 💻

Ferramentas 🛠

Iniciando o projeto 🐱‍👤

  1. Crie o projeto:
  • groups: é a sessão que você define os grupos que terá na sua custom task. Dentro do grupo poderá ter N entradas de dados e você pode defini-lo. Ele seria como um accordion do bootstrap (para quem conhece bootstrap) e você consegue definir se esse agrupamento aparecerá expandido ou não. É preciso definir um nome, como se fosse um ID, e o nome de exibição o qual pode ser qualquer coisa.
  • inputs: é a sessão que iremos informar quais serão nossas entradas de dados. Conterá um tipo (string ou radio), se ela pertencerá a um grupo ou não, se ela será obrigatória ou não, qual o nome de apresentação, o label para descrição, qual será o valor padrão (caso tenha), e uma descrição de ajuda.
  • execution: nessa sessão definiremos qual engine que nossa custom task será executada e qual o arquivo será nosso startup. Além disso, pode conter alguns scripts customizados.

O desenvolvimento 👨‍💻👩‍💻

  • request: para consultarmos o JSON do swagger via requisição http;
  • fs: para podermos abrir/ler o arquivo JUnit;
  • xml2js/parser: para podermos “decifrar” o arquivo JUnit.xml, onde facilitará localizarmos as tags que serão necessitadas;
  • task: responsável por criar a task customizada. Com essa lib conseguiremos, por exemplo, ler os argumentos de entrada e lançar exceções.

Build e Deploy 🙌

  1. Crie /faça login na sua conta
  • publisher: é o ID que você informou ao criar o gerenciador de publicações.
  • categories: como estamos fazendo algo para o Azure DevOps e, especificamente, para as Pipelines, vamos informar isso.
  • branding: é a cor que você gostaria de expor na página da sua extensão no VS Market Place.
  • public: se sua extensão estará ou não visível.
  • tags: algumas palavras-chaves para que pessoas consigam achar a extensão mais facilmente e/ou ela aparecer nas pesquisas.
  • content.details: você pode colocar informações na página inicial e, para isso, você consegue apontar um arquivo e utilizar o Markdown para isso.
  • files.path: onde estará localizado o código .js da sua extensão
  • repository: isto é opcional, mas você pode colocar onde se encontra o código fonte da mesma para que mais pessoas usem ela como base e/ou contribuam com a evolução da task
  • contributions.properties.name: local onde está os arquivos .js.
  • Sempre certifique a versão que está no seu arquivo vss-manifest.json e task.json.
  • Você consegue publicar via linha de comando também, para ser um pouco menos moroso.
  • Você consegue avançar isso até para um CI/CD completamente automatizado, via GitHub Actions.

--

--

Bachelor in Computer Science, MBA in Software Architecture and .NET Developer.

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store