executors/docker/internal/labels/labels.go (37 lines of code) (raw):

package labels import ( "fmt" "strconv" "gitlab.com/gitlab-org/gitlab-runner/common" ) const dockerLabelPrefix = "com.gitlab.gitlab-runner" // Labeler is responsible for handling labelling logic for docker entities - networks, containers. type Labeler interface { Labels(otherLabels map[string]string) map[string]string } // NewLabeler returns a new instance of a Labeler bound to this build. func NewLabeler(b *common.Build) Labeler { return &labeler{ build: b, } } type labeler struct { build *common.Build } // Labels returns a map of label to value to be applied to docker entities. // Includes a set of defaults. Add additional ones or overwrites in the provided map. func (l *labeler) Labels(otherLabels map[string]string) map[string]string { labels := map[string]string{ dockerLabelPrefix + ".job.id": strconv.FormatInt(l.build.ID, 10), dockerLabelPrefix + ".job.url": l.build.JobURL(), dockerLabelPrefix + ".job.sha": l.build.GitInfo.Sha, dockerLabelPrefix + ".job.before_sha": l.build.GitInfo.BeforeSha, dockerLabelPrefix + ".job.ref": l.build.GitInfo.Ref, dockerLabelPrefix + ".job.timeout": l.build.GetBuildTimeout().String(), dockerLabelPrefix + ".project.id": strconv.FormatInt(l.build.JobInfo.ProjectID, 10), dockerLabelPrefix + ".pipeline.id": l.build.GetAllVariables().Value("CI_PIPELINE_ID"), dockerLabelPrefix + ".runner.id": l.build.Runner.ShortDescription(), dockerLabelPrefix + ".runner.local_id": strconv.Itoa(l.build.RunnerID), dockerLabelPrefix + ".managed": "true", } for k, v := range otherLabels { labels[fmt.Sprintf("%s.%s", dockerLabelPrefix, k)] = v } return labels }