1
1
Fork 0
mirror of https://github.com/goreleaser/nfpm synced 2024-04-16 21:33:52 +02:00
nfpm/Taskfile.yml
2024-04-01 11:17:12 -03:00

188 lines
5.0 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/docs/static/schema.json
sources:
- nfpm.go
generates:
- ./www/docs/static/schema.json
schema:validate:
desc: Validate JSONSchema
cmds:
- jv ./www/docs/static/schema.json
sources:
- ./www/docs/static/schema.json
docs:generate:
desc: Generate docs
cmds:
- ./scripts/cmd_docs.sh
sources:
- cmd/*.go
- files/*.go
- ./scripts/cmd_docs.sh
- CONTRIBUTING.md
generates:
- www/docs/cmd/*.md
- www/docs/contributing.md
docs:releases:
desc: Generate the latest file
cmds:
- ./scripts/pages/releases.sh
generates:
- www/docs/static/latest
docs:imgs:
desc: Download and resize images
cmds:
- wget -O www/docs/static/logo.png https://github.com/goreleaser/artwork/raw/master/goreleaserfundo.png
- wget -O www/docs/static/card.png "https://og.caarlos0.dev/**GoReleaser**%20%7C%20Deliver%20Go%20binaries%20as%20fast%20and%20easily%20as%20possible.png?theme=light&md=1&fontSize=80px&images=https://github.com/goreleaser.png"
- wget -O www/docs/static/avatar.png https://github.com/goreleaser.png
- convert www/docs/static/avatar.png -define icon:auto-resize=64,48,32,16 www/docs/static/favicon.ico
- convert www/docs/static/avatar.png -resize x120 www/docs/static/apple-touch-icon.png
docs:serve:
desc: Start documentation server
cmds:
- task: docs:generate
- "mkdocs serve -f www/mkdocs.yml -a 0.0.0.0:8000"
docs:build:
desc: Build docs
cmds:
- task: docs:generate
- "mkdocs build -f www/mkdocs.yml"
docs:test:
desc: Test docs with htmltest
cmds:
- task: docs:build
- "htmltest www/site -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