diff --git a/.gitea/workflows/dev-deploy.yml b/.gitea/workflows/dev-deploy.yml deleted file mode 100644 index f856798..0000000 --- a/.gitea/workflows/dev-deploy.yml +++ /dev/null @@ -1,184 +0,0 @@ -name: Dev Deploy to Staging -on: - push: - branches: - - dev - workflow_dispatch: - workflow_call: - -env: - REGISTRY: 192.168.1.8:8084 - -jobs: - build-and-deploy: - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Determine service metadata - id: meta - run: | - REPO_NAME=$(basename ${{ github.repository }}) - case "$REPO_NAME" in - narng-api-laravel) SERVICE="laravel"; TAG_VAR="LARAVEL_TAG" ;; - narng-api | narng-api-gateway) SERVICE="api"; TAG_VAR="API_TAG" ;; - narng-web-app) SERVICE="web"; TAG_VAR="WEB_TAG" ;; - *) SERVICE=$(echo "$REPO_NAME" | sed 's/^narng-//'); TAG_VAR=$(echo "$SERVICE" | tr '[:lower:]' '[:upper:]')_TAG ;; - esac - echo "SERVICE=$SERVICE" >> $GITHUB_OUTPUT - echo "TAG_VAR=$TAG_VAR" >> $GITHUB_OUTPUT - echo "IMAGE=${{ env.REGISTRY }}/$REPO_NAME" >> $GITHUB_OUTPUT - - - name: Generate version - id: version - run: echo "VERSION=1.0.0-dev.${{ github.run_number }}" >> $GITHUB_OUTPUT - - - name: Build Docker image - env: - DOCKER_BUILDKIT: 1 - run: | - IMAGE=${{ steps.meta.outputs.IMAGE }} - VERSION=${{ steps.version.outputs.VERSION }} - docker buildx build --builder default --tag "$IMAGE:$VERSION" --tag "$IMAGE:1.0.0-latest" --load . 2>&1 | tail -20 - - - name: Login to Nexus - env: - NEXUS_USER: ${{ secrets.NEXUS_USER }} - NEXUS_PASS: ${{ secrets.NEXUS_PASS }} - run: echo "$NEXUS_PASS" | docker login ${{ env.REGISTRY }} -u "$NEXUS_USER" --password-stdin - - - name: Push to Nexus - run: | - IMAGE=${{ steps.meta.outputs.IMAGE }} - VERSION=${{ steps.version.outputs.VERSION }} - docker push "$IMAGE:$VERSION" - docker push "$IMAGE:1.0.0-latest" - - - name: Deploy to staging via SSH - uses: appleboy/ssh-action@v1.0.3 - with: - host: ${{ secrets.STAGING_HOST }} - username: ${{ secrets.STAGING_USER }} - key: ${{ secrets.STAGING_SSH_KEY }} - script: | - SERVICE=${{ steps.meta.outputs.SERVICE }} - VERSION=${{ steps.version.outputs.VERSION }} - TAG_VAR=${{ steps.meta.outputs.TAG_VAR }} - echo "Deploying $SERVICE:$VERSION" - - sed -i "s|^${TAG_VAR}=.*|${TAG_VAR}=${VERSION}|" /srv/staging/narng-platform/compose/.env - - cd /srv/staging/narng-platform/compose - docker compose pull $SERVICE - docker compose up -d --force-recreate --no-deps $SERVICE - docker image prune -f - -# name: Dev Deploy to Staging -# on: -# push: -# branches: -# - dev -# workflow_dispatch: -# workflow_call: # برای استفاده در ریپوهای دیگر - -# env: -# REGISTRY: 192.168.1.8:8084 - -# jobs: -# build-and-deploy: -# runs-on: ubuntu-latest -# steps: -# - name: Checkout code -# uses: actions/checkout@v4 -# with: -# fetch-depth: 0 - -# - name: Determine service metadata -# id: meta -# run: | -# REPO_NAME=$(basename ${{ github.repository }}) -# case "$REPO_NAME" in -# narng-api-laravel) -# SERVICE="laravel" -# TAG_VAR="LARAVEL_TAG" -# ;; -# narng-api | narng-api-gateway) -# SERVICE="api" -# TAG_VAR="API_TAG" -# ;; -# narng-web-app) -# SERVICE="web" -# TAG_VAR="WEB_TAG" -# ;; -# *) -# SERVICE=$(echo "$REPO_NAME" | sed 's/^narng-//') -# TAG_VAR=$(echo "$SERVICE" | tr '[:lower:]' '[:upper:]')_TAG -# ;; -# esac -# echo "SERVICE=$SERVICE" >> $GITHUB_OUTPUT -# echo "TAG_VAR=$TAG_VAR" >> $GITHUB_OUTPUT -# echo "REPO_NAME=$REPO_NAME" >> $GITHUB_OUTPUT -# echo "IMAGE=${{ env.REGISTRY }}/$REPO_NAME" >> $GITHUB_OUTPUT - -# - name: Generate version -# id: version -# run: | -# VERSION="1.0.0-dev.${{ github.run_number }}" -# echo "VERSION=$VERSION" >> $GITHUB_OUTPUT - -# - name: Build Docker image -# env: -# DOCKER_BUILDKIT: 1 -# run: | -# IMAGE=${{ steps.meta.outputs.IMAGE }} -# VERSION=${{ steps.version.outputs.VERSION }} -# export DOCKER_BUILDKIT=1 -# docker buildx build \ -# --builder default \ -# --tag "$IMAGE:$VERSION" \ -# --tag "$IMAGE:1.0.0-latest" \ -# --load \ -# . 2>&1 | tail -20 - -# - name: Login to Nexus -# env: -# NEXUS_USER: ${{ secrets.NEXUS_USER }} -# NEXUS_PASS: ${{ secrets.NEXUS_PASS }} -# run: | -# echo "$NEXUS_PASS" | docker login ${{ env.REGISTRY }} -u "$NEXUS_USER" --password-stdin - -# - name: Push to Nexus -# run: | -# IMAGE=${{ steps.meta.outputs.IMAGE }} -# VERSION=${{ steps.version.outputs.VERSION }} -# docker push "$IMAGE:$VERSION" -# docker push "$IMAGE:1.0.0-latest" - -# - name: Deploy to staging (Host-level) -# run: | -# SERVICE=${{ steps.meta.outputs.SERVICE }} -# VERSION=${{ steps.version.outputs.VERSION }} -# TAG_VAR=${{ steps.meta.outputs.TAG_VAR }} -# echo "Deploying $SERVICE:$VERSION" - -# # آپدیت فایل .env در مسیر صحیح سرور -# docker run --rm -v /srv/staging/narng-platform:/srv/staging/narng-platform alpine sh -c "sed -i 's|^${TAG_VAR}=.*|${TAG_VAR}=${VERSION}|' /srv/staging/narng-platform/compose/.env" - -# # ری‌استارت کانتینر با استفاده از فایل .env صحیح -# docker run --rm \ -# -v /var/run/docker.sock:/var/run/docker.sock \ -# -v /srv/staging/narng-platform:/srv/staging/narng-platform:ro \ -# -w /srv/staging/narng-platform/compose \ -# docker:24-cli \ -# sh -c "docker compose --env-file .env up -d --no-deps $SERVICE" - -# - name: Verify -# run: | -# SERVICE=${{ steps.meta.outputs.SERVICE }} -# CONTAINER="staging-narng-${SERVICE}" -# sleep 10 -# STATUS=$(docker inspect --format='{{.State.Status}}' "$CONTAINER" 2>/dev/null || echo "not found") -# echo "Container: $CONTAINER - Status: $STATUS" \ No newline at end of file