Решил немного “прокачать” свой блог, заодно начать писать что-то полезное :) Чтобы начать писать что-то полезное, нужно сначала автоматизировать какую-нибудь рутинную работу, которая вызывает прокарстинацию.
Для меня этой рутинной работой оказался процесс выкладывания новых статей.
Дано: движок hugo, github, маленький сервер где-то в германии.
Цель: Статья после написания и коммита в github репозиторий, должна автоматически публиковаться в блоге.
Решение: а вот решение оказалось очень простым :) Об этом как раз и расскажу.
Создаём необходимые файлы и директории
Будем использовать Github Actions, для этого в проекте создал директорию .github/workflows
Далее создаём файл в котором будем описывать все наши шаги для диплоя проекта на сервер main.yml
Содержимое файла main.yml
name: Deploy hugo project
on:
push:
branches: [ master ] # наши инструкции будут срабатывать на пуше в ветку master
pull_request:
branches: [ master ] # или при мерже PR в тот же master
env:
HUGO_VERSION: 0.76.2 # указываем какая версия hugo нам нужна
jobs:
build-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2 # забираем все изменения из master ветки + подтягиваем тему для нашего блога, которая подключена как сабмодуль
with:
submodules: true
- name: Setup Hugo # устанавливаем hugo c нужной версией
uses: peaceiris/actions-hugo@v2
with:
hugo-version: '0.76.2'
- name: Build # собираем наш блог, все страницы будут в итоге лежать в директории /public
run: hugo --minify
- name: copy file via ssh password # и в заключении копируем нашу директорию /public на сервер
uses: appleboy/scp-action@master
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
port: 22
source: "public/"
target: #{server_directory}
Адрес сервера, имя пользователя и пароль для подключения к серверу мы указываем в https://github.com/{your_profile}/{project_name}/settings/secrets