Skip to content

Commit

Permalink
Add variable expansion for ImagePullPolicy in Tasks
Browse files Browse the repository at this point in the history
Closes #3423

Add variable expansion in Tasks for fields:
- `spec.steps[].imagePullPolicy`
- `spec.sidecar[].imagePullPolicy`
  • Loading branch information
rinckm authored and tekton-robot committed Nov 23, 2020
1 parent 2ba5fe1 commit bf8fb54
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 10 deletions.
2 changes: 2 additions & 0 deletions docs/variables.md
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ variable via `resources.inputs.<resourceName>.<variableName>` or
| --- | ----- |
| `Task` | `spec.steps[].name` |
| `Task` | `spec.steps[].image` |
| `Task` | `spec.steps[].imagePullPolicy` |
| `Task` | `spec.steps[].env.value` |
| `Task` | `spec.steps[].env.valuefrom.secretkeyref.name` |
| `Task` | `spec.steps[].env.valuefrom.secretkeyref.key` |
Expand All @@ -150,6 +151,7 @@ variable via `resources.inputs.<resourceName>.<variableName>` or
| `Task` | `spec.volumes[].csi.volumeattributes.* `|
| `Task` | `spec.sidecars[].name` |
| `Task` | `spec.sidecars[].image` |
| `Task` | `spec.sidecars[].imagePullPolicy` |
| `Task` | `spec.sidecars[].env.value` |
| `Task` | `spec.sidecars[].env.valuefrom.secretkeyref.name` |
| `Task` | `spec.sidecars[].env.valuefrom.secretkeyref.key` |
Expand Down
25 changes: 25 additions & 0 deletions examples/v1beta1/taskruns/image-params.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
apiVersion: tekton.dev/v1beta1
kind: ClusterTask
metadata:
name: image-params
spec:
params:
- name: image
type: string
default: ubuntu
- name: imagePullPolicy
type: string
default: IfNotPresent
steps:
- image: $(params.image)
imagePullPolicy: $(params.imagePullPolicy)
script: echo hello
---
apiVersion: tekton.dev/v1beta1
kind: TaskRun
metadata:
generateName: image-params-
spec:
taskRef:
name: image-params
kind: ClusterTask
1 change: 1 addition & 0 deletions pkg/apis/pipeline/v1beta1/container_replacements.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import (
func ApplyContainerReplacements(step *corev1.Container, stringReplacements map[string]string, arrayReplacements map[string][]string) {
step.Name = substitution.ApplyReplacements(step.Name, stringReplacements)
step.Image = substitution.ApplyReplacements(step.Image, stringReplacements)
step.ImagePullPolicy = corev1.PullPolicy(substitution.ApplyReplacements(string(step.ImagePullPolicy), stringReplacements))

// Use ApplyArrayReplacements here, as additional args may be added via an array parameter.
var newArgs []string
Expand Down
22 changes: 12 additions & 10 deletions pkg/apis/pipeline/v1beta1/container_replacements_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,12 @@ func TestApplyContainerReplacements(t *testing.T) {
}

s := corev1.Container{
Name: "$(replace.me)",
Image: "$(replace.me)",
Command: []string{"$(array.replace.me)"},
Args: []string{"$(array.replace.me)"},
WorkingDir: "$(replace.me)",
Name: "$(replace.me)",
Image: "$(replace.me)",
ImagePullPolicy: "$(replace.me)",
Command: []string{"$(array.replace.me)"},
Args: []string{"$(array.replace.me)"},
WorkingDir: "$(replace.me)",
EnvFrom: []corev1.EnvFromSource{{
ConfigMapRef: &corev1.ConfigMapEnvSource{
LocalObjectReference: corev1.LocalObjectReference{
Expand Down Expand Up @@ -77,11 +78,12 @@ func TestApplyContainerReplacements(t *testing.T) {
}

expected := corev1.Container{
Name: "replaced!",
Image: "replaced!",
Command: []string{"val1", "val2"},
Args: []string{"val1", "val2"},
WorkingDir: "replaced!",
Name: "replaced!",
Image: "replaced!",
ImagePullPolicy: "replaced!",
Command: []string{"val1", "val2"},
Args: []string{"val1", "val2"},
WorkingDir: "replaced!",
EnvFrom: []corev1.EnvFromSource{{
ConfigMapRef: &corev1.ConfigMapEnvSource{
LocalObjectReference: corev1.LocalObjectReference{
Expand Down

0 comments on commit bf8fb54

Please sign in to comment.