Gitlab-CI deploy OctoPress blog

А зачем? Веяние моды?
Нет. Просто я замучался бороться в глюками Ruby под Win10 :)

Для работы используются две ветки master и development.
development ветка используется для деплоя на тестовый сервер и проверки что всё собралось верно, после “мержа” в master ветку, уже из неё деплоится на основной сервер.

Так как OctoPress генерирует чистую статику то в качестве development сервера можно использовать просто подкаталог на основном.

1
2
/var/www/blog
/var/www/blog/dev

При деплое master ветки, rsync удалит этот каталог. Также, никто не мешает заместь rsync, деплоить в тот-же github-page и вообще куда душе угодно.

$SSH_DEPLOY_KEY - “Secret Variables” из настроек проекта в Gitlab (Проект -> Settings -> CI/CD Pipelines -> Secret Variables).
Необходимо создать новую переменную и в качестве value вставить SSH Private Key, public ключ, соответственно, должен быть прописан на сервере - у пользователя из-под которого будем осуществлять деплой и иметься права на запись в соответствующие каталоги.
my_theme - заменить на имя используемой вами темы.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
image: ruby:2.1
# Подготовка окружения
before_script:
  # Ставим Node.JS, есть зависимость
  - curl -sL https://deb.nodesource.com/setup_4.x | bash -
  - apt-get install nodejs rsync -y
  - mkdir "${HOME}/.ssh"
  - echo "${SSH_DEPLOY_KEY}" > id_rsa # копируем SSH private key
  - chmod 600 id_rsa
  - ssh-keyscan -H sysalex.com >> "${HOME}/.ssh/known_hosts" # Добавляем наш хост в известные
  - bundle install # ставим гемы

# Master ветка
PROD generate and deploy:
  script:
    - cp -rf .themes/my_theme/* ./ # Копируем тему (указать свою)
    - rake generate # производим сборку
    # синхронизируем каталог public с каталогом на сервере
    - rsync -hrvz --delete  -e 'ssh -i id_rsa' public/ user@example.com:/path/to/dir/
  only:
    - master

# Development ветка  
DEV generate and deploy:
  script:
    - cp -rf .themes/my_theme/* ./
    - rake generate
    - rsync -hrvz --delete  -e 'ssh -i id_rsa' public/ user@example.com:/path/to/dir/dev/
  only:
    - develop

Среднее время сборки, составляет 3 мин. из них 90% это установка необходимых Gem, можно значительно сократить это время - если использовать, заранее, подготовленный образ с уже установленными, необходимыми Gem (может, когда-нибудь, заморочусь этим повросом).

Комментарии