Aplicação Web Dockenizada, escrita em Python3 / Flask, utiliza Gunicorn como Web Server, CI-CD (Github Actions), Azure Web App, Azure Container Registry e IaC Terraform.
Criar esteira ci-cd no github- FeitoCriar Build (Docker)- FeitoCriar Deploy (Azure Web App)- Feito- Provisionar a Infra no Azure com Terraform
jobs:
build:
# Apenas executa build/deploy ao receber
# uma msg de commit que contenha. "[build]"
if: "contains(github.event.head_commit.message, '[build]')"
runs-on: ubuntu-latest
steps:
# Realiza checkout no repositorio remoto
- uses: actions/checkout@v2
# Cria uma imagem docker
- name: Build the Docker image
run: docker build . --file Dockerfile -t my-image-name:xwebapp -t xwebapp:${{ github.sha }}
# Realiza login no Azure Container registry - ACR
- name: ACR login azure
uses: azure/docker-login@v1
with:
login-server: pythonapp10.azurecr.io
username: ${{ env.REGISTRY_USERNAME }}
password: ${{ env.REGISTRY_PASSWORD }}
# Renomeia a tag para o formato do ACR
- run: docker tag xwebapp:${{ github.sha }} pythonapp10.azurecr.io/xwebapp:${{ github.sha }}
# Envia a imagem para o ACR
- run: docker push pythonapp10.azurecr.io/xwebapp:${{ github.sha }}
# realiza o deploy no ambiente de produção
deploy:
runs-on: ubuntu-latest
needs: build
environment:
name: 'Production'
url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}
steps:
# Realiza login no Azure Container registry - ACR
- name: 'Login via Azure CLI'
uses: azure/login@v1
with:
creds: ${{ env.AZURELOGIN }}
# Parametriza as credencias de login do ACR nas conf da Web App
- name: Set Web App ACR authentication
uses: Azure/appservice-settings@v1
with:
app-name: 'xwebapp'
app-settings-json: |
[
{
"name": "DOCKER_REGISTRY_SERVER_PASSWORD",
"value": "${{ env.REGISTRY_PASSWORD }}",
"slotSetting": false
},
{
"name": "DOCKER_REGISTRY_SERVER_URL",
"value": "pythonapp10.azurecr.io",
"slotSetting": false
},
{
"name": "DOCKER_REGISTRY_SERVER_USERNAME",
"value": "${{ env.REGISTRY_USERNAME }}",
"slotSetting": false
}
]
# Executa o deploy da app utilizando como origem o ACR
- name: 'Deploy to Azure Web App'
uses: azure/webapps-deploy@v2
with:
app-name: 'xwebapp'
images: 'pythonapp10.azurecr.io/xwebapp:${{ github.sha }}'
- name: Azure logout
run: |
az logout
https://xwebapp.azurewebsites.net/