woodpecker-docker-buildx/plugin/labels.go
Lauris BH be7d7c0244 Implement option to add image labels and generate automatic labels (#19)
Fixes #16

Results into labels:
![attels](/attachments/3aa6641e-fe50-4e28-be97-64c0afe2c35a)

Co-authored-by: Lauris BH <lauris@nix.lv>
Reviewed-on: https://codeberg.org/woodpecker-plugins/plugin-docker-buildx/pulls/19
Reviewed-by: 6543 <6543@obermui.de>
Co-authored-by: Lauris BH <lafriks@noreply.codeberg.org>
Co-committed-by: Lauris BH <lafriks@noreply.codeberg.org>
2022-09-28 02:16:57 +02:00

33 lines
1.1 KiB
Go

package plugin
import (
"fmt"
"strings"
"time"
"github.com/coreos/go-semver/semver"
)
// Labels returns list of labels to use for image
func (p *Plugin) Labels() []string {
l := p.settings.Build.Labels.Value()
// As described in https://github.com/opencontainers/image-spec/blob/main/annotations.md
l = append(l, fmt.Sprintf("org.opencontainers.image.created=%s", time.Now().UTC().Format(time.RFC3339)))
if p.settings.Build.Remote != "" {
l = append(l, fmt.Sprintf("org.opencontainers.image.source=%s", p.settings.Build.Remote))
}
if p.pipeline.Repo.Link != "" {
l = append(l, fmt.Sprintf("org.opencontainers.image.url=%s", p.pipeline.Repo.Link))
}
if p.pipeline.Commit.SHA != "" {
l = append(l, fmt.Sprintf("org.opencontainers.image.revision=%s", p.pipeline.Commit.SHA))
}
if p.settings.Build.Ref != "" && strings.HasPrefix(p.settings.Build.Ref, "refs/tags/") {
v, err := semver.NewVersion(strings.TrimPrefix(p.settings.Build.Ref[10:], "v"))
if err == nil && v != nil {
l = append(l, fmt.Sprintf("org.opencontainers.image.version=%s", v.String()))
}
}
return l
}