mirror of
https://github.com/goreleaser/goreleaser.git
synced 2024-12-27 01:33:39 +02:00
2bf08f11a6
Maybe 3rd time is the charm! This makes the CI build run on windows too, and fix broken tests/featuers on Windows. Most of the changes are related to ignoring certain tests on windows, or making sure to use the right path separators. More work to do in the future, probably! #4293 --------- Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
281 lines
6.8 KiB
YAML
281 lines
6.8 KiB
YAML
# https://taskfile.dev
|
|
|
|
version: "3"
|
|
|
|
env:
|
|
GO111MODULE: on
|
|
GOPROXY: https://proxy.golang.org,direct
|
|
|
|
tasks:
|
|
dev:
|
|
desc: Setup git hooks
|
|
cmds:
|
|
- cp -f scripts/pre-commit.sh .git/hooks/pre-commit
|
|
|
|
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:
|
|
- ./goreleaser
|
|
cmds:
|
|
- go build
|
|
|
|
test:
|
|
desc: Run 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=15m
|
|
|
|
cover:
|
|
desc: Open the cover tool
|
|
cmds:
|
|
- go tool cover -html=coverage.txt
|
|
|
|
fmt:
|
|
desc: gofumpt all code
|
|
cmds:
|
|
- gofumpt -w -l .
|
|
|
|
lint:
|
|
desc: Lint the code with golangci-lint
|
|
cmds:
|
|
- golangci-lint run --config ./.golangci.yaml ./...
|
|
|
|
ci:
|
|
desc: Run all CI steps
|
|
cmds:
|
|
- task: setup
|
|
- task: build
|
|
- task: test
|
|
|
|
default:
|
|
desc: Runs the default tasks
|
|
cmds:
|
|
- task: ci
|
|
|
|
nix:flake:build:
|
|
desc: build goreleaser using the nix flake
|
|
cmds:
|
|
- task: nix:flake:update-vendor
|
|
- nix build .
|
|
|
|
nix:flake:update:
|
|
desc: update flake.lock
|
|
cmds:
|
|
- nix flake update
|
|
generates:
|
|
- flake.lock
|
|
|
|
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
|
|
|
|
nix:licenses:generate:
|
|
desc: Generate nix/licenses.go
|
|
cmds:
|
|
- ./scripts/gen-nix-licenses.sh
|
|
generates:
|
|
- ./internal/pipe/nix/licenses.go
|
|
|
|
schema:generate:
|
|
desc: Generate JSONSchema
|
|
cmds:
|
|
- go run . schema -o ./www/docs/static/schema.json
|
|
sources:
|
|
- pkg/config/config.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:
|
|
- cp -rf CONTRIBUTING.md www/docs/contributing.md
|
|
- cp -rf USERS.md www/docs/users.md
|
|
- cp -rf EULA.md www/docs/eula.md
|
|
- cp -rf SECURITY.md www/docs/security.md
|
|
sources:
|
|
- CONTRIBUTING.md
|
|
- USERS.md
|
|
- EULA.md
|
|
- SECURITY.md
|
|
generates:
|
|
- www/docs/contributing.md
|
|
- www/docs/users.md
|
|
- www/docs/eula.md
|
|
- www/docs/security.md
|
|
|
|
docs:releases:
|
|
desc: Generate releases.json and latest files
|
|
cmds:
|
|
- ./scripts/get-releases.sh
|
|
generates:
|
|
- www/docs/static/releases.json
|
|
- www/docs/static/releases-pro.json
|
|
- www/docs/static/latest
|
|
- www/docs/static/latest-pro
|
|
|
|
docs:imgs:
|
|
desc: Download and resize images
|
|
cmds:
|
|
- wget -O www/docs/static/logo.png https://raw.githubusercontent.com/goreleaser/artwork/master/goreleaserfundo.png
|
|
- wget -O www/docs/static/card.png https://raw.githubusercontent.com/goreleaser/artwork/master/twitter-card.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 -d nightly
|
|
- git tag {{.NEXT}}
|
|
- echo {{.NEXT}}
|
|
- git push origin --tags
|
|
|
|
goreleaser:test:pkg:
|
|
desc: Test a package
|
|
cmds:
|
|
- docker run --platform linux/{{.Platform}} --rm --workdir /tmp -v $PWD/dist:/tmp {{.Image}} sh -c '{{.Cmd}} && goreleaser --version'
|
|
|
|
goreleaser:test:rpm:
|
|
desc: Tests rpm packages
|
|
vars:
|
|
rpm: "rpm --nodeps -ivh"
|
|
cmds:
|
|
- task: goreleaser:test:pkg
|
|
vars:
|
|
Platform: "386"
|
|
Image: centos:centos7
|
|
Cmd: "{{.rpm}} goreleaser-*.i386.rpm"
|
|
- task: goreleaser:test:pkg
|
|
vars:
|
|
Platform: "amd64"
|
|
Image: fedora
|
|
Cmd: "{{.rpm}} goreleaser-*.x86_64.rpm"
|
|
- task: goreleaser:test:pkg
|
|
vars:
|
|
Platform: "arm64"
|
|
Image: fedora
|
|
Cmd: "{{.rpm}} goreleaser-*.aarch64.rpm"
|
|
|
|
goreleaser:test:deb:
|
|
desc: Tests deb packages
|
|
vars:
|
|
dpkg: "dpkg --ignore-depends=git -i"
|
|
cmds:
|
|
- task: goreleaser:test:pkg
|
|
vars:
|
|
Platform: "amd64"
|
|
Image: ubuntu
|
|
Cmd: "{{.dpkg}} goreleaser*_amd64.deb"
|
|
- task: goreleaser:test:pkg
|
|
vars:
|
|
Platform: "arm64"
|
|
Image: ubuntu
|
|
Cmd: "{{.dpkg}} goreleaser*_arm64.deb"
|
|
- task: goreleaser:test:pkg
|
|
vars:
|
|
Platform: "arm/7"
|
|
Image: ubuntu
|
|
Cmd: "{{.dpkg}} goreleaser*_armhf.deb"
|
|
|
|
goreleaser:test:apk:
|
|
desc: Tests apk packages
|
|
vars:
|
|
apk: "apk add --allow-untrusted -U"
|
|
cmds:
|
|
- task: goreleaser:test:pkg
|
|
vars:
|
|
Platform: "386"
|
|
Image: alpine
|
|
Cmd: "{{.apk}} goreleaser*_x86.apk"
|
|
- task: goreleaser:test:pkg
|
|
vars:
|
|
Platform: "amd64"
|
|
Image: alpine
|
|
Cmd: "{{.apk}} goreleaser*_x86_64.apk"
|
|
- task: goreleaser:test:pkg
|
|
vars:
|
|
Platform: "arm64"
|
|
Image: alpine
|
|
Cmd: "{{.apk}} goreleaser*_aarch64.apk"
|
|
- task: goreleaser:test:pkg
|
|
vars:
|
|
Platform: "arm/7"
|
|
Image: alpine
|
|
Cmd: "{{.apk}} goreleaser*_armv7.apk"
|
|
|
|
goreleaser:test:
|
|
desc: Test built linux packages
|
|
cmds:
|
|
- task: goreleaser:test:apk
|
|
- task: goreleaser:test:deb
|
|
- task: goreleaser:test:rpm
|
|
|
|
goreleaser:
|
|
desc: Run GoReleaser either in snapshot or release mode
|
|
deps:
|
|
- build
|
|
vars:
|
|
SNAPSHOT:
|
|
sh: 'if [[ $GITHUB_REF != refs/tags/v* ]]; then echo "--snapshot"; fi'
|
|
cmds:
|
|
- ./goreleaser release --clean --timeout 60m {{.SNAPSHOT}}
|
|
|
|
nightly:
|
|
cmds:
|
|
- gh run list --workflow=nightly-oss.yml
|
|
- gh workflow run nightly-oss.yml
|
|
- sleep 30
|
|
- gh run watch
|