🎓 Curso: NextJS: CI e CD para Front-end com o Github Actions
🗒️ Events that trigger workflows
-
CI (Continuous Integration): está relacionado às etapas de commit, build e testes da aplicação, ou seja, tarefas do dia a dia do dev;
-
CD (Continuous Delivery): está relacionado às etapas de release e deploy, ou seja, às entregas do projeto.
São processos de automatização de um projeto.
Para o CD usando a Vercel, são necessários alguns passos. O curso mostrou detalhadamente uma forma, mas já é antiga e algumas coisas mudaram.
Deixo abaixo os links para referência (em inglês) de como é feito hoje em dia, e mais abaixo os scrips criados no package.json
e o arquivo yml utilizado para o workflow:
-
Instalação da Vercel CLI: necessária para criar os tokens VERCEL_ORG_ID e VERCEL_PROJECT_ID.
- uma alternativa é usar o comando
npx vercel link
na pasta do projeto. Quando rodar a primeira vez, dois passos adicionais irão ocorrer: 1. Irá instalar o pacote da Vercel e 2. Irá logar na sua conta Vercel. Após isso, o comando irá rodar e fazer algumas perguntas para configuração do link (é como seu projeto local é linkado com o projeto hospedado na Vercel). Finalizado, será criada a pasta.vercel
e dentro dela você encontrará oprojectId
eorgId
no arquivoproject.json
. Essa pasta é automaticamente adicionada ao gitignore. NÃO compartilhe essa pasta nem os valores dos tokens para evitar acesso indevido ao seu projeto.
- uma alternativa é usar o comando
-
Criação de secrets no GitHub: é aqui que você vai guardar os tokens gerados.
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint",
"lint:fix": "next lint --fix",
"deploy:prod": "npm run build && vercel --yes --prod --token=$VERCEL_TOKEN"
}
name: 'CD: Main Workflow'
# variáveis de ambiente
# (salvas no GitHub secrets)
env:
VERCEL_TOKEN: '${{ secrets.VERCEL_TOKEN }}'
VERCEL_ORG_ID: '${{ secrets.VERCEL_ORG_ID }}'
VERCEL_PROJECT_ID: '${{ secrets.VERCEL_PROJECT_ID }}'
# quando a action deve ser acionada
on:
push:
branches: [main, cd-vercel]
# o que deve ser executado
jobs:
deploy: # nome deste job
runs-on: ubuntu-latest
# use - para indicar uma lista de passos
steps:
- uses: actions/checkout@v3
- name: Run Install
run: npm install
- name: Run Deploy
run: npm run deploy:prod