Initial submission
This commit is contained in:
326
pipeline/conversion-engine.yaml
Normal file
326
pipeline/conversion-engine.yaml
Normal file
@@ -0,0 +1,326 @@
|
||||
apiVersion: tekton.dev/v1beta1
|
||||
kind: Pipeline
|
||||
metadata:
|
||||
name: ce-buildtest
|
||||
namespace: learntekton
|
||||
spec:
|
||||
workspaces:
|
||||
- name: source
|
||||
- name: gitauth
|
||||
- name: dockerconfig
|
||||
- name: helm
|
||||
- name: gitsshauth
|
||||
params:
|
||||
- name: git-repo-full-name
|
||||
type: string
|
||||
- name: git-token-secret-name
|
||||
type: string
|
||||
- name: git-token-secret-key
|
||||
type: string
|
||||
- name: git-commit-sha
|
||||
type: string
|
||||
- name: git-repo-url
|
||||
type: string
|
||||
description: Git URL to retrieve
|
||||
- name: git-branch
|
||||
type: string
|
||||
description: branch to checkout
|
||||
- name: git-pr-index
|
||||
description: PR number to merge
|
||||
- name: git-merge-type
|
||||
description: What type of merge to do
|
||||
- name: git-merge-delete-branch
|
||||
description: delete the branch after merge
|
||||
- name: verbose
|
||||
type: string
|
||||
default: "false"
|
||||
- name: lint-package
|
||||
type: string
|
||||
- name: lint-context
|
||||
type: string
|
||||
description: Path to where the modules are stored
|
||||
- name: lint-version
|
||||
type: string
|
||||
default: latest
|
||||
- name: image
|
||||
type: string
|
||||
- name: s2i-builder-image
|
||||
type: string
|
||||
- name: git-helm-url
|
||||
type: string
|
||||
tasks:
|
||||
- name: set-check-pending
|
||||
taskRef:
|
||||
name: gitea-set-status
|
||||
params:
|
||||
- name: SHA
|
||||
value: $(params.git-commit-sha)
|
||||
- name: GITEA_HOST_URL
|
||||
value: git.endofday.com
|
||||
- name: REPO_FULL_NAME
|
||||
value: $(params.git-repo-full-name)
|
||||
- name: GITEA_TOKEN_SECRET_NAME
|
||||
value: $(params.git-token-secret-name)
|
||||
- name: GITEA_TOKEN_SECRET_KEY
|
||||
value: $(params.git-token-secret-key)
|
||||
- name: DESCRIPTION
|
||||
value: Build started
|
||||
- name: STATE
|
||||
value: pending
|
||||
- name: TARGET_URL
|
||||
value: https://console-openshift-console.apps.ocp.endofday.com/pipelines/all-namespaces
|
||||
- name: git-semver
|
||||
runAfter:
|
||||
- set-check-pending
|
||||
taskRef:
|
||||
name: git-semver
|
||||
params:
|
||||
- name: gitrepositoryurl
|
||||
value: $(params.git-repo-url)
|
||||
- name: gitbranch
|
||||
value: $(params.git-branch)
|
||||
workspaces:
|
||||
- name: repo
|
||||
workspace: source
|
||||
- name: gitauth
|
||||
workspace: gitauth
|
||||
- name: golangci-lint
|
||||
runAfter:
|
||||
- git-semver
|
||||
taskRef:
|
||||
name: golangci-lint
|
||||
params:
|
||||
- name: package
|
||||
value: $(params.lint-package)
|
||||
- name: context
|
||||
value: $(params.lint-context)
|
||||
- name: version
|
||||
value: $(params.lint-version)
|
||||
workspaces:
|
||||
- name: source
|
||||
workspace: source
|
||||
- name: generate-imagetag
|
||||
runAfter:
|
||||
- golangci-lint
|
||||
taskRef:
|
||||
name: generate-image-tag
|
||||
params:
|
||||
- name: version
|
||||
value: $(tasks.git-semver.results.version)
|
||||
- name: image
|
||||
value: $(params.image)
|
||||
- name: s2i-build
|
||||
runAfter:
|
||||
- generate-imagetag
|
||||
taskRef:
|
||||
name: s2i-go-debug
|
||||
params:
|
||||
- name: TLSVERIFY
|
||||
value: false
|
||||
- name: BUILDER_IMAGE
|
||||
value: $(params.s2i-builder-image)
|
||||
- name: PATH_CONTEXT
|
||||
value: $(params.lint-context)
|
||||
- name: verbose
|
||||
value: true
|
||||
- name: IMAGE
|
||||
value: $(tasks.generate-imagetag.results.imagetag)
|
||||
- name: ENV_VARS
|
||||
value:
|
||||
- semver=$(tasks.git-semver.results.version)
|
||||
workspaces:
|
||||
- name: source
|
||||
workspace: source
|
||||
- name: dockerconfig
|
||||
workspace: dockerconfig
|
||||
- name: ephemeral-ns
|
||||
runAfter:
|
||||
- s2i-build
|
||||
taskref:
|
||||
name: openshift-ephemeral-namespace-client
|
||||
kind: Task
|
||||
params:
|
||||
- name: VERSION
|
||||
value: 4.11
|
||||
- name: SCRIPT
|
||||
value: |
|
||||
echo "${SHELL}"
|
||||
RANDOMID=$(openssl rand -hex 4)
|
||||
oc new-project goghvideo-test-${RANDOMID} >/dev/null
|
||||
oc label namespace goghvideo-test-${RANDOMID} app=goghvideo-test
|
||||
|
||||
x=0; until [[ -n $(oc -n goghvideo-test-${RANDOMID} get secret/goghvideo-openshift-builder-pull-secret 2>/dev/null) || $x -eq 10 ]]; do echo "Waiting for secret replication" && sleep 10 && ((x++)); done
|
||||
if [[ "${x}" -eq 10 ]]; then exit 1; fi
|
||||
|
||||
oc -n goghvideo-test-${RANDOMID} secrets link default goghvideo-openshift-builder-pull-secret --for=pull
|
||||
|
||||
oc apply -f - <<EOF
|
||||
apiVersion: rabbitmq.com/v1beta1
|
||||
kind: RabbitmqCluster
|
||||
metadata:
|
||||
name: rabbitmq
|
||||
namespace: goghvideo-test-${RANDOMID}
|
||||
spec:
|
||||
delayStartSeconds: 10
|
||||
image: quay01.ipa.endofday.com/goghvideo/bitnami-rabbitmq
|
||||
imagePullSecrets:
|
||||
- name: goghvideo-openshift-builder-pull-secret
|
||||
persistence:
|
||||
storage: 10Gi
|
||||
replicas: 1
|
||||
resources:
|
||||
limits:
|
||||
cpu: "2"
|
||||
memory: 2Gi
|
||||
requests:
|
||||
cpu: "1"
|
||||
memory: 2Gi
|
||||
service:
|
||||
type: ClusterIP
|
||||
terminationGracePeriodSeconds: 30
|
||||
EOF
|
||||
|
||||
x=0; until [[ -n $(oc -n goghvideo-test-${RANDOMID} get sa/rabbitmq-server 2>/dev/null ) || $x -eq 10 ]]; do echo "Waiting for operator to deploy rabbit" && sleep 5 && ((x++)); done
|
||||
if [[ "${x}" -eq 10 ]]; then exit 1; fi
|
||||
|
||||
oc -n goghvideo-test-${RANDOMID} adm policy add-scc-to-user anyuid -z rabbitmq-server
|
||||
|
||||
x=0; until [[ $(oc -n goghvideo-test-${RANDOMID} get sts rabbitmq-server -o jsonpath="{.status.readyReplicas}") -gt 0 || $x -eq 20 ]]; do echo "Waiting for Rabbit MQ to startup" && sleep 15 && ((x++)); done
|
||||
if [[ "${x}" -eq 20 ]]; then exit 1; fi
|
||||
oc -n goghvideo-test-${RANDOMID} create route edge --service=rabbitmq --port=15672
|
||||
|
||||
oc -n goghvideo-test-${RANDOMID} get pods
|
||||
|
||||
RABBITHOST=$(oc -n goghvideo-test-${RANDOMID} get secret/rabbitmq-default-user -o template='{{ .data.host | base64decode }}')
|
||||
RABBITUSER=$(oc -n goghvideo-test-${RANDOMID} get secret/rabbitmq-default-user -o template='{{ .data.username | base64decode }}')
|
||||
RABBITPASS=$(oc -n goghvideo-test-${RANDOMID} get secret/rabbitmq-default-user -o template='{{ .data.password | base64decode }}')
|
||||
oc -n goghvideo-test-${RANDOMID} create secret generic amqp --from-literal=url=amqp://${RABBITUSER}:${RABBITPASS}@${RABBITHOST}/
|
||||
|
||||
curl -O http://${RABBITHOST}:15672/cli/rabbitmqadmin
|
||||
chmod +x rabbitmqadmin
|
||||
|
||||
./rabbitmqadmin -H ${RABBITHOST} -u ${RABBITUSER} -p ${RABBITPASS} declare exchange name=conversion type=topic
|
||||
./rabbitmqadmin -H ${RABBITHOST} -u ${RABBITUSER} -p ${RABBITPASS} declare queue name=transcode durable=true queue_type=quorum
|
||||
./rabbitmqadmin -H ${RABBITHOST} -u ${RABBITUSER} -p ${RABBITPASS} declare queue name=notification durable=true queue_type=quorum
|
||||
./rabbitmqadmin -H ${RABBITHOST} -u ${RABBITUSER} -p ${RABBITPASS} declare queue name=upload-nextcloud durable=true queue_type=quorum
|
||||
|
||||
./rabbitmqadmin -H ${RABBITHOST} -u ${RABBITUSER} -p ${RABBITPASS} declare binding source="conversion" destination_type="queue" destination="transcode" routing_key="transcode"
|
||||
./rabbitmqadmin -H ${RABBITHOST} -u ${RABBITUSER} -p ${RABBITPASS} declare binding source="conversion" destination_type="queue" destination="notification" routing_key="notification"
|
||||
./rabbitmqadmin -H ${RABBITHOST} -u ${RABBITUSER} -p ${RABBITPASS} declare binding source="conversion" destination_type="queue" destination="upload-nextcloud" routing_key="upload-nextcloud"
|
||||
|
||||
echo -n "goghvideo-test-${RANDOMID}" > $(results.namespace.path)
|
||||
workspaces:
|
||||
- name: kubeconfig-dir
|
||||
workspace: dockerconfig
|
||||
- name: clone-helm-charts
|
||||
runAfter: ["ephemeral-ns"]
|
||||
taskRef:
|
||||
name: git-clone
|
||||
params:
|
||||
- name: url
|
||||
value: $(params.git-helm-url)
|
||||
workspaces:
|
||||
- name: output
|
||||
workspace: helm
|
||||
- name: ssh-directory
|
||||
workspace: gitsshauth
|
||||
- name: deploy-testver
|
||||
runAfter: ["clone-helm-charts"]
|
||||
taskRef:
|
||||
name: helm-upgrade-from-source
|
||||
params:
|
||||
- name: charts_dir
|
||||
value: conversion-engine
|
||||
- name: release_namespace
|
||||
value: $(tasks.ephemeral-ns.results.namespace)
|
||||
- name: release_name
|
||||
value: conversion-engine
|
||||
- name: overwrite_values
|
||||
value: "image.tag=$(tasks.git-semver.results.version)"
|
||||
workspaces:
|
||||
- name: source
|
||||
workspace: helm
|
||||
- name: deploy-upload-to-nextcloud
|
||||
runAfter: ["clone-helm-charts"]
|
||||
taskRef:
|
||||
name: helm-upgrade-from-source
|
||||
params:
|
||||
- name: charts_dir
|
||||
value: upload-to-nextcloud
|
||||
- name: release_namespace
|
||||
value: $(tasks.ephemeral-ns.results.namespace)
|
||||
- name: release_name
|
||||
value: upload-to-nextcloud
|
||||
workspaces:
|
||||
- name: source
|
||||
workspace: helm
|
||||
- name: pass-pr-check
|
||||
runAfter: ["deploy-testver"]
|
||||
taskRef:
|
||||
name: gitea-set-status
|
||||
params:
|
||||
- name: SHA
|
||||
value: $(params.git-commit-sha)
|
||||
- name: GITEA_HOST_URL
|
||||
value: git.endofday.com
|
||||
- name: REPO_FULL_NAME
|
||||
value: $(params.git-repo-full-name)
|
||||
- name: GITEA_TOKEN_SECRET_NAME
|
||||
value: $(params.git-token-secret-name)
|
||||
- name: GITEA_TOKEN_SECRET_KEY
|
||||
value: $(params.git-token-secret-key)
|
||||
- name: DESCRIPTION
|
||||
value: Tekton CI Pipeline
|
||||
- name: STATE
|
||||
value: success
|
||||
- name: TARGET_URL
|
||||
value: https://console-openshift-console.apps.ocp.endofday.com/pipelines
|
||||
- name: perform-merge
|
||||
runAfter: ["pass-pr-check"]
|
||||
taskRef:
|
||||
name: gitea-merge-pr
|
||||
params:
|
||||
- name: GITEA_HOST_URL
|
||||
value: git.endofday.com
|
||||
- name: REPO_FULL_NAME
|
||||
value: $(params.git-repo-full-name)
|
||||
- name: GITEA_TOKEN_SECRET_NAME
|
||||
value: $(params.git-token-secret-name)
|
||||
- name: GITEA_TOKEN_SECRET_KEY
|
||||
value: $(params.git-token-secret-key)
|
||||
- name: DESCRIPTION
|
||||
value: Automatically merged by CI pipeline
|
||||
- name: INDEX
|
||||
value: $(params.git-pr-index)
|
||||
- name: MERGETYPE
|
||||
value: $(params.git-merge-type)
|
||||
- name: DELETEBRANCH
|
||||
value: $(params.git-merge-delete-branch)
|
||||
- name: TARGET_URL
|
||||
value: https://console-openshift-console.apps.ocp.endofday.com/pipelines
|
||||
finally:
|
||||
- name: fail-pr-check
|
||||
when:
|
||||
- input: $(tasks.status)
|
||||
operator: in
|
||||
values:
|
||||
- Failed
|
||||
taskRef:
|
||||
name: gitea-set-status
|
||||
params:
|
||||
- name: SHA
|
||||
value: $(params.git-commit-sha)
|
||||
- name: GITEA_HOST_URL
|
||||
value: git.endofday.com
|
||||
- name: REPO_FULL_NAME
|
||||
value: $(params.git-repo-full-name)
|
||||
- name: GITEA_TOKEN_SECRET_NAME
|
||||
value: $(params.git-token-secret-name)
|
||||
- name: GITEA_TOKEN_SECRET_KEY
|
||||
value: $(params.git-token-secret-key)
|
||||
- name: DESCRIPTION
|
||||
value: Tekton CI Pipeline
|
||||
- name: STATE
|
||||
value: failure
|
||||
- name: TARGET_URL
|
||||
value: https://console-openshift-console.apps.ocp.endofday.com/pipelines
|
||||
Reference in New Issue
Block a user