Как автоматизировать создание и развертывание сайта Jekyll на веб-сервере через FTP

Мои файлы Jekyll хранятся в Bitbucket, и я хотел бы иметь возможность автоматически создавать папку _site при каждом новом вносимом изменении. (Обратите внимание, я не хочу отправлять свою папку _site в Git, об этом не может быть и речи.)

Как только этот _site будет сгенерирован, я хотел бы автоматически развернуть его на своем веб-сервере через FTP.

Это вообще возможно? Каковы мои варианты?


person jmak35    schedule 22.10.2015    source источник
comment
Примечание. Теперь (октябрь 2020 г.) у вас есть возможность использовать GitHub Actions.   -  person VonC    schedule 03.10.2020


Ответы (1)


Поскольку вы не упомянули, куда пойдет папка _site, вот общий ответ.

Короче говоря, вам понадобится веб-сервер или служба, которая прослушивает перехватчик Bitbucket Post Commit Hook. Вот соответствующая документация для этого.

Таким образом, при каждом нажатии Bitbucket будет запускать действие и уведомлять ваш сервер/приложение/службу, которые затем будут создавать новый _site и развертывать его там, где вы хотите.

Вот хороший учебник по его настройке с использованием заданий cron и веб-сервера. Ссылка.

Подойдет также простой VPS или небольшой экземпляр Amazon EC/виртуальная машина Azure.

Конечно, они, скорее всего, не будут на 100 % бесплатными.

Если вы ненавидите серверы, воспользуйтесь службой непрерывной интеграции (CI). вместо этого можно использовать, когда при фиксации хуки запускают сборку,

Travis-CI и Drone.io бесплатны для общедоступных репозиториев, но если ваш репозиторий частный, вам придется воспользоваться платной услугой. Есть и много других.

(Обратите внимание, что на момент написания статьи Travis-CI несовместим с Bitbucket. Он работает с GitHub.)

В основном CI используется для запуска тестов, но помимо этого мы можем использовать его для создания сборки и отправки или копирования _site куда-нибудь, может быть, на ваш собственный сервер. Или в случае, как это описано в этой статье, другой репозиторий. (Прочитайте "Стать богом Джекила" на некоторые творческие способы развертывания.)

person matrixanomaly    schedule 22.10.2015
comment
Спасибо за отличный ответ matrixanomaly! Содержимое моей папки _site попадет в мою папку public_html на моем веб-сервере. Моя проблема на данный момент заключается в том, что у меня нет root-доступа к веб-серверу, потому что это виртуальный хостинг, поэтому я не могу на самом деле прослушать там хук post commit. Мое намерение состояло в том, чтобы использовать отдельный VPS, который прослушивал бы хук post commit, создавал _site на VPS, а затем передавал его по FTP на мой веб-сервер. Является ли ссылка, которую вы предоставляете относительно заданий cron и flask, все еще действительна для этого? - person jmak35; 23.10.2015
comment
@ jmak35 jmak35 ну, я не понимаю, почему это не сработает, если вы можете получить отдельный VPS, который может прослушивать сборку перехватчиков и выполнять FTP для вашего веб-сервера, это должно работать. Однако я никогда не делал подобных настроек, поэтому я не могу ничего гарантировать, поэтому лучше всего попробовать и написать об этом пост: P Задания Cron и сценарии оболочки тоже могут работать! (Редактировать: или вы можете переместить свой исходный код jekyll на страницы github и использовать travis ci для подключения, частный тоже работает, если вы готовы платить) - person matrixanomaly; 23.10.2015
comment
Вот руководство по маршруту сборки travis: ellismichael.com/technical/2015/06/12/ - person matrixanomaly; 23.10.2015
comment
Спасибо, @matrixanomaly, я не очень хороший администратор, поэтому я не совсем уверен в настройке VPS. Но я попробую. Как только дистрибутив Linux установлен, я просто не знаю, что еще мне нужно установить, чтобы он заработал... например, безопасность и все остальное, что мне может понадобиться. - person jmak35; 24.10.2015
comment
@ jmak35 Я бы порекомендовал вам использовать страницы github, маршрут travis, не нужно со всем этим иметь дело. - person matrixanomaly; 24.10.2015
comment
На самом деле я хочу использовать локальный хостинг, так как это намного быстрее, а клиенты моих клиентов все местные, поэтому имеет смысл размещать их веб-сайты на локальных серверах, поэтому я решил не размещать их на GitHub. Кроме того, у BitBucket есть бесплатные приватные репозитории, так что было несложно использовать их. Возможно ли иметь шаблоны Jekyll на GitHub, сгенерировать _site с помощью Travis CI, но затем вместо развертывания на GitHub может ли Travis CI выполнить развертывание на моем веб-сервере? - person jmak35; 24.10.2015
comment
@ jmak35 Я не пробовал, но это должно сработать, поскольку Трэвис просто выполняет скрипт для тестирования, вам просто нужно предоставить Трэвису доступ для отправки файлов на ваш веб-сервер. Может быть, задайте еще вопрос о travis ci, и кто-нибудь вам поможет, так как я не слишком знаком с этим. - person matrixanomaly; 25.10.2015