mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2025-03-27 23:02:54 +00:00
Tag pipeline with source information (#4771)
Co-authored-by: qwerty287 <80460567+qwerty287@users.noreply.github.com>
This commit is contained in:
parent
ea45a0af6f
commit
846fd8dc51
6 changed files with 40 additions and 9 deletions
|
@ -4,7 +4,7 @@ To enhance the usability of Woodpecker and meet evolving security standards, occ
|
||||||
|
|
||||||
## `next`
|
## `next`
|
||||||
|
|
||||||
- No changes
|
- (Kubernetes) Deprecated `step` label on pod in favor of new namespaced label `woodpecker-ci.org/step`. The `step` label will be removed in a future update.
|
||||||
|
|
||||||
## 3.0.0
|
## 3.0.0
|
||||||
|
|
||||||
|
|
|
@ -31,9 +31,12 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
StepLabel = "step"
|
// StepLabelLegacy is the legacy label name from before the introduction of the woodpecker-ci.org namespace.
|
||||||
podPrefix = "wp-"
|
// This will be removed in the future.
|
||||||
defaultFSGroup int64 = 1000
|
StepLabelLegacy = "step"
|
||||||
|
StepLabel = "woodpecker-ci.org/step"
|
||||||
|
podPrefix = "wp-"
|
||||||
|
defaultFSGroup int64 = 1000
|
||||||
)
|
)
|
||||||
|
|
||||||
func mkPod(step *types.Step, config *config, podName, goos string, options BackendOptions) (*v1.Pod, error) {
|
func mkPod(step *types.Step, config *config, podName, goos string, options BackendOptions) (*v1.Pod, error) {
|
||||||
|
@ -115,6 +118,10 @@ func podLabels(step *types.Step, config *config, options BackendOptions) (map[st
|
||||||
if step.Type == types.StepTypeService {
|
if step.Type == types.StepTypeService {
|
||||||
labels[ServiceLabel], _ = serviceName(step)
|
labels[ServiceLabel], _ = serviceName(step)
|
||||||
}
|
}
|
||||||
|
labels[StepLabelLegacy], err = stepLabel(step)
|
||||||
|
if err != nil {
|
||||||
|
return labels, err
|
||||||
|
}
|
||||||
labels[StepLabel], err = stepLabel(step)
|
labels[StepLabel], err = stepLabel(step)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return labels, err
|
return labels, err
|
||||||
|
|
|
@ -72,7 +72,8 @@ func TestTinyPod(t *testing.T) {
|
||||||
"namespace": "woodpecker",
|
"namespace": "woodpecker",
|
||||||
"creationTimestamp": null,
|
"creationTimestamp": null,
|
||||||
"labels": {
|
"labels": {
|
||||||
"step": "build-via-gradle"
|
"step": "build-via-gradle",
|
||||||
|
"woodpecker-ci.org/step": "build-via-gradle"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"spec": {
|
"spec": {
|
||||||
|
@ -153,7 +154,8 @@ func TestFullPod(t *testing.T) {
|
||||||
"labels": {
|
"labels": {
|
||||||
"app": "test",
|
"app": "test",
|
||||||
"part-of": "woodpecker-ci",
|
"part-of": "woodpecker-ci",
|
||||||
"step": "go-test"
|
"step": "go-test",
|
||||||
|
"woodpecker-ci.org/step": "go-test"
|
||||||
},
|
},
|
||||||
"annotations": {
|
"annotations": {
|
||||||
"apps.kubernetes.io/pod-index": "0",
|
"apps.kubernetes.io/pod-index": "0",
|
||||||
|
@ -447,7 +449,8 @@ func TestScratchPod(t *testing.T) {
|
||||||
"namespace": "woodpecker",
|
"namespace": "woodpecker",
|
||||||
"creationTimestamp": null,
|
"creationTimestamp": null,
|
||||||
"labels": {
|
"labels": {
|
||||||
"step": "curl-google"
|
"step": "curl-google",
|
||||||
|
"woodpecker-ci.org/step": "curl-google"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"spec": {
|
"spec": {
|
||||||
|
@ -492,7 +495,8 @@ func TestSecrets(t *testing.T) {
|
||||||
"namespace": "woodpecker",
|
"namespace": "woodpecker",
|
||||||
"creationTimestamp": null,
|
"creationTimestamp": null,
|
||||||
"labels": {
|
"labels": {
|
||||||
"step": "test-secrets"
|
"step": "test-secrets",
|
||||||
|
"woodpecker-ci.org/step": "test-secrets"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"spec": {
|
"spec": {
|
||||||
|
|
|
@ -258,6 +258,10 @@ func registrySecretLabels(step *types.Step) (map[string]string, error) {
|
||||||
if step.Type == types.StepTypeService {
|
if step.Type == types.StepTypeService {
|
||||||
labels[ServiceLabel], _ = serviceName(step)
|
labels[ServiceLabel], _ = serviceName(step)
|
||||||
}
|
}
|
||||||
|
labels[StepLabelLegacy], err = stepLabel(step)
|
||||||
|
if err != nil {
|
||||||
|
return labels, err
|
||||||
|
}
|
||||||
labels[StepLabel], err = stepLabel(step)
|
labels[StepLabel], err = stepLabel(step)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return labels, err
|
return labels, err
|
||||||
|
|
|
@ -212,7 +212,8 @@ func TestRegistrySecret(t *testing.T) {
|
||||||
"namespace": "woodpecker",
|
"namespace": "woodpecker",
|
||||||
"creationTimestamp": null,
|
"creationTimestamp": null,
|
||||||
"labels": {
|
"labels": {
|
||||||
"step": "go-test"
|
"step": "go-test",
|
||||||
|
"woodpecker-ci.org/step": "go-test"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"type": "kubernetes.io/dockerconfigjson",
|
"type": "kubernetes.io/dockerconfigjson",
|
||||||
|
|
|
@ -19,6 +19,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"maps"
|
"maps"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/oklog/ulid/v2"
|
"github.com/oklog/ulid/v2"
|
||||||
|
@ -194,6 +195,20 @@ func (b *StepBuilder) genItemForWorkflow(workflow *model.Workflow, axis matrix.A
|
||||||
maps.Copy(item.Labels, b.DefaultLabels)
|
maps.Copy(item.Labels, b.DefaultLabels)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// "woodpecker-ci.org" namespace is reserved for internal use
|
||||||
|
for key := range item.Labels {
|
||||||
|
if strings.HasPrefix(key, "woodpecker-ci.org") {
|
||||||
|
log.Debug().Str("forge", b.Forge.Name()).Str("repo", b.Repo.FullName).Str("label", key).Msg("dropped pipeline label with reserved prefix woodpecker-ci.org")
|
||||||
|
delete(item.Labels, key)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
item.Labels["woodpecker-ci.org/forge-id"] = b.Forge.Name()
|
||||||
|
item.Labels["woodpecker-ci.org/repo-forge-id"] = string(b.Repo.ForgeRemoteID)
|
||||||
|
item.Labels["woodpecker-ci.org/repo-id"] = strconv.FormatInt(b.Repo.ID, 10)
|
||||||
|
item.Labels["woodpecker-ci.org/repo-name"] = b.Repo.Name
|
||||||
|
item.Labels["woodpecker-ci.org/branch"] = b.Repo.Branch
|
||||||
|
|
||||||
return item, errorsAndWarnings
|
return item, errorsAndWarnings
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue