1
0
mirror of https://github.com/goreleaser/goreleaser.git synced 2025-03-17 20:47:50 +02:00

fix: improve artifact refresh and filtering

This commit is contained in:
Carlos Alexandro Becker 2024-03-20 00:49:34 -03:00
parent 08851dce61
commit af97e63dd3
No known key found for this signature in database
5 changed files with 20 additions and 12 deletions

View File

@ -307,6 +307,13 @@ func New() *Artifacts {
}
}
// Refresh visits all artifacts and refreshes them.
func (artifacts *Artifacts) Refresh() error {
return artifacts.Visit(func(a *Artifact) error {
return a.Refresh()
})
}
// List return the actual list of artifacts.
func (artifacts *Artifacts) List() []*Artifact {
artifacts.lock.Lock()

View File

@ -570,9 +570,7 @@ func TestRefresher(t *testing.T) {
Type: Checksum,
})
for _, item := range artifacts.List() {
require.NoError(t, item.Refresh())
}
require.NoError(t, artifacts.Refresh())
bts, err := os.ReadFile(path)
require.NoError(t, err)

View File

@ -21,12 +21,6 @@ func describeBody(ctx *context.Context) (bytes.Buffer, error) {
checksums := ctx.Artifacts.Filter(artifact.ByType(artifact.Checksum))
if err := checksums.Visit(func(a *artifact.Artifact) error {
return a.Refresh()
}); err != nil {
return out, err
}
checksumsList := checksums.List()
switch len(checksumsList) {
case 0:

View File

@ -71,6 +71,9 @@ func TestDescribeBodyMultipleChecksums(t *testing.T) {
},
})
}
require.NoError(t, ctx.Artifacts.Refresh())
out, err := describeBody(ctx)
require.NoError(t, err)
@ -116,6 +119,9 @@ Get GoReleaser Pro at https://goreleaser.com/pro
},
},
})
require.NoError(t, ctx.Artifacts.Refresh())
out, err := describeBody(ctx)
require.NoError(t, err)

View File

@ -114,6 +114,9 @@ func doPublish(ctx *context.Context, client client.Client) error {
log.WithField("tag", ctx.Git.CurrentTag).
WithField("repo", ctx.Config.Release.GitHub.String()).
Info("creating or updating release")
if err := ctx.Artifacts.Refresh(); err != nil {
return err
}
body, err := describeBody(ctx)
if err != nil {
return err
@ -147,23 +150,23 @@ func doPublish(ctx *context.Context, client client.Client) error {
})
}
filters := artifact.Or(
typeFilters := []artifact.Filter{
artifact.ByType(artifact.UploadableArchive),
artifact.ByType(artifact.UploadableBinary),
artifact.ByType(artifact.UploadableSourceArchive),
artifact.ByType(artifact.UploadableFile),
artifact.ByType(artifact.Checksum),
artifact.ByType(artifact.Signature),
artifact.ByType(artifact.Certificate),
artifact.ByType(artifact.LinuxPackage),
artifact.ByType(artifact.SBOM),
)
filters := artifact.Or(typeFilters...)
if len(ctx.Config.Release.IDs) > 0 {
filters = artifact.And(filters, artifact.ByIDs(ctx.Config.Release.IDs...))
}
filters = artifact.Or(filters, artifact.ByType(artifact.UploadableFile))
g := semerrgroup.New(ctx.Parallelism)
for _, artifact := range ctx.Artifacts.Filter(filters).List() {
artifact := artifact