Skip to content

Commit 08750b7

Browse files
committed
remove downward API implementation
Signed-off-by: Javier Rodriguez <javier@chainloop.dev>
1 parent f800bb2 commit 08750b7

2 files changed

Lines changed: 4 additions & 404 deletions

File tree

pkg/attestation/crafter/runners/tektonpipeline.go

Lines changed: 4 additions & 150 deletions
Original file line numberDiff line numberDiff line change
@@ -16,29 +16,15 @@
1616
package runners
1717

1818
import (
19-
"fmt"
2019
"os"
21-
"strings"
2220

2321
schemaapi "github.com/chainloop-dev/chainloop/app/controlplane/api/workflowcontract/v1"
2422
)
2523

26-
const (
27-
// Default path for Downward API labels
28-
defaultLabelsPath = "/etc/podinfo/labels"
29-
// Default Tekton dashboard URL
30-
defaultDashboardURL = "https://dashboard.tekton.dev"
31-
)
32-
33-
type TektonPipeline struct {
34-
// Path to the Downward API labels file (configurable for testing)
35-
labelsPath string
36-
}
24+
type TektonPipeline struct{}
3725

3826
func NewTektonPipeline() *TektonPipeline {
39-
return &TektonPipeline{
40-
labelsPath: defaultLabelsPath,
41-
}
27+
return &TektonPipeline{}
4228
}
4329

