В одном из прошлых постов речь шла о локальной сборке блога на основе Jekyll, а так же о ‘встроенной’ сборке в самом репозиторий на Github Pages. В этот раз я хотел бы рассмотреть возможность автоматический сборки и деплоймента блога используя сервис Continious Integration - Travis CI.

Первый возникающий вопрос: что нам это дает?

  • Во-первых появится возможность использовать любые дополнительные плагины, которые в целях безопасности не могут быть использованы при обычной сборке GitHub Pages.
  • Во-вторых мы все ещё можем пользоваться онлайн сервисами для написания и редактирования постов, вроде prose.io или forestry.io.
  • И в третьих данный подход позволит соблюдать, на мой взгляд, правильную структуру, такую же как и при локальном build’е. В master-branch у нас будут находиться “исходники” блога вместе с конфигурацией, а в branch’е “gh-pages” будет храниться сгенерированная версия блога, которая и будет использоваться для отображения.

Теперь рассмотрим конкретный пример. Для этого возьмём симпатичную темку (клон сервиса Ghost) под названием jasper2.

  1. Fork’аем репозиторий с темой: https://github.com/jekyller/jasper2
  2. Сгенерируем токен на гитхабе, который будем использовать на Travis CI для доступа к нашему репозиторию с темой. Переходим на страницу - Generate Tokens и нажимаем на “Generate new token”. На открывшейся страничке ставим галочку напротив Repo, подтверждаем и копируем сгенерированный ключ.

  3. Переходим на travis-ci и если у вас нет аккаунта, то регистрируемся с помощью своего Github-аккаунта. Теперь переходим в настройки и активируем build для нашего репозитория. Там же в настройках создаём новую Environment Variable, присваиваем ей имя GITHUB_TOKEN и вставляем скопированный токен в значение переменной.

  4. Переходим обратно в наш репозиторий с темой jasper2, открываем/создаём файл .travis.yml и вставляем в него следующее содержание:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
   language: ruby
   cache: bundler
   branches:
   only:
    - master

   script:
    - JEKYLL_ENV=production bundle exec jekyll build --destination site

   deploy:
      provider: pages
      local-dir: ./site
      target-branch: gh-pages
      email: deploy@travis-ci.org
      name: Deployment Bot
      skip-cleanup: true
      github-token: $GITHUB_TOKEN
      keep-history: true
   on:
   branch: master
   
  1. В последнем шаге осталось зайти в настройки репозитория и активировать Github Pages, указав branch gh-pages в качестве источника.

На этом всё. Теперь после каждого коммита Travis CI будет запускать процесс сборки и делать push собранной версий блога в ветку gh-pages. Если перейти на страницу с коммитами на гитхабе, можно увидеть иконку статуса сборки.

Опубликовано
Подробнее

ArtsLab

Блог для тех, кто интересуется разработкой сайтов, веб-дизайном и новыми событиями в интернете. В моем блоге Вы найдете записи на различные околокомпьютерные темы, обзоры сервисов и новинок, статьи по кодингу, советы, скрипты, темы и хаки для wordpress, уроки phostohop и многое другое.

4gray artslab artslabinfo