diff --git a/.golangci.yaml b/.golangci.yaml index 8a9deb29cf7..ec0e92ecf75 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -14,6 +14,9 @@ linters: - tagliatelle - misspell - depguard + disable: + - staticcheck + - errcheck linters-settings: forbidigo: forbid: diff --git a/.goreleaser-upstream.yaml b/.goreleaser-upstream.yaml new file mode 100644 index 00000000000..2b98510ce26 --- /dev/null +++ b/.goreleaser-upstream.yaml @@ -0,0 +1,393 @@ +# yaml-language-server: $schema=https://goreleaser.com/static/schema.json +# vim: set ts=2 sw=2 tw=0 fo=jcroql +env: + - GO111MODULE=on + +before: + hooks: + - go mod tidy + - ./scripts/completions.sh + - ./scripts/manpages.sh + +snapshot: + name_template: "{{ incpatch .Version }}-next" + +gomod: + proxy: true + +report_sizes: true + +git: + ignore_tags: + - "{{ if not .IsNightly }}nightly{{ end }}" + +metadata: + mod_timestamp: "{{ .CommitTimestamp }}" + +builds: + - env: + - CGO_ENABLED=0 + goos: + - linux + - darwin + - windows + goarch: + - "386" + - amd64 + - arm + - arm64 + - ppc64 + goarm: + - "7" + ignore: + - goos: windows + goarch: arm + mod_timestamp: "{{ .CommitTimestamp }}" + flags: + - -trimpath + ldflags: + - -s -w -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{ .CommitDate }} -X main.builtBy=goreleaser -X main.treeState={{ .IsGitDirty }} + +universal_binaries: + - replace: false + +# temporarely disables until we add better filters for platforms et al, and test more. +# upx: +# - enabled: true + +checksum: + name_template: "checksums.txt" + +changelog: + sort: asc + use: github + filters: + exclude: + - "^test:" + - "^chore" + - "merge conflict" + - Merge pull request + - Merge remote-tracking branch + - Merge branch + - go mod tidy + groups: + - title: Dependency updates + regexp: '^.*?(feat|fix)\(deps\)!?:.+$' + order: 300 + - title: "New Features" + regexp: '^.*?feat(\([[:word:]]+\))??!?:.+$' + order: 100 + - title: "Security updates" + regexp: '^.*?sec(\([[:word:]]+\))??!?:.+$' + order: 150 + - title: "Bug fixes" + regexp: '^.*?fix(\([[:word:]]+\))??!?:.+$' + order: 200 + - title: "Documentation updates" + regexp: ^.*?doc(\([[:word:]]+\))??!?:.+$ + order: 400 + - title: "Build process updates" + regexp: ^.*?build(\([[:word:]]+\))??!?:.+$ + order: 400 + - title: Other work + order: 9999 + +dockers: + - image_templates: + - "goreleaser/goreleaser:v{{ .Version }}-amd64" + - "ghcr.io/goreleaser/goreleaser:v{{ .Version }}-amd64" + dockerfile: Dockerfile + use: buildx + build_flag_templates: + - "--pull" + - "--label=io.artifacthub.package.readme-url=https://raw.githubusercontent.com/goreleaser/goreleaser/main/README.md" + - "--label=io.artifacthub.package.logo-url=https://goreleaser.com/static/avatar.png" + - '--label=io.artifacthub.package.maintainers=[{"name":"Carlos Alexandro Becker","email":"carlos@carlosbecker.dev"}]' + - "--label=io.artifacthub.package.license=MIT" + - "--label=org.opencontainers.image.description=Deliver Go binaries as fast and easily as possible" + - "--label=org.opencontainers.image.created={{.Date}}" + - "--label=org.opencontainers.image.name={{.ProjectName}}" + - "--label=org.opencontainers.image.revision={{.FullCommit}}" + - "--label=org.opencontainers.image.version={{.Version}}" + - "--label=org.opencontainers.image.source={{.GitURL}}" + - "--platform=linux/amd64" + extra_files: + - scripts/entrypoint.sh + - image_templates: + - "goreleaser/goreleaser:v{{ .Version }}-arm64" + - "ghcr.io/goreleaser/goreleaser:v{{ .Version }}-arm64" + dockerfile: Dockerfile + use: buildx + build_flag_templates: + - "--pull" + - "--label=io.artifacthub.package.readme-url=https://raw.githubusercontent.com/goreleaser/goreleaser/main/README.md" + - "--label=io.artifacthub.package.logo-url=https://goreleaser.com/static/avatar.png" + - '--label=io.artifacthub.package.maintainers=[{"name":"Carlos Alexandro Becker","email":"carlos@carlosbecker.dev"}]' + - "--label=io.artifacthub.package.license=MIT" + - "--label=org.opencontainers.image.description=Deliver Go binaries as fast and easily as possible" + - "--label=org.opencontainers.image.created={{.Date}}" + - "--label=org.opencontainers.image.name={{.ProjectName}}" + - "--label=org.opencontainers.image.revision={{.FullCommit}}" + - "--label=org.opencontainers.image.version={{.Version}}" + - "--label=org.opencontainers.image.source={{.GitURL}}" + - "--platform=linux/arm64" + goarch: arm64 + extra_files: + - scripts/entrypoint.sh + +docker_manifests: + - name_template: "goreleaser/goreleaser:v{{ .Version }}" + image_templates: + - "goreleaser/goreleaser:v{{ .Version }}-amd64" + - "goreleaser/goreleaser:v{{ .Version }}-arm64" + - name_template: "ghcr.io/goreleaser/goreleaser:v{{ .Version }}" + image_templates: + - "ghcr.io/goreleaser/goreleaser:v{{ .Version }}-amd64" + - "ghcr.io/goreleaser/goreleaser:v{{ .Version }}-arm64" + - name_template: "{{ if not .IsNightly }}goreleaser/goreleaser:latest{{ end }}" + image_templates: + - "goreleaser/goreleaser:v{{ .Version }}-amd64" + - "goreleaser/goreleaser:v{{ .Version }}-arm64" + - name_template: "{{ if not .IsNightly }}ghcr.io/goreleaser/goreleaser:latest{{ end }}" + image_templates: + - "ghcr.io/goreleaser/goreleaser:v{{ .Version }}-amd64" + - "ghcr.io/goreleaser/goreleaser:v{{ .Version }}-arm64" + +archives: + - name_template: >- + {{- .ProjectName }}_ + {{- title .Os }}_ + {{- if eq .Arch "amd64" }}x86_64 + {{- else if eq .Arch "386" }}i386 + {{- else }}{{ .Arch }}{{ end }} + {{- if .Arm }}v{{ .Arm }}{{ end -}} + format_overrides: + - goos: windows + format: zip + builds_info: + group: root + owner: root + files: + - README.md + - LICENSE.md + - completions/* + - manpages/* + +brews: + - repository: + owner: goreleaser + name: homebrew-tap + folder: Formula + goarm: "7" + homepage: https://goreleaser.com + description: Deliver Go binaries as fast and easily as possible + license: MIT + test: | + system "#{bin}/goreleaser -v" + dependencies: + - name: go + type: optional + - name: git + conflicts: + - goreleaser-pro + extra_install: |- + bash_completion.install "completions/goreleaser.bash" => "goreleaser" + zsh_completion.install "completions/goreleaser.zsh" => "_goreleaser" + fish_completion.install "completions/goreleaser.fish" + man1.install "manpages/goreleaser.1.gz" + +nix: + - name: goreleaser + repository: + owner: goreleaser + name: nur + homepage: https://goreleaser.com + description: Deliver Go binaries as fast and easily as possible + path: pkgs/goreleaser/default.nix + license: mit + extra_install: |- + installManPage ./manpages/goreleaser.1.gz + installShellCompletion ./completions/* + +winget: + - name: goreleaser + publisher: goreleaser + license: MIT + homepage: https://goreleaser.com + short_description: Deliver Go binaries as fast and easily as possible + repository: + owner: goreleaser + name: winget-pkgs + branch: "goreleaser-{{.Version}}" + pull_request: + enabled: true + draft: true + base: + owner: microsoft + name: winget-pkgs + branch: master + +aurs: + - homepage: https://goreleaser.com + description: Deliver Go binaries as fast and easily as possible + maintainers: + - "Fernandez Ludovic " + - "Carlos Alexandro Becker " + license: MIT + private_key: "{{ .Env.AUR_KEY }}" + git_url: "ssh://aur@aur.archlinux.org/goreleaser-bin.git" + package: |- + # bin + install -Dm755 "./goreleaser" "${pkgdir}/usr/bin/goreleaser" + + # license + install -Dm644 "./LICENSE.md" "${pkgdir}/usr/share/licenses/goreleaser/LICENSE" + + # completions + mkdir -p "${pkgdir}/usr/share/bash-completion/completions/" + mkdir -p "${pkgdir}/usr/share/zsh/site-functions/" + mkdir -p "${pkgdir}/usr/share/fish/vendor_completions.d/" + install -Dm644 "./completions/goreleaser.bash" "${pkgdir}/usr/share/bash-completion/completions/goreleaser" + install -Dm644 "./completions/goreleaser.zsh" "${pkgdir}/usr/share/zsh/site-functions/_goreleaser" + install -Dm644 "./completions/goreleaser.fish" "${pkgdir}/usr/share/fish/vendor_completions.d/goreleaser.fish" + + # man pages + install -Dm644 "./manpages/goreleaser.1.gz" "${pkgdir}/usr/share/man/man1/goreleaser.1.gz" + +scoops: + - repository: + owner: goreleaser + name: scoop-bucket + folder: bucket + homepage: https://goreleaser.com + description: Deliver Go binaries as fast and easily as possible + license: MIT + +nfpms: + - file_name_template: "{{ .ConventionalFileName }}" + id: packages + homepage: https://goreleaser.com + description: |- + Deliver Go binaries as fast and easily as possible. + GoReleaser allows you to release easily build, package, publish and + announce to several places at one go. + maintainer: Carlos Alexandro Becker + license: MIT + vendor: GoReleaser + bindir: /usr/bin + section: utils + contents: + - src: ./completions/goreleaser.bash + dst: /usr/share/bash-completion/completions/goreleaser + file_info: + mode: 0644 + - src: ./completions/goreleaser.fish + dst: /usr/share/fish/vendor_completions.d/goreleaser.fish + file_info: + mode: 0644 + - src: ./completions/goreleaser.zsh + dst: /usr/share/zsh/vendor-completions/_goreleaser + file_info: + mode: 0644 + - src: ./manpages/goreleaser.1.gz + dst: /usr/share/man/man1/goreleaser.1.gz + file_info: + mode: 0644 + - src: ./LICENSE.md + dst: /usr/share/doc/goreleaser/copyright + file_info: + mode: 0644 + formats: + - apk + - deb + - rpm + - archlinux + dependencies: + - git + recommends: + - golang + deb: + lintian_overrides: + - statically-linked-binary + - changelog-file-missing-in-native-package + +snapcrafts: + - name_template: "{{ .ProjectName }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}" + summary: Deliver Go binaries as fast and easily as possible + description: | + GoReleaser builds Go binaries for several platforms, creates a GitHub + release and then pushes a Homebrew formula to a repository. All that + wrapped in your favorite CI. + grade: stable + confinement: classic + publish: true + disable: "{{ if .IsNightly }}true{{ end }}" + +sboms: + - artifacts: archive + +signs: + - cmd: cosign + certificate: "${artifact}.pem" + output: true + artifacts: checksum + args: + - sign-blob + - "--output-certificate=${certificate}" + - "--output-signature=${signature}" + - "${artifact}" + - --yes + +docker_signs: + - cmd: cosign + artifacts: manifests + output: true + args: + - "sign" + - "${artifact}@${digest}" + - --yes + +publishers: + - name: fury.io + ids: + - packages + env: + - "FURY_TOKEN={{ .Env.FURY_TOKEN }}" + cmd: ./scripts/fury-upload.sh {{ .ArtifactName }} + disable: "{{ if .IsNightly }}true{{ end }}" + +milestones: + - close: true + +release: + name_template: "v{{ .Version }}" + footer: | + **Full Changelog**: https://github.com/goreleaser/goreleaser/compare/{{ .PreviousTag }}...{{ .Tag }} + + ## Helping out + + This release is only possible thanks to **all** the support of some **awesome people**! + + Want to be one of them? + You can [sponsor](https://goreleaser.com/sponsors/), get a [Pro License](https://goreleaser.com/pro) or [contribute with code](https://goreleaser.com/contributing). + + ## Where to go next? + + * Find examples and commented usage of all options in our [website](https://goreleaser.com/intro/). + * Reach out on [Discord](https://discord.gg/RGEBtg8vQ6) and [Twitter](https://twitter.com/goreleaser)! + + GoReleaser logo + +announce: + twitter: + enabled: false + message_template: "GoReleaser {{ .Tag }} is out! Check it out: https://github.com/goreleaser/goreleaser/releases/tag/{{ .Tag }}" + + mastodon: + enabled: true + message_template: "#GoReleaser {{ .Tag }} is out! Check it out: https://github.com/goreleaser/goreleaser/releases/tag/{{ .Tag }}" + server: https://fosstodon.org + + discord: + enabled: true + message_template: "GoReleaser {{ .Tag }} is out! Check it out: https://github.com/goreleaser/goreleaser/releases/tag/{{ .Tag }}" diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 2b98510ce26..5e5ce8ac3ff 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -13,14 +13,10 @@ snapshot: name_template: "{{ incpatch .Version }}-next" gomod: - proxy: true + proxy: false report_sizes: true -git: - ignore_tags: - - "{{ if not .IsNightly }}nightly{{ end }}" - metadata: mod_timestamp: "{{ .CommitTimestamp }}" @@ -32,11 +28,8 @@ builds: - darwin - windows goarch: - - "386" - amd64 - - arm - arm64 - - ppc64 goarm: - "7" ignore: @@ -51,108 +44,9 @@ builds: universal_binaries: - replace: false -# temporarely disables until we add better filters for platforms et al, and test more. -# upx: -# - enabled: true - checksum: name_template: "checksums.txt" -changelog: - sort: asc - use: github - filters: - exclude: - - "^test:" - - "^chore" - - "merge conflict" - - Merge pull request - - Merge remote-tracking branch - - Merge branch - - go mod tidy - groups: - - title: Dependency updates - regexp: '^.*?(feat|fix)\(deps\)!?:.+$' - order: 300 - - title: "New Features" - regexp: '^.*?feat(\([[:word:]]+\))??!?:.+$' - order: 100 - - title: "Security updates" - regexp: '^.*?sec(\([[:word:]]+\))??!?:.+$' - order: 150 - - title: "Bug fixes" - regexp: '^.*?fix(\([[:word:]]+\))??!?:.+$' - order: 200 - - title: "Documentation updates" - regexp: ^.*?doc(\([[:word:]]+\))??!?:.+$ - order: 400 - - title: "Build process updates" - regexp: ^.*?build(\([[:word:]]+\))??!?:.+$ - order: 400 - - title: Other work - order: 9999 - -dockers: - - image_templates: - - "goreleaser/goreleaser:v{{ .Version }}-amd64" - - "ghcr.io/goreleaser/goreleaser:v{{ .Version }}-amd64" - dockerfile: Dockerfile - use: buildx - build_flag_templates: - - "--pull" - - "--label=io.artifacthub.package.readme-url=https://raw.githubusercontent.com/goreleaser/goreleaser/main/README.md" - - "--label=io.artifacthub.package.logo-url=https://goreleaser.com/static/avatar.png" - - '--label=io.artifacthub.package.maintainers=[{"name":"Carlos Alexandro Becker","email":"carlos@carlosbecker.dev"}]' - - "--label=io.artifacthub.package.license=MIT" - - "--label=org.opencontainers.image.description=Deliver Go binaries as fast and easily as possible" - - "--label=org.opencontainers.image.created={{.Date}}" - - "--label=org.opencontainers.image.name={{.ProjectName}}" - - "--label=org.opencontainers.image.revision={{.FullCommit}}" - - "--label=org.opencontainers.image.version={{.Version}}" - - "--label=org.opencontainers.image.source={{.GitURL}}" - - "--platform=linux/amd64" - extra_files: - - scripts/entrypoint.sh - - image_templates: - - "goreleaser/goreleaser:v{{ .Version }}-arm64" - - "ghcr.io/goreleaser/goreleaser:v{{ .Version }}-arm64" - dockerfile: Dockerfile - use: buildx - build_flag_templates: - - "--pull" - - "--label=io.artifacthub.package.readme-url=https://raw.githubusercontent.com/goreleaser/goreleaser/main/README.md" - - "--label=io.artifacthub.package.logo-url=https://goreleaser.com/static/avatar.png" - - '--label=io.artifacthub.package.maintainers=[{"name":"Carlos Alexandro Becker","email":"carlos@carlosbecker.dev"}]' - - "--label=io.artifacthub.package.license=MIT" - - "--label=org.opencontainers.image.description=Deliver Go binaries as fast and easily as possible" - - "--label=org.opencontainers.image.created={{.Date}}" - - "--label=org.opencontainers.image.name={{.ProjectName}}" - - "--label=org.opencontainers.image.revision={{.FullCommit}}" - - "--label=org.opencontainers.image.version={{.Version}}" - - "--label=org.opencontainers.image.source={{.GitURL}}" - - "--platform=linux/arm64" - goarch: arm64 - extra_files: - - scripts/entrypoint.sh - -docker_manifests: - - name_template: "goreleaser/goreleaser:v{{ .Version }}" - image_templates: - - "goreleaser/goreleaser:v{{ .Version }}-amd64" - - "goreleaser/goreleaser:v{{ .Version }}-arm64" - - name_template: "ghcr.io/goreleaser/goreleaser:v{{ .Version }}" - image_templates: - - "ghcr.io/goreleaser/goreleaser:v{{ .Version }}-amd64" - - "ghcr.io/goreleaser/goreleaser:v{{ .Version }}-arm64" - - name_template: "{{ if not .IsNightly }}goreleaser/goreleaser:latest{{ end }}" - image_templates: - - "goreleaser/goreleaser:v{{ .Version }}-amd64" - - "goreleaser/goreleaser:v{{ .Version }}-arm64" - - name_template: "{{ if not .IsNightly }}ghcr.io/goreleaser/goreleaser:latest{{ end }}" - image_templates: - - "ghcr.io/goreleaser/goreleaser:v{{ .Version }}-amd64" - - "ghcr.io/goreleaser/goreleaser:v{{ .Version }}-arm64" - archives: - name_template: >- {{- .ProjectName }}_ @@ -175,11 +69,11 @@ archives: brews: - repository: - owner: goreleaser + owner: cldcvr name: homebrew-tap folder: Formula goarm: "7" - homepage: https://goreleaser.com + homepage: https://github.com/cldcvr/goreleaser.com description: Deliver Go binaries as fast and easily as possible license: MIT test: | @@ -195,199 +89,13 @@ brews: zsh_completion.install "completions/goreleaser.zsh" => "_goreleaser" fish_completion.install "completions/goreleaser.fish" man1.install "manpages/goreleaser.1.gz" - -nix: - - name: goreleaser - repository: - owner: goreleaser - name: nur - homepage: https://goreleaser.com - description: Deliver Go binaries as fast and easily as possible - path: pkgs/goreleaser/default.nix - license: mit - extra_install: |- - installManPage ./manpages/goreleaser.1.gz - installShellCompletion ./completions/* - -winget: - - name: goreleaser - publisher: goreleaser - license: MIT - homepage: https://goreleaser.com - short_description: Deliver Go binaries as fast and easily as possible - repository: - owner: goreleaser - name: winget-pkgs - branch: "goreleaser-{{.Version}}" - pull_request: - enabled: true - draft: true - base: - owner: microsoft - name: winget-pkgs - branch: master - -aurs: - - homepage: https://goreleaser.com - description: Deliver Go binaries as fast and easily as possible - maintainers: - - "Fernandez Ludovic " - - "Carlos Alexandro Becker " - license: MIT - private_key: "{{ .Env.AUR_KEY }}" - git_url: "ssh://aur@aur.archlinux.org/goreleaser-bin.git" - package: |- - # bin - install -Dm755 "./goreleaser" "${pkgdir}/usr/bin/goreleaser" - - # license - install -Dm644 "./LICENSE.md" "${pkgdir}/usr/share/licenses/goreleaser/LICENSE" - - # completions - mkdir -p "${pkgdir}/usr/share/bash-completion/completions/" - mkdir -p "${pkgdir}/usr/share/zsh/site-functions/" - mkdir -p "${pkgdir}/usr/share/fish/vendor_completions.d/" - install -Dm644 "./completions/goreleaser.bash" "${pkgdir}/usr/share/bash-completion/completions/goreleaser" - install -Dm644 "./completions/goreleaser.zsh" "${pkgdir}/usr/share/zsh/site-functions/_goreleaser" - install -Dm644 "./completions/goreleaser.fish" "${pkgdir}/usr/share/fish/vendor_completions.d/goreleaser.fish" - - # man pages - install -Dm644 "./manpages/goreleaser.1.gz" "${pkgdir}/usr/share/man/man1/goreleaser.1.gz" - -scoops: - - repository: - owner: goreleaser - name: scoop-bucket - folder: bucket - homepage: https://goreleaser.com - description: Deliver Go binaries as fast and easily as possible - license: MIT - -nfpms: - - file_name_template: "{{ .ConventionalFileName }}" - id: packages - homepage: https://goreleaser.com - description: |- - Deliver Go binaries as fast and easily as possible. - GoReleaser allows you to release easily build, package, publish and - announce to several places at one go. - maintainer: Carlos Alexandro Becker - license: MIT - vendor: GoReleaser - bindir: /usr/bin - section: utils - contents: - - src: ./completions/goreleaser.bash - dst: /usr/share/bash-completion/completions/goreleaser - file_info: - mode: 0644 - - src: ./completions/goreleaser.fish - dst: /usr/share/fish/vendor_completions.d/goreleaser.fish - file_info: - mode: 0644 - - src: ./completions/goreleaser.zsh - dst: /usr/share/zsh/vendor-completions/_goreleaser - file_info: - mode: 0644 - - src: ./manpages/goreleaser.1.gz - dst: /usr/share/man/man1/goreleaser.1.gz - file_info: - mode: 0644 - - src: ./LICENSE.md - dst: /usr/share/doc/goreleaser/copyright - file_info: - mode: 0644 - formats: - - apk - - deb - - rpm - - archlinux - dependencies: - - git - recommends: - - golang - deb: - lintian_overrides: - - statically-linked-binary - - changelog-file-missing-in-native-package - -snapcrafts: - - name_template: "{{ .ProjectName }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}" - summary: Deliver Go binaries as fast and easily as possible - description: | - GoReleaser builds Go binaries for several platforms, creates a GitHub - release and then pushes a Homebrew formula to a repository. All that - wrapped in your favorite CI. - grade: stable - confinement: classic - publish: true - disable: "{{ if .IsNightly }}true{{ end }}" - -sboms: - - artifacts: archive - -signs: - - cmd: cosign - certificate: "${artifact}.pem" - output: true - artifacts: checksum - args: - - sign-blob - - "--output-certificate=${certificate}" - - "--output-signature=${signature}" - - "${artifact}" - - --yes - -docker_signs: - - cmd: cosign - artifacts: manifests - output: true - args: - - "sign" - - "${artifact}@${digest}" - - --yes - -publishers: - - name: fury.io - ids: - - packages - env: - - "FURY_TOKEN={{ .Env.FURY_TOKEN }}" - cmd: ./scripts/fury-upload.sh {{ .ArtifactName }} - disable: "{{ if .IsNightly }}true{{ end }}" - -milestones: - - close: true + skip_upload: true release: - name_template: "v{{ .Version }}" - footer: | - **Full Changelog**: https://github.com/goreleaser/goreleaser/compare/{{ .PreviousTag }}...{{ .Tag }} - - ## Helping out - - This release is only possible thanks to **all** the support of some **awesome people**! - - Want to be one of them? - You can [sponsor](https://goreleaser.com/sponsors/), get a [Pro License](https://goreleaser.com/pro) or [contribute with code](https://goreleaser.com/contributing). - - ## Where to go next? - - * Find examples and commented usage of all options in our [website](https://goreleaser.com/intro/). - * Reach out on [Discord](https://discord.gg/RGEBtg8vQ6) and [Twitter](https://twitter.com/goreleaser)! - - GoReleaser logo - -announce: - twitter: - enabled: false - message_template: "GoReleaser {{ .Tag }} is out! Check it out: https://github.com/goreleaser/goreleaser/releases/tag/{{ .Tag }}" - - mastodon: - enabled: true - message_template: "#GoReleaser {{ .Tag }} is out! Check it out: https://github.com/goreleaser/goreleaser/releases/tag/{{ .Tag }}" - server: https://fosstodon.org - - discord: - enabled: true - message_template: "GoReleaser {{ .Tag }} is out! Check it out: https://github.com/goreleaser/goreleaser/releases/tag/{{ .Tag }}" + github: + owner: cldcvr + name: goreleaser + draft: true + replace_existing_draft: true + make_latest: false + mode: replace diff --git a/go.mod b/go.mod index d0363455ac5..490a093bb19 100644 --- a/go.mod +++ b/go.mod @@ -248,7 +248,7 @@ require ( go.uber.org/automaxprocs v1.5.3 golang.org/x/exp v0.0.0-20230801115018-d63ba01acd4b golang.org/x/mod v0.13.0 // indirect - golang.org/x/net v0.16.0 // indirect + golang.org/x/net v0.17.0 // indirect golang.org/x/sys v0.13.0 // indirect golang.org/x/term v0.13.0 // indirect golang.org/x/time v0.3.0 // indirect diff --git a/go.sum b/go.sum index cc1cb83f7df..461d8fb33be 100644 --- a/go.sum +++ b/go.sum @@ -1018,8 +1018,8 @@ golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.16.0 h1:7eBu7KsSvFDtSXUIDbh3aqlK4DPsZ1rByC8PFfBThos= -golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= diff --git a/internal/builders/golang/build.go b/internal/builders/golang/build.go index 3cff392b4ef..6a10502a1ec 100644 --- a/internal/builders/golang/build.go +++ b/internal/builders/golang/build.go @@ -221,13 +221,15 @@ func (*Builder) Build(ctx *context.Context, build config.Build, options api.Opti a.Extra["testEnvs"] = testEnvs } - cmd, err := buildGoBuildLine(ctx, build, details, options, a, env) - if err != nil { - return err - } + if !options.PreBuilt { + cmd, err := buildGoBuildLine(ctx, build, details, options, a, env) + if err != nil { + return err + } - if err := run(ctx, cmd, env, build.Dir); err != nil { - return fmt.Errorf("failed to build for %s: %w", options.Target, err) + if err := run(ctx, cmd, env, build.Dir); err != nil { + return fmt.Errorf("failed to build for %s: %w", options.Target, err) + } } modTimestamp, err := tmpl.New(ctx).WithEnvS(env).WithArtifact(a).Apply(build.ModTimestamp) diff --git a/internal/pipe/build/build.go b/internal/pipe/build/build.go index c29527f9534..e606e18bc32 100644 --- a/internal/pipe/build/build.go +++ b/internal/pipe/build/build.go @@ -206,7 +206,13 @@ func buildOptionsForTarget(ctx *context.Context, build config.Build, target stri if build.NoUniqueDistDir { dir = "" } - relpath := filepath.Join(ctx.Config.Dist, dir, name) + + basePath := ctx.Config.Dist + if build.PreBuiltBinaryDir != "" { + basePath = build.PreBuiltBinaryDir + buildOpts.PreBuilt = true + } + relpath := filepath.Join(basePath, dir, name) path, err := filepath.Abs(relpath) if err != nil { return nil, err diff --git a/internal/pipe/release/scm_test.go b/internal/pipe/release/scm_test.go index 0a8e18ed217..43fcaf414a2 100644 --- a/internal/pipe/release/scm_test.go +++ b/internal/pipe/release/scm_test.go @@ -71,7 +71,7 @@ func TestSetupGitea(t *testing.T) { t.Run("no repo", func(t *testing.T) { ctx := testctx.New() require.NoError(t, setupGitea(ctx)) - require.Equal(t, "goreleaser", ctx.Config.Release.Gitea.Owner) + require.Equal(t, "cldcvr", ctx.Config.Release.Gitea.Owner) require.Equal(t, "goreleaser", ctx.Config.Release.Gitea.Name) }) @@ -127,7 +127,7 @@ func TestSetupGitHub(t *testing.T) { t.Run("no repo", func(t *testing.T) { ctx := testctx.New() require.NoError(t, setupGitHub(ctx)) - require.Equal(t, "goreleaser", ctx.Config.Release.GitHub.Owner) + require.Equal(t, "cldcvr", ctx.Config.Release.GitHub.Owner) require.Equal(t, "goreleaser", ctx.Config.Release.GitHub.Name) }) diff --git a/internal/skips/skips_test.go b/internal/skips/skips_test.go index 31109ac515e..d8c67002cd2 100644 --- a/internal/skips/skips_test.go +++ b/internal/skips/skips_test.go @@ -36,5 +36,6 @@ func TestAny(t *testing.T) { func TestSet(t *testing.T) { ctx := testctx.New() skips.Set(ctx, skips.Publish, skips.Announce) - require.Equal(t, []string{"publish", "announce"}, maps.Keys(ctx.Skips)) + require.Contains(t, maps.Keys(ctx.Skips), "publish") + require.Contains(t, maps.Keys(ctx.Skips), "announce") } diff --git a/pkg/build/build.go b/pkg/build/build.go index 97112998085..995ff51b537 100644 --- a/pkg/build/build.go +++ b/pkg/build/build.go @@ -28,15 +28,16 @@ func For(name string) Builder { // Options to be passed down to a builder. type Options struct { - Name string - Path string - Ext string - Target string - Goos string - Goarch string - Goamd64 string - Goarm string - Gomips string + Name string + Path string + Ext string + Target string + Goos string + Goarch string + Goamd64 string + Goarm string + Gomips string + PreBuilt bool } // Builder defines a builder. diff --git a/pkg/config/config.go b/pkg/config/config.go index a6736565d3d..05ef248f82a 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -493,27 +493,28 @@ func (a FlagArray) JSONSchema() *jsonschema.Schema { // Build contains the build configuration section. type Build struct { - ID string `yaml:"id,omitempty" json:"id,omitempty"` - Goos []string `yaml:"goos,omitempty" json:"goos,omitempty"` - Goarch []string `yaml:"goarch,omitempty" json:"goarch,omitempty"` - Goarm []string `yaml:"goarm,omitempty" json:"goarm,omitempty"` - Gomips []string `yaml:"gomips,omitempty" json:"gomips,omitempty"` - Goamd64 []string `yaml:"goamd64,omitempty" json:"goamd64,omitempty"` - Targets []string `yaml:"targets,omitempty" json:"targets,omitempty"` - Ignore []IgnoredBuild `yaml:"ignore,omitempty" json:"ignore,omitempty"` - Dir string `yaml:"dir,omitempty" json:"dir,omitempty"` - Main string `yaml:"main,omitempty" json:"main,omitempty"` - Binary string `yaml:"binary,omitempty" json:"binary,omitempty"` - Hooks BuildHookConfig `yaml:"hooks,omitempty" json:"hooks,omitempty"` - Builder string `yaml:"builder,omitempty" json:"builder,omitempty"` - ModTimestamp string `yaml:"mod_timestamp,omitempty" json:"mod_timestamp,omitempty"` - Skip bool `yaml:"skip,omitempty" json:"skip,omitempty"` - GoBinary string `yaml:"gobinary,omitempty" json:"gobinary,omitempty"` - Command string `yaml:"command,omitempty" json:"command,omitempty"` - NoUniqueDistDir bool `yaml:"no_unique_dist_dir,omitempty" json:"no_unique_dist_dir,omitempty"` - NoMainCheck bool `yaml:"no_main_check,omitempty" json:"no_main_check,omitempty"` - UnproxiedMain string `yaml:"-" json:"-"` // used by gomod.proxy - UnproxiedDir string `yaml:"-" json:"-"` // used by gomod.proxy + ID string `yaml:"id,omitempty" json:"id,omitempty"` + Goos []string `yaml:"goos,omitempty" json:"goos,omitempty"` + Goarch []string `yaml:"goarch,omitempty" json:"goarch,omitempty"` + Goarm []string `yaml:"goarm,omitempty" json:"goarm,omitempty"` + Gomips []string `yaml:"gomips,omitempty" json:"gomips,omitempty"` + Goamd64 []string `yaml:"goamd64,omitempty" json:"goamd64,omitempty"` + Targets []string `yaml:"targets,omitempty" json:"targets,omitempty"` + Ignore []IgnoredBuild `yaml:"ignore,omitempty" json:"ignore,omitempty"` + Dir string `yaml:"dir,omitempty" json:"dir,omitempty"` + Main string `yaml:"main,omitempty" json:"main,omitempty"` + Binary string `yaml:"binary,omitempty" json:"binary,omitempty"` + Hooks BuildHookConfig `yaml:"hooks,omitempty" json:"hooks,omitempty"` + Builder string `yaml:"builder,omitempty" json:"builder,omitempty"` + ModTimestamp string `yaml:"mod_timestamp,omitempty" json:"mod_timestamp,omitempty"` + Skip bool `yaml:"skip,omitempty" json:"skip,omitempty"` + GoBinary string `yaml:"gobinary,omitempty" json:"gobinary,omitempty"` + Command string `yaml:"command,omitempty" json:"command,omitempty"` + NoUniqueDistDir bool `yaml:"no_unique_dist_dir,omitempty" json:"no_unique_dist_dir,omitempty"` + NoMainCheck bool `yaml:"no_main_check,omitempty" json:"no_main_check,omitempty"` + PreBuiltBinaryDir string `yaml:"prebuilt_binary_dir,omitempty" json:"prebuilt_binary_dir,omitempty"` + UnproxiedMain string `yaml:"-" json:"-"` // used by gomod.proxy + UnproxiedDir string `yaml:"-" json:"-"` // used by gomod.proxy BuildDetails `yaml:",inline" json:",inline"` // nolint: tagliatelle BuildDetailsOverrides []BuildDetailsOverride `yaml:"overrides,omitempty" json:"overrides,omitempty"` diff --git a/www/docs/static/schema.json b/www/docs/static/schema.json index 99a84820a19..375e46246ad 100644 --- a/www/docs/static/schema.json +++ b/www/docs/static/schema.json @@ -376,6 +376,9 @@ "no_main_check": { "type": "boolean" }, + "prebuilt_binary_dir": { + "type": "string" + }, "buildmode": { "type": "string" },