Created
November 30, 2018 15:19
-
-
Save superchell/9b118f3f4032f5bb8896bac9225bc446 to your computer and use it in GitHub Desktop.
настройка автодеплоя dokku с github для rails проекта
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
####### Установка сокета для связи контейнера проекта с Dokku ####### | |
установить dokku-daemon https://github.com/dokku/dokku-daemon | |
systemctl enable dokku-daemon | |
systemctl start dokku-daemon | |
примонтировать директорию с сокетом dokku-daemon к образу проекта. ВАЖНО! Монтировать необходимо в существующую директорию образа, несуществующий путь автоматически создаваться не будет | |
dokku storage:mount <project_name> '/var/run/dokku-daemon:<existing directory in project img>' | |
####### Установка плагина для клонирования репозитория в dokku-проект ###### | |
установить dokku clone - dokku plugin:install https://github.com/crisward/dokku-clone.git clone | |
скопировать содержимое (открытый ключ) /home/dokku/.ssh/id_rsa.pub | |
добавить открытый ключ в проект на гитхабе - https://github.com/<your_login>/<your_project>/settings/keys | |
####### Установка гема для обработки хуков с гитхаба ###### | |
https://github.com/ssaunier/github_webhook | |
# добавить в файл app/controllers/github_webhooks_controller.rb | |
class GithubWebhooksController < ActionController::Base | |
protect_from_forgery with: :null_session | |
include GithubWebhook::Processor | |
DEFAULT_SOCKET_PATH ="/<примонтированная директория образа dokku>/dokku-daemon.sock" | |
DOKKU_COMAND = 'clone nabaze [email protected]:<your_login>/<your_project>' | |
def github_push(payload) | |
socket = UNIXSocket.new(DEFAULT_SOCKET_PATH) | |
sleep(1) # Give socket 1 sec | |
logger.info "[CommandRunner] Sending the command" | |
socket.puts(DOKKU_COMAND) | |
logger.info "[CommandRunner] Waiting for the result" | |
while text_line = socket.gets | |
logger.info "[CommandRunner] #{text_line}" | |
end | |
socket.close | |
end | |
private | |
def webhook_secret(payload) | |
ENV['GITHUB_WEBHOOK_SECRET'] | |
end | |
end | |
# | |
####### Настроить вебхук гитхаба ###### | |
https://<your_login>/<your_project>/nabaze/settings/hooks/ | |
Payload URL https://<domain.com>/github_webhooks | |
Content type application/json | |
остальное по умолчанию | |
задать переменную среды ENV['GITHUB_WEBHOOK_SECRET'] для образа проекта | |
dokku config:set <your_project> GITHUB_WEBHOOK_SECRET=<GitHub Secret> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment