82 lines
2.6 KiB
YAML
82 lines
2.6 KiB
YAML
{{- define "common.task-gitea-set-status" }}
|
|
{{- $common := dict "Values" .Values.common -}}
|
|
{{- $noCommon := omit .Values "common" -}}
|
|
{{- $overrides := dict "Values" $noCommon -}}
|
|
{{- $noValues := omit . "Values" -}}
|
|
{{- with merge $noValues $overrides $common -}}
|
|
apiVersion: tekton.dev/v1
|
|
kind: Task
|
|
metadata:
|
|
name: gitea-set-status
|
|
namespace: {{ .Release.Namespace }}
|
|
spec:
|
|
description: |-
|
|
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: repofullname
|
|
type: string
|
|
- name: revision
|
|
type: string
|
|
- name: statusurl
|
|
type: string
|
|
- name: description
|
|
type: string
|
|
- default: continuous-integration/tekton
|
|
name: context
|
|
type: string
|
|
- name: state
|
|
type: string
|
|
steps:
|
|
- image: {{ .Values.quayHostname }}/goghvideo/python:3-alpine
|
|
name: set-status
|
|
script: |
|
|
#!/usr/bin/env python
|
|
|
|
"""This script will set the CI status on a Gitea commit"""
|
|
|
|
import json
|
|
import sys
|
|
import http.client
|
|
|
|
gitea_token = open("$(workspaces.gitauth.path)/password", "r").read()
|
|
|
|
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)
|
|
|
|
authHeader = "token " + gitea_token
|
|
|
|
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")
|
|
workspaces:
|
|
- name: gitauth
|
|
{{- end }}
|
|
{{- end }}
|