Рубрики
Без рубрики

AutoDeo Уменьшает ваши проекты, использующие GitHub WebHooks

Всем привет, Многие из нас обладают этой проблемой развертывания нашего GitHub Reppo к машинам EC2 или цифровой OC … Tagged Github, AWS, Node, JavaScript.

Всем привет,

Многие из нас имеют эту проблему развертывания нашего 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.
  1. Перейти к настройке 👉🏻 WebHooks.
  2. После добавления веб-капуста отредактируйте его и включите SSL для лучшей безопасности.

Вот и все . Вы сделали 🎉.

Вы можете найти меня на других платформах 👇

Я использую этот метод в моем последнем проекте https://ismy.institute/

Мы также участвуем в YC SUS2020.

Оригинал: “https://dev.to/amitchambial/autodeploy-your-projects-using-github-webhooks-p7o”