Files
hossein-por-shop/.github/workflows/deploy.yaml
T
Parsa Nazer 8c31ef527d ret 3
2026-02-14 12:08:20 +03:30

106 lines
3.5 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*' \
--exclude='*.tar.gz' \
--warning=no-file-changed \
.
- 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";}