Хостинг статического сайта

Статические сайты пользуются большой популярностью, т.к. обладают определенными преимуществами по сравнению с CMS

Чтобы публикация статического сайта не вызывала страдания, надо как можно лучше автоматизировать этот процесс. Рассмотрим связку: Bitbucket → Tagy → Codeship → Github.

Генерация статического сайта

Я использую Tagy. Он очень гибкий, а также обладает удобными встроенными плагинами для картинок и т.п. Для сборки требуется одна команда

./tagy.py -b

, или из python

#!/usr/bin/env python
import tagy
tagy.generate()

Исходный код сайта (страницы, картинки, файлы) хранится в системе контроля версий Bitbucket.

Codeship static site

Текущий статус сборки Codeship Status for imelnikov/imelnikov.ru

Для публикации используется сервис CI Codeship. Он подключается к репозиторию в BibBucket или GitHub и после каждого коммита выполняет предписанные действия:

Codeship имеет бесплатные варианты аккаунтов. Регистрируем свой репозиторий https://codeship.com/projects/new и переходим в настройки.

Установка покетов

Setup command - скрипты для установки зависимостей

pip install tagy

Генерация сайта

Configure test pipline - скрипты самой сборки.

Публикация

На вкладке Deployment пишем что делать в случае успешной сборки. Я использую GitHub-Pages для хостинга, т.к. он проще всего настраивается и поддерживает доменные имена. Соответственно в скрипте пушим папку со сгенеренным сайтом в github. На вкладке 'General' есть поле 'SSH public key'. Добавляем этот ключ в настройках github-репозитория (Settings -> Deploy keys)

cd public/

git config --global user.email "<your email>"
git config --global user.name "<your name>"

git add .
git commit -m "$CI_MESSAGE"
git push --force git@github.com:melnikov-ivan/melnikov-ivan.github.io.git

Теперь сайт доступен по адресу melnikov-ivan.github.io.

Custom domain for GitHub pages

Для подключения доменного имени к github-pages надо: