UNPKG

@kui-shell/plugin-tekton

Version:
259 lines (255 loc) 6.58 kB
--- apiVersion: tekton.dev/v1alpha1 kind: PipelineResource metadata: name: skaffold-image-leeroy-app spec: type: image params: - name: url value: gcr.io/christiewilson-catfactory/leeroy-app --- # This demo modifies the cluster (deploys to it) you must use a service # account with permission to admin the cluster (or make your default user an admin # of the `default` namespace with default-cluster-admin. apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: default-cluster-admin subjects: - kind: ServiceAccount name: default namespace: default roleRef: kind: ClusterRole name: cluster-admin apiGroup: rbac.authorization.k8s.io --- apiVersion: tekton.dev/v1alpha1 kind: PipelineResource metadata: name: skaffold-image-leeroy-web spec: type: image params: - name: url value: gcr.io/christiewilson-catfactory/leeroy-web --- apiVersion: tekton.dev/v1alpha1 kind: PipelineResource metadata: name: skaffold-git spec: type: git params: - name: revision value: master - name: url value: https://github.com/GoogleContainerTools/skaffold --- apiVersion: tekton.dev/v1alpha1 kind: Task metadata: name: unit-tests spec: inputs: resources: - name: workspace type: git targetPath: go/src/github.com/GoogleContainerTools/skaffold steps: - name: run-tests image: golang env: - name: GOPATH value: /workspace/go workingDir: /workspace/go/src/github.com/GoogleContainerTools/skaffold command: - echo args: - "pass" --- apiVersion: tekton.dev/v1alpha1 kind: Task metadata: name: build-push spec: inputs: resources: - name: workspace type: git params: - name: pathToDockerFile description: The path to the dockerfile to build default: /workspace/workspace/Dockerfile - name: pathToContext description: The build context used by Kaniko (https://github.com/GoogleContainerTools/kaniko#kaniko-build-contexts) default: /workspace/workspace outputs: resources: - name: builtImage type: image steps: - name: build-and-push image: gcr.io/kaniko-project/executor command: - /kaniko/executor args: - --dockerfile=${inputs.params.pathToDockerFile} - --destination=${outputs.resources.builtImage.url} - --context=${inputs.params.pathToContext} --- #This task deploys with kubectl apply -f <filename> apiVersion: tekton.dev/v1alpha1 kind: Task metadata: name: demo-deploy-kubectl spec: inputs: resources: - name: workspace type: git - name: image type: image params: - name: path description: Path to the manifest to apply - name: yqArg description: Okay this is a hack, but I didn't feel right hard-codeing `-d1` down below - name: yamlPathToImage description: The path to the image to replace in the yaml manifest (arg to yq) clusters: - name: targetCluster description: Not yet used, kubectl command below should use this cluster steps: - name: replace-image image: mikefarah/yq command: ['yq'] args: - "w" - "-i" - "${inputs.params.yqArg}" - "${inputs.params.path}" - "${inputs.params.yamlPathToImage}" - "${inputs.resources.image.url}" - name: run-kubectl image: lachlanevenson/k8s-kubectl command: ['kubectl'] args: - 'apply' - '-f' - '${inputs.params.path}' --- # This Pipeline Builds two microservice images(https://github.com/GoogleContainerTools/skaffold/tree/master/examples/microservices) # from the Skaffold repo (https://github.com/GoogleContainerTools/skaffold) and deploys them to the repo currently running Tekton Pipelines. # **Note** : It does this using the k8s `Deployment` in the skaffold repos's existing yaml # files, so at the moment there is no guarantee that the image that are built and # pushed are the ones that are deployed (that would require using the digest of # the built image, see https://github.com/tektoncd/pipeline/issues/216). apiVersion: tekton.dev/v1alpha1 kind: Pipeline metadata: name: demo-pipeline spec: resources: - name: source-repo type: git - name: web-image type: image - name: app-image type: image tasks: - name: skaffold-unit-tests taskRef: name: unit-tests resources: inputs: - name: workspace resource: source-repo - name: build-skaffold-web runAfter: [skaffold-unit-tests] taskRef: name: build-push params: - name: pathToDockerFile value: Dockerfile - name: pathToContext value: /workspace/workspace/examples/microservices/leeroy-web resources: inputs: - name: workspace resource: source-repo outputs: - name: builtImage resource: web-image - name: build-skaffold-app runAfter: [skaffold-unit-tests] taskRef: name: build-push params: - name: pathToDockerFile value: Dockerfile - name: pathToContext value: /workspace/workspace/examples/microservices/leeroy-app resources: inputs: - name: workspace resource: source-repo outputs: - name: builtImage resource: app-image - name: deploy-app taskRef: name: demo-deploy-kubectl resources: inputs: - name: workspace resource: source-repo - name: image resource: app-image from: - build-skaffold-app params: - name: path value: /workspace/workspace/examples/microservices/leeroy-app/kubernetes/deployment.yaml - name: yqArg value: "-d1" - name: yamlPathToImage value: "spec.template.spec.containers[0].image" - name: deploy-web taskRef: name: demo-deploy-kubectl resources: inputs: - name: workspace resource: source-repo - name: image resource: web-image from: - build-skaffold-web params: - name: path value: /workspace/workspace/examples/microservices/leeroy-web/kubernetes/deployment.yaml - name: yqArg value: "-d1" - name: yamlPathToImage value: "spec.template.spec.containers[0].image" --- apiVersion: tekton.dev/v1alpha1 kind: PipelineRun metadata: name: demo-pipeline-run-1 spec: pipelineRef: name: demo-pipeline serviceAccount: 'default' resources: - name: source-repo resourceRef: name: skaffold-git - name: web-image resourceRef: name: skaffold-image-leeroy-web - name: app-image resourceRef: name: skaffold-image-leeroy-app