Автоматизация деплоя по 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-ключи состоят из двух частей: приватного ключа и публичного ключа. Приватный ключ используется для подключения к серверу, а публичный ключ используется для аутентификации.
Создание рабочего процесса 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}}
pass: ${{secrets.PRIVATE_KEY}}
args: "-tt -vvv"
Этот рабочий процесс будет выполняться при каждом пуше в ветку main
и будет деплоить ваш код на сервер с помощью SSH.
Шаг 4: Добавление секретов
В файле deploy.yml
используются переменные. Нам необходимо переменные добавить в наш репозиторий. Для этого переходим во вкладку Settings > Secrets and variables > Actions
Создадим три новые переменные:
HOST - адрес сервера (или доменное имя проекта, привязанное к серверу)
USER - пользователь, от имени которого мы подключаемся к серверу
PRIVATE_KEY - пароль пользователя, от имени которого мы подключаемся к серверу
После этого можно загрузить обновления и проверить выполнение скрипта:
Вывод
В этой статье мы рассмотрели, как использовать GitHub Actions и SSH для автоматизации деплоя вашего проекта. Мы создали SSH-ключи, добавили их в репозиторий, создали рабочий процесс GitHub Actions и добавили секреты. Теперь вы можете автоматизировать процесс деплоя вашего кода с помощью GitHub Actions и SSH.