name: CI on: push: branches: [ main ] pull_request: branches: [ main ] jobs: # Common setup job that other jobs can depend on setup: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version: '1.24.2' - uses: actions/cache@v4 with: path: | ~/.cache/go-build ~/go/pkg/mod key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go- - run: go mod tidy # Lint job lint: needs: setup runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: golangci/golangci-lint-action@v7 with: version: v2.0 args: --timeout 5m # Test job test: needs: setup runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version: '1.24.2' - run: go test ./... -v # Security scan job security: needs: setup runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: securego/gosec@master with: args: ./...