Jekyll no ACA
Para rodar o Jekyll no ACA, podemos usar o Azure DevOps Pipelines com uma estratégia de CI/CD e funciona muito bem. A Microsoft tem documentação oficial tanto para deploy em Azure Container Apps a partir do Azure Pipelines quanto para a task específica AzureContainerApps@1. (Microsoft Learn)
O desenho fica assim:
- Azure Repos guarda o código do Jekyll
- Azure Pipelines faz o build
- O pipeline gera a imagem Docker
- A imagem vai para o ACR
- O pipeline publica no ACA Esse é exatamente um dos fluxos suportados oficialmente. (Microsoft Learn)
Para o esse caso, a ideia é:
- Jekyll só para build
- nginx para servir o conteúdo estático
- ACA como runtime
Ou seja: nada de jekyll serve em produção, porque isso é servidor de desenvolvimento fantasiado de produção, aquele clássico estagiário de terno. O Jekyll gera a pasta _site, e o container final só entrega HTML/CSS/JS. Isso segue o modelo esperado do Jekyll e reduz bastante a complexidade. (Microsoft Learn)
Os pontos principais no Azure DevOps serão:
1. Service connection Você vai criar uma service connection do Azure Resource Manager no Azure DevOps para o pipeline autenticar na subscription. A documentação oficial do Azure DevOps mostra esse fluxo em Project settings > Service connections. (Microsoft Learn)
2. ACR O pipeline pode:
- buildar a imagem localmente no agente e fazer push para o ACR
- ou usar uma task própria de deploy para ACA, dependendo do fluxo escolhido O ACR é o registro privado natural para esse cenário. (Microsoft Learn)
3. ACA com permissão para puxar imagem O recomendado é o Container App usar managed identity com papel AcrPull no ACR, em vez de depender de usuário/senha do registry. A documentação do ACA para Azure Pipelines recomenda isso explicitamente. (Microsoft Learn)
4. Pipeline YAML Você pode seguir dois estilos:
- pipeline em uma peça só, que builda e deploya
- CI e CD separados, com mais controle
Para laboratório, vamos de uma peça só. Menos cerimônia, menos chance de tropeçar no próprio cadarço YAML.
5. Task de deploy A task AzureContainerApps@1 aceita cenários como:
- usar imagem já pronta
- buildar a partir de Dockerfile
- e publicar no Container App Isso encaixa bem no Jekyll containerizado. (Microsoft Learn)