Bem-vindo ao repositório do projeto PM2-CI-CD. Este projeto permite a criação de uma integração contínua e a implementação do pipeline entre o Github Webhooks e seu servidor linux. Este projeto foi projetado para ser simples, flexível e fácil de configurar.
Acesse o repositório que você deseja configurar o webhook.
Clique na aba 'Settings' (Configurações) no menu superior.
No menu lateral esquerdo, clique em 'Webhooks'.
No canto superior direito da página de webhooks, você encontrará a opção 'Add webhook'. Clique nela.
No campo 'Payload URL', você deve inserir a URL do seu servidor que receberá as solicitações POST. Aqui deverá ter uma URL pública (nginx) apontando para esta API na rota /webhook.
Escolha application/json
Cria uma chave secreta que você irá colocar no seu arquivo .env.
Você pode escolher receber eventos de 'Just the push event'.
Por fim, clique no botão 'Add webhook' na parte inferior da página. Pronto! Você configurou com sucesso um webhook no GitHub.
Para persistir a senha do Github no servidor:
- Clone o projeto.
- Realize um pull.
- Execute o seguinte comando:
git config credential.helper store
- Pronto, a senha ficará gravada para realizar o pull automático.
Crie um arquivo .env na raiz do projeto e preencha com os seguintes dados:
PORT=
WEBHOOK_SECRET=
- PORT: a porta na qual o servidor deve escutar.
- WEBHOOK_SECRET: sua chave secreta para a validação do webhook.
Você deve ter um arquivo repositories.json na raiz do seu projeto. Ele deve ser uma lista de repositórios com o seguinte formato:
[
{
"name": "nome-do-repositorio",
"commands": ["comando1", "comando2", "comando3"],
"cwd": "./",
"branches": ["main"],
"allowedPushers": ["[email protected]"],
"skipFlag": "FLAG"
}
]
- name: é o nome do repositório que você deseja monitorar.
- commands: são os comandos que você deseja executar após cada push no repositório.
- cwd: poderá definir a pasta na qual os scripts irão rodar.
- branches: os branches que deseja que o deploy seja aplicado.
- allowedPushers: é uma lista dos endereços de e-mail das pessoas que poderão realizar o auto-deploy.
- skipFlag: é uma string que, se encontrada no início da mensagem de commit, irá fazer com que o deploy seja ignorado para esse push.
Por exemplo, a seguinte configuração monitorará o repositório danilocanalle, permitirá pushs apenas de [email protected], executará os comandos ls, mkdir teste, dirrr após cada push, e ignorará o deploy se a mensagem de commit contiver [CI Skip]:
[
{
"name": "danilocanalle",
"commands": ["ls", "mkdir test"],
"branches": ["main"],
"allowedPushers": ["[email protected]"],
"skipFlag": "[CI Skip]"
}
]
Isso permite uma maior flexibilidade no controle do processo de deploy, pois agora você pode decidir se deseja ou não fazer o deploy de cada push individualmente.
Após cada operação, um arquivo log.txt será gerado na raiz da aplicação, contendo todos os logs de erros e sucessos. Ele pode ser usado para depuração e acompanhamento do estado dos eventos do webhook.
Para iniciar a aplicação, execute o seguinte comando:
pm2 start npm --name pm2-ci-cd -- run api