diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml deleted file mode 100644 index 75a65943..00000000 --- a/.github/workflows/build.yaml +++ /dev/null @@ -1,33 +0,0 @@ -name: Build - -on: - push: - branches: - - "master" - tags: - - "v*" - pull_request: - -jobs: - build: - name: Frontend and Backend - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v5 - with: - fetch-depth: 0 - - uses: actions/setup-go@v6 - with: - go-version: '1.25' - - uses: pnpm/action-setup@v4 - with: - package_json_file: "frontend/package.json" - - uses: actions/setup-node@v6 - with: - node-version: "24.x" - cache: "pnpm" - cache-dependency-path: "frontend/pnpm-lock.yaml" - - name: Install Task - uses: go-task/setup-task@v1 - - run: task build - diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 00000000..2d464e67 --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,114 @@ +name: Continuous Integration + +on: + push: + branches: + - "master" + tags: + - "v*" + pull_request: + +jobs: + lint-frontend: + name: Lint Frontend + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + - uses: pnpm/action-setup@v4 + with: + package_json_file: "frontend/package.json" + - uses: actions/setup-node@v6 + with: + node-version: "24.x" + cache: "pnpm" + cache-dependency-path: "frontend/pnpm-lock.yaml" + - working-directory: frontend + run: | + pnpm install --frozen-lockfile + pnpm run lint + + lint-backend: + name: Lint Backend + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + - uses: actions/setup-go@v6 + with: + go-version: "1.25.x" + - uses: golangci/golangci-lint-action@v9 + with: + version: "latest" + + test: + name: Test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + - uses: actions/setup-go@v6 + with: + go-version: "1.25.x" + - run: go test --race ./... + + build: + name: Build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + with: + fetch-depth: 0 + - uses: actions/setup-go@v6 + with: + go-version: '1.25' + - uses: pnpm/action-setup@v4 + with: + package_json_file: "frontend/package.json" + - uses: actions/setup-node@v6 + with: + node-version: "24.x" + cache: "pnpm" + cache-dependency-path: "frontend/pnpm-lock.yaml" + - name: Install Task + uses: go-task/setup-task@v1 + - run: task build + + release: + name: Release + needs: ["lint-frontend", "lint-backend", "test", "build"] + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + with: + fetch-depth: 0 + - uses: actions/setup-go@v6 + with: + go-version: '1.25' + - uses: pnpm/action-setup@v4 + with: + package_json_file: "frontend/package.json" + - uses: actions/setup-node@v6 + with: + node-version: "24.x" + cache: "pnpm" + cache-dependency-path: "frontend/pnpm-lock.yaml" + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Build frontend + run: make build-frontend + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Run GoReleaser + uses: goreleaser/goreleaser-action@v6 + with: + version: latest + args: release --clean + env: + GITHUB_TOKEN: ${{ secrets.GH_PAT }} + + + diff --git a/.github/workflows/docs-release.yml b/.github/workflows/docs-release.yml deleted file mode 100644 index 5f879c08..00000000 --- a/.github/workflows/docs-release.yml +++ /dev/null @@ -1,31 +0,0 @@ -name: Build and Release Docs - -on: - push: - branches: - - master - -jobs: - build-and-release: - permissions: - contents: read - deployments: write - pull-requests: write - runs-on: ubuntu-latest - timeout-minutes: 5 - steps: - - name: Checkout - uses: actions/checkout@v5 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - name: Install Task - uses: go-task/setup-task@v1 - - name: Build site - run: task docs - - name: Deploy to Cloudflare Pages - uses: cloudflare/wrangler-action@v3 - with: - apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} - accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} - command: pages deploy www/public --project-name=${{ secrets.CLOUDFLARE_PROJECT_NAME }} - gitHubToken: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index c87d56c8..8eec9747 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -1,13 +1,18 @@ -name: Build Docs +name: Docs on: pull_request: paths: - 'www' - '*.md' + push: + branches: + - master jobs: build: + name: Build Docs + if: github.event_name == 'pull_request' runs-on: ubuntu-latest steps: - name: Checkout @@ -18,3 +23,30 @@ jobs: uses: go-task/setup-task@v1 - name: Build site run: task docs + + build-and-release: + if: github.event_name == 'push' && github.ref == 'refs/heads/master' + name: Build and Release Docs + permissions: + contents: read + deployments: write + pull-requests: write + runs-on: ubuntu-latest + timeout-minutes: 5 + steps: + - name: Checkout + uses: actions/checkout@v5 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Install Task + uses: go-task/setup-task@v1 + - name: Build site + run: task docs + - name: Deploy to Cloudflare Pages + uses: cloudflare/wrangler-action@v3 + with: + apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} + accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} + command: pages deploy www/public --project-name=${{ secrets.CLOUDFLARE_PROJECT_NAME }} + gitHubToken: ${{ secrets.GITHUB_TOKEN }} + diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml deleted file mode 100644 index 851cf772..00000000 --- a/.github/workflows/lint.yaml +++ /dev/null @@ -1,40 +0,0 @@ -name: Lint - -on: - push: - branches: - - "master" - tags: - - "v*" - pull_request: - -jobs: - frontend: - name: Frontend - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v5 - - uses: pnpm/action-setup@v4 - with: - package_json_file: "frontend/package.json" - - uses: actions/setup-node@v6 - with: - node-version: "24.x" - cache: "pnpm" - cache-dependency-path: "frontend/pnpm-lock.yaml" - - working-directory: frontend - run: | - pnpm install --frozen-lockfile - pnpm run lint - - backend: - name: Backend - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v5 - - uses: actions/setup-go@v6 - with: - go-version: "1.25.x" - - uses: golangci/golangci-lint-action@v9 - with: - version: "latest" diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml deleted file mode 100644 index 58b305af..00000000 --- a/.github/workflows/release.yaml +++ /dev/null @@ -1,43 +0,0 @@ -name: Release - -on: - push: - tags: - - "v*" - -jobs: - release: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v5 - with: - fetch-depth: 0 - - uses: actions/setup-go@v6 - with: - go-version: '1.25' - - uses: pnpm/action-setup@v4 - with: - package_json_file: "frontend/package.json" - - uses: actions/setup-node@v6 - with: - node-version: "24.x" - cache: "pnpm" - cache-dependency-path: "frontend/pnpm-lock.yaml" - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - name: Build frontend - run: make build-frontend - - name: Login to Docker Hub - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Run GoReleaser - uses: goreleaser/goreleaser-action@v6 - with: - version: latest - args: release --clean - env: - GITHUB_TOKEN: ${{ secrets.GH_PAT }} diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml deleted file mode 100644 index 5c975594..00000000 --- a/.github/workflows/test.yaml +++ /dev/null @@ -1,20 +0,0 @@ -name: Test - -on: - push: - branches: - - "master" - tags: - - "v*" - pull_request: - -jobs: - backend: - name: Backend - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v5 - - uses: actions/setup-go@v6 - with: - go-version: "1.25.x" - - run: go test --race ./...