mirror of
https://gitea.com/gitea/helm-actions.git
synced 2026-07-16 11:14:44 +00:00
Compare commits
7 Commits
feat/granu
...
v0.1.1
| Author | SHA1 | Date | |
|---|---|---|---|
| 41984d8dc8 | |||
| 30959b3b54 | |||
| efe7a90392 | |||
| 7e2aedfdc2 | |||
| fd75b282b8 | |||
| 8fb5b97e75 | |||
| b35ab53be7 |
@ -8,7 +8,7 @@ on:
|
||||
jobs:
|
||||
changelog:
|
||||
runs-on: ubuntu-latest
|
||||
container: docker.io/thegeeklab/git-sv:2.1.0
|
||||
container: docker.io/thegeeklab/git-sv:2.1.1
|
||||
steps:
|
||||
- name: install tools
|
||||
run: |
|
||||
|
||||
@ -11,7 +11,7 @@ on:
|
||||
jobs:
|
||||
check-and-test:
|
||||
runs-on: ubuntu-latest
|
||||
container: commitlint/commitlint:20.5.3
|
||||
container: commitlint/commitlint:21.0.1
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- name: check PR title
|
||||
|
||||
@ -7,7 +7,7 @@ on:
|
||||
|
||||
env:
|
||||
# renovate: datasource=docker depName=alpine/helm
|
||||
HELM_VERSION: "4.1.4"
|
||||
HELM_VERSION: "4.2.0"
|
||||
|
||||
jobs:
|
||||
generate-chart-publish:
|
||||
@ -52,12 +52,11 @@ jobs:
|
||||
run: |
|
||||
# Install Helm GPG plugin
|
||||
helm plugin install https://github.com/technosophos/helm-gpg.git --verify=false
|
||||
helm dependency build
|
||||
helm package --version "${GITHUB_REF#refs/tags/v}" ./
|
||||
|
||||
# Package the chart
|
||||
mkdir actions
|
||||
mv actions*.tgz actions/
|
||||
mkdir ./actions
|
||||
helm dependency build
|
||||
helm package --version "${GITHUB_REF#refs/tags/v}" --destination ./actions ./
|
||||
curl -s -L -o actions/index.yaml https://dl.gitea.com/charts/index.yaml
|
||||
helm repo index actions/ --url https://dl.gitea.com/charts --merge actions/index.yaml
|
||||
|
||||
|
||||
@ -11,12 +11,12 @@ name: check-and-test
|
||||
|
||||
env:
|
||||
# renovate: datasource=github-releases depName=helm-unittest/helm-unittest
|
||||
HELM_UNITTEST_VERSION: "v1.0.3"
|
||||
HELM_UNITTEST_VERSION: "v1.1.0"
|
||||
|
||||
jobs:
|
||||
check-and-test:
|
||||
runs-on: ubuntu-latest
|
||||
container: alpine/helm:4.1.4
|
||||
container: alpine/helm:4.2.0
|
||||
steps:
|
||||
- name: install tools
|
||||
run: |
|
||||
|
||||
@ -2,17 +2,19 @@ apiVersion: v2
|
||||
name: actions
|
||||
description: Gitea Actions chart for Kubernetes
|
||||
type: application
|
||||
version: 0.0.0
|
||||
# renovate datasource=github-releases depName=go-gitea/act extractVersion=^v(?<version>.*)$
|
||||
version: 0.1.1
|
||||
# renovate datasource=gitea-releases depName=gitea/runner extractVersion=^v(?<version>.*)$
|
||||
appVersion: 0.261.3
|
||||
|
||||
keywords:
|
||||
- cicd
|
||||
- runner
|
||||
- actions
|
||||
home: https://gitea.com/
|
||||
icon: https://gitea.com/assets/img/logo.svg
|
||||
sources:
|
||||
- https://gitea.com/gitea/helm-actions
|
||||
- https://gitea.com/gitea/act
|
||||
- https://gitea.com/gitea/runner
|
||||
|
||||
maintainers:
|
||||
# https://gitea.com/DaanSelen
|
||||
|
||||
84
README.md
84
README.md
@ -55,45 +55,45 @@ If `.Values.statefulset.dind.rootless: true` is set, then the following will be
|
||||
|
||||
### Gitea Actions
|
||||
|
||||
| Name | Description | Value |
|
||||
| ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------ |
|
||||
| `enabled` | Create an act runner StatefulSet. | `false` |
|
||||
| `statefulset.replicas` | the amount of (replica) runner pods deployed | `1` |
|
||||
| `statefulset.timezone` | is the timezone that will be set in the act_runner image | `Etc/UTC` |
|
||||
| `statefulset.annotations` | Act runner annotations | `{}` |
|
||||
| `statefulset.labels` | Act runner labels | `{}` |
|
||||
| `statefulset.resources` | Act runner resources | `{}` |
|
||||
| `statefulset.nodeSelector` | NodeSelector for the statefulset | `{}` |
|
||||
| `statefulset.tolerations` | Tolerations for the statefulset | `[]` |
|
||||
| `statefulset.affinity` | Affinity for the statefulset | `{}` |
|
||||
| `statefulset.extraVolumes` | Extra volumes for the statefulset | `[]` |
|
||||
| `statefulset.persistence.size` | Size for persistence to store act runner data | `1Gi` |
|
||||
| `statefulset.securityContext` | Customize the SecurityContext | `{}` |
|
||||
| `statefulset.serviceAccountName` | Customize the service account name | `""` |
|
||||
| `statefulset.runtimeClassName` | Select a different RuntimeClass for pods | `""` |
|
||||
| `statefulset.hostAliases` | Inject entries into the /etc/hosts file | `[]` |
|
||||
| `statefulset.persistence.size` | Size for persistence to store act runner data | `1Gi` |
|
||||
| `statefulset.actRunner.registry` | image registry, e.g. gcr.io,docker.io | `docker.gitea.com` |
|
||||
| `statefulset.actRunner.repository` | The Gitea act runner image | `act_runner` |
|
||||
| `statefulset.actRunner.tag` | The Gitea act runner tag | `0.4.1` |
|
||||
| `statefulset.actRunner.digest` | Image digest. Allows to pin the given image tag. Useful for having control over mutable tags like `latest` | `""` |
|
||||
| `statefulset.actRunner.pullPolicy` | The Gitea act runner pullPolicy | `IfNotPresent` |
|
||||
| `statefulset.actRunner.fullOverride` | Completely overrides the image registry, path/image, tag and digest. | `""` |
|
||||
| `statefulset.actRunner.extraVolumeMounts` | Allows mounting extra volumes in the act runner container | `[]` |
|
||||
| `statefulset.actRunner.extraEnvs` | Allows adding custom environment variables | `[]` |
|
||||
| `statefulset.actRunner.flushCache` | whether to clear the .runner (cache) file by creating an extra init container, can slightly increase boot-up time | `false` |
|
||||
| `statefulset.actRunner.config` | Act runner custom configuration. See [Act Runner documentation](https://docs.gitea.com/usage/actions/act-runner#configuration) for details. | `Too complex. See values.yaml` |
|
||||
| `statefulset.dind.rootless` | a simple flag to let helm know we are dealing with a rootless dind container | `false` |
|
||||
| `statefulset.dind.uid` | a field to set the running user id for the rootless dind container, so it knows where to look for the socket | `""` |
|
||||
| `statefulset.dind.registry` | image registry, e.g. gcr.io,docker.io | `docker.io` |
|
||||
| `statefulset.dind.repository` | The Docker-in-Docker image | `docker` |
|
||||
| `statefulset.dind.tag` | The Docker-in-Docker image tag | `29.4.0-dind` |
|
||||
| `statefulset.dind.digest` | Image digest. Allows to pin the given image tag. Useful for having control over mutable tags like `latest` | `""` |
|
||||
| `statefulset.dind.fullOverride` | Completely overrides the image registry, path/image, tag and digest. | `""` |
|
||||
| `statefulset.dind.pullPolicy` | The Docker-in-Docker pullPolicy | `IfNotPresent` |
|
||||
| `statefulset.dind.extraVolumeMounts` | Allows mounting extra volumes in the Docker-in-Docker container | `[]` |
|
||||
| `statefulset.dind.extraEnvs` | Allows adding custom environment variables, such as `DOCKER_IPTABLES_LEGACY` | `[]` |
|
||||
| `statefulset.dind.extraArgs` | Allows adding custom arguments to the Docker Daemon | `[]` |
|
||||
| Name | Description | Value |
|
||||
| -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------ |
|
||||
| `enabled` | Create a Gitea Runner StatefulSet. | `false` |
|
||||
| `statefulset.replicas` | the amount of (replica) runner pods deployed | `1` |
|
||||
| `statefulset.timezone` | is the timezone that will be set in the runner image | `Etc/UTC` |
|
||||
| `statefulset.annotations` | Gitea Runner annotations | `{}` |
|
||||
| `statefulset.labels` | Gitea Runner labels | `{}` |
|
||||
| `statefulset.resources` | Gitea Runner resources | `{}` |
|
||||
| `statefulset.nodeSelector` | NodeSelector for the statefulset | `{}` |
|
||||
| `statefulset.tolerations` | Tolerations for the statefulset | `[]` |
|
||||
| `statefulset.affinity` | Affinity for the statefulset | `{}` |
|
||||
| `statefulset.extraVolumes` | Extra volumes for the statefulset | `[]` |
|
||||
| `statefulset.persistence.size` | Size for persistence to store Gitea Runner data | `1Gi` |
|
||||
| `statefulset.securityContext` | Customize the SecurityContext | `{}` |
|
||||
| `statefulset.serviceAccountName` | Customize the service account name | `""` |
|
||||
| `statefulset.runtimeClassName` | Select a different RuntimeClass for pods | `""` |
|
||||
| `statefulset.hostAliases` | Inject entries into the /etc/hosts file | `[]` |
|
||||
| `statefulset.persistence.size` | Size for persistence to store Gitea Runner data | `1Gi` |
|
||||
| `statefulset.runner.registry` | image registry, e.g. gcr.io,docker.io | `docker.gitea.com` |
|
||||
| `statefulset.runner.repository` | The Gitea Runner image | `runner` |
|
||||
| `statefulset.runner.tag` | The Gitea Runner tag | `1.0.4` |
|
||||
| `statefulset.runner.digest` | Image digest. Allows to pin the given image tag. Useful for having control over mutable tags like `latest` | `""` |
|
||||
| `statefulset.runner.pullPolicy` | The Gitea Runner pullPolicy | `IfNotPresent` |
|
||||
| `statefulset.runner.fullOverride` | Completely overrides the image registry, path/image, tag and digest. | `""` |
|
||||
| `statefulset.runner.extraVolumeMounts` | Allows mounting extra volumes in the Gitea Runner container | `[]` |
|
||||
| `statefulset.runner.extraEnvs` | Allows adding custom environment variables | `[]` |
|
||||
| `statefulset.runner.flushCache` | whether to clear the .runner (cache) file by creating an extra init container, can slightly increase boot-up time | `false` |
|
||||
| `statefulset.runner.config` | Gitea Runner custom configuration. See [Gitea Runner documentation](https://docs.gitea.com/usage/actions/act-runner#configuration) for details. | `Too complex. See values.yaml` |
|
||||
| `statefulset.dind.rootless` | a simple flag to let helm know we are dealing with a rootless dind container | `false` |
|
||||
| `statefulset.dind.uid` | a field to set the running user id for the rootless dind container, so it knows where to look for the socket | `""` |
|
||||
| `statefulset.dind.registry` | image registry, e.g. gcr.io,docker.io | `docker.io` |
|
||||
| `statefulset.dind.repository` | The Docker-in-Docker image | `docker` |
|
||||
| `statefulset.dind.tag` | The Docker-in-Docker image tag | `29.5.1-dind` |
|
||||
| `statefulset.dind.digest` | Image digest. Allows to pin the given image tag. Useful for having control over mutable tags like `latest` | `""` |
|
||||
| `statefulset.dind.fullOverride` | Completely overrides the image registry, path/image, tag and digest. | `""` |
|
||||
| `statefulset.dind.pullPolicy` | The Docker-in-Docker pullPolicy | `IfNotPresent` |
|
||||
| `statefulset.dind.extraVolumeMounts` | Allows mounting extra volumes in the Docker-in-Docker container | `[]` |
|
||||
| `statefulset.dind.extraEnvs` | Allows adding custom environment variables, such as `DOCKER_IPTABLES_LEGACY` | `[]` |
|
||||
| `statefulset.dind.extraArgs` | Allows adding custom arguments to the Docker Daemon | `[]` |
|
||||
|
||||
### Gitea Actions Init
|
||||
|
||||
@ -115,9 +115,9 @@ If `.Values.statefulset.dind.rootless: true` is set, then the following will be
|
||||
|
||||
### Gitea URL Setting
|
||||
|
||||
| Name | Description | Value |
|
||||
| -------------- | --------------------------------------------- | ----- |
|
||||
| `giteaRootURL` | URL the act_runner registers and connect with | `""` |
|
||||
| Name | Description | Value |
|
||||
| -------------- | ------------------------------------------------ | ----- |
|
||||
| `giteaRootURL` | URL the Gitea Runner registers and connects with | `""` |
|
||||
|
||||
### Extra Init Containers
|
||||
|
||||
|
||||
32
pnpm-lock.yaml
generated
32
pnpm-lock.yaml
generated
@ -50,8 +50,8 @@ packages:
|
||||
brace-expansion@1.1.14:
|
||||
resolution: {integrity: sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==}
|
||||
|
||||
brace-expansion@5.0.5:
|
||||
resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==}
|
||||
brace-expansion@5.0.6:
|
||||
resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==}
|
||||
engines: {node: 18 || 20 || >=22}
|
||||
|
||||
character-entities-legacy@3.0.0:
|
||||
@ -125,8 +125,8 @@ packages:
|
||||
fs.realpath@1.0.0:
|
||||
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
|
||||
|
||||
get-east-asian-width@1.5.0:
|
||||
resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==}
|
||||
get-east-asian-width@1.6.0:
|
||||
resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
glob@7.2.3:
|
||||
@ -171,8 +171,8 @@ packages:
|
||||
resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
katex@0.16.45:
|
||||
resolution: {integrity: sha512-pQpZbdBu7wCTmQUh7ufPmLr0pFoObnGUoL/yhtwJDgmmQpbkg/0HSVti25Fu4rmd1oCR6NGWe9vqTWuWv3GcNA==}
|
||||
katex@0.16.47:
|
||||
resolution: {integrity: sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg==}
|
||||
hasBin: true
|
||||
|
||||
linkify-it@5.0.0:
|
||||
@ -340,8 +340,8 @@ packages:
|
||||
wrappy@1.0.2:
|
||||
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
|
||||
|
||||
yaml@2.8.3:
|
||||
resolution: {integrity: sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==}
|
||||
yaml@2.9.0:
|
||||
resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==}
|
||||
engines: {node: '>= 14.6'}
|
||||
hasBin: true
|
||||
|
||||
@ -353,7 +353,7 @@ snapshots:
|
||||
dot-object: 2.1.5
|
||||
lodash: 4.18.1
|
||||
markdown-table: 2.0.0
|
||||
yaml: 2.8.3
|
||||
yaml: 2.9.0
|
||||
|
||||
'@types/debug@4.1.13':
|
||||
dependencies:
|
||||
@ -378,7 +378,7 @@ snapshots:
|
||||
balanced-match: 1.0.2
|
||||
concat-map: 0.0.1
|
||||
|
||||
brace-expansion@5.0.5:
|
||||
brace-expansion@5.0.6:
|
||||
dependencies:
|
||||
balanced-match: 4.0.4
|
||||
|
||||
@ -427,7 +427,7 @@ snapshots:
|
||||
|
||||
fs.realpath@1.0.0: {}
|
||||
|
||||
get-east-asian-width@1.5.0: {}
|
||||
get-east-asian-width@1.6.0: {}
|
||||
|
||||
glob@7.2.3:
|
||||
dependencies:
|
||||
@ -468,7 +468,7 @@ snapshots:
|
||||
|
||||
jsonpointer@5.0.1: {}
|
||||
|
||||
katex@0.16.45:
|
||||
katex@0.16.47:
|
||||
dependencies:
|
||||
commander: 8.3.0
|
||||
|
||||
@ -583,7 +583,7 @@ snapshots:
|
||||
dependencies:
|
||||
'@types/katex': 0.16.8
|
||||
devlop: 1.1.0
|
||||
katex: 0.16.45
|
||||
katex: 0.16.47
|
||||
micromark-factory-space: 2.0.1
|
||||
micromark-util-character: 2.1.1
|
||||
micromark-util-symbol: 2.0.1
|
||||
@ -698,7 +698,7 @@ snapshots:
|
||||
|
||||
minimatch@10.2.5:
|
||||
dependencies:
|
||||
brace-expansion: 5.0.5
|
||||
brace-expansion: 5.0.6
|
||||
|
||||
minimatch@3.1.5:
|
||||
dependencies:
|
||||
@ -741,7 +741,7 @@ snapshots:
|
||||
|
||||
string-width@8.1.0:
|
||||
dependencies:
|
||||
get-east-asian-width: 1.5.0
|
||||
get-east-asian-width: 1.6.0
|
||||
strip-ansi: 7.2.0
|
||||
|
||||
strip-ansi@7.2.0:
|
||||
@ -759,4 +759,4 @@ snapshots:
|
||||
|
||||
wrappy@1.0.2: {}
|
||||
|
||||
yaml@2.8.3: {}
|
||||
yaml@2.9.0: {}
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
{{- if .Values.enabled -}}
|
||||
|
||||
{{- if or (empty .Values.existingSecret) (empty .Values.existingSecretKey) -}}
|
||||
{{- fail "existingSecret and existingSecretKey are required when provisioning is disabled" -}}
|
||||
{{- end -}}
|
||||
|
||||
@ -20,7 +20,7 @@ If release name contains chart name it will be used as a full name.
|
||||
{{- if contains $name .Release.Name -}}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- printf "%s" .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
@ -49,16 +49,6 @@ storageClassName: {{ $storageClass | quote }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Resource definitions
|
||||
*/}}
|
||||
{{- define "gitea.actions.runner.resources" -}}
|
||||
|
||||
{{- end -}}
|
||||
{{- define "gitea.actions.dind.resources" -}}
|
||||
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Common labels
|
||||
*/}}
|
||||
@ -71,10 +61,10 @@ version: {{ default .Chart.AppVersion | quote }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "gitea.actions.labels.actRunner" -}}
|
||||
{{- define "gitea.actions.labels.runner" -}}
|
||||
helm.sh/chart: {{ include "gitea.actions.chart" . }}
|
||||
app: {{ include "gitea.actions.name" . }}-act-runner
|
||||
{{ include "gitea.actions.selectorLabels.actRunner" . }}
|
||||
app: {{ include "gitea.actions.name" . }}-runner
|
||||
{{ include "gitea.actions.selectorLabels.runner" . }}
|
||||
app.kubernetes.io/version: {{ default .Chart.AppVersion | quote }}
|
||||
version: {{ default .Chart.AppVersion | quote }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
@ -88,8 +78,8 @@ app.kubernetes.io/name: {{ include "gitea.actions.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "gitea.actions.selectorLabels.actRunner" -}}
|
||||
app.kubernetes.io/name: {{ include "gitea.actions.name" . }}-act-runner
|
||||
{{- define "gitea.actions.selectorLabels.runner" -}}
|
||||
app.kubernetes.io/name: {{ include "gitea.actions.name" . }}-runner
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- end -}}
|
||||
|
||||
@ -122,8 +112,8 @@ Common create image implementation
|
||||
{{/*
|
||||
Create image for the Gitea Actions Act Runner
|
||||
*/}}
|
||||
{{- define "gitea.actions.actRunner.image" -}}
|
||||
{{ include "gitea.actions.common.image" (dict "root" . "image" .Values.statefulset.actRunner) }}
|
||||
{{- define "gitea.actions.runner.image" -}}
|
||||
{{ include "gitea.actions.common.image" (dict "root" . "image" .Values.statefulset.runner) }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
|
||||
@ -3,13 +3,13 @@
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: {{ include "gitea.actions.fullname" . }}-act-runner-config
|
||||
name: {{ include "gitea.actions.fullname" . }}-runner-configmap
|
||||
namespace: {{ .Values.namespace | default .Release.Namespace }}
|
||||
labels:
|
||||
{{- include "gitea.actions.labels" . | nindent 4 }}
|
||||
data:
|
||||
config.yaml: |
|
||||
{{- with .Values.statefulset.actRunner.config -}}
|
||||
{{- with .Values.statefulset.runner.config -}}
|
||||
{{- if kindIs "string" . -}}
|
||||
{{ . | nindent 4}}
|
||||
{{- else -}}
|
||||
@ -5,7 +5,7 @@ apiVersion: apps/v1
|
||||
kind: StatefulSet
|
||||
metadata:
|
||||
labels:
|
||||
{{- include "gitea.actions.labels.actRunner" . | nindent 4 }}
|
||||
{{- include "gitea.actions.labels.runner" . | nindent 4 }}
|
||||
{{- with .Values.statefulset.labels }}
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
@ -13,19 +13,19 @@ metadata:
|
||||
{{- with .Values.statefulset.annotations }}
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
name: {{ include "gitea.actions.fullname" . }}-act-runner
|
||||
name: {{ include "gitea.actions.fullname" . }}-runner
|
||||
namespace: {{ .Values.namespace | default .Release.Namespace }}
|
||||
spec:
|
||||
replicas: {{ .Values.statefulset.replicas | default 1 }}
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "gitea.actions.selectorLabels.actRunner" . | nindent 6 }}
|
||||
{{- include "gitea.actions.selectorLabels.runner" . | nindent 6 }}
|
||||
template:
|
||||
metadata:
|
||||
annotations:
|
||||
checksum/config: {{ include (print $.Template.BasePath "/config-act-runner.yaml") . | sha256sum }}
|
||||
checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
|
||||
labels:
|
||||
{{- include "gitea.actions.labels.actRunner" . | nindent 8 }}
|
||||
{{- include "gitea.actions.labels.runner" . | nindent 8 }}
|
||||
{{- with .Values.statefulset.labels }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
@ -49,7 +49,7 @@ spec:
|
||||
{{- if .Values.preExtraInitContainers }}
|
||||
{{- toYaml .Values.preExtraInitContainers | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.statefulset.actRunner.flushCache }}
|
||||
{{- if .Values.statefulset.runner.flushCache }}
|
||||
- name: cache-flusher
|
||||
image: "{{ include "gitea.actions.init.image" . }}"
|
||||
command:
|
||||
@ -64,7 +64,7 @@ spec:
|
||||
fi
|
||||
volumeMounts:
|
||||
- mountPath: /data
|
||||
name: data-act-runner
|
||||
name: data-runner
|
||||
{{- end }}
|
||||
- name: init-gitea
|
||||
image: "{{ include "gitea.actions.init.image" . }}"
|
||||
@ -128,9 +128,9 @@ spec:
|
||||
{{- toYaml .Values.postExtraInitContainers | nindent 8 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: act-runner
|
||||
image: "{{ include "gitea.actions.actRunner.image" . }}"
|
||||
imagePullPolicy: {{ .Values.statefulset.actRunner.pullPolicy }}
|
||||
- name: runner
|
||||
image: "{{ include "gitea.actions.runner.image" . }}"
|
||||
imagePullPolicy: {{ .Values.statefulset.runner.pullPolicy }}
|
||||
workingDir: /data
|
||||
env:
|
||||
- name: GITEA_RUNNER_REGISTRATION_TOKEN
|
||||
@ -141,24 +141,24 @@ spec:
|
||||
- name: GITEA_INSTANCE_URL
|
||||
value: {{ include "gitea.actions.local_root_url" . }}
|
||||
- name: CONFIG_FILE
|
||||
value: /actrunner/config.yaml
|
||||
value: /runner/config.yaml
|
||||
- name: TZ
|
||||
value: {{ .Values.statefulset.timezone | default "Etc/UTC" }}
|
||||
{{- if .Values.statefulset.actRunner.extraEnvs }}
|
||||
{{- toYaml .Values.statefulset.actRunner.extraEnvs | nindent 12 }}
|
||||
{{- if .Values.statefulset.runner.extraEnvs }}
|
||||
{{- toYaml .Values.statefulset.runner.extraEnvs | nindent 12 }}
|
||||
{{- end }}
|
||||
resources:
|
||||
{{- toYaml .Values.statefulset.resources | nindent 12 }}
|
||||
volumeMounts:
|
||||
- mountPath: /actrunner/config.yaml
|
||||
name: act-runner-config
|
||||
- mountPath: /runner/config.yaml
|
||||
name: runner-config
|
||||
subPath: config.yaml
|
||||
- mountPath: /var/run/docker.sock
|
||||
name: docker-socket
|
||||
subPath: docker.sock
|
||||
- mountPath: /data
|
||||
name: data-act-runner
|
||||
{{- with .Values.statefulset.actRunner.extraVolumeMounts }}
|
||||
name: data-runner
|
||||
{{- with .Values.statefulset.runner.extraVolumeMounts }}
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- if .Values.global.imagePullSecrets }}
|
||||
@ -180,9 +180,9 @@ spec:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
volumes:
|
||||
- name: act-runner-config
|
||||
- name: runner-config
|
||||
configMap:
|
||||
name: {{ include "gitea.actions.fullname" . }}-act-runner-config
|
||||
name: {{ include "gitea.actions.fullname" . }}-runner-configmap
|
||||
- name: docker-socket
|
||||
emptyDir: {}
|
||||
{{- with .Values.statefulset.extraVolumes }}
|
||||
@ -190,7 +190,7 @@ spec:
|
||||
{{- end }}
|
||||
volumeClaimTemplates:
|
||||
- metadata:
|
||||
name: data-act-runner
|
||||
name: data-runner
|
||||
spec:
|
||||
accessModes: [ "ReadWriteOnce" ]
|
||||
{{- include "gitea.actions.persistence.storageClass" . | indent 8 }}
|
||||
|
||||
@ -1,22 +1,22 @@
|
||||
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||
suite: actions template | config-act-runner
|
||||
suite: actions template | configmap
|
||||
release:
|
||||
name: gitea-actions-unittests
|
||||
namespace: testing
|
||||
templates:
|
||||
- templates/config-act-runner.yaml
|
||||
- templates/configmap.yaml
|
||||
tests:
|
||||
- it: doesn't renders a ConfigMap by default
|
||||
template: templates/config-act-runner.yaml
|
||||
template: templates/configmap.yaml
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 0
|
||||
- it: renders a ConfigMap
|
||||
template: templates/config-act-runner.yaml
|
||||
template: templates/configmap.yaml
|
||||
set:
|
||||
enabled: true
|
||||
statefulset:
|
||||
actRunner:
|
||||
runner:
|
||||
config: |
|
||||
log:
|
||||
level: info
|
||||
@ -31,7 +31,7 @@ tests:
|
||||
- containsDocument:
|
||||
kind: ConfigMap
|
||||
apiVersion: v1
|
||||
name: gitea-actions-unittests-act-runner-config
|
||||
name: gitea-actions-unittests-runner-configmap
|
||||
- equal:
|
||||
path: data["config.yaml"]
|
||||
value: |
|
||||
@ -43,11 +43,11 @@ tests:
|
||||
labels:
|
||||
- "ubuntu-latest"
|
||||
- it: renders a ConfigMap with inline yaml
|
||||
template: templates/config-act-runner.yaml
|
||||
template: templates/configmap.yaml
|
||||
set:
|
||||
enabled: true
|
||||
statefulset:
|
||||
actRunner:
|
||||
runner:
|
||||
config: |
|
||||
container:
|
||||
valid_volumes:
|
||||
@ -59,7 +59,7 @@ tests:
|
||||
- containsDocument:
|
||||
kind: ConfigMap
|
||||
apiVersion: v1
|
||||
name: gitea-actions-unittests-act-runner-config
|
||||
name: gitea-actions-unittests-runner-configmap
|
||||
- matchRegex:
|
||||
path: data["config.yaml"]
|
||||
pattern: '(?m)^\s*options:\s*-v /var/run/docker.sock:/var/run/docker.sock\s*$'
|
||||
@ -4,7 +4,7 @@ release:
|
||||
namespace: testing
|
||||
templates:
|
||||
- templates/statefulset.yaml
|
||||
- templates/config-act-runner.yaml
|
||||
- templates/configmap.yaml
|
||||
tests:
|
||||
#
|
||||
## GENERIC
|
||||
@ -27,10 +27,10 @@ tests:
|
||||
- containsDocument:
|
||||
kind: StatefulSet
|
||||
apiVersion: apps/v1
|
||||
name: gitea-actions-unittests-act-runner
|
||||
name: gitea-actions-unittests-runner
|
||||
- equal:
|
||||
path: spec.template.metadata.annotations["checksum/config"]
|
||||
value: "368836e4e5d947f06f2d65c7cc3fc3ad050aaced506443f54a8ffc17bb11afd2"
|
||||
value: "83e4d1bb70cc2a861cd18fdb42537e700d4055d431713e64e28c3874c5660097"
|
||||
|
||||
- it: Has fsGroup in securityContext
|
||||
template: templates/statefulset.yaml
|
||||
@ -44,7 +44,7 @@ tests:
|
||||
- containsDocument:
|
||||
kind: StatefulSet
|
||||
apiVersion: apps/v1
|
||||
name: gitea-actions-unittests-act-runner
|
||||
name: gitea-actions-unittests-runner
|
||||
- equal:
|
||||
path: spec.template.spec.securityContext["fsGroup"]
|
||||
value: 1000
|
||||
@ -61,7 +61,7 @@ tests:
|
||||
- containsDocument:
|
||||
kind: StatefulSet
|
||||
apiVersion: apps/v1
|
||||
name: gitea-actions-unittests-act-runner
|
||||
name: gitea-actions-unittests-runner
|
||||
- equal:
|
||||
path: spec.template.spec.securityContext["fsGroupChangePolicy"]
|
||||
value: "OnRootMismatch"
|
||||
@ -78,7 +78,7 @@ tests:
|
||||
- containsDocument:
|
||||
kind: StatefulSet
|
||||
apiVersion: apps/v1
|
||||
name: gitea-actions-unittests-act-runner
|
||||
name: gitea-actions-unittests-runner
|
||||
- equal:
|
||||
path: spec.template.spec.securityContext["fsGroupChangePolicy"]
|
||||
value: "Always"
|
||||
@ -95,7 +95,7 @@ tests:
|
||||
- containsDocument:
|
||||
kind: StatefulSet
|
||||
apiVersion: apps/v1
|
||||
name: gitea-actions-unittests-act-runner
|
||||
name: gitea-actions-unittests-runner
|
||||
- equal:
|
||||
path: spec.template.spec.containers[0].env[0]
|
||||
value:
|
||||
@ -116,7 +116,7 @@ tests:
|
||||
- containsDocument:
|
||||
kind: StatefulSet
|
||||
apiVersion: apps/v1
|
||||
name: gitea-actions-unittests-act-runner
|
||||
name: gitea-actions-unittests-runner
|
||||
- equal:
|
||||
path: spec.template.spec.containers[0].env[1]
|
||||
value:
|
||||
@ -143,7 +143,7 @@ tests:
|
||||
- containsDocument:
|
||||
kind: StatefulSet
|
||||
apiVersion: apps/v1
|
||||
name: gitea-actions-unittests-act-runner
|
||||
name: gitea-actions-unittests-runner
|
||||
- equal:
|
||||
path: spec.template.spec.containers[0].env[1]
|
||||
value:
|
||||
@ -170,7 +170,7 @@ tests:
|
||||
- containsDocument:
|
||||
kind: StatefulSet
|
||||
apiVersion: apps/v1
|
||||
name: gitea-actions-unittests-act-runner
|
||||
name: gitea-actions-unittests-runner
|
||||
- equal:
|
||||
path: spec.template.spec.containers[0].env[1]
|
||||
value:
|
||||
@ -225,65 +225,65 @@ tests:
|
||||
value: "test-storageclass"
|
||||
|
||||
#
|
||||
## ACT_RUNNER
|
||||
## GITEA_RUNNER
|
||||
#
|
||||
|
||||
- it: act-runner uses fullOverride
|
||||
template: templates/statefulset.yaml
|
||||
set:
|
||||
enabled: true
|
||||
statefulset.actRunner.fullOverride: test.io/act_runner:x.y.z
|
||||
statefulset.runner.fullOverride: test.io/runner:x.y.z
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 1
|
||||
- containsDocument:
|
||||
kind: StatefulSet
|
||||
apiVersion: apps/v1
|
||||
name: gitea-actions-unittests-act-runner
|
||||
name: gitea-actions-unittests-runner
|
||||
- equal:
|
||||
path: spec.template.spec.containers[0].image
|
||||
value: test.io/act_runner:x.y.z
|
||||
value: test.io/runner:x.y.z
|
||||
|
||||
- it: act-runner uses digest
|
||||
template: templates/statefulset.yaml
|
||||
set:
|
||||
enabled: true
|
||||
statefulset.actRunner.tag: 0.3.1
|
||||
statefulset.actRunner.digest: sha256:abcdef123456
|
||||
statefulset.runner.tag: 1.0.4
|
||||
statefulset.runner.digest: sha256:abcdef123456
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 1
|
||||
- containsDocument:
|
||||
kind: StatefulSet
|
||||
apiVersion: apps/v1
|
||||
name: gitea-actions-unittests-act-runner
|
||||
name: gitea-actions-unittests-runner
|
||||
- equal:
|
||||
path: spec.template.spec.containers[0].image
|
||||
value: docker.gitea.com/act_runner:0.3.1@sha256:abcdef123456
|
||||
value: docker.gitea.com/runner:1.0.4@sha256:abcdef123456
|
||||
|
||||
- it: act-runner uses global.imageRegistry
|
||||
template: templates/statefulset.yaml
|
||||
set:
|
||||
enabled: true
|
||||
global.imageRegistry: test.io
|
||||
statefulset.actRunner.tag: 0.3.1
|
||||
statefulset.runner.tag: 1.0.4
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 1
|
||||
- containsDocument:
|
||||
kind: StatefulSet
|
||||
apiVersion: apps/v1
|
||||
name: gitea-actions-unittests-act-runner
|
||||
name: gitea-actions-unittests-runner
|
||||
- equal:
|
||||
path: spec.template.spec.containers[0].image
|
||||
value: test.io/act_runner:0.3.1
|
||||
value: test.io/runner:1.0.4
|
||||
|
||||
- it: renders additional environment variables for act-runner container in StatefulSet
|
||||
template: templates/statefulset.yaml
|
||||
set:
|
||||
enabled: true
|
||||
statefulset:
|
||||
actRunner:
|
||||
runner:
|
||||
extraEnvs:
|
||||
- name: "CUSTOM_ENV"
|
||||
value: "1"
|
||||
@ -297,7 +297,7 @@ tests:
|
||||
- containsDocument:
|
||||
kind: StatefulSet
|
||||
apiVersion: apps/v1
|
||||
name: gitea-actions-unittests-act-runner
|
||||
name: gitea-actions-unittests-runner
|
||||
- equal:
|
||||
path: spec.template.spec.containers[0].env[4]
|
||||
value:
|
||||
@ -318,7 +318,7 @@ tests:
|
||||
extraVolumes:
|
||||
- name: my-act-runner-volume
|
||||
emptyDir: {}
|
||||
actRunner:
|
||||
runner:
|
||||
extraVolumeMounts:
|
||||
- mountPath: /mnt
|
||||
name: my-act-runner-volume
|
||||
@ -328,7 +328,7 @@ tests:
|
||||
- containsDocument:
|
||||
kind: StatefulSet
|
||||
apiVersion: apps/v1
|
||||
name: gitea-actions-unittests-act-runner
|
||||
name: gitea-actions-unittests-runner
|
||||
- contains:
|
||||
any: true
|
||||
path: spec.template.spec.containers[0].volumeMounts
|
||||
@ -351,7 +351,7 @@ tests:
|
||||
- containsDocument:
|
||||
kind: StatefulSet
|
||||
apiVersion: apps/v1
|
||||
name: gitea-actions-unittests-act-runner
|
||||
name: gitea-actions-unittests-runner
|
||||
- equal:
|
||||
path: spec.template.spec.initContainers[1].image
|
||||
value: test.io/dind:x.y.z
|
||||
@ -368,7 +368,7 @@ tests:
|
||||
- containsDocument:
|
||||
kind: StatefulSet
|
||||
apiVersion: apps/v1
|
||||
name: gitea-actions-unittests-act-runner
|
||||
name: gitea-actions-unittests-runner
|
||||
- equal:
|
||||
path: spec.template.spec.initContainers[1].image
|
||||
value: test.io/docker:28.3.3-dind
|
||||
@ -407,7 +407,7 @@ tests:
|
||||
- containsDocument:
|
||||
kind: StatefulSet
|
||||
apiVersion: apps/v1
|
||||
name: gitea-actions-unittests-act-runner
|
||||
name: gitea-actions-unittests-runner
|
||||
- contains:
|
||||
any: true
|
||||
path: spec.template.spec.initContainers[1].volumeMounts
|
||||
@ -430,7 +430,7 @@ tests:
|
||||
- containsDocument:
|
||||
kind: StatefulSet
|
||||
apiVersion: apps/v1
|
||||
name: gitea-actions-unittests-act-runner
|
||||
name: gitea-actions-unittests-runner
|
||||
- equal:
|
||||
path: spec.template.spec.initContainers[0].image
|
||||
value: test.io/busybox:x.y.z
|
||||
@ -447,7 +447,7 @@ tests:
|
||||
- containsDocument:
|
||||
kind: StatefulSet
|
||||
apiVersion: apps/v1
|
||||
name: gitea-actions-unittests-act-runner
|
||||
name: gitea-actions-unittests-runner
|
||||
- equal:
|
||||
path: spec.template.spec.initContainers[0].image
|
||||
value: test.io/busybox:1.37.0
|
||||
|
||||
48
values.yaml
48
values.yaml
@ -1,34 +1,34 @@
|
||||
# Configure Gitea Actions
|
||||
## @section Gitea Actions
|
||||
#
|
||||
## @param enabled Create an act runner StatefulSet.
|
||||
## @param enabled Create a Gitea Runner StatefulSet.
|
||||
## @param statefulset.replicas the amount of (replica) runner pods deployed
|
||||
## @param statefulset.timezone is the timezone that will be set in the act_runner image
|
||||
## @param statefulset.annotations Act runner annotations
|
||||
## @param statefulset.labels Act runner labels
|
||||
## @param statefulset.resources Act runner resources
|
||||
## @param statefulset.timezone is the timezone that will be set in the runner image
|
||||
## @param statefulset.annotations Gitea Runner annotations
|
||||
## @param statefulset.labels Gitea Runner labels
|
||||
## @param statefulset.resources Gitea Runner resources
|
||||
## @param statefulset.nodeSelector NodeSelector for the statefulset
|
||||
## @param statefulset.tolerations Tolerations for the statefulset
|
||||
## @param statefulset.affinity Affinity for the statefulset
|
||||
## @param statefulset.extraVolumes Extra volumes for the statefulset
|
||||
## @param statefulset.persistence.size Size for persistence to store act runner data
|
||||
## @param statefulset.persistence.size Size for persistence to store Gitea Runner data
|
||||
## @param statefulset.securityContext Customize the SecurityContext
|
||||
## @param statefulset.serviceAccountName Customize the service account name
|
||||
## @param statefulset.runtimeClassName Select a different RuntimeClass for pods
|
||||
## @param statefulset.hostAliases Inject entries into the /etc/hosts file
|
||||
#
|
||||
## @param statefulset.persistence.size Size for persistence to store act runner data
|
||||
## @param statefulset.persistence.size Size for persistence to store Gitea Runner data
|
||||
#
|
||||
## @param statefulset.actRunner.registry image registry, e.g. gcr.io,docker.io
|
||||
## @param statefulset.actRunner.repository The Gitea act runner image
|
||||
## @param statefulset.actRunner.tag The Gitea act runner tag
|
||||
## @param statefulset.actRunner.digest Image digest. Allows to pin the given image tag. Useful for having control over mutable tags like `latest`
|
||||
## @param statefulset.actRunner.pullPolicy The Gitea act runner pullPolicy
|
||||
## @param statefulset.actRunner.fullOverride Completely overrides the image registry, path/image, tag and digest.
|
||||
## @param statefulset.actRunner.extraVolumeMounts Allows mounting extra volumes in the act runner container
|
||||
## @param statefulset.actRunner.extraEnvs Allows adding custom environment variables
|
||||
## @param statefulset.actRunner.flushCache whether to clear the .runner (cache) file by creating an extra init container, can slightly increase boot-up time
|
||||
## @param statefulset.actRunner.config [default: Too complex. See values.yaml] Act runner custom configuration. See [Act Runner documentation](https://docs.gitea.com/usage/actions/act-runner#configuration) for details.
|
||||
## @param statefulset.runner.registry image registry, e.g. gcr.io,docker.io
|
||||
## @param statefulset.runner.repository The Gitea Runner image
|
||||
## @param statefulset.runner.tag The Gitea Runner tag
|
||||
## @param statefulset.runner.digest Image digest. Allows to pin the given image tag. Useful for having control over mutable tags like `latest`
|
||||
## @param statefulset.runner.pullPolicy The Gitea Runner pullPolicy
|
||||
## @param statefulset.runner.fullOverride Completely overrides the image registry, path/image, tag and digest.
|
||||
## @param statefulset.runner.extraVolumeMounts Allows mounting extra volumes in the Gitea Runner container
|
||||
## @param statefulset.runner.extraEnvs Allows adding custom environment variables
|
||||
## @param statefulset.runner.flushCache whether to clear the .runner (cache) file by creating an extra init container, can slightly increase boot-up time
|
||||
## @param statefulset.runner.config [default: Too complex. See values.yaml] Gitea Runner custom configuration. See [Gitea Runner documentation](https://docs.gitea.com/usage/actions/act-runner#configuration) for details.
|
||||
#
|
||||
## @param statefulset.dind.rootless [default: false] a simple flag to let helm know we are dealing with a rootless dind container
|
||||
## @param statefulset.dind.uid a field to set the running user id for the rootless dind container, so it knows where to look for the socket
|
||||
@ -68,14 +68,13 @@ statefulset:
|
||||
persistence:
|
||||
size: 1Gi
|
||||
|
||||
actRunner:
|
||||
runner:
|
||||
registry: "docker.gitea.com"
|
||||
repository: act_runner
|
||||
tag: 0.4.1
|
||||
repository: runner
|
||||
tag: 1.0.4
|
||||
digest: ""
|
||||
pullPolicy: IfNotPresent
|
||||
fullOverride: ""
|
||||
resources: {}
|
||||
extraVolumeMounts: []
|
||||
extraEnvs:
|
||||
[]
|
||||
@ -86,7 +85,7 @@ statefulset:
|
||||
|
||||
# See full details: https://gitea.com/gitea/helm-actions/issues/73
|
||||
flushCache: false
|
||||
# See full example here: https://gitea.com/gitea/act_runner/src/branch/main/internal/pkg/config/config.example.yaml
|
||||
# See full example here: https://gitea.com/gitea/runner/src/branch/main/internal/pkg/config/config.example.yaml
|
||||
config: |
|
||||
log:
|
||||
level: debug
|
||||
@ -101,11 +100,10 @@ statefulset:
|
||||
uid: ""
|
||||
registry: "docker.io"
|
||||
repository: docker
|
||||
tag: 29.4.0-dind
|
||||
tag: 29.5.1-dind
|
||||
digest: ""
|
||||
pullPolicy: IfNotPresent
|
||||
fullOverride: ""
|
||||
resources: {}
|
||||
extraVolumeMounts: []
|
||||
|
||||
# If the container keeps crashing in your environment, you might have to add the `DOCKER_IPTABLES_LEGACY` environment variable.
|
||||
@ -148,7 +146,7 @@ existingSecretKey: ""
|
||||
|
||||
## @section Gitea URL Setting
|
||||
#
|
||||
## @param giteaRootURL URL the act_runner registers and connect with
|
||||
## @param giteaRootURL URL the Gitea Runner registers and connects with
|
||||
giteaRootURL: ""
|
||||
|
||||
## @section Extra Init Containers
|
||||
|
||||
Reference in New Issue
Block a user