259 lines
8.9 KiB
YAML
259 lines
8.9 KiB
YAML
apiVersion: tekton.dev/v1
|
|
kind: PipelineRun
|
|
metadata:
|
|
name: build-homepage
|
|
spec:
|
|
timeouts:
|
|
pipeline: "2h0m0s"
|
|
tasks: "1h0m0s"
|
|
finally: "0h30m0s"
|
|
taskRunTemplate:
|
|
serviceAccountName: build-bot
|
|
pipelineSpec:
|
|
params:
|
|
- name: image-name
|
|
description: The name for the built image
|
|
type: string
|
|
- name: target-name
|
|
description: The dockerfile target to build
|
|
type: string
|
|
- name: path-to-image-context
|
|
description: The path to the build context
|
|
type: string
|
|
- name: path-to-dockerfile
|
|
description: The path to the Dockerfile
|
|
type: string
|
|
tasks:
|
|
- name: get-git-commit-time
|
|
taskSpec:
|
|
metadata: {}
|
|
stepTemplate:
|
|
image: alpine:3.20
|
|
computeResources:
|
|
requests:
|
|
cpu: 10m
|
|
memory: 600Mi
|
|
workingDir: "$(workspaces.repo.path)"
|
|
results:
|
|
- name: unix-time
|
|
description: The time of the git commit in unix timestamp format.
|
|
steps:
|
|
- image: alpine/git:v2.34.2
|
|
name: detect-tag-step
|
|
script: |
|
|
#!/usr/bin/env sh
|
|
set -euo pipefail
|
|
echo -n "$(git log -1 --pretty=%ct)" | tee $(results.unix-time.path)
|
|
workspaces:
|
|
- name: repo
|
|
workspace: git-source
|
|
runAfter:
|
|
- fetch-repository
|
|
- name: detect-tag
|
|
taskSpec:
|
|
metadata: {}
|
|
stepTemplate:
|
|
image: alpine:3.20
|
|
computeResources:
|
|
requests:
|
|
cpu: 10m
|
|
memory: 600Mi
|
|
workingDir: "$(workspaces.repo.path)"
|
|
results:
|
|
- name: tag
|
|
description: The tag to use for the docker container.
|
|
steps:
|
|
- image: alpine/git:v2.34.2
|
|
name: detect-tag-step
|
|
script: |
|
|
#!/usr/bin/env sh
|
|
set -euo pipefail
|
|
git fetch --tags
|
|
current_tag=$(git tag --points-at HEAD --list 'v*.*.*')
|
|
if [ -z "$current_tag" ]; then
|
|
echo "No tag at current commit"
|
|
exit 1
|
|
else
|
|
echo -n "${current_tag}" | tee $(results.tag.path)
|
|
fi
|
|
workspaces:
|
|
- name: repo
|
|
workspace: git-source
|
|
runAfter:
|
|
- fetch-repository
|
|
- name: report-pending
|
|
taskRef:
|
|
resolver: git
|
|
params:
|
|
- name: url
|
|
value: https://code.fizz.buzz/mirror/catalog.git # mirror of https://github.com/tektoncd/catalog.git
|
|
- name: revision
|
|
value: df36b3853a5657fd883015cdbf07ad6466918acf
|
|
- name: pathInRepo
|
|
value: task/gitea-set-status/0.1/gitea-set-status.yaml
|
|
runAfter:
|
|
- fetch-repository
|
|
params:
|
|
- name: CONTEXT
|
|
value: "$(params.JOB_NAME)"
|
|
- name: REPO_FULL_NAME
|
|
value: "$(params.REPO_OWNER)/$(params.REPO_NAME)"
|
|
- name: GITEA_HOST_URL
|
|
value: code.fizz.buzz
|
|
- name: SHA
|
|
value: "$(tasks.fetch-repository.results.commit)"
|
|
- name: DESCRIPTION
|
|
value: "Build $(params.JOB_NAME) has started"
|
|
- name: STATE
|
|
value: pending
|
|
- name: TARGET_URL
|
|
value: "https://tekton.fizz.buzz/#/namespaces/$(context.pipelineRun.namespace)/pipelineruns/$(context.pipelineRun.name)"
|
|
- name: fetch-repository
|
|
taskRef:
|
|
resolver: git
|
|
params:
|
|
- name: url
|
|
value: https://code.fizz.buzz/mirror/catalog.git # mirror of https://github.com/tektoncd/catalog.git
|
|
- name: revision
|
|
value: df36b3853a5657fd883015cdbf07ad6466918acf
|
|
- name: pathInRepo
|
|
value: task/git-clone/0.9/git-clone.yaml
|
|
workspaces:
|
|
- name: output
|
|
workspace: git-source
|
|
params:
|
|
- name: url
|
|
value: $(params.REPO_URL)
|
|
- name: revision
|
|
value: $(params.PULL_BASE_SHA)
|
|
- name: deleteExisting
|
|
value: "true"
|
|
- name: build-image
|
|
taskRef:
|
|
resolver: git
|
|
params:
|
|
- name: url
|
|
value: https://code.fizz.buzz/talexander/personal_tekton_catalog.git
|
|
- name: revision
|
|
value: 7ee31a185243ee6da13dcd26a592c585b64c80e5
|
|
- name: pathInRepo
|
|
value: task/buildkit-rootless-daemonless/0.1/buildkit-rootless-daemonless.yaml
|
|
params:
|
|
- name: OUTPUT
|
|
value: >-
|
|
type=image,"name=$(params.image-name):latest,$(params.image-name):$(tasks.detect-tag.results.tag)",push=true,compression=zstd,compression-level=22,oci-mediatypes=true
|
|
- name: CONTEXT
|
|
value: $(params.path-to-image-context)
|
|
- name: DOCKERFILE
|
|
value: $(params.path-to-dockerfile)
|
|
- name: EXTRA_ARGS
|
|
value:
|
|
- "--opt"
|
|
- "target=$(params.target-name)"
|
|
- --import-cache
|
|
- "type=registry,ref=$(params.image-name):buildcache"
|
|
- --export-cache
|
|
- "type=registry,ref=$(params.image-name):buildcache,mode=max,compression=zstd,compression-level=22,rewrite-timestamp=true,image-manifest=true,oci-mediatypes=true"
|
|
- --opt
|
|
- build-arg:SOURCE_DATE_EPOCH=$(tasks.get-git-commit-time.results.unix-time)
|
|
- name: BUILDKITD_TOML
|
|
value: |
|
|
debug = true
|
|
[registry."docker.io"]
|
|
mirrors = ["dockerhub.dockerhub.svc.cluster.local"]
|
|
[registry."dockerhub.dockerhub.svc.cluster.local"]
|
|
http = true
|
|
insecure = true
|
|
workspaces:
|
|
- name: source
|
|
workspace: git-source
|
|
- name: dockerconfig
|
|
workspace: docker-credentials
|
|
runAfter:
|
|
- fetch-repository
|
|
finally:
|
|
- name: report-success
|
|
when:
|
|
- input: "$(tasks.status)"
|
|
operator: in
|
|
values: ["Succeeded", "Completed"]
|
|
taskRef:
|
|
resolver: git
|
|
params:
|
|
- name: url
|
|
value: https://code.fizz.buzz/mirror/catalog.git # mirror of https://github.com/tektoncd/catalog.git
|
|
- name: revision
|
|
value: df36b3853a5657fd883015cdbf07ad6466918acf
|
|
- name: pathInRepo
|
|
value: task/gitea-set-status/0.1/gitea-set-status.yaml
|
|
params:
|
|
- name: CONTEXT
|
|
value: "$(params.JOB_NAME)"
|
|
- name: REPO_FULL_NAME
|
|
value: "$(params.REPO_OWNER)/$(params.REPO_NAME)"
|
|
- name: GITEA_HOST_URL
|
|
value: code.fizz.buzz
|
|
- name: SHA
|
|
value: "$(tasks.fetch-repository.results.commit)"
|
|
- name: DESCRIPTION
|
|
value: "Build $(params.JOB_NAME) has succeeded"
|
|
- name: STATE
|
|
value: success
|
|
- name: TARGET_URL
|
|
value: "https://tekton.fizz.buzz/#/namespaces/$(context.pipelineRun.namespace)/pipelineruns/$(context.pipelineRun.name)"
|
|
- name: report-failure
|
|
when:
|
|
- input: "$(tasks.status)"
|
|
operator: in
|
|
values: ["Failed"]
|
|
taskRef:
|
|
resolver: git
|
|
params:
|
|
- name: url
|
|
value: https://code.fizz.buzz/mirror/catalog.git # mirror of https://github.com/tektoncd/catalog.git
|
|
- name: revision
|
|
value: df36b3853a5657fd883015cdbf07ad6466918acf
|
|
- name: pathInRepo
|
|
value: task/gitea-set-status/0.1/gitea-set-status.yaml
|
|
params:
|
|
- name: CONTEXT
|
|
value: "$(params.JOB_NAME)"
|
|
- name: REPO_FULL_NAME
|
|
value: "$(params.REPO_OWNER)/$(params.REPO_NAME)"
|
|
- name: GITEA_HOST_URL
|
|
value: code.fizz.buzz
|
|
- name: SHA
|
|
value: "$(tasks.fetch-repository.results.commit)"
|
|
- name: DESCRIPTION
|
|
value: "Build $(params.JOB_NAME) has failed"
|
|
- name: STATE
|
|
value: failure
|
|
- name: TARGET_URL
|
|
value: "https://tekton.fizz.buzz/#/namespaces/$(context.pipelineRun.namespace)/pipelineruns/$(context.pipelineRun.name)"
|
|
workspaces:
|
|
- name: git-source
|
|
- name: docker-credentials
|
|
workspaces:
|
|
- name: git-source
|
|
volumeClaimTemplate:
|
|
spec:
|
|
storageClassName: "nfs-client"
|
|
accessModes:
|
|
- ReadWriteOnce
|
|
resources:
|
|
requests:
|
|
storage: 10Gi
|
|
subPath: rust-source
|
|
- name: docker-credentials
|
|
secret:
|
|
secretName: harbor-plain
|
|
params:
|
|
- name: image-name
|
|
value: "harbor.fizz.buzz/private/homepage"
|
|
- name: target-name
|
|
value: ""
|
|
- name: path-to-image-context
|
|
value: .
|
|
- name: path-to-dockerfile
|
|
value: docker/server
|