From 62b1aa9e33bf3aae4a71846afe110e7e3b129615 Mon Sep 17 00:00:00 2001 From: fristyxd Date: Sat, 12 Sep 2026 00:24:23 +0300 Subject: [PATCH] ci: split pipeline into ci plus deploy, add test and health jobs --- .gitea/workflows/ci.yaml | 61 +++++++++++++++++++ .gitea/workflows/{docker.yaml => deploy.yaml} | 42 ++----------- 2 files changed, 67 insertions(+), 36 deletions(-) create mode 100644 .gitea/workflows/ci.yaml rename .gitea/workflows/{docker.yaml => deploy.yaml} (55%) diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml new file mode 100644 index 0000000..39dddc2 --- /dev/null +++ b/.gitea/workflows/ci.yaml @@ -0,0 +1,61 @@ +name: CI + +on: + pull_request: + push: + branches: ["main"] + +jobs: + check: + name: Lint, Test & Build + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup pnpm + uses: pnpm/action-setup@v4 + - name: Get pnpm store path + id: pnpm-store + run: echo "path=$(pnpm store path --silent)" >> "$GITHUB_OUTPUT" + - name: Cache pnpm store + uses: actions/cache@v4 + with: + path: ${{ steps.pnpm-store.outputs.path }} + key: ${{ runner.os }}-pnpm-${{ hashFiles('pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm- + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: lts/* + - name: Install dependencies + run: pnpm install --frozen-lockfile + - name: Check formatting + run: pnpm format:check + - name: Lint + run: pnpm lint + - name: Test + run: pnpm test + - name: Build + run: pnpm build + + health: + name: Code Health + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: "3.12" + - name: Scan with desloppify (CI profile, objective only) + continue-on-error: true + run: | + pipx run --spec desloppify desloppify scan --profile ci --no-badge + - name: Upload scorecard + uses: actions/upload-artifact@v4 + with: + name: desloppify-scorecard + path: scorecard.png + if-no-files-found: ignore diff --git a/.gitea/workflows/docker.yaml b/.gitea/workflows/deploy.yaml similarity index 55% rename from .gitea/workflows/docker.yaml rename to .gitea/workflows/deploy.yaml index a8aea7b..079da79 100644 --- a/.gitea/workflows/docker.yaml +++ b/.gitea/workflows/deploy.yaml @@ -1,51 +1,21 @@ -name: Build & Push +name: Deploy on: push: branches: ["main"] tags: ["v*"] - pull_request: + +concurrency: + group: deploy-${{ github.ref }} + cancel-in-progress: true env: REGISTRY: git.fristy.net IMAGE_NAME: fristy/fristynet jobs: - check: - name: Lint & Build - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Setup pnpm - uses: pnpm/action-setup@v4 - - name: Get pnpm store path - id: pnpm-store - run: echo "path=$(pnpm store path --silent)" >> "$GITHUB_OUTPUT" - - name: Cache pnpm store - uses: actions/cache@v4 - with: - path: ${{ steps.pnpm-store.outputs.path }} - key: ${{ runner.os }}-pnpm-${{ hashFiles('pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm- - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: lts/* - - name: Install dependencies - run: pnpm install --frozen-lockfile - - name: Check formatting - run: pnpm format:check - - name: Lint - run: pnpm lint - - name: Build - run: pnpm build - image: name: Build & Push Image - needs: check - if: github.event_name == 'push' runs-on: ubuntu-latest permissions: contents: read @@ -79,7 +49,7 @@ jobs: deploy: name: Trigger Deploy needs: image - if: github.ref == 'refs/heads/main' + if: github.event_name == 'push' && github.ref == 'refs/heads/main' runs-on: ubuntu-latest steps: - name: Trigger Deploy