Skip to content

Instantly share code, notes, and snippets.

@jorgemoralespou
Created February 26, 2020 17:20
Show Gist options
  • Save jorgemoralespou/59c8825d26c0daa08ef78a5350cb1d92 to your computer and use it in GitHub Desktop.
Save jorgemoralespou/59c8825d26c0daa08ef78a5350cb1d92 to your computer and use it in GitHub Desktop.
#@ load("@ytt:data", "data")
---
apiVersion: v1
kind: Namespace
metadata:
name: #@ data.values.namespace
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: admin
namespace: #@ data.values.namespace
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: admin
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: #@ data.values.developeruser
---
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: api-repo
namespace: #@ data.values.namespace
spec:
type: git
params:
- name: url
value: http://github.com/openshift-pipelines/vote-api.git
---
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: api-image
namespace: #@ data.values.namespace
spec:
type: image
params:
- name: url
value: #@ "image-registry.openshift-image-registry.svc:5000/{}/api:latest".format(data.values.namespace)
---
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: ui-repo
namespace: #@ data.values.namespace
spec:
type: git
params:
- name: url
value: http://github.com/openshift-pipelines/vote-ui.git
---
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: ui-image
namespace: #@ data.values.namespace
spec:
type: image
params:
- name: url
value: #@ "image-registry.openshift-image-registry.svc:5000/{}/ui:latest".format(data.values.namespace)
---
apiVersion: tekton.dev/v1alpha1
kind: Task
metadata:
name: apply-manifests
namespace: #@ data.values.namespace
spec:
inputs:
resources:
- {type: git, name: source}
params:
- name: manifest_dir
description: The directory in source that contains yaml manifests
type: string
default: "k8s"
steps:
- name: apply
image: quay.io/openshift/origin-cli:latest
workingDir: /workspace/source
command: ["/bin/bash", "-c"]
args:
- |-
echo Applying manifests in $(inputs.params.manifest_dir) directory
oc apply -f $(inputs.params.manifest_dir)
echo -----------------------------------
---
apiVersion: tekton.dev/v1alpha1
kind: Task
metadata:
name: update-deployment
namespace: #@ data.values.namespace
spec:
inputs:
resources:
- {type: image, name: image}
params:
- name: deployment
description: The name of the deployment patch the image
type: string
steps:
- name: patch
image: quay.io/openshift/origin-cli:latest
command: ["/bin/bash", "-c"]
args:
- |-
oc patch deployment $(inputs.params.deployment) --patch='{"spec":{"template":{"spec":{
"containers":[{
"name": "$(inputs.params.deployment)",
"image":"$(inputs.resources.image.url)"
}]
}}}}'
---
apiVersion: tekton.dev/v1alpha1
kind: Pipeline
metadata:
name: build-and-deploy
namespace: #@ data.values.namespace
spec:
resources:
- name: api-repo
type: git
- name: api-image
type: image
- name: ui-repo
type: git
- name: ui-image
type: image
tasks:
- name: build-api
taskRef:
name: buildah
kind: ClusterTask
resources:
inputs:
- name: source
resource: api-repo
outputs:
- name: image
resource: api-image
params:
- name: TLSVERIFY
value: "false"
- name: apply-api-manifests
taskRef:
name: apply-manifests
resources:
inputs:
- name: source
resource: api-repo
runAfter:
- build-api
- name: update-api-image
taskRef:
name: update-deployment
resources:
inputs:
- name: image
resource: api-image
params:
- name: deployment
value: "api"
runAfter:
- apply-api-manifests
- name: build-ui
taskRef:
name: s2i-python-3
kind: ClusterTask
resources:
inputs:
- name: source
resource: ui-repo
outputs:
- name: image
resource: ui-image
params:
- name: TLSVERIFY
value: "false"
- name: apply-ui-manifests
taskRef:
name: apply-manifests
resources:
inputs:
- name: source
resource: ui-repo
runAfter:
- build-ui
- update-api-image
- name: update-ui-image
taskRef:
name: update-deployment
resources:
inputs:
- name: image
resource: ui-image
params:
- name: deployment
value: "ui"
runAfter:
- apply-ui-manifests
---
apiVersion: tekton.dev/v1alpha1
kind: PipelineRun
metadata:
generateName: build-and-deploy-
namespace: #@ data.values.namespace
annotations:
kapp.k14s.io/versioned: ''
kapp.k14s.io/nonce: ''
spec:
pipelineRef:
name: build-and-deploy
resources:
- name: api-repo
resourceRef:
name: api-repo
- name: api-image
resourceRef:
name: api-image
- name: ui-repo
resourceRef:
name: api-repo
- name: ui-image
resourceRef:
name: api-image
serviceAccountName: pipeline
timeout: 1h0m0s
@jorgemoralespou
Copy link
Author

I get the following output:

Changes

Namespace      Name                Kind         Conds.  Age  Op      Wait to    Rs  Ri  
(cluster)      tekton-sample       Namespace    -       44m  update  reconcile  ok  -  
tekton-sample  build-and-deploy-*  PipelineRun  -       -    create  reconcile  -   -  

Op:      1 create, 0 delete, 1 update, 0 noop
Wait to: 2 reconcile, 0 delete, 0 noop

6:21:59PM: ---- applying 1 changes [0/2 done] ----
6:21:59PM: update namespace/tekton-sample (v1) cluster
6:22:01PM: ---- waiting on 1 changes [0/2 done] ----
6:22:02PM: ok: reconcile namespace/tekton-sample (v1) cluster
6:22:02PM: ---- applying 1 changes [1/2 done] ----
6:22:02PM: create pipelinerun/build-and-deploy-* (tekton.dev/v1alpha1) namespace: tekton-sample
6:22:03PM: ---- waiting on 1 changes [1/2 done] ----
6:22:03PM: error: reconcile pipelinerun/build-and-deploy-* (tekton.dev/v1alpha1) namespace: tekton-sample

kapp: Error: waiting on reconcile pipelinerun/build-and-deploy-* (tekton.dev/v1alpha1) namespace: tekton-sample: errored: Getting resource pipelinerun/build-and-deploy-* (tekton.dev/v1alpha1) namespace: tekton-sample: pipelineruns.tekton.dev "build-and-deploy-*" not found (reason: NotFound)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment