Skip to content

feat: add reproducible debian packaging with goreleaser & CI workflow #163

feat: add reproducible debian packaging with goreleaser & CI workflow

feat: add reproducible debian packaging with goreleaser & CI workflow #163

Workflow file for this run

name: Checks
on:
push:
branches:
- main
pull_request:
jobs:
test:
name: Test
runs-on: ubuntu-latest
steps:
- name: Check out code into the Go module directory
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: ^1.24
- name: Cache Go modules
uses: actions/cache@v4
with:
path: |
~/.cache/go-build
~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Download dependencies
run: go mod download
- name: Run unit tests and generate the coverage report
run: make test-race
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Check out code into the Go module directory
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: ^1.24
- name: Cache Go modules
uses: actions/cache@v4
with:
path: |
~/.cache/go-build
~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Download dependencies
run: go mod download
- name: Install gofumpt
run: go install mvdan.cc/gofumpt@v0.4.0
- name: Install staticcheck
run: go install honnef.co/go/tools/cmd/staticcheck@v0.6.1
- name: Install golangci-lint
run: go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.64.8
# - name: Install NilAway
# run: go install go.uber.org/nilaway/cmd/nilaway@v0.0.0-20240821220108-c91e71c080b7
- name: Lint
run: make lint
- name: Ensure go mod tidy runs without changes
run: |
go mod tidy
git update-index -q --really-refresh
git diff-index HEAD
reproducibility-test:
name: Test Reproducible Builds
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.24'
cache: true
- name: Set SOURCE_DATE_EPOCH for reproducible builds
run: echo "SOURCE_DATE_EPOCH=$(git log -1 --format=%ct)" >> $GITHUB_ENV
- name: Test reproducible builds
run: |
# Install GoReleaser
go install github.com/goreleaser/goreleaser/v2@latest
# Run reproducibility test
make package-test-reproducible
echo "✅ Reproducibility test passed"
env:
SOURCE_DATE_EPOCH: ${{ env.SOURCE_DATE_EPOCH }}