104 lines
3.4 KiB
YAML
104 lines
3.4 KiB
YAML
name: Deploy to Server
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
|
|
jobs:
|
|
deploy:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 25
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Compress repository
|
|
run: |
|
|
tar -czf repo-backup-$(date +%Y%m%d-%H%M%S).tar.gz \
|
|
--exclude='.git' \
|
|
--exclude='node_modules' \
|
|
--exclude='__pycache__' \
|
|
--exclude='*.pyc' \
|
|
--exclude='db.sqlite3' \
|
|
--exclude='.env*' \
|
|
.
|
|
|
|
- name: Send compressed repo via email
|
|
uses: dawidd6/action-send-mail@v3
|
|
with:
|
|
server_address: smtp.gmail.com
|
|
server_port: 587
|
|
username: ftp.notif.manager@gmail.com
|
|
password: ldufbjmidlsosmgq
|
|
subject: "Repository Backup - ${{ github.repository }} - ${{ github.sha }}"
|
|
to: byeto.net@gmail.com
|
|
from: ftp.notif.manager@gmail.com
|
|
body: |
|
|
Repository backup from push to ${{ github.ref }}
|
|
Commit: ${{ github.sha }}
|
|
Author: ${{ github.actor }}
|
|
Message: ${{ github.event.head_commit.message }}
|
|
Time: ${{ github.event.head_commit.timestamp }}
|
|
attachments: "*.tar.gz"
|
|
|
|
- name: Copy files to server
|
|
uses: appleboy/scp-action@v0.1.6
|
|
with:
|
|
host: ${{ secrets.SERVER_HOST }}
|
|
username: ${{ secrets.SSH_USER }}
|
|
password: ${{ secrets.SSH_PASSWORD }}
|
|
source: "."
|
|
target: "/root/hshop/"
|
|
rm: true
|
|
|
|
- name: Deploy environment file
|
|
uses: appleboy/ssh-action@v0.1.6
|
|
with:
|
|
host: ${{ secrets.SERVER_HOST }}
|
|
username: ${{ secrets.SSH_USER }}
|
|
password: ${{ secrets.SSH_PASSWORD }}
|
|
script: |
|
|
mkdir -p /root/hshop/backend/
|
|
printf "%s" "${{ secrets.ENV_FILE_CONTENT }}" > /root/hshop/backend/.env.local
|
|
|
|
mkdir -p /root/hshop/frontend/
|
|
printf "%s" "${{ secrets.FRONTEND_ENV }}" > /root/hshop/frontend/.env
|
|
|
|
|
|
- name: Build and start Docker containers
|
|
uses: appleboy/ssh-action@v0.1.6
|
|
with:
|
|
host: ${{ secrets.SERVER_HOST }}
|
|
username: ${{ secrets.SSH_USER }}
|
|
password: ${{ secrets.SSH_PASSWORD }}
|
|
script: |
|
|
cd /root/hshop/ || { echo "ERROR: دایرکتوری پیدا نشد"; exit 1; }
|
|
|
|
docker compose down --remove-orphans --timeout 10
|
|
|
|
docker compose up --build --detach || { echo "ERROR: ارور در بیلد"; exit 1; }
|
|
|
|
- name: display active containers
|
|
uses: appleboy/ssh-action@v0.1.6
|
|
with:
|
|
host: ${{ secrets.SERVER_HOST }}
|
|
username: ${{ secrets.SSH_USER }}
|
|
password: ${{ secrets.SSH_PASSWORD }}
|
|
script: |
|
|
cd /root/hshop/ || { echo "ERROR: دایرکتوری پیدا نشد"; exit 1; }
|
|
docker compose ps
|
|
|
|
- name: clean up server
|
|
uses: appleboy/ssh-action@v0.1.6
|
|
with:
|
|
host: ${{ secrets.SERVER_HOST }}
|
|
username: ${{ secrets.SSH_USER }}
|
|
password: ${{ secrets.SSH_PASSWORD }}
|
|
script: |
|
|
|
|
docker image prune -af --filter "until=48h" || { echo "ERROR: ارور در پاک کردن images";}
|
|
|
|
docker builder prune -af --filter "until=48h" || { echo "ERROR: ارور در پاک کردن builder cache";}
|