Skip to content

Deploy staging

Deploy staging #69

name: Deploy staging
concurrency:
group: stage_deploy
cancel-in-progress: true
on:
workflow_run:
workflows: [Publish staging Docker image]
types: [completed]
env:
DEPLOY_PATH: /LUBIMOVKA
jobs:
deployment:
name: Deployment
runs-on: ubuntu-latest
environment: stage_deploy
steps:
- name: Check out the repo
uses: actions/checkout@v3
with:
ref: develop
- name: Create SSH key
run: |
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "${{ secrets.SSH_KNOWN_HOSTS }}" > ~/.ssh/known_hosts
chmod 644 ~/.ssh/known_hosts
echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
- name: Create application directory
run: ssh ${{ secrets.USERNAME }}@${{ secrets.HOST }} mkdir -p ${{ env.DEPLOY_PATH }}
- name: Copy configuration
run: scp -r config/docker/staging/* ${{ secrets.USERNAME }}@${{ secrets.HOST }}:${{ env.DEPLOY_PATH }}/stage
- name: Execute remote ssh commands
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
passphrase: ${{ secrets.PASSPHRASE }}
script: |
cd ${{ env.DEPLOY_PATH }}/stage/
# Используем переменные окружения, сохраненные от CI/CD backend
# Создание сети вынесено отдельно для возможности независимо перезапускать контейнеры (через external networks)
docker network create stage_swag_network || true
cp -rf ${{ env.DEPLOY_PATH }}/stage/lubimovka-frontend.service /etc/systemd/system/lubimovka-frontend.service
systemctl daemon-reload
systemctl restart lubimovka-frontend.service
rm ${{ env.DEPLOY_PATH }}/stage/lubimovka-frontend.service