Автоматизация деплоя по SSH без пароля
Автоматизация деплоя с помощью GitHub Actions и SSH для Django проекта (вход на сервер только по SSH без пароля)
GitHub Actions — это сервис, который позволяет автоматизировать процесс сборки, тестирования и деплоя вашего кода. Одним из способов деплоя является использование SSH для подключения к серверу и копирования файлов. В этой статье мы рассмотрим, как использовать GitHub Actions и SSH для автоматизации деплоя вашего проекта, если вход на сервер осуществляется только по SSH.
Что такое SSH?
SSH (Secure Shell) — это протокол, который позволяет безопасно подключаться к серверу и выполнять команды. SSH использует криптографические методы для шифрования данных, что делает его безопасным способом доступа к серверу.
Что такое GitHub Actions?
GitHub Actions — это сервис, который позволяет автоматизировать процесс сборки, тестирования и деплоя вашего кода. GitHub Actions использует YAML-файлы для описания рабочих процессов, которые выполняются на сервере GitHub.
Как использовать SSH с GitHub Actions
Чтобы использовать SSH с GitHub Actions, вам необходимо создать SSH-ключи и добавить их в ваш репозиторий. SSH-ключи состоят из двух частей: приватного ключа и публичного ключа. Приватный ключ используется для подключения к серверу, а публичный ключ используется для аутентификации.
Шаг 1: Создание SSH-ключей
Чтобы создать SSH-ключи, вы можете использовать команду ssh-keygen
в терминале:
ssh-keygen
Введите файл, в котором будет сохранен ключ /home/jazz/.ssh/github_rsa
Enter file in which to save the key (/home/jazz/.ssh/id_rsa): /home/jazz/.ssh/github_rsa
жмем Enter
Эта команда создаст приватный ключ (github_rsa
) и публичный ключ (github_rsa.pub
) в директории ~/.ssh
.
Шаг 2: Добавление SSH-ключей в репозиторий
Далее нам нужно создать Deploy key в проекте на GitHub. Идем по пути Settings > Deploy keys.
И нажимаем Add deploy key
. Нужно скопировать ключ. Для этого выполним команду:
cat /home/jazz/.ssh/github_rsa.pub
И копируем содержимое файла в поле Key
Далее нужно добавить этот ключ в файл /home/jazz/.ssh/authorized_keys
nano /home/jazz/.ssh/authorized_keys
Вставляем ключ и сохраняем файл.
Теперь создадим файл конфигурации для загрузки из репозитория без использования пароля.
nano /home/jazz/.ssh/config
Host github.com-repo-0
Hostname github.com
IdentityFile ~/.ssh/github_rsa
Шаг 3: Создание рабочего процесса GitHub Actions
Чтобы создать рабочий процесс GitHub Actions, вы можете создать новый файл .yml
в директории .github/workflows
вашего репозитория - проекта. Например, вы можете создать файл deploy.yml
с следующим содержанием:
name: Django CI
on:
push:
branches: [ "master" ]
jobs:
build:
runs-on: ubuntu-latest
strategy:
max-parallel: 4
matrix:
python-version: [3.9]
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Deploy to server
uses: fifsky/ssh-action@master
with:
command: |
source venv/bin/activate
cd jazzmap
git pull
pip install -r requirements.txt
python manage.py migrate
python manage.py collectstatic --noinput
supervisorctl restart django_wsgi
host: ${{secrets.HOST}}
user: ${{secrets.USER}}
key: ${{secrets.PRIVATE_KEY}}
args: "-tt -vvv"
Этот рабочий процесс будет выполняться при каждом пуше в ветку main
и будет деплоить ваш код на сервер с помощью SSH.
Шаг 4: Добавление секретов
В файле deploy.yml
используются переменные. Нам необходимо переменные добавить в наш репозиторий. Для этого переходим во вкладку Settings > Secrets and variables > Actions
Создадим три новые переменные:
HOST - адрес сервера (или доменное имя проекта, привязанное к серверу)
USER - пользователь, от имени которого мы подключаемся к серверу
PRIVATE_KEY - приватная часть ключа, который мы сформировали github_rsa
cat /home/jazz/.ssh/github_rsa
После этого можно загрузить обновления и проверить выполнение скрипта:
Вывод
В этой статье мы рассмотрели, как использовать GitHub Actions и SSH для автоматизации деплоя вашего проекта. Мы создали SSH-ключи, добавили их в репозиторий, создали рабочий процесс GitHub Actions и добавили секреты. Теперь вы можете автоматизировать процесс деплоя вашего кода с помощью GitHub Actions и SSH.