49 lines
1.9 KiB
YAML
49 lines
1.9 KiB
YAML
name: CI/CD Pipeline
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main # اگر اسم برنچ اصلیت master هست، این رو بکن master
|
|
|
|
jobs:
|
|
build-and-deploy:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout Code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Log in to Docker Hub
|
|
uses: docker/login-action@v3
|
|
with:
|
|
username: ${{ secrets.DOCKER_USERNAME }}
|
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
|
|
- name: Build and Push Docker Image
|
|
uses: docker/build-push-action@v5
|
|
with:
|
|
context: .
|
|
push: true
|
|
tags: didvan/basa_houshan_api:latest
|
|
|
|
- name: Deploy to Server
|
|
uses: appleboy/ssh-action@v1.0.3
|
|
with:
|
|
host: ${{ secrets.SERVER_IP }}
|
|
username: ${{ secrets.SERVER_USERNAME }}
|
|
# اگر از کلید SSH استفاده میکنی این خط بمونه:
|
|
key: ${{ secrets.SERVER_SSH_KEY }}
|
|
# اگر از پسورد استفاده میکنی، خط بالا رو پاک کن و خط پایین رو از کامنت دربیار:
|
|
# password: ${{ secrets.SERVER_PASSWORD }}
|
|
script: |
|
|
# !!! بسیار مهم: مسیر دقیق پوشه پروژه روی سرورت رو اینجا جایگزین کن !!!
|
|
cd /home/ubuntu/app/houshan-api
|
|
|
|
# لاگین به داکر هاب روی سرور (برای دانلود ایمیجهای Private)
|
|
echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
|
|
|
|
# دانلود ایمیج جدید و ریاستارت فقط همون کانتینر
|
|
docker compose pull app
|
|
docker compose up -d app
|
|
|
|
# پاکسازی ایمیجهای قدیمی
|
|
docker image prune -f |