4430
func (r *TektonPipeline) ID() schemaapi.CraftingSchema_Runner_RunnerType {
@@ -55,158 +41,26 @@ func (r *TektonPipeline) CheckEnv() bool {
5541
return false
5642
}
5743

58-
// ListEnvVars returns environment variables collected from Downward API labels
5944
func (r *TektonPipeline) ListEnvVars() []*EnvVarDefinition {
60-
// Parse labels and convert to environment variable definitions
61-
labels := r.parseLabels()
62-
if len(labels) == 0 {
63-
return []*EnvVarDefinition{}
64-
}
65-
66-
var envVars []*EnvVarDefinition
67-
68-
// Map Tekton labels to environment variables (all optional)
69-
labelMappings := map[string]string{
70-
"tekton.dev/pipelineRun": "TEKTON_PIPELINE_RUN",
71-
"tekton.dev/pipelineRunUID": "TEKTON_PIPELINE_RUN_UID",
72-
"tekton.dev/pipeline": "TEKTON_PIPELINE",
73-
"tekton.dev/taskRun": "TEKTON_TASKRUN_NAME",
74-
"tekton.dev/taskRunUID": "TEKTON_TASKRUN_UID",
75-
"tekton.dev/task": "TEKTON_TASK_NAME",
76-
}
77-
78-
for labelKey, envVarName := range labelMappings {
79-
if _, exists := labels[labelKey]; exists {
80-
envVars = append(envVars, &EnvVarDefinition{
81-
Name: envVarName,
82-
Optional: true,
83-
})
84-
}
85-
}
86-
87-
// Add namespace if available
88-
if ns := r.getNamespace(); ns != "" {
89-
envVars = append(envVars, &EnvVarDefinition{
90-
Name: "TEKTON_NAMESPACE",
91-
Optional: true,
92-
})
93-
}
94-
95-
return envVars
96-
}
97-
98-
// parseLabels reads and parses the Downward API labels file
99-
// Returns a map of label key-value pairs
100-
func (r *TektonPipeline) parseLabels() map[string]string {
101-
labels := make(map[string]string)
102-
103-
data, err := os.ReadFile(r.labelsPath)
104-
if err != nil {
105-
return labels
106-
}
107-
108-
// Parse labels in format: key="value"
109-
// Labels are separated by newlines
110-
lines := strings.Split(string(data), "\n")
111-
for _, line := range lines {
112-
line = strings.TrimSpace(line)
113-
if line == "" {
114-
continue
115-
}
116-
117-
// Split on first = to get key and quoted value
118-
parts := strings.SplitN(line, "=", 2)
119-
if len(parts) != 2 {
120-
continue
121-
}
122-
123-
key := strings.TrimSpace(parts[0])
124-
value := strings.Trim(strings.TrimSpace(parts[1]), `"`)
125-
labels[key] = value
126-
}
127-
128-
return labels
45+
return []*EnvVarDefinition{}
12946
}
13047

13148
func (r *TektonPipeline) RunURI() string {
132-
labels := r.parseLabels()
133-
namespace := r.getNamespace()
134-
135-
if namespace == "" {
136-
return ""
137-
}
138-
139-
// Get dashboard URL from environment variable or use default
140-
dashboardURL := os.Getenv("TEKTON_DASHBOARD_URL")
141-
if dashboardURL == "" {
142-
dashboardURL = defaultDashboardURL
143-
}
144-
145-
// Priority 1: If we have PipelineRun context, construct PipelineRun URL
146-
if pipelineRun, ok := labels["tekton.dev/pipelineRun"]; ok && pipelineRun != "" {
147-
return fmt.Sprintf("%s/#/namespaces/%s/pipelineruns/%s", dashboardURL, namespace, pipelineRun)
148-
}
149-
150-
// Priority 2: If we have TaskRun context, construct TaskRun URL
151-
if taskRun, ok := labels["tekton.dev/taskRun"]; ok && taskRun != "" {
152-
return fmt.Sprintf("%s/#/namespaces/%s/taskruns/%s", dashboardURL, namespace, taskRun)
153-
}
154-
155-
return ""
156-
}
157-
158-
// getNamespace attempts to get the namespace from the service account
159-
func (r *TektonPipeline) getNamespace() string {
160-
// Read from service account (standard Kubernetes location)
161-
if data, err := os.ReadFile("/var/run/secrets/kubernetes.io/serviceaccount/namespace"); err == nil {
162-
return strings.TrimSpace(string(data))
163-
}
164-
16549
return ""
16650
}
16751

16852
func (r *TektonPipeline) ResolveEnvVars() (map[string]string, []*error) {
169-
result := make(map[string]string)
170-
labels := r.parseLabels()
171-
172-
// Map Tekton labels to environment variable names
173-
labelMappings := map[string]string{
174-
"tekton.dev/pipelineRun": "TEKTON_PIPELINE_RUN",
175-
"tekton.dev/pipelineRunUID": "TEKTON_PIPELINE_RUN_UID",
176-
"tekton.dev/pipeline": "TEKTON_PIPELINE",
177-
"tekton.dev/taskRun": "TEKTON_TASKRUN_NAME",
178-
"tekton.dev/taskRunUID": "TEKTON_TASKRUN_UID",
179-
"tekton.dev/task": "TEKTON_TASK_NAME",
180-
}
181-
182-
for labelKey, envVarName := range labelMappings {
183-
if value, ok := labels[labelKey]; ok && value != "" {
184-
result[envVarName] = value
185-
}
186-
}
187-
188-
// Add namespace if available
189-
if ns := r.getNamespace(); ns != "" {
190-
result["TEKTON_NAMESPACE"] = ns
191-
}
192-
193-
// No errors since all variables are optional
194-
return result, nil
53+
return resolveEnvVars(r.ListEnvVars())
19554
}
19655

19756
func (r *TektonPipeline) WorkflowFilePath() string {
198-
// Tekton doesn't have a single workflow file path concept
199-
// Tasks and Pipelines are defined as Kubernetes resources
20057
return ""
20158
}
20259

20360
func (r *TektonPipeline) IsAuthenticated() bool {
204-
// No OIDC support initially
20561
return false
20662
}
20763

20864
func (r *TektonPipeline) Environment() RunnerEnvironment {
209-
// Could be enhanced to detect managed Tekton services (e.g., OpenShift Pipelines)
210-
// For now, return Unknown
21165
return Unknown
21266
}

0 commit comments

Comments
 (0)