mirror of
https://github.com/jpillora/chisel
synced 2026-06-08 15:07:02 +00:00
89e29ca4df
Use .Version instead of .Tag for Docker image templates, add major and major.minor manifest tags, skip pushing latest/semver tags for prereleases, and pin GoReleaser to v2.12.7 for reproducible builds. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
75 lines
2.0 KiB
YAML
75 lines
2.0 KiB
YAML
name: CI
|
|
on:
|
|
pull_request: {}
|
|
push: {}
|
|
jobs:
|
|
# ================
|
|
# BUILD AND TEST JOB
|
|
# ================
|
|
test:
|
|
name: Build & Test
|
|
strategy:
|
|
matrix:
|
|
go-version: ["stable"]
|
|
platform: [ubuntu-latest, macos-latest, windows-latest]
|
|
runs-on: ${{ matrix.platform }}
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v5
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Set up Go
|
|
uses: actions/setup-go@v6
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
check-latest: true
|
|
- name: Build
|
|
run: go build -v -o /dev/null .
|
|
- name: Test
|
|
run: go test -v ./...
|
|
# ================
|
|
# RELEASE (on push "v*" tag)
|
|
# Builds binaries, packages, and multi-arch Docker images via GoReleaser
|
|
# ================
|
|
release:
|
|
name: Release
|
|
needs: test
|
|
if: startsWith(github.ref, 'refs/tags/v')
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: write
|
|
packages: write
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v5
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Set up Go
|
|
uses: actions/setup-go@v6
|
|
with:
|
|
go-version: stable
|
|
cache: true
|
|
- name: Set up QEMU
|
|
uses: docker/setup-qemu-action@v3
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
- name: Login to GHCR
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.repository_owner }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
- name: Login to Docker Hub
|
|
uses: docker/login-action@v3
|
|
with:
|
|
username: jpillora
|
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
- name: Run GoReleaser
|
|
uses: goreleaser/goreleaser-action@v6
|
|
with:
|
|
distribution: goreleaser
|
|
version: v2.12.7
|
|
args: release --clean --config .github/goreleaser.yml
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|