From 54616b82d73db280cefa6a8c6716b6d249a98d48 Mon Sep 17 00:00:00 2001 From: Admin Date: Fri, 6 Mar 2026 11:38:28 +0500 Subject: [PATCH] ci: split into dedicated scraper and ui workflows --- .gitea/workflows/ci-scraper.yaml | 76 ++++++++++ .gitea/workflows/ci-ui.yaml | 40 ++++++ .gitea/workflows/ci.yaml | 136 ------------------ .../{release.yaml => release-scraper.yaml} | 31 +--- .gitea/workflows/release-ui.yaml | 33 +++++ 5 files changed, 152 insertions(+), 164 deletions(-) create mode 100644 .gitea/workflows/ci-scraper.yaml create mode 100644 .gitea/workflows/ci-ui.yaml delete mode 100644 .gitea/workflows/ci.yaml rename .gitea/workflows/{release.yaml => release-scraper.yaml} (69%) create mode 100644 .gitea/workflows/release-ui.yaml diff --git a/.gitea/workflows/ci-scraper.yaml b/.gitea/workflows/ci-scraper.yaml new file mode 100644 index 0000000..a806bd5 --- /dev/null +++ b/.gitea/workflows/ci-scraper.yaml @@ -0,0 +1,76 @@ +name: CI / Scraper + +on: + push: + branches: ["main", "master"] + paths: + - "scraper/**" + - ".gitea/workflows/ci-scraper.yaml" + pull_request: + branches: ["main", "master"] + paths: + - "scraper/**" + - ".gitea/workflows/ci-scraper.yaml" + +defaults: + run: + working-directory: scraper + +jobs: + # ── lint & vet ─────────────────────────────────────────────────────────────── + lint: + name: Lint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-go@v5 + with: + go-version-file: scraper/go.mod + cache-dependency-path: scraper/go.sum + + - name: go vet + run: go vet ./... + + - name: staticcheck + run: go tool staticcheck ./... + + # ── tests ──────────────────────────────────────────────────────────────────── + test: + name: Test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-go@v5 + with: + go-version-file: scraper/go.mod + cache-dependency-path: scraper/go.sum + + - name: Run tests + run: go test -race -count=1 -timeout=60s ./... + + # ── build binary ───────────────────────────────────────────────────────────── + build: + name: Build + runs-on: ubuntu-latest + needs: [lint, test] + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-go@v5 + with: + go-version-file: scraper/go.mod + cache-dependency-path: scraper/go.sum + + - name: Build binary + run: | + CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \ + go build -ldflags="-s -w" -o bin/scraper ./cmd/scraper + + - name: Upload binary artifact + uses: actions/upload-artifact@v3 + with: + name: scraper-linux-amd64 + path: scraper/bin/scraper + retention-days: 7 diff --git a/.gitea/workflows/ci-ui.yaml b/.gitea/workflows/ci-ui.yaml new file mode 100644 index 0000000..d9499e4 --- /dev/null +++ b/.gitea/workflows/ci-ui.yaml @@ -0,0 +1,40 @@ +name: CI / UI + +on: + push: + branches: ["main", "master"] + paths: + - "ui/**" + - ".gitea/workflows/ci-ui.yaml" + pull_request: + branches: ["main", "master"] + paths: + - "ui/**" + - ".gitea/workflows/ci-ui.yaml" + +defaults: + run: + working-directory: ui + +jobs: + # ── type-check & build ─────────────────────────────────────────────────────── + build: + name: Build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-node@v4 + with: + node-version: "22" + cache: npm + cache-dependency-path: ui/package-lock.json + + - name: Install dependencies + run: npm ci + + - name: Type check + run: npm run check + + - name: Build + run: npm run build diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml deleted file mode 100644 index afc6553..0000000 --- a/.gitea/workflows/ci.yaml +++ /dev/null @@ -1,136 +0,0 @@ -name: CI - -on: - push: - branches: ["main", "master"] - paths: - - "scraper/**" - - "ui/**" - - ".gitea/workflows/**" - pull_request: - branches: ["main", "master"] - paths: - - "scraper/**" - - "ui/**" - - ".gitea/workflows/**" - -jobs: - # ── scraper: lint & vet ────────────────────────────────────────────────────── - lint: - name: Lint - runs-on: ubuntu-latest - defaults: - run: - working-directory: scraper - steps: - - uses: actions/checkout@v4 - - - uses: actions/setup-go@v5 - with: - go-version-file: scraper/go.mod - cache-dependency-path: scraper/go.sum - - - name: go vet - run: go vet ./... - - - name: staticcheck - run: go tool staticcheck ./... - - # ── scraper: tests ─────────────────────────────────────────────────────────── - test: - name: Test - runs-on: ubuntu-latest - defaults: - run: - working-directory: scraper - steps: - - uses: actions/checkout@v4 - - - uses: actions/setup-go@v5 - with: - go-version-file: scraper/go.mod - cache-dependency-path: scraper/go.sum - - - name: Run tests - run: go test -race -count=1 -timeout=60s ./... - - # ── scraper: build binary ──────────────────────────────────────────────────── - build: - name: Build - runs-on: ubuntu-latest - needs: [lint, test] - defaults: - run: - working-directory: scraper - steps: - - uses: actions/checkout@v4 - - - uses: actions/setup-go@v5 - with: - go-version-file: scraper/go.mod - cache-dependency-path: scraper/go.sum - - - name: Build binary - run: | - CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \ - go build -ldflags="-s -w" -o bin/scraper ./cmd/scraper - - - name: Upload binary artifact - uses: actions/upload-artifact@v3 - with: - name: scraper-linux-amd64 - path: scraper/bin/scraper - retention-days: 7 - - # ── ui: type-check & build ─────────────────────────────────────────────────── - ui: - name: UI - runs-on: ubuntu-latest - defaults: - run: - working-directory: ui - steps: - - uses: actions/checkout@v4 - - - uses: actions/setup-node@v4 - with: - node-version: "22" - cache: npm - cache-dependency-path: ui/package-lock.json - - - name: Install dependencies - run: npm ci - - - name: Type check - run: npm run check - - - name: Build - run: npm run build - - # ── docker build (& push) ──────────────────────────────────────────────────── - # Uncomment once the runner has Docker available and a registry is configured. - # - # docker: - # name: Docker - # runs-on: ubuntu-latest - # needs: [lint, test] - # # Only push images on commits to the default branch, not on PRs. - # # if: github.event_name == 'push' - # steps: - # - uses: actions/checkout@v4 - # - # - name: Log in to Gitea registry - # uses: docker/login-action@v3 - # with: - # registry: gitea.kalekber.cc - # username: ${{ secrets.REGISTRY_USER }} - # password: ${{ secrets.REGISTRY_TOKEN }} - # - # - name: Build and push - # uses: docker/build-push-action@v5 - # with: - # context: ./scraper - # push: true - # tags: | - # gitea.kalekber.cc/kamil/libnovel:latest - # gitea.kalekber.cc/kamil/libnovel:${{ gitea.sha }} diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release-scraper.yaml similarity index 69% rename from .gitea/workflows/release.yaml rename to .gitea/workflows/release-scraper.yaml index b30de6e..063a6bb 100644 --- a/.gitea/workflows/release.yaml +++ b/.gitea/workflows/release-scraper.yaml @@ -1,4 +1,4 @@ -name: Release +name: Release / Scraper on: push: @@ -43,36 +43,11 @@ jobs: - name: Run tests run: go test -race -count=1 -timeout=60s ./... - # ── ui: type-check & build ─────────────────────────────────────────────────── - ui: - name: UI - runs-on: ubuntu-latest - defaults: - run: - working-directory: ui - steps: - - uses: actions/checkout@v4 - - - uses: actions/setup-node@v4 - with: - node-version: "22" - cache: npm - cache-dependency-path: ui/package-lock.json - - - name: Install dependencies - run: npm ci - - - name: Type check - run: npm run check - - - name: Build - run: npm run build - - # ── build & release ────────────────────────────────────────────────────────── + # ── build & publish release ────────────────────────────────────────────────── release: name: Release runs-on: ubuntu-latest - needs: [lint, test, ui] + needs: [lint, test] steps: - uses: actions/checkout@v4 diff --git a/.gitea/workflows/release-ui.yaml b/.gitea/workflows/release-ui.yaml new file mode 100644 index 0000000..8cc0a6b --- /dev/null +++ b/.gitea/workflows/release-ui.yaml @@ -0,0 +1,33 @@ +name: Release / UI + +on: + push: + tags: + - "v*" + +defaults: + run: + working-directory: ui + +jobs: + # ── type-check & build ─────────────────────────────────────────────────────── + build: + name: Build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-node@v4 + with: + node-version: "22" + cache: npm + cache-dependency-path: ui/package-lock.json + + - name: Install dependencies + run: npm ci + + - name: Type check + run: npm run check + + - name: Build + run: npm run build