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:

  1. Azure Repos guarda o código do Jekyll
  2. Azure Pipelines faz o build
  3. O pipeline gera a imagem Docker
  4. A imagem vai para o ACR
  5. 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)