Angular: Configurando Build no Azure Devops

Para uma aplicação Angular, configurar um pipeline de build no Azure DevOps pode parecer fora de moda, mas não quando você ama automatizar tudo pela frente 🙂

Angular: Configurando Build no Azure Devops

Além da diversão de criar artigos e ajudar a comunidade de desenvolvedores, meu blog é quase uma documentação pública de processos e código fonte.

Se eu preciso de alguma coisa, primeiro vou até meu blog e depois vou em outros sites.

A documentação de hoje (ou melhor artigo rss) é sobre configurar um pipeline de build para uma aplicação Angular no Azure DevOps da Microsoft.

Benchmark: ASP.NET 4.8 vs ASP.NET CORE 3.1


# Código fonte Angular

O foco aqui não é o código da aplicação Angular, e sim o build no Azure DevOps.

Antes de mais nada, queria agradecer ao Lucas Juliano por criar esse fonte que será usado como base para configurar o pipeline de build.

O código fonte ficou assim e está disponível no github para download:

Angular: Configurando Build no Azure Devops

Quando desenvolvemos uma aplicação Angular, utilizamos o TypeScript para isso, e conforme vamos salvando os arquivos, automaticamente o TypeScript é convertido em Javascript.

Se a aplicação tiver muitos componentes, cada um deles é gerado um arquivo Javascript, e isso não estou falando dos arquivos de rotas, módulos, diretivas e outros arquivos TypeScript.

A ideia é quando a aplicação estiver em produção, todos esses componentes gerados em Javascript, estejam em um arquivo só (ou um arquivo por módulo), e totalmente minificados.

Existem vários processos hoje em dia para fazer a concatenação e minificação de arquivos Javascript. Se você é um desenvolvedor ASP.NET, deve conhecer o Bundles, que faz justamente isso.

Além de minificar os arquivos Javascript, esse processo também será realizado para os arquivos CSS e HTML! 🙂


# O Build no Azure DevOps

Eu abandonei a palavra Tutorial para esse artigo sobre o build de Angular, mas escrevi alguns a respeito do Azure DevOps e seus pipelines de automação, são eles:

Tutorial: Controle seu Código Fonte de Graça com GIT e Azure DevOps
Tutorial: Criando um Pacote NuGet e Publicando no Azure DevOps
Tutorial: Continuous Integration de Pacote NuGet no Azure DevOps

Quando recebi o código fonte do Lucas Juliano, criei um projeto FSL.AngularBuid no Azure DevOps usando GIT.

Angular: Configurando Build no Azure Devops

Configurei o build Angular diretamente na branch master, porém, o correto é criar uma branch específica para isso e usar o Pull Request para fazer entrega.

No artigo Tutorial: Continuous Integration de Pacote NuGet no Azure DevOps demonstro como fazer isso.

No menu Pipelines / Build, clique no botão New pipeline:

Angular: Configurando Build no Azure Devops

Clique em Use the classic editor:

Angular: Configurando Build no Azure Devops

Escolha Azure Repos Git e clique em Continue:

Angular: Configurando Build no Azure Devops

Selecione o template Empty job:

Angular: Configurando Build no Azure Devops

Na tela do build, é onde adicionaremos todas as tarefas para fazer a compiliação da aplicação Angular.

Em Agent job 1, clique no botão +, na busca digite Node.js tool installer e clique no botão Add:

Angular: Configurando Build no Azure Devops

Angular: Configurando Build no Azure Devops

Faça o mesmo só que procure por Nuget tool installer:

Angular: Configurando Build no Azure Devops

Agora procure por npm para o comando npm install:

Angular: Configurando Build no Azure Devops

Angular: Configurando Build no Azure Devops

Em seguida adicione mais uma npm para o comando npm build angular:

Angular: Configurando Build no Azure Devops

Angular: Configurando Build no Azure Devops

O comando RUN BUILD, quer dizer BUILD é o nome de uma task dentro do arquivo package.JSON.

ng build --prod --build-optimizer --named-chunks=true --output-path=bundles --deploy-url=bundles/

Adicione agora a tarefa Archive files para compactar os arquivos que serão minificados:

Angular: Configurando Build no Azure Devops

Angular: Configurando Build no Azure Devops

Por fim, adiciona a tarefa Publish build artifacts, que guardará os arquivos minificados para serem publicados:

Angular: Configurando Build no Azure Devops

Depois basta clicar no botão superior Save and Queue para fazer uma nova compilação.

Ao final, todas as tarefas aparecerão concluídas assim:

Angular: Configurando Build no Azure Devops

E no menu superior Artifacts, é possível baixar o arquivo angular_bunbles.zip, resultado do build com os arquivos minificados.

Angular: Configurando Build no Azure Devops


# Continuous Integration

Para fazer a automação do build, ou seja, iniciar o build toda vez que uma determinada branch for atualizada, basta fazer a seguinte configuração:

Angular: Configurando Build no Azure Devops

Em Triggers, habilite a opção Enable continous integration e escolha a branch correspondente.

Nesse caso, esse build Angular será iniciado quando a branch master for atualizada.


# Considerações finais

Esse nosso processo de build Angular está sendo utilizado à dois anos e o único erro que encontramos foi na mudança da versão do NodeJS.

Antigamente não tinhamos a task que forçava a versão do NodeJS, então, algo mudou no Azure DevOps fazendo com que nossos builds parassem de funcionar, por isso a necessidade de forçar uma determinada versão.

E aí, você tem um build Angular diferente desse?

Compartilha aí com a gente!

Obrigado e até a próxima 🙂

Faça download completo do código fonte no github.
Sobre o Autor:
Trabalha como arquiteto de soluções e desenvolvedor, tem mais de 18 anos de experiência em desenvolvimento de software em diversas plataformas sendo mais de 16 anos somente para o mercado de seguros.
Revisado por:
Paulistano, 21 anos apaixonado por tecnologia, trabalho com desenvolvimento de software atuando com .NET / Xamarin / AngularJS / ASP.NET CORE / MVC.