Развёртывание проекта на VPS при помощи GitHub Actions через rsync

В одной из своих предыдущих статей я показал, как развернуть проект на VPS-сервере с помощью CircleCI. В этой статье я покажу, как проделать аналогичный процесс, но только используя Github Actions.

Вот также хорошая статья, которая может вам понравиться, для WordPress разработчика, показывающая, как публиковать плагины в репозитории wp.org с помощью Github Actions.

Давайте двигаться дальше.

Для продолжения вам потребуется набор публичных и приватных ключей SSH. Если у вас их нет, выполните шаг 1, чтобы сгенерировать их.

Шаг 1: Сгенерируйте ключи SSH.

Вы можете перейти к шагу 2, если у вас уже есть ключи.

Входим на VPS с помощью SSH

Замените <SERVER_ADDRESS> на правильный URL или IP вашего VPS.

ssh root@<SERVER_ADRRESS>

Генерируем SSH ключи

ssh-keygen -t rsa

Оставьте passphrase пустым.

Шаг 2: Скопируйте публичный ключ в authorized_keys

На VPS необходимо скопировать открытый SSH-ключ в ~/.ssh/authorized_keys .

Если вы только что создали его, выполнив шаг 1 и сделайте это, выполнив следующую команду.

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

Шаг 3: Скопируйте приватный ключ в буфер обмена

Если вы сгенерировали его на VPS, скопируйте этот ключ любым удобным для вас способом. Например, вы можете использовать xclip, но я просто открою файл с помощью nano и скопирую содержимое вручную. 😉.

nano ~/.ssh/id_rsa

Если у вас возникли проблемы с тем, что ключ находится в неправильном формате и вы видите ошибку Load key “/home/mihdan/.ssh/deploy_key”: invalid format, которая обычно возникает из-за того, что в конце строки стоит «CR LF«, а не только «LF«, то вы можете легко преобразовать эту последовательность символов в любом текстовом редакторе.

А проще всего использовать следующую команду с локального терминала для копирования ключа:

scp root@<SERVER_ADRRESS>:~/.ssh/id_rsa /where/to/put

Шаг 4: Прикрепите приватный ключ к репозиторию на Github

Перейдите в Настройки -> Секреты и создайте две секретные переменные.

  1. DEPLOY_KEY: Это приватный ключ, который вы скопировали на предыдущем шаге.
  2. SEVER_IP: IP сервера или его адрес.

Шаг 5: Настройте рабочий процесс Github Actions

В корне вашего репозитория создайте следующий файл .github/workflows/deploy.yml с таким содержимым:

name: Deploy

on:
    push:
        tags:
            - "*.*.*"
jobs:
    build:
        runs-on: ubuntu-latest
        timeout-minutes: 30
        steps:
            -   run: ls -la
            -   uses: actions/checkout@master

            -   run: sudo apt-get install rsync
           
            -   name: Deploy theme on server
                id: deploy_theme
                uses: Pendect/action-rsyncer@v1.1.0
                env:
                    DEPLOY_KEY: ${{secrets.DEPLOY_KEY}}
                with:
                    flags: '-avc --delete'
                    src: 'dist/'
                    dest: 'root@"${{secrets.SERVER_IP}}":/path/on/remote'

            -   name: Display status from deploy
                run: echo "${{ steps.deploy.outputs.status }}"

Перед развертыванием проекта на сервере вы можете выполнить множество команд, которые могут вам понадобиться. Например, для компиляции вашего кода, его очистки, тестирования и т.д.

Здесь есть несколько нюансов. Вы должны заменить эти строки:

  1. src: 'dist/' — Содержимое этой папки будет загружено на сервер. Вы можете изменить его в соответствии со своими потребностями.
  2. dest: 'root@"${{secrets.SERVER_IP}}":/path/on/remote' — При необходимости поправьте путь загрузки на удалённом сервере.

Вот и все.

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

Источник: Deploy code on VPS with Gihub Actions via rsync

Источник: https://www.kobzarev.com/programming/deploy-code-on-vps-with-gihub-actions-via-rsync/

Михаил Кобзарёв

Суровый русский тимлид. Жил в Магадане, в офисе московских веб студий и в Тульской деревне. Виртуозно знает WordPress, PHP, ООП, Vue.js и вот это вот все. Делает крутые высоконагруженные сайты, поэтому уже почти захватил весь рынок WordPress разработки в России. Не дает никому делать сайты без спроса. Ведет блог о разработке, дайджест в телеграмме и в ВК. Любит сиськи, баню и радиоэлектронику. 100% патриот (но это не точно). Тролль 542 уровня. Ездит в отпуск раз в 5 лет.

Добавить комментарий

%d такие блоггеры, как: