Closed felipesouza91 closed 2 months ago
Fix CI/CD para realizar o build do projeto e criar uma imagem Docker da api. Para o Script do Github Action funcionar corretamente necessário adicionar as secrets abaixo:
Secrets são necessárias para rodar os testes de integração do projeto:
WEBHOOK_SECRET CLERK_JWT_SECRET_KEY SECRET_KEY_SESSION MONGO_URI DATABASE_URL DATABASE_TEST_URL
Secrets de push do Docker Hub:
DOCKERHUB_USERNAME DOCKERHUB_TOKEN
* Antes de fazer o merge necessário adicionar as Secrests, pois caso contrario o CI/CD ira falhar.
Secrets já adicionadas, somente as do docker faltando, e como alinhado, serão criadas na conta de back end do projeto por questões de dados sensíveis
@htamagnus e @emerson-oliveira , o fluxo já está pronto. Preciso que seja mergeada na Dev, para poder rodar o primeiro pipeline e gerar a primeira imagem. Após gerada eu precisão alterara o nome da imagem no servidor. Se eu alterar o nome antes, como ele roda uma check para atualizar ele vai quebrar pelo fato da imagem ainda não existir no Docker hub.
@felipesouza91 Acho que poderíamos melhorar um pouco mais o workflow:
Seria uma boa prática separar o CI do lint, dos testes e do deploy em workflows distintos por algumas razões:
A principal vantagem é a execução independente: separando lint, testes e deploy, a gente pode rodar apenas a parte necessária quando ocorrer uma mudança. Testes, lint e deploy não precisam esperar uns pelos outros, podendo rodar ao mesmo tempo em diferentes jobs.
Sugestão:
lint.yml:
name: Lint Code
on:
pull_request:
branches:
- dev
- main
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout git files
uses: actions/checkout@v3
- name: Use Node.js Version 20.X
uses: actions/setup-node@v4
with:
node-version: '20.x'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Run lint
run: npm run lint
test.yml:
name: Run Tests
on:
push:
branches:
- dev
- main
pull_request:
branches:
- dev
- main
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout git files
uses: actions/checkout@v3
- name: Run docker-compose
uses: hoverkraft-tech/compose-action@v2.0.1
with:
up-flags: "-d"
compose-file: "./docker/docker-compose-test.yml"
- name: Use Node.js Version 20.X
uses: actions/setup-node@v4
with:
node-version: '20.x'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm run test:ci
env:
WEBHOOK_SECRET: ${{ secrets.WEBHOOK_SECRET }}
CLERK_JWT_SECRET_KEY: ${{ secrets.CLERK_JWT_SECRET_KEY}}
SECRET_KEY_SESSION: ${{secrets.SECRET_KEY_SESSION}}
MONGO_URI: ${{secrets.MONGO_URI}}
DATABASE_URL: ${{secrets.DATABASE_URL}}
DATABASE_TEST_URL: ${{secrets.DATABASE_TEST_URL}}
PORT: 3000
deploy.yml:
name: Build and Deploy
on:
push:
branches:
- main
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout git files
uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- uses: benjlevesque/short-sha@v3.0
id: short-sha
with:
length: 7
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v6
with:
context: .
platforms: linux/amd64,linux/arm64
push: true
tags: ${{secrets.DOCKERHUB_USERNAME}}/temvagamestreapi:${{steps.short-sha.outputs.sha}},${{secrets.DOCKERHUB_USERNAME}}/temvagamestreapi:latest
@htamagnus @emerson-oliveira, Boa noite, feito os ajustes.
Desculpa a demora, acabou passando e eu esqueci. Quando passar mais de um dia e eu não tiver feito o review, pode me dar um toque no discord @felipesouza91
Fix CI/CD para realizar o build do projeto e criar uma imagem Docker da api. Para o Script do Github Action funcionar corretamente necessário adicionar as secrets abaixo:
Secrets são necessárias para rodar os testes de integração do projeto:
WEBHOOK_SECRET CLERK_JWT_SECRET_KEY SECRET_KEY_SESSION MONGO_URI DATABASE_URL DATABASE_TEST_URL
Secrets de push do Docker Hub:
DOCKERHUB_USERNAME DOCKERHUB_TOKEN