Всем привет,
Многие из нас имеют эту проблему развертывания нашего github repo к машинам EC2 или капель цифрового океана или и т. Д. Мы можем автоматизировать этот процесс, запустив простой скрипт веб -ook на нашей машине.
Давайте начнем !
const secret = "secret-from-github";
const repo = "path-to-repo-on-machine(eg ~/react-project)";
const http = require('http');
const crypto = require('crypto');
const exec = require('child_process').exec;
const child = require('child_process');
http.createServer(function (req, res) {
let data= []
req.on('data', function(chunk) {
data.push(chunk);
});
req.on('end', () => {
let sig = "sha1=" + crypto.createHmac('sha1', secret).update(data.toString()).digest('hex');
if (req.headers['x-hub-signature'] == sig) {
if(JSON.parse(data).ref==='refs/heads/master'){
console.log('Deploying commit - ',JSON.parse(data).head_commit.message)
exec('cd ' + repo + ' && git pull origin master && npm install && npm run build && pm2 start npm -- start');
}
}
})
res.end();
}).listen(8080);
- Этот скрипт сначала генерирует сигнатуру SHA с использованием секрета и проверки запроса.
- Если подпись запроса соответствует нашей генерированной подписи, то мы наш анализируем полезную нагрузку JSON.
- В этом скрипте мы получаем все события, которые генерируются на нашем GitHub Refo, как Commit, Pull Project, Merge.
- У меня есть разрабатывать ветку и мастер-филиал.
- Я запускаю сборку, когда событие возникает на главной ветке.
Если (JSON.PARSE (данные) .REF === 'Refs/heads/master')
- Когда у нас есть мероприятие слияния на нашу главную ветвь, он сначала пойдет в ваш каталог на сервере и запустить
👉🏻 Git Pull Origin Master
👉🏻 Установка NPM
👉🏻 NPM Run. строить
👉🏻 Пуск PM2 [PM2 – это менеджер процессов для NODEJS. Вы можете заменить его начать NPM также]
ПРИМЕЧАНИЕ: Git Pult будет запрашивать имя пользователя и пароль. Подсказка не должна приходить вот нашим мотивом здесь. Вам нужно либо использовать SSH или использовать Git Config Complential.Helper Store Отказ Проверь это здесь . Я использую хранилище учетных данных, так как я являюсь единственным доступом к этому серверу.
Теперь запустите скрипт, используя узел или PM2.
Если вы используете NGINX, создайте прокси-прокси для него. Вам просто нужно открыть порт 8080 для связи.
- NGINX – лучший вариант, поскольку вы можете назначить ему поддоменность, а также сертификат SSL.
- Перейти к настройке 👉🏻 WebHooks.
- После добавления веб-капуста отредактируйте его и включите SSL для лучшей безопасности.
Вот и все . Вы сделали 🎉.
Вы можете найти меня на других платформах 👇
Я использую этот метод в моем последнем проекте https://ismy.institute/
Мы также участвуем в YC SUS2020.
Оригинал: “https://dev.to/amitchambial/autodeploy-your-projects-using-github-webhooks-p7o”