1
0
mirror of https://github.com/goreleaser/goreleaser.git synced 2025-07-17 01:42:37 +02:00

91 Commits

Author SHA1 Message Date
f247d7d38c feat(template): allow to use .Target (#5308)
This will also come in handy for multiple languages support (#5307).

---------

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
2024-11-25 23:41:00 -03:00
ae4f6aa662 refactor: replace fmt.Errorf with errors.New for consistency (#5294)
The PR replaces usages of `fmt.Errorf` with `errors.New` for creating
errors. Enables `perfsprint` linter to prevent future regressions.
2024-11-18 14:07:22 -03:00
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
12155a336b refactor: remove empty lines, fix //nolint (#5235)
The PR formats code by removing redundant empty lines and fixes
`//nolint` directives. Additionally, this PR adds two more rules to the
`revive` configuration: `empty-lines` and `comment-spacings`.

Removing unnecessary empty lines helps to keep the codebase clean and
concise. This issue is identified by the `revive.empty-lines` rule.

In the `//nolint` directive, there must be no spaces between `:` and the
linter name: `//nolint:gosec`. See ["Nolint
Directive"](https://golangci-lint.run/usage/false-positives/#nolint-directive).
This issue is identified by the `revive.comment-spacings` rule.

Note that it's not possible to add just a few additional rules to the
`revive.enable` list. We need to specify all: default rules plus
additional rules. See the detailed explanation
[here](https://github.com/prometheus/prometheus/pull/13068).
2024-10-31 13:51:54 -03:00
d583861e06 feat(build): add GO386, GOMIPS64, GORISCV64, and GOPPC64 support (#5186)
continuing the work of #5153

closes #5153

---------

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
Co-authored-by: 世界 <i@sekai.icu>
2024-10-14 09:40:10 -03:00
f3fce3df5b feat: --skip=archive (#4916)
closes #4905
2024-06-11 09:23:21 -03:00
ec2db4a727 feat!: rename module to /v2 (#4894)
<!--

Hi, thanks for contributing!

Please make sure you read our CONTRIBUTING guide.

Also, add tests and the respective documentation changes as well.

-->


<!-- If applied, this commit will... -->

...

<!-- Why is this change being made? -->

...

<!-- # Provide links to any relevant tickets, URLs or other resources
-->

...

---------

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
2024-05-26 15:02:57 -03:00
4fa8df6413 feat!: v2 (#4806)
BREAKING CHANGE

removed all deprecated options, config file should now have a `version:
2` bit


![Dont
Matter](https://github.com/goreleaser/goreleaser/assets/245435/31ece16a-cb70-4e43-9caa-8364e73fbeb9)

---------

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
2024-05-25 14:09:49 -03:00
6505654c86 fix: fix nolintlint issues (#4854)
The PR enables
[`nolintlint`](https://golangci-lint.run/usage/linters/#nolintlint)
linter and fixes up appeared issues.

Changes:

- Enable `nolintlint` in `.golangci.yml` config.
- Remove unused `//nolint:` comments.
- Fix `nolint` comment format by removing spaces (`// nolint: dupl` ->
`//nolint:dupl`)

Co-authored-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
2024-05-12 14:11:11 -03:00
00a376cc64 refactor: remove unneeded in Go 1.22 loop var copy (#4856)
The PR cleans up unnecessary loop variable copying and enables the
[`copyloopvar`](https://golangci-lint.run/usage/linters/#copyloopvar)
linter for detecting this redundant variable copying.

#### Additional notes

After the project upgraded to Go version 1.22 in #4779, copying
variables inside a `for` loop became unnecessary. See this [blog
post](https://go.dev/blog/loopvar-preview) for a detailed explanation.

The `copyloopvar` linter is only available from `golangci-lint` v1.57
onwards, so we also need to update this tool.
2024-05-12 13:21:13 -03:00
7fc93995b8 feat: consistently use directory in property names (#4737)
It was a mess of "folder" x "directory", so changed it all to
"directory".

Closes #4732
2024-04-01 10:01:56 -03:00
1db9347363 feat(archives): format override to 'none' to skip certain goos (#4730)
closes #4644

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
2024-03-29 16:20:05 -03:00
305663fb5d test: simplify error asserts with require.ErrorContains (#4640)
The PR refactors tests:
- change two lines `require.Error + require.Contains` with one
`require.ErrorContains`;
- change `require.Error + require.Equal` with `require.EqualError`.
2024-02-19 16:28:06 -03:00
e7f4b10fc6 fix: prevent having whitespaces in artifact names (#4515)
refs #4513

this does not prevent the `dist` filepath to have spaces in it, although
that's likely less of an issue, but it will remove the spaces from
artifact's names.

Ideally, we could add a `tmpl.ApplyTrim` (or similar) that applies and
trim spaces, and use it everywhere it makes sense (which is likely a lot
of places).

Doing it on regular `Apply` might break things like release
footers/headers, which usually rely on empty lines (although maybe its
easier to treat those cases differently then).

Anyway, still thinking about it. Opinions are welcome :)

---------

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
2024-01-07 14:16:33 -03:00
c91c4b7cd8 feat: improve template error handling (#4256)
- wrap the multiple errors in an internal error with cleaner messaging
- improve testlib.RequireTemplateError and several tests
2023-08-24 22:06:12 -03:00
bbe2ee7bfb refactor: properly annotate deprecated options
Removed unused, deprecated stuff.
2023-08-04 14:47:54 +00:00
aae9433a55 fix: archive extraformat when using format override 2023-06-13 12:16:05 +00:00
68b38c0229 test: fix
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
2023-06-07 02:57:51 +00:00
eadd377730 feat: remove deprecated rlcp options (#4076)
removing another deprecated option

---------

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
2023-06-06 13:54:43 -03:00
66cee9493c feat: remove deprecated replacements (#4075)
since this will be a late, big release, let's remove the deprecated
stuff that expired

---------

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
2023-06-06 11:46:02 -03:00
b5e8d6db06 fix(archive): warn only for non-default globs with no matches (#4013)
Adjust the logging of warnings for unmatched globs to only show when the
glob is not a default. No warning will be output for the default globs
when there are no matching files.

These are defaults, by design, very generic.
We should not warn the user about them not finding anything, as that is
their expected behavior most of the time.
2023-05-16 09:22:22 -03:00
0eb3e7975c fix: use git-archive under the hood (#3904)
This reverts back to using `git archive` for the source archives... but
will keep supporting extra files.

##### How it works:

Basically, we run `git archive` as before.
Then, we make a backup of the generated archive, and create a new one
copying by reading from the backup and writing into the new one.
Finally, we write the extra files to the new one as well.

This only happens if the configuration does have extra files, otherwise,
just the simple `git archive` will be run.

PS: we can't just append to the archive because weird tar format
paddings et al.

---------

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
2023-04-07 22:53:15 -03:00
a459911f45 fix: many linting issues
refs #3874

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
2023-03-19 22:17:18 -03:00
f544c5ce69 test: testctx pkg (#3807)
alternative to #3806 

the idea is that both `context.New` and `context.Context{}` are never
used in tests.

not sure yet how much I like it, so far code does look a bit more
readable though.

---------

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
2023-03-02 00:01:11 -03:00
4f7475eee1 fix: meta archives make the other archives be ignored (#3804) 2023-02-24 14:58:09 -03:00
a209757ad2 feat: better archives relative paths (#3656)
with this patch, a config like:

```yaml
archives:
  - format: tar.gz
    # this name template makes the OS and Arch compatible with the results of uname.
    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 }}
    rlcp: true
    files:
      - src: "build/**/*"
        dst: .

nfpms:
  - package_name: foo
    contents:
      - src: "build/**/*"
        dst: usr/share/foo
    formats:
      - apk

```

will eval this:

<img width="1384" alt="CleanShot 2022-12-21 at 22 21 00@2x"
src="https://user-images.githubusercontent.com/245435/209034244-7c31b5f7-cfcd-4825-bb2f-7dd463c5286a.png">

as much as I would like to make this the default, it would be a breaking
change, so we really can't do it.

If `dst` is empty, it'll have the same behavior as before (no rlcp), and
if `strip_parent` is set, it will also still have the same behavior.
Finally, if the format is binary, `rlcp` is ignored too (as it doesn't
make sense).

So, this only changes if:
- your format is not binary; and
- you have files with `src` and `dst` set

Then, goreleaser will warn you to set `rlcp: true`.

## todo

- [x] docs
- [x] more tests probably
- [x] any ideas for a better name for the new config option?

fixes #3655

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
2022-12-27 17:42:55 -03:00
937067697b feat: set file info for binaries inside archives (#3618)
closes #3582

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
2022-12-14 12:16:03 -03:00
e54656438b feat: deprecate replacements (#3589)
The replacements thing was always a bit weird, especially on archives.

We can solve that with templates, so, removing I'm deprecating it.

Also did the same on other places that had it the same feature.

Closes #3588

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
2022-11-25 15:26:14 -03:00
0a536f08fd feat: build of shared/static libraries (#3511)
<!--

Hi, thanks for contributing!

Please make sure you read our CONTRIBUTING guide.

Also, add tests and the respective documentation changes as well.

-->


<!-- If applied, this commit will... -->

This PR improves the handling of shared or static libraries by
GoReleaser. It uses the default behaviour of the Go compiler by
appending the right extension to libraries.

* `.so` and `.a` for Linux shared libraries and static libraries
respectively
* `.dylib` and `.a.` on Darwin
* `.dll` and `.lib` on Windows (pre-existent)

It does not add any configuration option to `.goreleaser.yml`, since it
leverages the existing `buildmode` flag.

Additionally, this PR takes care of adding the generated header file
into the archive.

<!-- Why is this change being made? -->

Personally I would leverage this change to release some software both as
a CLI and as a shared library. I believe others who use CGo or need
interoperability with Go from other languages could benefit from this.

<!-- # Provide links to any relevant tickets, URLs or other resources
-->

This was previously discussed in #3497.

I couldn't quite think of a proper way to add some tests to the header
archiving feature. Any recommendation?
2022-11-11 23:35:51 -03:00
91c6f75b8f chore: ign linter warning
Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
2022-09-17 00:14:59 -03:00
36a48eabb7 fix: binary archive when multiple builds (#3385)
closes #3383

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
2022-09-16 23:47:06 -03:00
8cb4eb1654 fix: ruleguard and semgrep scans and fixes (#3364)
run semgrep-go ruleguard and semgrep scans

https://github.com/dgryski/semgrep-go

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
2022-09-11 15:32:23 -03:00
4da595ed26 feat: strip_parent_binary_folder (#3261)
* feat: strip_parent_binary_folder

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>

* docs: clarify dir

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>

* fix: fmt

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
2022-08-15 22:53:36 -03:00
ee17c9583d feat(ci): compile with go 1.19 (#3278)
* feat(ci): compile with go 1.19

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>

* test: fixing template test

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>

* test: improve check

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>

* fix: more test and docs fixes

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>

* test: fix

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>

* test: fix

* test: fix

* fix: lint

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>

* test: docker templates

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>

* fix: godoc for RequireTemplateError
2022-08-06 18:44:23 -03:00
05b3fbd305 refactor: make it easier to merge 2022-08-01 15:58:39 -03:00
72329ab722 refactor: improve handling of extra fields in artifacts (#3191)
* refactor: improve handling of extra fields in artifacts

Backporting from pro: with this we can parse the artifacts list from
json into the context and use them again.

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>

* fix: tests

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>

* test: fix

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
2022-06-23 23:36:19 -03:00
fe7e2123bd feat: replacing the log library (#3139)
* feat: replacing logs

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>

* fix: tests et al

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>

* feat: update termenv/lipgloss

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>

* wip: output

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>

* fix: pin dep

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>

* fix: update

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>

* fix: tests

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>

* fix: tests

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>

* fix: deps

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>

* fix: dep

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
2022-06-21 21:11:15 -03:00
9c426a7b16 refactor: evaluate archive files in another package (#3101)
* refactor: evaluate archive files in another package

would be used in #2911

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>

* test: fixes

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
2022-05-11 22:56:25 -03:00
5d9110ab43 refactor: improve archive pipe (#3100)
Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
2022-05-11 21:54:28 -03:00
e38e76cac8 feat: meta archives (#3093)
adds support for creating meta archives

closes #3085

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
2022-05-10 09:17:30 -03:00
922992ce76 fix: archive ids (#3052)
* fix: archive ids

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>

* test: add archive id filter test

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
2022-04-19 22:49:08 -03:00
53bbc6546f fix: goamd64 should allow the only range from v1 to v4
It was just allowing v2 and v3 due to some misreading on my side.
This commit fixes it to allow v1, v2, v3 and v4.

refs #3016

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
2022-04-13 21:30:08 -03:00
b0583c700b feat: support GOAMD64 (#3016)
* feat: support GOAMD64

* fix: test

* wip

* wip: docker et al

* fix: archive format name

* test: added new test

* feat: nfpm amd4, mips et al

* chore: rm unused file

* fix: brew for multiple goamd64

* fix: krew

* feat: aur

* feat: krew

* docs: brew

* feat: gofis

* feat: scoop

* fix: docker filters

* fix: snapcraft

* fix: improve diff a bit

* fix: snapcraft name template
2022-04-11 22:43:22 -03:00
cdcaf038c8 test: fixes sbom tests
refs #2798

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
2021-12-30 09:47:52 -03:00
e8c8a2832f feat: improve universal binaries on krew/brew/gofish (#2747)
* feat: improve universal binaries on krew/brew/gofish

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>

* test: OnlyReplacingUnibins

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>

* fix: archive

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>

* fix: do not replace single-arch

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
2021-12-07 21:53:39 -03:00
c0e5e3b90f refactor: use os and io instead of ioutil (#2676) 2021-11-21 11:10:08 -03:00
c99071eb9e feat(homebrew): support binary releases (#2576)
* feat(homebrew): support binary releases

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>

* fix: improve code

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>

* fix: improve code a bit

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>

* test: fix archive testts

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
2021-10-16 23:52:01 -03:00
f4cef96055 feat(gofish): support binary releases (#2577)
* feat(gofish): support binary releases

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>

* fix: improve code

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
2021-10-16 23:20:14 -03:00
cbb567ca74 fix(archive): add extra fields to the archives (#2578)
* fix(archive): binary format should have the full binary name

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>

* fix: added an extra field

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
2021-10-16 23:03:06 -03:00
df2f00fc8b refactor: put common extra keys in the artifact package (#2580)
* refactor: put common extra keys in the artifact package

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>

* refactor: common extra fields have their own funcs

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>

* refactor: 2 more

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>

* fix: review

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
2021-10-16 22:46:11 -03:00