03-s2i-auto-gen-build-id
root@master01:~/tekton-and-argocd-in-practise/04-tekton-pipeline-in-practise/03-s2i-auto-gen-build-id# cat 01-task-git-clone.yaml apiVersion: tekton.dev/v1beta1 kind: Task metadata: name: git-clone spec: description: Clone the code repository to the workspace. params: - name: url type: string description: git url to clone workspaces: - name: source description: The git repo will be cloned onto the volume backing this workspace steps: - name: git-clone image: alpine/git:v2.32.0 script: git clone -v $(params.url) $(workspaces.source.path)/source root@master01:~/tekton-and-argocd-in-practise/04-tekton-pipeline-in-practise/03-s2i-auto-gen-build-id# cat 02-task-source-build.yaml apiVersion: tekton.dev/v1beta1 kind: Task metadata: name: build-to-package spec: description: build application and package the files to image workspaces: - name: source description: The git repo that cloned onto the volume backing this workspace steps: - name: build image: maven:3.8-openjdk-11-slim workingDir: $(workspaces.source.path)/source volumeMounts: - name: m2 mountPath: /root/.m2 script: mvn clean install volumes: - name: m2 persistentVolumeClaim: claimName: maven-cache root@master01:~/tekton-and-argocd-in-practise/04-tekton-pipeline-in-practise/03-s2i-auto-gen-build-id# cat 03-generate-build-id.yaml apiVersion: tekton.dev/v1beta1 kind: Task metadata: name: generate-build-id spec: params: - name: version description: The version of the application type: string results: - name: datetime description: The current date and time - name: buildId description: The build ID steps: - name: generate-datetime image: ikubernetes/admin-box:v1.2 script: | #!/usr/bin/env bash datetime=`date +%Y%m%d-%H%M%S` echo -n ${datetime} | tee $(results.datetime.path) - name: generate-buildid image: ikubernetes/admin-box:v1.2 script: | #!/usr/bin/env bash buildDatetime=`cat $(results.datetime.path)` buildId=$(params.version)-${buildDatetime} echo -n ${buildId} | tee $(results.buildId.path) root@master01:~/tekton-and-argocd-in-practise/04-tekton-pipeline-in-practise/03-s2i-auto-gen-build-id# cat 04-task-build-image.yaml apiVersion: tekton.dev/v1beta1 kind: Task metadata: name: image-build-and-push spec: description: package the application files to image params: - name: dockerfile description: The path to the dockerfile to build (relative to the context) default: Dockerfile - name: image-url description: Url of image repository - name: image-tag description: Tag to apply to the built image workspaces: - name: source - name: dockerconfig mountPath: /kaniko/.docker steps: - name: image-build-and-push image: gexuchuan123/kaniko-project-executor:debug #gcr.io/kaniko-project/executor:debug securityContext: runAsUser: 0 env: - name: DOCKER_CONFIG value: /kaniko/.docker command: - /kaniko/executor args: - --dockerfile=$(params.dockerfile) - --context=$(workspaces.source.path)/source - --destination=$(params.image-url):$(params.image-tag) root@master01:~/tekton-and-argocd-in-practise/04-tekton-pipeline-in-practise/03-s2i-auto-gen-build-id# cat 05-pipeline-source-to-image.yaml apiVersion: tekton.dev/v1beta1 kind: Pipeline metadata: name: source-to-image spec: params: - name: git-url - name: pathToContext description: The path to the build context, used by Kaniko - within the workspace default: . - name: image-url description: Url of image repository - name: version description: The version of the application type: string default: "v0.9" results: - name: datetime description: The current date and time - name: buildId description: The build ID workspaces: - name: codebase - name: docker-config tasks: - name: git-clone taskRef: name: git-clone params: - name: url value: "$(params.git-url)" workspaces: - name: source workspace: codebase - name: build-to-package taskRef: name: build-to-package workspaces: - name: source workspace: codebase runAfter: - git-clone - name: generate-build-id taskRef: name: generate-build-id params: - name: version value: "$(params.version)" runAfter: - git-clone - name: image-build-and-push taskRef: name: image-build-and-push params: - name: image-url value: "$(params.image-url)" - name: image-tag value: "$(tasks.generate-build-id.results.buildId)" workspaces: - name: source workspace: codebase - name: dockerconfig workspace: docker-config runAfter: - generate-build-id - build-to-package
root@master01:~/tekton-and-argocd-in-practise/04-tekton-pipeline-in-practise/03-s2i-auto-gen-build-id# cat 06-pipelinerun-source-to-image.yaml apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: name: s2i-buildid-run-00001 spec: pipelineRef: name: source-to-image params: - name: git-url value: https://gitee.com/mageedu/spring-boot-helloWorld.git - name: image-url value: gexuchuan123/spring-boot-helloworld - name: version value: v0.9.2 workspaces: - name: codebase volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi storageClassName: nfs-csi - name: docker-config secret: secretName: docker-config