From 62ad4f84969d7dd88082cf68d15589f64aa5f689 Mon Sep 17 00:00:00 2001 From: Ali Taghavi Date: Sun, 10 May 2026 09:19:25 +0330 Subject: [PATCH] fixed gitea ci --- .gitea/workflows/ci-cd.yml | 110 ++++++++----------------------------- 1 file changed, 23 insertions(+), 87 deletions(-) diff --git a/.gitea/workflows/ci-cd.yml b/.gitea/workflows/ci-cd.yml index 950262c9..372ff688 100644 --- a/.gitea/workflows/ci-cd.yml +++ b/.gitea/workflows/ci-cd.yml @@ -5,113 +5,49 @@ on: branches: [main] jobs: - # ── Lint & Type Check ───────────────────────────────────────────────────────── lint-typecheck: name: Lint & Type Check - runs-on: ubuntu-latest + runs-on: nodecloud-runner + container: + image: node:20-bullseye + steps: - name: Checkout uses: actions/checkout@v4 - - - name: Setup Node 20 - uses: actions/setup-node@v4 with: - node-version: '20' + token: ${{ github.token }} + repository: ${{ github.repository }} - - name: Enable pnpm via corepack - run: corepack enable && corepack prepare pnpm@9 --activate - - - name: Get pnpm store path - id: pnpm-cache - run: echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_OUTPUT - - - name: Cache pnpm store - uses: actions/cache@v3 - with: - path: ${{ steps.pnpm-cache.outputs.STORE_PATH }} - key: pnpm-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }} - restore-keys: pnpm-${{ runner.os }}- + - name: Enable pnpm + run: corepack enable && corepack prepare pnpm@latest --activate - name: Install dependencies - run: | - pnpm config set registry https://package-mirror.liara.ir/repository/npm/ - pnpm install --frozen-lockfile --network-concurrency 1 + run: pnpm install --frozen-lockfile --ignore-scripts - name: Lint run: pnpm lint - name: Type check - run: pnpm exec tsc --noEmit + run: pnpm typecheck - # ── Deploy ──────────────────────────────────────────────────────────────────── deploy: name: Deploy to NODE Cloud - runs-on: ubuntu-latest + runs-on: nodecloud-runner needs: lint-typecheck + if: success() + steps: - - name: Setup SSH key - env: - SSH_KEY: ${{ secrets.SERVER_SSH_KEY }} + - name: Deploy via SSH run: | mkdir -p ~/.ssh - printf '%s\n' "$SSH_KEY" > ~/.ssh/deploy_key + echo "${{ secrets.SERVER_SSH_KEY }}" > ~/.ssh/deploy_key chmod 600 ~/.ssh/deploy_key - echo "SSH key written" - - - name: Deploy via SSH - env: - SSH_HOST: ${{ secrets.SERVER_HOST }} - SSH_USER: ${{ secrets.SERVER_USER }} - run: | ssh -i ~/.ssh/deploy_key \ - -o StrictHostKeyChecking=no \ - -o ConnectTimeout=30 \ - -o ServerAliveInterval=60 \ - "$SSH_USER@$SSH_HOST" << 'DEPLOY' - set -e - APP_DIR="/srv/nodecloud/apps/biztaghavi" - - echo "==> Checking app directory..." - if [ ! -d "$APP_DIR/.git" ]; then - echo "==> First deploy — cloning repository..." - mkdir -p "$APP_DIR" - git clone https://git.nodecloud.ir/biztaghavi/biztaghavisite.git "$APP_DIR" - fi - - cd "$APP_DIR" - - echo "==> Pulling latest code..." - git pull origin main - - echo "==> Checking .env file..." - if [ ! -f .env ]; then - cp .env.example .env - echo "⚠️ Created .env from .env.example — fill in real values and redeploy!" - exit 1 - fi - - echo "==> Ensuring nodecloud-net network exists..." - docker network inspect nodecloud-net >/dev/null 2>&1 || \ - docker network create nodecloud-net - - echo "==> Building Docker image..." - docker compose build - - echo "==> Starting/updating services..." - docker compose up -d --remove-orphans - - echo "==> Pruning unused images..." - docker image prune -f - - echo "✅ Deployed $(git rev-parse --short HEAD)" - DEPLOY - - - name: Verify deployment - env: - SSH_HOST: ${{ secrets.SERVER_HOST }} - SSH_USER: ${{ secrets.SERVER_USER }} - run: | - ssh -i ~/.ssh/deploy_key \ - -o StrictHostKeyChecking=no \ - "$SSH_USER@$SSH_HOST" \ - 'curl -sf --retry 5 --retry-delay 3 http://127.0.0.1:3009/ -o /dev/null && echo "✅ Health check passed" || echo "⚠️ Health check failed (app may still be starting)"' + -o StrictHostKeyChecking=no \ + -o UserKnownHostsFile=/dev/null \ + ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_HOST }} \ + "cd /srv/nodecloud/apps/biztaghavisite && \ + git pull && \ + docker compose build --no-cache && \ + docker compose up -d --force-recreate && \ + echo '✅ Deploy done'" \ No newline at end of file