В одной из своих предыдущих статей я показал, как развернуть проект на 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
пустым.
На 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
Перейдите в Настройки -> Секреты и создайте две секретные переменные.
DEPLOY_KEY
: Это приватный ключ, который вы скопировали на предыдущем шаге.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 }}"
Перед развертыванием проекта на сервере вы можете выполнить множество команд, которые могут вам понадобиться. Например, для компиляции вашего кода, его очистки, тестирования и т.д.
Здесь есть несколько нюансов. Вы должны заменить эти строки:
src: 'dist/'
— Содержимое этой папки будет загружено на сервер. Вы можете изменить его в соответствии со своими потребностями.dest: 'root@"${{secrets.SERVER_IP}}":/path/on/remote'
— При необходимости поправьте путь загрузки на удалённом сервере.
Вот и все.
Если у вас есть вопросы, предложения или вы нашли ошибку, пожалуйста, дайте мне знать в комментариях ниже.
Источник: https://www.kobzarev.com/programming/deploy-code-on-vps-with-gihub-actions-via-rsync/