mirror of
https://github.com/go-task/task.git
synced 2026-06-15 03:41:37 +00:00
113 lines
2.7 KiB
YAML
113 lines
2.7 KiB
YAML
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
|
|
|
|
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"
|