Configuração de implantação automática de código com GitHub Actions - mvneves/codedeploy-example GitHub Wiki

Passo 1: Preparar um ambiente de implantação no serviço AWS CodeDeploy

Esse roteiro considera que já existe um ambiente de implantação previamente configurado no serviço AWS CodeDeploy. Caso ainda não tenha feito, seguir os passos do roteiro sobre CodeDeploy.

Passo 2: Prepara o repositório do GitHub

  1. Criar um fork do repositório https://github.com/mvneves/codedeploy-example usando sua conta no GitHub
  2. Criar um diretório .github/workflows/ na raiz do novo repostório
  3. Criar um arquivo .yml dentro do diretório .github/workflows/ (exemplo: .github/workflows/deploy-aws.yml) contendo o seguinte conteúdo:
name: deploy-aws
on: [push]

jobs:
    deploy:
        name: Deploy to AWS
        runs-on: ubuntu-latest
        steps:
            - name: Configure AWS credentials
              uses: aws-actions/configure-aws-credentials@v1
              with:
                  aws-access-key-id: ${{ secrets.ACCESS_KEY_ID }}
                  aws-secret-access-key: ${{ secrets.SECRET_ACCESS_KEY }}
                  aws-session-token: ${{ secrets.SESSION_TOKEN }}
                  aws-region: us-east-1

            - name: Checkout
              uses: actions/checkout@v2

            - name: Upload to S3
              run: |
                mkdir deployment
                rsync -Rr . deployment
                zip -r deployment.zip deployment
                aws s3 cp deployment.zip s3://${{ secrets.S3_BUCKET }}/

            - name: Create deployment
              run: |
                aws deploy create-deployment --application-name APPLICATION_NAME \
                    --deployment-config-name CodeDeployDefault.OneAtATime \
                    --deployment-group-name DEPLOYMENT_GROUP \
                    --s3-location bucket=${{ secrets.S3_BUCKET }},bundleType=zip,key=deployment.zip
  1. Trocar APPLICATION_NAME pelo nome da aplicação usado no serviço AWS CodeDeploy; trocar DEPLOYMENT_GROUP pelo nome do grupo de implantação usando no serviço AWS CodeDeploy.

Passo 3: Configurar as variáveis (secrets) de ambiente no GitHub

  1. Acessar a aba Settings e depois a opção Secrets no menu lateral
  2. Cadastrar as seguintes variáveis:
  • ACCESS_KEY_ID: valor da variável aws_access_key_id obtido na página do AWS Educate
  • SECRET_ACCESS_KEY: valor da variável aws_secret_access_key obtido na página do AWS Educate
  • SESSION_TOKEN: valor da variável aws_session_token obtido na página do AWS Educate
  • S3_BUCKET: nome do bucket no S3 usado para fazer o upload da aplicação

Passo 4: Testar a implantação automática

  1. Editar o arquivo hello.py e alterar a mensagem 'Hello, world"' para outra frase qualquer
  2. Commit e dar push na modificação
  3. Acessar a aba Actions do repositório e verificar o estado do job
  4. Caso o job tenha sido concluído com sucesso no passo anterior, verifique se a aplicação subiu com sucesso (acessar o IP público da máquina virtual pelo browser usando a porta 8080

Pronto! Se tudo funcionou corretamente, a partir de agora a aplicação será implantada automaticamente após cada push recebido no repositório.

⚠️ **GitHub.com Fallback** ⚠️