Вы можете кинуть мне донат на кофe, если нашли что-то полезное для себя на этом сайте. Спасибо 🙏
Угостить кофе
отсканируйте QR-код или нажмите на кнопку
Настроим автодеплой с помощью Github actions.
Создадим новый SSH ключ на сервере
cd .ssh
ssh-keygen -t rsa -b 4096 -C "example@email.com"
Скопируем этот ключ на сервер
cat ~/.ssh/id_rsa.pub
Добавим публичный ключ в .ssh на сервере
cd /root/.ssh
nano authorized_keys
Скопируем этот приватный ключ для добавления на GitHub
cat ~/.ssh/id_rsa
Добавим приватный ключ в настройках GitHub.
Настроим GitHub Actions с помощью deploy yml:
Пример yml файла для настройки автодеплоя deploy.yml
# Добавьте в файл свои значения: branch_name, app_name, имя SSH-ключа на GitHub из предыдущего шага, если изменено, ip-адрес сервера, имя пользователя, порт и путь к Node сервера (используя 'which pm2' на сервере для получения пути)
name: Deploy Next.js App
on:
push:
branches:
- branch_name # Измените на свою ветку
# - deployprod # Дополнительная ветка для деплоя
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
- name: Check Node.js version
run: node -v
- name: Set up SSH
uses: webfactory/ssh-agent@v0.5.1
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
- name: Deploy to my server
env:
HOST: XX.XX.XX.XX
USERNAME: root
TARGET_DIR: /var/www/folder_name
APP_NAME: app_name #должно совпадать с именем в блоке server
PORT: 3000
#если требуется несколько развертываний из разных веток
#TARGET_DIR: ${{ github.ref == 'refs/heads/deploytest' && '/var/www/folder_name' || github.ref == 'refs/heads/deployprod' && '/var/www/another-location' }}
#APP_NAME: ${{ github.ref == 'refs/heads/deploytest' && 'folder_name' || github.ref == 'refs/heads/deployprod' && 'folder_name_2' }}
#PORT: ${{ github.ref == 'refs/heads/deploytest' && '3000' || github.ref == 'refs/heads/deployprod' && '3001' }}
run: |
ssh -o StrictHostKeyChecking=no $USERNAME@$HOST << EOF
export PATH=/root/.nvm/versions/node/v20.12.0/bin:$PATH #'which pm2' command on terminal will give the right path
cd $TARGET_DIR
git pull origin ${GITHUB_REF#refs/heads/}
npm install
npm run build
if pm2 list | grep -q $APP_NAME; then
echo "Restarting application: $APP_NAME"
pm2 restart $APP_NAME
else
echo "Starting application: $APP_NAME"
pm2 start npm --name $APP_NAME -- start -- --port=$PORT
fi
pm2 save
EOF
Вы можете кинуть мне донат на кофe, если нашли что-то полезное для себя на этом сайте. Спасибо 🙏
отсканируйте QR-код или нажмите на кнопку