Недавно случайно приобрел доменное имя и сервер, не использовать его действительно жалко, кроме того, у меня никогда не было своего личного сайта, поэтому я планирую использовать hexo для игры на сервере, чтобы не не нужно беспокоиться об использовании страниц Github или страниц Gitee. Конечно, сегодняшняя тема не о создании блога, а о том, как использовать хуки Github для развертывания кода блога на сервере.
Ведь у гитхабовских хуков долгая история, а в интернете много опенсорсных проектов, которые можно использовать, поэтому я не стал строить колесо, а пошел на 5К звездный опенсорсный проект Gowebhook
, функция этого инструмента состоит в том, чтобы получить уведомление об изменении репозитория Github, а затем вызвать настроенный вами сценарий оболочки.Сценарий может писать команды извлечения кода или операции компиляции и т. д., в зависимости от индивидуальных потребностей. Короче говоря, он просто подтягивает Github к вашему серверу.
установка инструмента вебхука
Поскольку веб-перехватчик разработан на языке Go, сначала необходимо установить язык Go.
yum install -y golang
Затем вы можете установить вебхук с помощью команды go.
go get github.com/adnanh/webhook
Доступ к месту установки команды можно получить черезgo env
Проверьте, GOPATH — это путь установки команды, например, моя команда установлена в /root/go/bin/webhook.
go env
...
GOOS="linux"
GOPATH="/root/go"
...
сгенерировать ssh-ключ
Перед написанием скрипта убедитесь, что у сервера есть разрешение на получение кода github.Если вы уже настроили его, вы можете пропустить этот раздел, чтобы увидетьСкрипты развертывания. Ключ ssh – это идентификатор платформы, на которой размещается код (github, gitee, coding, gitlab и т. д.), чтобы определить, имеете ли вы право извлекать код. Для его создания требуется всего одна строка команды и возврат каретки.
ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:M6sCf/J/hOu3zLxMkFUVmv3iWIa30CfbxiWqmWCt1YE root@iZwz96y36tk2ecnykzituxZ
The key's randomart image is:
+---[RSA 2048]----+
| ..o. |
| . o |
| . o |
| . o . |
| E S. . |
| . . ..Oo .. |
| oo o ==Boo . |
| .++.+o#== . |
| .=*+=+@o |
+----[SHA256]-----+
может быть сгенерированоcat ~/.ssh/id_rsa.pub
Проверьте команду, и, наконец, добавьте ключ на github.Добавление не будет повторяться, пожалуйста, погуглите сами.
cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQHBAAABAQCv7LGVJUFdcLL+HZyRFTQIQCdre61Gch76lDVpmWSX9BGGRU3iQS7EU5qApFn1VSvt+yf4rMt2LEkuxGCm1wIyBKZ6LYDViZBeTAfx4BcM1mcpxOX6I/+r07mQ4llTz+poQB1Zp9Y60uk0tbGOVWlCoDBEvf9qeEnQ0qEczEkv7wcawV6pVhlXjFKZgq0EOQbCYoWMvPUl+dwDbTcl/h+7At1nlgfF7IuRHlKf18qvgnTRT2wpiuz4pWdoAi8LcY1JiR1z5OB0oCJ2euhyDND39G2NxZRS1FIVdgCEvioHtdoHOSoWBlcSj0fLFSnscBfRBrCd7yhOP7fFKfrowHMj root@iZwz96y36tk2ecnykzituxZ
Скрипты развертывания
Основная цель этого шелл-скрипта – извлечь код из github.Содержимое скрипта очень простое.В нем делается только краткая оценка каталога.Если каталог с кодом существует, он будет обновлен.Если он не существует , склад будет клонирован. Пожалуйста, замените рабочий каталог и название и адрес склада на свои. .
#!/bin/bash
cd /home/www/website
if [ ! -d "go-home" ]; then
git clone https://github.com/pingyeaa/go-home.git
fi
cd go-home
git pull
настройка и запуск вебхука
Напишите файл конфигурации hooks.json в следующем формате.
[
{
"id": "deploy-webhook",
"execute-command": "deploy.sh",
"command-working-directory": "/home"
}
]
- id: идентификатор хука, настраиваемый
- execute-command: имя сценария, который должен быть выполнен, — это только что написанный сценарий развертывания.
- command-working-directory: каталог, в котором находится скрипт
После завершения запускаем его через команду webhook.Вы видите, что конфигурация с id deploy-webhook загружена.На что нам нужно обратить внимание, так это на прослушивающий порт и путь, который будет использоваться позже.
/root/go/bin/webhook -hooks hooks.json -verbose
[webhook] 2020/04/22 15:18:22 version 2.6.11 starting
[webhook] 2020/04/22 15:18:22 setting up os signal watcher
[webhook] 2020/04/22 15:18:22 attempting to load hooks from hooks.json
[webhook] 2020/04/22 15:18:22 found 1 hook(s) in file
[webhook] 2020/04/22 15:18:22 loaded: deploy-webhook
[webhook] 2020/04/22 15:18:22 serving hooks on http://0.0.0.0:9000/hooks/{id}
[webhook] 2020/04/22 15:18:22 os signal watcher ready
http://0.0.0.0:9000/hooks/{id}
Конфигурация веб-хуков Github
Теперь, когда сервер запустил программу веб-перехватчика для прослушивания порта 9000, вам нужно только сообщить Github этот адрес и порт.
Откройте страницу настроек репозитория и добавьте веб-хук.
Настройте веб-перехватчики, Payload URL — это адрес для уведомления, просто заполните только что напечатанный порт и путь, остальные — по умолчанию.
Теперь вы можете отправить код на тестирование, в случае неудачи пуша будет сообщение об ошибке в Github.Также успех можно не только увидеть в Github, но и зафиксировать в журнале печати сервера.
Меня зовут Пинг Йе, это проект с открытым исходным кодом, ориентированный на развитие технологии Gopher."иди домой"
Спасибо за просмотр.Если вы считаете, что статья была вам полезна, обратите внимание на паблик-аккаунт "Pingye", посвященный языку Go и техническим принципам.