name: CI on: pull_request: push: tags: - v* branches: - main concurrency: group: ci-${{ github.head_ref || github.ref }} cancel-in-progress: true jobs: build: name: ๐Ÿ”จ Build (${{ matrix.go-version }}) strategy: fail-fast: false matrix: go-version: [1.24.x, 1.25.x] runs-on: ubuntu-latest steps: - name: ๐Ÿ“ฅ Checkout uses: actions/checkout@v6 - name: โฌ‡๏ธ Setup Go uses: actions/setup-go@v6 with: go-version: ${{ matrix.go-version }} - name: ๐Ÿ”จ Build run: go build -v ./cmd/task test: name: ๐Ÿงช Test (${{ matrix.go-version }}, ${{ matrix.platform }}) strategy: fail-fast: false matrix: go-version: [1.24.x, 1.25.x] platform: [ubuntu-latest, macos-latest, windows-latest] runs-on: ${{ matrix.platform }} steps: - name: ๐Ÿ“ฅ Checkout uses: actions/checkout@v6 - name: โฌ‡๏ธ Setup Go uses: actions/setup-go@v6 with: go-version: ${{ matrix.go-version }} - name: โฌ‡๏ธ Setup Task uses: go-task/setup-task@v1 - name: ๐Ÿงช Test run: task test --output group --output-group-begin '::group::{{.TASK}}' --output-group-end '::endgroup::' lint: name: ๐Ÿ” Lint (${{ matrix.go-version }}) strategy: fail-fast: false matrix: go-version: [1.24.x, 1.25.x] runs-on: ubuntu-latest steps: - name: ๐Ÿ“ฅ Checkout uses: actions/checkout@v6 - name: โฌ‡๏ธ Setup Go uses: actions/setup-go@v6 with: go-version: ${{ matrix.go-version }} - name: ๐Ÿ” Lint uses: golangci/golangci-lint-action@v9 with: version: v2.7.1 lint-jsonschema: name: ๐Ÿ“‹ Lint JSON Schema runs-on: ubuntu-latest steps: - name: ๐Ÿ“ฅ Checkout uses: actions/checkout@v6 - name: โฌ‡๏ธ Setup Python uses: actions/setup-python@v6 with: python-version: 3.14 - name: โฌ‡๏ธ Install check-jsonschema run: python -m pip install 'check-jsonschema==0.27.3' - name: ๐Ÿ“‹ Validate JSON Schema run: check-jsonschema --check-metaschema website/src/public/schema.json ci-status: name: โœ… CI runs-on: ubuntu-latest needs: [build, test, lint, lint-jsonschema] if: always() steps: - name: โœ… Check CI status run: | if [[ "${{ needs.build.result }}" != "success" ]] || \ [[ "${{ needs.test.result }}" != "success" ]] || \ [[ "${{ needs.lint.result }}" != "success" ]] || \ [[ "${{ needs.lint-jsonschema.result }}" != "success" ]]; then echo "CI failed" exit 1 fi echo "CI passed"