1
0
mirror of https://github.com/goreleaser/goreleaser.git synced 2024-12-25 01:32:21 +02:00
goreleaser/Taskfile.yml
Carlos Alexandro Becker 2bf08f11a6
ci: run build/test workflow on windows too (#5263)
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>
2024-11-16 10:30:39 -03:00

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