From cd329a4ce818f866948db5914003f843bc295a5e Mon Sep 17 00:00:00 2001 From: "Randal S. Harisch" Date: Mon, 25 Sep 2023 21:26:24 -0600 Subject: [PATCH] chore: update pipeline to merge and tag release --- pipeline/upload-to-nextcloud.yaml | 19 ++++ tasks/gitea-create-release.yaml | 125 +++++++++++++++++++++++ triggertemplate/upload-to-nextcloud.yaml | 2 +- 3 files changed, 145 insertions(+), 1 deletion(-) create mode 100644 tasks/gitea-create-release.yaml diff --git a/pipeline/upload-to-nextcloud.yaml b/pipeline/upload-to-nextcloud.yaml index 897ee36..da16f44 100644 --- a/pipeline/upload-to-nextcloud.yaml +++ b/pipeline/upload-to-nextcloud.yaml @@ -299,6 +299,25 @@ spec: value: $(params.git-merge-delete-branch) - name: TARGET_URL value: https://console-openshift-console.apps.ocp.endofday.com/pipelines + - name: create-git-release + runAfter: ["pass-pr-check"] + taskRef: + name: gitea-create-release + 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: TAG + value: $(tasks.git-semver.results.version) + - name: TITLE + value: "$(params.git-repo-full-name)-$(tasks.git-semver.results.version)" finally: - name: fail-pr-check when: diff --git a/tasks/gitea-create-release.yaml b/tasks/gitea-create-release.yaml new file mode 100644 index 0000000..0a628e6 --- /dev/null +++ b/tasks/gitea-create-release.yaml @@ -0,0 +1,125 @@ +apiVersion: tekton.dev/v1 +kind: Task +metadata: + name: gitea-create-release + namespace: goghvideo-cicd-pipeline +spec: + description: |- + This task will merge a PR and delete the branch. + params: + + - name: GITEA_HOST_URL + description: | + The Gitea host, e.g: git.yourcompany.com. Can include port. + type: string + + - name: GITEA_HTTPS_OR_HTTP + default: https + description: | + If we should connect with HTTP or HTTPS. Use "http" or "https" here. + type: string + + - name: API_PATH_PREFIX + default: /api/v1 + description: | + The API path prefix of Gitea, default: /api/v1 + type: string + + - name: REPO_FULL_NAME + description: | + The Gitea repository full name, e.g.: tektoncd/catalog + type: string + + - name: GITEA_TOKEN_SECRET_NAME + default: gitea + description: | + The name of the kubernetes secret that contains the Gitea token, default: gitea + type: string + + - name: GITEA_TOKEN_SECRET_KEY + default: token + description: | + The key within the kubernetes secret that contains the Gitea token, default: token + type: string + + - name: IMAGE + default: python:3.10.1-alpine3.15@sha256:affe0faa14e7553fc570beec3864e74b5e36f8c19b2bb49ae8ba79c0e9e7236e + description: | + Image providing the python binary which this task uses. + type: string + + - name: TITLE + description: Main title of release + type: string + + - name: TAG + description: Version tag + type: string + + - name: SHEBANG + default: /usr/bin/env python + description: | + Python path. Depends on the image. + type: string + + - name: SHA + description: | + The SHA of the merge commit + type: string + + steps: + - image: $(params.IMAGE) + name: create-git-release + script: | + #!$(params.SHEBANG) + + """This script will create a git release tag""" + + import json + import sys + import http.client + + gitea_token = open("/etc/gitea-set-status/$(params.GITEA_TOKEN_SECRET_KEY)", "r").read() + + merge_url = "$(params.API_PATH_PREFIX)" + "/repos/$(params.REPO_FULL_NAME)/" + \ + "releases" + + data = { + "name": "$(params.TITLE)", + "tagname": "$(params.TAG)", + "target_commitish": "$(params.SHA)" + } + print("Sending this data to Gitea: ") + print(data) + + authHeader = "token " + gitea_token + + if "$(params.GITEA_HTTPS_OR_HTTP)" == "https": + conn = http.client.HTTPSConnection("$(params.GITEA_HOST_URL)") + else: + conn = http.client.HTTPConnection("$(params.GITEA_HOST_URL)") + + conn.request( + "POST", + merge_url, + body=json.dumps(data), + headers={ + "User-Agent": "TektonCD, the peaceful cat", + "Authorization": authHeader, + "Accept": "application/json", + "Content-Type": "application/json", + }) + resp = conn.getresponse() + if not str(resp.status).startswith("2"): + print("Error: %d" % (resp.status)) + print(resp.read()) + sys.exit(1) + else: + print("Create release completed on $(params.REPO_FULL_NAME)") + volumeMounts: + - mountPath: /etc/gitea-set-status + name: giteatoken + volumes: + - name: giteatoken + secret: + secretName: $(params.GITEA_TOKEN_SECRET_NAME) diff --git a/triggertemplate/upload-to-nextcloud.yaml b/triggertemplate/upload-to-nextcloud.yaml index 423a598..1d4d486 100644 --- a/triggertemplate/upload-to-nextcloud.yaml +++ b/triggertemplate/upload-to-nextcloud.yaml @@ -52,7 +52,7 @@ spec: - name: git-token-secret-key value: password - name: git-merge-type - value: squash + value: merge - name: git-merge-delete-branch value: True - name: git-helm-url