mirror of
https://github.com/goreleaser/nfpm
synced 2025-12-30 22:01:40 +01:00
New fields need to be added to the schema, including new enums. Old fields need to remain, as long as they are still in the code. Signed-off-by: Anders F Björklund <anders.f.bjorklund@gmail.com>
192 lines
5.2 KiB
YAML
192 lines
5.2 KiB
YAML
# https://taskfile.dev
|
|
|
|
version: "3"
|
|
|
|
env:
|
|
GO111MODULE: on
|
|
GOPROXY: https://proxy.golang.org,direct
|
|
|
|
tasks:
|
|
dev:
|
|
desc: Setup git hooks
|
|
cmds:
|
|
- git config core.hooksPath .githooks
|
|
|
|
setup:
|
|
desc: Install dependencies
|
|
cmds:
|
|
- go mod tidy
|
|
|
|
docker:setup:
|
|
desc: Setup Docker for multi-arch image builds
|
|
cmds:
|
|
- docker run --privileged --rm tonistiigi/binfmt --install all
|
|
|
|
build:
|
|
desc: Build the binary
|
|
sources:
|
|
- ./**/*.go
|
|
generates:
|
|
- ./nfpm
|
|
cmds:
|
|
- go build ./cmd/nfpm
|
|
|
|
acceptance:windows:package:
|
|
desc: Build packages for testing
|
|
vars:
|
|
SRC: "./testdata/acceptance/core.complex.yaml"
|
|
cmds:
|
|
- mkdir -p ./dist
|
|
- go run ./cmd/nfpm/... pkg -f {{.SRC}} -p deb -t ./dist/foo.deb
|
|
- go run ./cmd/nfpm/... pkg -f {{.SRC}} -p rpm -t ./dist/foo.rpm
|
|
- go run ./cmd/nfpm/... pkg -f {{.SRC}} -p apk -t ./dist/foo.apk
|
|
- go run ./cmd/nfpm/... pkg -f {{.SRC}} -p archlinux -t ./dist/foo.pkg.tar.zst
|
|
|
|
acceptance:windows:install:
|
|
desc: Install packages built with package
|
|
cmds:
|
|
- docker run --rm --workdir /tmp -v $PWD/dist:/tmp fedora rpm -ivh foo.rpm
|
|
- docker run --rm --workdir /tmp -v $PWD/dist:/tmp ubuntu dpkg -i foo.deb
|
|
- docker run --rm --workdir /tmp -v $PWD/dist:/tmp archlinux pacman --noconfirm -U foo.pkg.tar.zst
|
|
- docker run --rm --workdir /tmp -v $PWD/dist:/tmp alpine apk add --allow-untrusted foo.apk
|
|
|
|
acceptance:pull:
|
|
desc: Pull acceptance test images
|
|
vars:
|
|
IMGS:
|
|
sh: grep FROM ./testdata/acceptance/*.dockerfile | cut -f2 -d' ' | grep -v min | grep -v test | sort | uniq
|
|
cmds:
|
|
- echo "{{.IMGS}}" | while read -r img; do docker pull $img; done
|
|
|
|
acceptance:
|
|
desc: Run acceptance tests
|
|
env:
|
|
LC_ALL: C
|
|
vars:
|
|
TEST_OPTIONS: '{{default "" .TEST_OPTIONS}}'
|
|
TEST_PATTERN: '{{default "." .TEST_PATTERN}}'
|
|
cmds:
|
|
- go test {{.TEST_OPTIONS}} -tags=acceptance -p 4 -failfast -race -coverpkg=./... -covermode=atomic -coverprofile=coverage.txt acceptance_test.go -run {{.TEST_PATTERN}} -timeout=1h
|
|
|
|
test:
|
|
desc: Run unit tests
|
|
env:
|
|
LC_ALL: C
|
|
vars:
|
|
TEST_OPTIONS: '{{default "" .TEST_OPTIONS}}'
|
|
SOURCE_FILES: '{{default "./..." .SOURCE_FILES}}'
|
|
TEST_PATTERN: '{{default "." .TEST_PATTERN}}'
|
|
cmds:
|
|
- go test {{.TEST_OPTIONS}} -failfast -race -coverpkg=./... -covermode=atomic -coverprofile=coverage.txt {{.SOURCE_FILES}} -run {{.TEST_PATTERN}} -timeout=5m
|
|
|
|
cover:
|
|
desc: Open the cover tool
|
|
cmds:
|
|
- go tool cover -html=coverage.txt
|
|
|
|
fmt:
|
|
desc: gofumpt all code
|
|
cmds:
|
|
- gofumpt -w -l .
|
|
|
|
ci:
|
|
desc: Run all CI steps
|
|
cmds:
|
|
- task: setup
|
|
- task: build
|
|
- task: test
|
|
- task: acceptance
|
|
|
|
default:
|
|
desc: Runs the default tasks
|
|
cmds:
|
|
- task: ci
|
|
|
|
schema:generate:
|
|
desc: Generate JSONSchema
|
|
cmds:
|
|
- go run ./cmd/nfpm/ schema -o ./www/static/schema.json
|
|
sources:
|
|
- nfpm.go
|
|
generates:
|
|
- ./www/static/schema.json
|
|
|
|
schema:validate:
|
|
desc: Validate JSONSchema
|
|
cmds:
|
|
- jv ./www/static/schema.json ./testdata/acceptance/*.yaml
|
|
sources:
|
|
- ./www/static/schema.json
|
|
- ./testdata/acceptance/*.yaml
|
|
|
|
docs:generate:
|
|
desc: Generate docs
|
|
cmds:
|
|
- ./scripts/cmd_docs.sh
|
|
sources:
|
|
- cmd/*.go
|
|
- files/*.go
|
|
- ./scripts/cmd_docs.sh
|
|
- CONTRIBUTING.md
|
|
generates:
|
|
- www/content/docs/cmd/*.md
|
|
- www/content/docs/contributing.md
|
|
|
|
docs:releases:
|
|
desc: Generate the latest file
|
|
cmds:
|
|
- ./scripts/pages/releases.sh
|
|
generates:
|
|
- www/static/latest
|
|
|
|
docs:imgs:
|
|
desc: Download and resize images
|
|
cmds:
|
|
- wget -O www/static/logo.png https://github.com/goreleaser/artwork/raw/master/goreleaserfundo.png
|
|
- wget -O www/static/favicon.svg https://raw.githubusercontent.com/goreleaser/artwork/refs/heads/master/goreleaser.svg
|
|
- convert www/static/logo.png -define icon:auto-resize=64,48,32,16 www/static/favicon.ico
|
|
- convert www/static/logo.png -resize x120 www/static/apple-touch-icon.png
|
|
- convert www/static/logo.png -resize x192 www/static/android-chrome-192x192.png
|
|
- convert www/static/logo.png -resize x512 www/static/android-chrome-512x512.png
|
|
- convert www/static/logo.png -resize x16 www/static/favicon-16x16.png
|
|
- convert www/static/logo.png -resize x32 www/static/favicon-32x32.png
|
|
|
|
docs:serve:
|
|
desc: Start documentation server
|
|
cmds:
|
|
- task: docs:generate
|
|
- cd www && hugo server --buildDrafts --bind 0.0.0.0 --port 8080
|
|
|
|
docs:build:
|
|
desc: Build docs
|
|
cmds:
|
|
- task: docs:generate
|
|
- cd www && hugo --minify
|
|
|
|
docs:test:
|
|
desc: Test docs with htmltest
|
|
cmds:
|
|
- task: docs:build
|
|
- htmltest www/public -c www/htmltest.yml
|
|
|
|
release:
|
|
desc: Create a new tag
|
|
vars:
|
|
NEXT:
|
|
sh: svu n
|
|
cmds:
|
|
- git tag {{.NEXT}}
|
|
- echo {{.NEXT}}
|
|
- git push origin --tags
|
|
|
|
nix:flake:update-vendor:
|
|
desc: update default flake package vendor hash
|
|
cmds:
|
|
- bash ./scripts/nix-update-flake.sh
|
|
generates:
|
|
- flake.nix
|
|
sources:
|
|
- flake.lock
|
|
- go.mod
|
|
- go.sum
|