chore: tidy pipeline and tasks
This commit is contained in:
@@ -13,6 +13,7 @@ spec:
|
||||
- name: helm
|
||||
- name: gitsshauth
|
||||
- name: quayauth
|
||||
- name: utilities
|
||||
params:
|
||||
- name: ref
|
||||
description: Ref of the application
|
||||
@@ -58,6 +59,12 @@ spec:
|
||||
workspaces:
|
||||
- name: gitauth
|
||||
workspace: gitauth
|
||||
- name: copy-shared-utilities
|
||||
runAfter: ["set-pending-status"]
|
||||
taskRef:
|
||||
name: copy-utilities-to-workspace
|
||||
workspaces:
|
||||
- name: utilities
|
||||
- name: prepare
|
||||
runAfter: ["set-pending-status"]
|
||||
taskRef:
|
||||
|
||||
@@ -25,7 +25,7 @@ spec:
|
||||
#!/usr/bin/env bash
|
||||
USERNAME=$(cat /workspace/gitauth/username)
|
||||
PASSWORD=$(cat /workspace/gitauth/password)
|
||||
SEMVER=$(/tools/dotnet-gitversion /url ${PARAM_REPO} /b ${PARAM_BRANCH} /u ${USERNAME} /p ${PASSWORD} /dynamicRepoLocation /workspace/repo /overrideconfig mode=Mainline /showvariable MajorMinorPatch /verbosity quiet)
|
||||
SEMVER=$(/tools/dotnet-gitversion /url ${PARAM_REPO} /b ${PARAM_BRANCH} /u ${USERNAME} /p ${PASSWORD} /dynamicRepoLocation /workspace/repo /overrideconfig mode=Mainline /overrideconfig commit-message-incrementing=MergeMessageOnly /showvariable MajorMinorPatch /verbosity quiet)
|
||||
echo -n ${SEMVER} > $(results.version.path)
|
||||
exit 0
|
||||
securityContext:
|
||||
|
||||
@@ -8,69 +8,69 @@ spec:
|
||||
This task will set the status of the CI job to the specified value along with a link to the specified target URL where developers can follow the progress of the CI job.
|
||||
The `gitea-set-status` task allows external services to mark Gitea commits with an `error`, `failure`, `pending`, or `success` state, which is then reflected in pull requests involving those commits. Statuses include as well a `description` and a `target_url`, to give the user informations about the CI statuses or a direct link to the full log.
|
||||
params:
|
||||
- name: githost
|
||||
type: string
|
||||
- name: quayhost
|
||||
type: string
|
||||
- name: repofullname
|
||||
type: string
|
||||
- name: revision
|
||||
type: string
|
||||
- name: statusurl
|
||||
type: string
|
||||
- name: description
|
||||
type: string
|
||||
- name: context
|
||||
type: string
|
||||
default: continuous-integration/tekton
|
||||
- name: state
|
||||
type: string
|
||||
- name: githost
|
||||
type: string
|
||||
- name: quayhost
|
||||
type: string
|
||||
- name: repofullname
|
||||
type: string
|
||||
- name: revision
|
||||
type: string
|
||||
- name: statusurl
|
||||
type: string
|
||||
- name: description
|
||||
type: string
|
||||
- name: context
|
||||
type: string
|
||||
default: continuous-integration/tekton
|
||||
- name: state
|
||||
type: string
|
||||
steps:
|
||||
- image: $(params.quayhost)/goghvideo/python:3-alpine
|
||||
name: set-status
|
||||
script: |
|
||||
#!/usr/bin/env python
|
||||
- image: $(params.quayhost)/goghvideo/python:3-alpine
|
||||
name: set-status
|
||||
script: |
|
||||
#!/usr/bin/env python
|
||||
|
||||
"""This script will set the CI status on a Gitea commit"""
|
||||
"""This script will set the CI status on a Gitea commit"""
|
||||
|
||||
import json
|
||||
import sys
|
||||
import http.client
|
||||
import json
|
||||
import sys
|
||||
import http.client
|
||||
|
||||
gitea_token = open("$(workspaces.gitauth.path)/password", "r").read()
|
||||
gitea_token = open("$(workspaces.gitauth.path)/password", "r").read()
|
||||
|
||||
status_url = "/api/v1/repos/$(params.repofullname)/statuses/$(params.revision)"
|
||||
status_url = "/api/v1/repos/$(params.repofullname)/statuses/$(params.revision)"
|
||||
|
||||
data = {
|
||||
"state": "$(params.state)",
|
||||
"target_url": "$(params.statusurl)",
|
||||
"description": "$(params.description)",
|
||||
"context": "$(params.context)"
|
||||
}
|
||||
print("Sending this data to Gitea: ")
|
||||
print(data)
|
||||
data = {
|
||||
"state": "$(params.state)",
|
||||
"target_url": "$(params.statusurl)",
|
||||
"description": "$(params.description)",
|
||||
"context": "$(params.context)"
|
||||
}
|
||||
print("Sending this data to Gitea: ")
|
||||
print(data)
|
||||
|
||||
authHeader = "token " + gitea_token
|
||||
authHeader = "token " + gitea_token
|
||||
|
||||
conn = http.client.HTTPSConnection("$(params.githost)")
|
||||
conn = http.client.HTTPSConnection("$(params.githost)")
|
||||
|
||||
conn.request(
|
||||
"POST",
|
||||
status_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("Gitea status has been set")
|
||||
conn.request(
|
||||
"POST",
|
||||
status_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("Gitea status has been set")
|
||||
workspaces:
|
||||
- name: gitauth
|
||||
|
||||
|
||||
@@ -29,6 +29,76 @@ spec:
|
||||
- name: quayhost
|
||||
type: string
|
||||
steps:
|
||||
- name: tag-image-with-release-ver
|
||||
image: $(params.quayhost)/goghvideo/python:3-alpine
|
||||
script: |
|
||||
#!/usr/bin/env python
|
||||
|
||||
"""This script will set tag the image with the release version"""
|
||||
|
||||
import json
|
||||
import sys
|
||||
import http.client
|
||||
import ssl
|
||||
|
||||
quay_token = open("$(workspaces.quayauth.path)/apikey", "r").read()
|
||||
authHeader = "Bearer " + quay_token
|
||||
|
||||
conn = http.client.HTTPSConnection(
|
||||
"$(params.quayhost)",
|
||||
context = ssl._create_unverified_context()
|
||||
)
|
||||
|
||||
existing_tag = "/api/v1/repository/$(params.repofullname)/tag/?specificTag=$(params.revision)"
|
||||
|
||||
print("Getting existing tag information from Quay")
|
||||
|
||||
conn.request(
|
||||
"GET",
|
||||
existing_tag,
|
||||
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("Successfully Retrieved quay infor for tag")
|
||||
tag_info = json.loads(resp.read().decode('utf-8'))
|
||||
for item in tag_info['tags']:
|
||||
manifest_digest = item['manifest_digest']
|
||||
|
||||
print("Tagging image with semver")
|
||||
tag_url = "/api/v1/repository/$(params.repofullname)/tag/v$(params.semver)"
|
||||
|
||||
data = {
|
||||
"manifest_digest": manifest_digest
|
||||
}
|
||||
|
||||
conn.request(
|
||||
"PUT",
|
||||
tag_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("Successfully tagged image")
|
||||
- name: release-notes
|
||||
image: $(params.quayhost)/goghvideo/bitnami-git:latest
|
||||
workingDir: $(workspaces.source.path)/$(params.appname)
|
||||
@@ -130,77 +200,30 @@ spec:
|
||||
sys.exit(1)
|
||||
else:
|
||||
print("Gitea merge completed on $(params.githost)")
|
||||
- name: tag-image-with-release-ver
|
||||
image: $(params.quayhost)/goghvideo/python:3-alpine
|
||||
- name: update-helm-chart
|
||||
image: $(params.quayhost)/goghvideo/bitnami-git:latest
|
||||
workingDir: $(workspaces.helm.path)
|
||||
script: |
|
||||
#!/usr/bin/env python
|
||||
|
||||
"""This script will set tag the image with the release version"""
|
||||
|
||||
import json
|
||||
import sys
|
||||
import http.client
|
||||
import ssl
|
||||
|
||||
quay_token = open("$(workspaces.quayauth.path)/apikey", "r").read()
|
||||
authHeader = "Bearer " + quay_token
|
||||
|
||||
conn = http.client.HTTPSConnection(
|
||||
"$(params.quayhost)",
|
||||
context = ssl._create_unverified_context()
|
||||
)
|
||||
|
||||
existing_tag = "/api/v1/repository/$(params.repofullname)/tag/?specificTag=$(params.revision)"
|
||||
|
||||
print("Getting existing tag information from Quay")
|
||||
|
||||
conn.request(
|
||||
"GET",
|
||||
existing_tag,
|
||||
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("Successfully Retrieved quay infor for tag")
|
||||
tag_info = json.loads(resp.read().decode('utf-8'))
|
||||
for item in tag_info['tags']:
|
||||
manifest_digest = item['manifest_digest']
|
||||
#!/bin/sh
|
||||
export USERNAME=$(cat $(workspaces.gitauth.path)/username)
|
||||
export PASSWORD=$(cat $(workspaces.gitauth.path)/password)
|
||||
|
||||
print("Tagging image with semver")
|
||||
tag_url = "/api/v1/repository/$(params.repofullname)/tag/v$(params.semver)"
|
||||
git config --global --add safe.directory $(workspaces.helm.path)/
|
||||
git config --global user.name "$(params.author)"
|
||||
git config --global user.email "$(params.email)"
|
||||
|
||||
data = {
|
||||
"manifest_digest": manifest_digest
|
||||
}
|
||||
HOSTPATH=$(git remote get-url origin | sed 's_https://__')
|
||||
git remote set-url origin https://${USERNAME}:${PASSWORD}@${HOSTPATH}
|
||||
|
||||
conn.request(
|
||||
"PUT",
|
||||
tag_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("Successfully tagged image")
|
||||
$(workspaces.utilities.path)/yqi -i '.version |= (split(".") | .[-1] |= ((. tag = "!!int") + 1) | join("."))' $(params.appname)/Chart.yaml
|
||||
$(workspaces.utilities.path)/yq -i '.appVersion=v$(params.semver)' $(params.appname)/Chart.yaml
|
||||
|
||||
git add $(params.appname)/Chart.yaml
|
||||
git commit -m "Updating chart version"
|
||||
git push origin main
|
||||
workspaces:
|
||||
- name: source
|
||||
- name: gitauth
|
||||
- name: quayauth
|
||||
- name: utilties
|
||||
- name: helm
|
||||
|
||||
@@ -67,6 +67,15 @@ spec:
|
||||
requests:
|
||||
storage: 1Gi
|
||||
storageClassName: nfs-client
|
||||
- name: utilities
|
||||
volumeClaimTemplate:
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteMany
|
||||
resources:
|
||||
requests:
|
||||
storage: 1Gi
|
||||
storageClassName: nfs-client
|
||||
params:
|
||||
- name: ref
|
||||
value: $(tt.params.ref)
|
||||
|
||||
Reference in New Issue
Block a user