1 Commits

20 changed files with 287 additions and 299 deletions

View File

@ -8,12 +8,12 @@ on:
jobs: jobs:
changelog: changelog:
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: docker.io/thegeeklab/git-sv:2.1.3 container: docker.io/thegeeklab/git-sv:2.1.0
steps: steps:
- name: install tools - name: install tools
run: | run: |
apk add -q --update --no-cache nodejs curl jq sed apk add -q --update --no-cache nodejs curl jq sed
- uses: actions/checkout@v7 - uses: actions/checkout@v6
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Generate upcoming changelog - name: Generate upcoming changelog

View File

@ -11,9 +11,9 @@ on:
jobs: jobs:
check-and-test: check-and-test:
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: commitlint/commitlint:21.1.0 container: commitlint/commitlint:20.5.3
steps: steps:
- uses: actions/checkout@v7 - uses: actions/checkout@v6
- name: check PR title - name: check PR title
run: | run: |
echo "${{ gitea.event.pull_request.title }}" | commitlint --config .commitlintrc.json echo "${{ gitea.event.pull_request.title }}" | commitlint --config .commitlintrc.json

View File

@ -7,13 +7,13 @@ on:
env: env:
# renovate: datasource=docker depName=alpine/helm # renovate: datasource=docker depName=alpine/helm
HELM_VERSION: "4.2.2" HELM_VERSION: "4.1.4"
jobs: jobs:
generate-chart-publish: generate-chart-publish:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v7 - uses: actions/checkout@v6
- name: install Docker CLI - name: install Docker CLI
uses: https://github.com/docker/setup-buildx-action@v4 # Gitea uses: https://github.com/docker/setup-buildx-action@v4 # Gitea
@ -52,11 +52,12 @@ jobs:
run: | run: |
# Install Helm GPG plugin # Install Helm GPG plugin
helm plugin install https://github.com/technosophos/helm-gpg.git --verify=false 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 # Package the chart
mkdir ./actions mkdir actions
helm dependency build mv actions*.tgz actions/
helm package --version "${GITHUB_REF#refs/tags/v}" --destination ./actions ./
curl -s -L -o actions/index.yaml https://dl.gitea.com/charts/index.yaml 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 helm repo index actions/ --url https://dl.gitea.com/charts --merge actions/index.yaml

View File

@ -9,6 +9,6 @@ jobs:
shellcheck: shellcheck:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v7 - uses: actions/checkout@v6
- run: apt update --yes && apt install --yes shellcheck - run: apt update --yes && apt install --yes shellcheck
- run: find . -type f -name "*.sh" -exec shellcheck -a {} \; - run: find . -type f -name "*.sh" -exec shellcheck -a {} \;

View File

@ -11,12 +11,12 @@ name: check-and-test
env: env:
# renovate: datasource=github-releases depName=helm-unittest/helm-unittest # renovate: datasource=github-releases depName=helm-unittest/helm-unittest
HELM_UNITTEST_VERSION: "v1.1.1" HELM_UNITTEST_VERSION: "v1.0.3"
jobs: jobs:
check-and-test: check-and-test:
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: alpine/helm:4.2.2 container: alpine/helm:4.1.4
steps: steps:
- name: install tools - name: install tools
run: | run: |
@ -25,8 +25,8 @@ jobs:
- name: Install pnpm - name: Install pnpm
uses: pnpm/action-setup@v6 uses: pnpm/action-setup@v6
with: with:
version: 11 version: 10
- uses: actions/checkout@v7 - uses: actions/checkout@v6
- name: install chart dependencies - name: install chart dependencies
run: helm dependency build run: helm dependency build
- name: lint - name: lint

View File

@ -1,20 +1,18 @@
apiVersion: v2 apiVersion: v2
name: actions name: actions
description: Gitea Actions Helm chart for Kubernetes description: Gitea Actions chart for Kubernetes
type: application type: application
version: 0.1.1 version: 0.0.0
# renovate datasource=gitea-releases depName=gitea/runner extractVersion=^v(?<version>.*)$ # renovate datasource=github-releases depName=go-gitea/act extractVersion=^v(?<version>.*)$
appVersion: 0.261.3 appVersion: 0.261.3
keywords: keywords:
- cicd - cicd
- runner - runner
- actions - actions
home: https://gitea.com/
icon: https://gitea.com/assets/img/logo.svg
sources: sources:
- https://gitea.com/gitea/helm-actions - https://gitea.com/gitea/helm-actions
- https://gitea.com/gitea/runner - https://gitea.com/gitea/act
maintainers: maintainers:
# https://gitea.com/DaanSelen # https://gitea.com/DaanSelen

112
README.md
View File

@ -29,16 +29,6 @@ Deploy with your values, make sure the path is correct:
helm upgrade --install gitea-actions gitea-charts/actions -f values.yaml helm upgrade --install gitea-actions gitea-charts/actions -f values.yaml
``` ```
Alternatively:
```sh
helm upgrade --install gitea-actions gitea-charts/actions \
--set enabled=true \
--set giteaRootURL=https://gitea.com \
--set existingSecret=foo \
--set existingSecretKey=bar
```
You should be good to go! You should be good to go!
### Runner Token Secret Template ### Runner Token Secret Template
@ -65,58 +55,56 @@ If `.Values.statefulset.dind.rootless: true` is set, then the following will be
### Gitea Actions ### Gitea Actions
| Name | Description | Value | | Name | Description | Value |
| -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------ | | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------ |
| `enabled` | Create a Gitea Runner StatefulSet. | `false` | | `enabled` | Create an act runner StatefulSet. | `false` |
| `statefulset.replicas` | the amount of (replica) runner pods deployed | `1` | | `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.timezone` | is the timezone that will be set in the act_runner image | `Etc/UTC` |
| `statefulset.annotations` | Gitea Runner annotations | `{}` | | `statefulset.annotations` | Act runner annotations | `{}` |
| `statefulset.labels` | Gitea Runner labels | `{}` | | `statefulset.labels` | Act runner labels | `{}` |
| `statefulset.resources` | Gitea Runner resources | `{}` | | `statefulset.resources` | Act runner resources | `{}` |
| `statefulset.nodeSelector` | NodeSelector for the statefulset | `{}` | | `statefulset.nodeSelector` | NodeSelector for the statefulset | `{}` |
| `statefulset.tolerations` | Tolerations for the statefulset | `[]` | | `statefulset.tolerations` | Tolerations for the statefulset | `[]` |
| `statefulset.affinity` | Affinity for the statefulset | `{}` | | `statefulset.affinity` | Affinity for the statefulset | `{}` |
| `statefulset.extraVolumes` | Extra volumes for the statefulset | `[]` | | `statefulset.extraVolumes` | Extra volumes for the statefulset | `[]` |
| `statefulset.persistence.size` | Size for persistence to store Gitea Runner data | `1Gi` | | `statefulset.persistence.size` | Size for persistence to store act runner data | `1Gi` |
| `statefulset.securityContext` | Customize the SecurityContext | `{}` | | `statefulset.securityContext` | Customize the SecurityContext | `{}` |
| `statefulset.serviceAccountName` | Customize the service account name | `""` | | `statefulset.serviceAccountName` | Customize the service account name | `""` |
| `statefulset.runtimeClassName` | Select a different RuntimeClass for pods | `""` | | `statefulset.runtimeClassName` | Select a different RuntimeClass for pods | `""` |
| `statefulset.hostAliases` | Inject entries into the /etc/hosts file | `[]` | | `statefulset.hostAliases` | Inject entries into the /etc/hosts file | `[]` |
| `statefulset.persistence.size` | Size for persistence to store Gitea Runner data | `1Gi` | | `statefulset.persistence.size` | Size for persistence to store act runner data | `1Gi` |
| `statefulset.runner.registry` | image registry, e.g. gcr.io,docker.io | `docker.gitea.com` | | `statefulset.actRunner.registry` | image registry, e.g. gcr.io,docker.io | `docker.gitea.com` |
| `statefulset.runner.repository` | The Gitea Runner image | `runner` | | `statefulset.actRunner.repository` | The Gitea act runner image | `act_runner` |
| `statefulset.runner.tag` | The Gitea Runner tag | `1.0.6` | | `statefulset.actRunner.tag` | The Gitea act runner tag | `0.4.1` |
| `statefulset.runner.digest` | Image digest. Allows to pin the given image tag. Useful for having control over mutable tags like `latest` | `""` | | `statefulset.actRunner.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.actRunner.pullPolicy` | The Gitea act runner pullPolicy | `IfNotPresent` |
| `statefulset.runner.fullOverride` | Completely overrides the image registry, path/image, tag and digest. | `""` | | `statefulset.actRunner.fullOverride` | Completely overrides the image registry, path/image, tag and digest. | `""` |
| `statefulset.runner.extraVolumeMounts` | Allows mounting extra volumes in the Gitea Runner container | `[]` | | `statefulset.actRunner.extraVolumeMounts` | Allows mounting extra volumes in the act runner container | `[]` |
| `statefulset.runner.extraEnvs` | Allows adding custom environment variables | `[]` | | `statefulset.actRunner.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.actRunner.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.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.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.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.registry` | image registry, e.g. gcr.io,docker.io | `docker.io` |
| `statefulset.dind.repository` | The Docker-in-Docker image | `docker` | | `statefulset.dind.repository` | The Docker-in-Docker image | `docker` |
| `statefulset.dind.tag` | The Docker-in-Docker image tag | `29.5.2-dind` | | `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.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.fullOverride` | Completely overrides the image registry, path/image, tag and digest. | `""` |
| `statefulset.dind.pullPolicy` | The Docker-in-Docker pullPolicy | `IfNotPresent` | | `statefulset.dind.pullPolicy` | The Docker-in-Docker pullPolicy | `IfNotPresent` |
| `statefulset.dind.extraVolumeMounts` | Allows mounting extra volumes in the Docker-in-Docker container | `[]` | | `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.extraEnvs` | Allows adding custom environment variables, such as `DOCKER_IPTABLES_LEGACY` | `[]` |
| `statefulset.dind.extraArgs` | Allows adding custom arguments to the Docker Daemon | `[]` | | `statefulset.dind.extraArgs` | Allows adding custom arguments to the Docker Daemon | `[]` |
### Gitea Actions Init ### Gitea Actions Init
| Name | Description | Value | | Name | Description | Value |
| ----------------------------------- | ---------------------------------------------------------------------------------------------------------- | -------------- | | ------------------------- | ---------------------------------------------------------------------------------------------------------- | -------------- |
| `init.image.registry` | Image registry, e.g. gcr.io,docker.io | `""` | | `init.image.registry` | image registry, e.g. gcr.io,docker.io | `""` |
| `init.image.repository` | The init image (default: busyboxy but can be changed to alpine e.g.) | `busybox` | | `init.image.repository` | The init image | `busybox` |
| `init.image.tag` | The init image tag | `1.38.0` | | `init.image.tag` | the init image tag | `1.37.0` |
| `init.image.digest` | Image digest. Allows to pin the given image tag. Useful for having control over mutable tags like `latest` | `""` | | `init.image.digest` | Image digest. Allows to pin the given image tag. Useful for having control over mutable tags like `latest` | `""` |
| `init.image.pullPolicy` | The init image pullPolicy | `IfNotPresent` | | `init.image.pullPolicy` | The init image pullPolicy | `IfNotPresent` |
| `init.image.fullOverride` | Completely overrides the image registry, path/image, tag and digest | `""` | | `init.image.fullOverride` | Completely overrides the image registry, path/image, tag and digest. | `""` |
| `init.connectionCommandOverride` | Possiblity to change the command with which the container tests its connection to the Gitea server | `""` |
| `init.preConnectionCommandOverride` | Possibility to add commands that happen before the connection test loop | `""` |
### Runner Token Secret Configuration ### Runner Token Secret Configuration
@ -127,9 +115,9 @@ If `.Values.statefulset.dind.rootless: true` is set, then the following will be
### Gitea URL Setting ### Gitea URL Setting
| Name | Description | Value | | Name | Description | Value |
| -------------- | ------------------------------------------------ | ----- | | -------------- | --------------------------------------------- | ----- |
| `giteaRootURL` | URL the Gitea Runner registers and connects with | `""` | | `giteaRootURL` | URL the act_runner registers and connect with | `""` |
### Extra Init Containers ### Extra Init Containers

View File

@ -1,3 +1,3 @@
# Gitea Actions Helm Chart Docs # Gitea Actions Helm Chart Docs
- [connectionCommandOverride explanation](./connectionCommandOverride.md) - [Share dind with job container](share-dind-with-job-container.md)

31
docs/actions-dev.md Normal file
View File

@ -0,0 +1,31 @@
# Gitea Actions
In order to use the Gitea Actions act-runner you must either:
- enable persistence (used for automatic deployment to be able to store the token in a place accessible for the Job)
- create a secret containing the act runner token and reference it as a `existingSecret`
In order to use Gitea Actions, you must log on the server that's running Gitea and run the command:
`gitea actions generate-runner-token`
This command will out a token that is needed by the act-runner to register with the Gitea backend.
Because this is a manual operation, we automated this using a Kubernetes Job using the following containers:
1) `actions-token-create`: it uses the current `gitea-rootless` image, mounts the persistent directory to `/data/` then it saves the output from `gitea actions generate-runner-token` to `/data/actions/token`
2) `actions-token-upload`: it uses a `bitnami/kubectl` image, mounts the scripts directory (`/scripts`) and
the persistent directory (`/data/`), and using the script from `/scripts/token.sh` stores the token in a Kubernetes secret
After the token is stored in a Kubernetes secret we can create the statefulset that contains the following containers:
1) `act-runner`: authenticates with Gitea using the token that was stored in the secret
2) `dind`: DockerInDocker image that is used to run the actions
If you are not using persistent volumes, you cannot use the Job to automatically generate the token.
In this case, you can use either the Web UI to generate the token or run a shell into a Gitea pod and invoke
the command `gitea actions generate-runner-token`. After generating the token, you must create a secret and use it via:
```yaml
existingSecret: "secret-name"
existingSecretKey: "secret-key"
```

View File

@ -1,48 +0,0 @@
# Using a custom connectionCommand
By default, before the container starts it tries to reach the given giteaRootURL.
Normally this is done by the busybox image using the wget binary.
However, due to [Issue #162](https://gitea.com/gitea/helm-actions/issues/162) there has been a change made where we can customize that command.
Using the `values.yaml` file by default it calls `wget --spider --no-check-certificate <your giteaRootURL>` with a timeout of 10 seconds.
But with a custom init section like detailed below we can make our check compliant with whatever certificate you have.
Assuming:
```yaml
enabled: true
giteaRootURL: https://gitea.com
existingSecret: foo
existingSecretKey: bar
init:
image:
registry: ""
repository: alpine
# Overrides the image tag whose default is the chart appVersion.
tag: "3.24"
digest: ""
pullPolicy: IfNotPresent
fullOverride: ""
connectionCommandOverride: "curl -I"
preConnectionCommandOverride: "apk add curl"
```
This now creates the following template section:
```yaml
- name: init-gitea
image: "alpine:latest"
command:
- sh
- -c
- |
apk add curl
echo 'Trying to reach Gitea on https://gitea.com'
until timeout 10 curl -I https://gitea.com; do
sleep 3
echo "Trying again in 3 seconds..."
done
echo "Gitea has been reached!"
```

View File

@ -0,0 +1,30 @@
# Share dind with job container
You can weaken isolation and allow jobs to call docker commands.
## Limitations
-
## Example Values
```yaml
config: |
log:
level: debug
cache:
enabled: false
container:
require_docker: true
docker_timeout: 300s
## Specify an existing token secret
##
existingSecret: "runner-token2"
existingSecretKey: "token"
## Specify the root URL of the Gitea instance
giteaRootURL: "http://192.168.1.2:3000"
```
Now you can run docker commands inside your jobs.

View File

@ -14,6 +14,6 @@
}, },
"devDependencies": { "devDependencies": {
"@bitnami/readme-generator-for-helm": "^2.7.0", "@bitnami/readme-generator-for-helm": "^2.7.0",
"markdownlint-cli": "^0.49.0" "markdownlint-cli": "^0.48.0"
} }
} }

112
pnpm-lock.yaml generated
View File

@ -12,8 +12,8 @@ importers:
specifier: ^2.7.0 specifier: ^2.7.0
version: 2.7.2 version: 2.7.2
markdownlint-cli: markdownlint-cli:
specifier: ^0.49.0 specifier: ^0.48.0
version: 0.49.0 version: 0.48.0
packages: packages:
@ -47,11 +47,11 @@ packages:
resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==}
engines: {node: 18 || 20 || >=22} engines: {node: 18 || 20 || >=22}
brace-expansion@1.1.15: brace-expansion@1.1.14:
resolution: {integrity: sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==} resolution: {integrity: sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==}
brace-expansion@5.0.7: brace-expansion@5.0.5:
resolution: {integrity: sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==} resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==}
engines: {node: 18 || 20 || >=22} engines: {node: 18 || 20 || >=22}
character-entities-legacy@3.0.0: character-entities-legacy@3.0.0:
@ -67,9 +67,9 @@ packages:
resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==}
engines: {node: '>=18'} engines: {node: '>=18'}
commander@15.0.0: commander@14.0.3:
resolution: {integrity: sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==} resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==}
engines: {node: '>=22.12.0'} engines: {node: '>=20'}
commander@6.2.1: commander@6.2.1:
resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==}
@ -125,8 +125,8 @@ packages:
fs.realpath@1.0.0: fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
get-east-asian-width@1.6.0: get-east-asian-width@1.5.0:
resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==} resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==}
engines: {node: '>=18'} engines: {node: '>=18'}
glob@7.2.3: glob@7.2.3:
@ -160,8 +160,8 @@ packages:
is-hexadecimal@2.0.1: is-hexadecimal@2.0.1:
resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==}
js-yaml@4.2.0: js-yaml@4.1.1:
resolution: {integrity: sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==} resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==}
hasBin: true hasBin: true
jsonc-parser@3.3.1: jsonc-parser@3.3.1:
@ -171,31 +171,31 @@ packages:
resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
katex@0.16.47: katex@0.16.45:
resolution: {integrity: sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg==} resolution: {integrity: sha512-pQpZbdBu7wCTmQUh7ufPmLr0pFoObnGUoL/yhtwJDgmmQpbkg/0HSVti25Fu4rmd1oCR6NGWe9vqTWuWv3GcNA==}
hasBin: true hasBin: true
linkify-it@5.0.1: linkify-it@5.0.0:
resolution: {integrity: sha512-wVoTjP4Q6R0NW5hiZkVJaFZPWgtXfoGF+6LucL3/FtiNjmcHhYjEr5f1Kqjirc1nBW07J/ZuRFumqr2oqccEWg==} resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==}
lodash@4.18.1: lodash@4.18.1:
resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==}
markdown-it@14.2.0: markdown-it@14.1.1:
resolution: {integrity: sha512-1TGiQiJVRQ3NPmZH6sx5Cfnmg6GQm9jvC1ch4TK511NjSJvjzKLzn5pPfZRNZkRPZP0HqCioSndqH8v2nRaWVQ==} resolution: {integrity: sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==}
hasBin: true hasBin: true
markdown-table@2.0.0: markdown-table@2.0.0:
resolution: {integrity: sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==} resolution: {integrity: sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==}
markdownlint-cli@0.49.0: markdownlint-cli@0.48.0:
resolution: {integrity: sha512-vS5tWq5W91Gg33LD4pyAaXPclnz/sRvo6/RGOyDQjQ3eds2DkK6H4szUuE0M9TiRB/u/VBx1gtd9Ktrtx5WlSA==} resolution: {integrity: sha512-NkZQNu2E0Q5qLEEHwWj674eYISTLD4jMHkBzDobujXd1kv+yCxi8jOaD/rZoQNW1FBBMMGQpuW5So8B51N/e0A==}
engines: {node: '>=22'} engines: {node: '>=20'}
hasBin: true hasBin: true
markdownlint@0.41.0: markdownlint@0.40.0:
resolution: {integrity: sha512-xMUI3ChBuRuxuLF4ENvCZyS8z/+Jly1coUcZwErKLIB3sDj7ojpaTBa1e9YVPhSN4jGEIjYGQCldbTJS/hqS+A==} resolution: {integrity: sha512-UKybllYNheWac61Ia7T6fzuQNDZimFIpCg2w6hHjgV1Qu0w1TV0LlSgryUGzM0bkKQCBhy2FDhEELB73Kb0kAg==}
engines: {node: '>=22'} engines: {node: '>=20'}
mdurl@2.0.0: mdurl@2.0.0:
resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==}
@ -318,8 +318,8 @@ packages:
resolution: {integrity: sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==} resolution: {integrity: sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==}
engines: {node: '>= 18'} engines: {node: '>= 18'}
string-width@8.2.1: string-width@8.1.0:
resolution: {integrity: sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==} resolution: {integrity: sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==}
engines: {node: '>=20'} engines: {node: '>=20'}
strip-ansi@7.2.0: strip-ansi@7.2.0:
@ -330,8 +330,8 @@ packages:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'} engines: {node: '>=8'}
tinyglobby@0.2.17: tinyglobby@0.2.16:
resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==}
engines: {node: '>=12.0.0'} engines: {node: '>=12.0.0'}
uc.micro@2.1.0: uc.micro@2.1.0:
@ -340,8 +340,8 @@ packages:
wrappy@1.0.2: wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
yaml@2.9.0: yaml@2.8.3:
resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} resolution: {integrity: sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==}
engines: {node: '>= 14.6'} engines: {node: '>= 14.6'}
hasBin: true hasBin: true
@ -353,7 +353,7 @@ snapshots:
dot-object: 2.1.5 dot-object: 2.1.5
lodash: 4.18.1 lodash: 4.18.1
markdown-table: 2.0.0 markdown-table: 2.0.0
yaml: 2.9.0 yaml: 2.8.3
'@types/debug@4.1.13': '@types/debug@4.1.13':
dependencies: dependencies:
@ -373,12 +373,12 @@ snapshots:
balanced-match@4.0.4: {} balanced-match@4.0.4: {}
brace-expansion@1.1.15: brace-expansion@1.1.14:
dependencies: dependencies:
balanced-match: 1.0.2 balanced-match: 1.0.2
concat-map: 0.0.1 concat-map: 0.0.1
brace-expansion@5.0.7: brace-expansion@5.0.5:
dependencies: dependencies:
balanced-match: 4.0.4 balanced-match: 4.0.4
@ -390,7 +390,7 @@ snapshots:
commander@13.1.0: {} commander@13.1.0: {}
commander@15.0.0: {} commander@14.0.3: {}
commander@6.2.1: {} commander@6.2.1: {}
@ -427,7 +427,7 @@ snapshots:
fs.realpath@1.0.0: {} fs.realpath@1.0.0: {}
get-east-asian-width@1.6.0: {} get-east-asian-width@1.5.0: {}
glob@7.2.3: glob@7.2.3:
dependencies: dependencies:
@ -460,7 +460,7 @@ snapshots:
is-hexadecimal@2.0.1: {} is-hexadecimal@2.0.1: {}
js-yaml@4.2.0: js-yaml@4.1.1:
dependencies: dependencies:
argparse: 2.0.1 argparse: 2.0.1
@ -468,21 +468,21 @@ snapshots:
jsonpointer@5.0.1: {} jsonpointer@5.0.1: {}
katex@0.16.47: katex@0.16.45:
dependencies: dependencies:
commander: 8.3.0 commander: 8.3.0
linkify-it@5.0.1: linkify-it@5.0.0:
dependencies: dependencies:
uc.micro: 2.1.0 uc.micro: 2.1.0
lodash@4.18.1: {} lodash@4.18.1: {}
markdown-it@14.2.0: markdown-it@14.1.1:
dependencies: dependencies:
argparse: 2.0.1 argparse: 2.0.1
entities: 4.5.0 entities: 4.5.0
linkify-it: 5.0.1 linkify-it: 5.0.0
mdurl: 2.0.0 mdurl: 2.0.0
punycode.js: 2.3.1 punycode.js: 2.3.1
uc.micro: 2.1.0 uc.micro: 2.1.0
@ -491,24 +491,24 @@ snapshots:
dependencies: dependencies:
repeat-string: 1.6.1 repeat-string: 1.6.1
markdownlint-cli@0.49.0: markdownlint-cli@0.48.0:
dependencies: dependencies:
commander: 15.0.0 commander: 14.0.3
deep-extend: 0.6.0 deep-extend: 0.6.0
ignore: 7.0.5 ignore: 7.0.5
js-yaml: 4.2.0 js-yaml: 4.1.1
jsonc-parser: 3.3.1 jsonc-parser: 3.3.1
jsonpointer: 5.0.1 jsonpointer: 5.0.1
markdown-it: 14.2.0 markdown-it: 14.1.1
markdownlint: 0.41.0 markdownlint: 0.40.0
minimatch: 10.2.5 minimatch: 10.2.5
run-con: 1.3.2 run-con: 1.3.2
smol-toml: 1.6.1 smol-toml: 1.6.1
tinyglobby: 0.2.17 tinyglobby: 0.2.16
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
markdownlint@0.41.0: markdownlint@0.40.0:
dependencies: dependencies:
micromark: 4.0.2 micromark: 4.0.2
micromark-core-commonmark: 2.0.3 micromark-core-commonmark: 2.0.3
@ -518,7 +518,7 @@ snapshots:
micromark-extension-gfm-table: 2.1.1 micromark-extension-gfm-table: 2.1.1
micromark-extension-math: 3.1.0 micromark-extension-math: 3.1.0
micromark-util-types: 2.0.2 micromark-util-types: 2.0.2
string-width: 8.2.1 string-width: 8.1.0
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@ -583,7 +583,7 @@ snapshots:
dependencies: dependencies:
'@types/katex': 0.16.8 '@types/katex': 0.16.8
devlop: 1.1.0 devlop: 1.1.0
katex: 0.16.47 katex: 0.16.45
micromark-factory-space: 2.0.1 micromark-factory-space: 2.0.1
micromark-util-character: 2.1.1 micromark-util-character: 2.1.1
micromark-util-symbol: 2.0.1 micromark-util-symbol: 2.0.1
@ -698,11 +698,11 @@ snapshots:
minimatch@10.2.5: minimatch@10.2.5:
dependencies: dependencies:
brace-expansion: 5.0.7 brace-expansion: 5.0.5
minimatch@3.1.5: minimatch@3.1.5:
dependencies: dependencies:
brace-expansion: 1.1.15 brace-expansion: 1.1.14
minimist@1.2.8: {} minimist@1.2.8: {}
@ -739,9 +739,9 @@ snapshots:
smol-toml@1.6.1: {} smol-toml@1.6.1: {}
string-width@8.2.1: string-width@8.1.0:
dependencies: dependencies:
get-east-asian-width: 1.6.0 get-east-asian-width: 1.5.0
strip-ansi: 7.2.0 strip-ansi: 7.2.0
strip-ansi@7.2.0: strip-ansi@7.2.0:
@ -750,7 +750,7 @@ snapshots:
strip-json-comments@3.1.1: {} strip-json-comments@3.1.1: {}
tinyglobby@0.2.17: tinyglobby@0.2.16:
dependencies: dependencies:
fdir: 6.5.0(picomatch@4.0.4) fdir: 6.5.0(picomatch@4.0.4)
picomatch: 4.0.4 picomatch: 4.0.4
@ -759,4 +759,4 @@ snapshots:
wrappy@1.0.2: {} wrappy@1.0.2: {}
yaml@2.9.0: {} yaml@2.8.3: {}

View File

@ -1,4 +1,5 @@
{{- if .Values.enabled -}} {{- if .Values.enabled -}}
{{- if or (empty .Values.existingSecret) (empty .Values.existingSecretKey) -}} {{- if or (empty .Values.existingSecret) (empty .Values.existingSecretKey) -}}
{{- fail "existingSecret and existingSecretKey are required when provisioning is disabled" -}} {{- fail "existingSecret and existingSecretKey are required when provisioning is disabled" -}}
{{- end -}} {{- end -}}

View File

@ -20,7 +20,7 @@ If release name contains chart name it will be used as a full name.
{{- if contains $name .Release.Name -}} {{- if contains $name .Release.Name -}}
{{- .Release.Name | trunc 63 | trimSuffix "-" -}} {{- .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- else -}} {{- else -}}
{{- printf "%s" .Release.Name | trunc 63 | trimSuffix "-" -}} {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}} {{- end -}}
{{- end -}} {{- end -}}
{{- end -}} {{- end -}}
@ -61,10 +61,10 @@ version: {{ default .Chart.AppVersion | quote }}
app.kubernetes.io/managed-by: {{ .Release.Service }} app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end -}} {{- end -}}
{{- define "gitea.actions.labels.runner" -}} {{- define "gitea.actions.labels.actRunner" -}}
helm.sh/chart: {{ include "gitea.actions.chart" . }} helm.sh/chart: {{ include "gitea.actions.chart" . }}
app: {{ include "gitea.actions.name" . }}-runner app: {{ include "gitea.actions.name" . }}-act-runner
{{ include "gitea.actions.selectorLabels.runner" . }} {{ include "gitea.actions.selectorLabels.actRunner" . }}
app.kubernetes.io/version: {{ default .Chart.AppVersion | quote }} app.kubernetes.io/version: {{ default .Chart.AppVersion | quote }}
version: {{ default .Chart.AppVersion | quote }} version: {{ default .Chart.AppVersion | quote }}
app.kubernetes.io/managed-by: {{ .Release.Service }} app.kubernetes.io/managed-by: {{ .Release.Service }}
@ -78,8 +78,8 @@ app.kubernetes.io/name: {{ include "gitea.actions.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/instance: {{ .Release.Name }}
{{- end -}} {{- end -}}
{{- define "gitea.actions.selectorLabels.runner" -}} {{- define "gitea.actions.selectorLabels.actRunner" -}}
app.kubernetes.io/name: {{ include "gitea.actions.name" . }}-runner app.kubernetes.io/name: {{ include "gitea.actions.name" . }}-act-runner
app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/instance: {{ .Release.Name }}
{{- end -}} {{- end -}}
@ -112,8 +112,8 @@ Common create image implementation
{{/* {{/*
Create image for the Gitea Actions Act Runner Create image for the Gitea Actions Act Runner
*/}} */}}
{{- define "gitea.actions.runner.image" -}} {{- define "gitea.actions.actRunner.image" -}}
{{ include "gitea.actions.common.image" (dict "root" . "image" .Values.statefulset.runner) }} {{ include "gitea.actions.common.image" (dict "root" . "image" .Values.statefulset.actRunner) }}
{{- end -}} {{- end -}}
{{/* {{/*

View File

@ -3,13 +3,13 @@
apiVersion: v1 apiVersion: v1
kind: ConfigMap kind: ConfigMap
metadata: metadata:
name: {{ include "gitea.actions.fullname" . }}-runner-configmap name: {{ include "gitea.actions.fullname" . }}-act-runner-config
namespace: {{ .Values.namespace | default .Release.Namespace }} namespace: {{ .Values.namespace | default .Release.Namespace }}
labels: labels:
{{- include "gitea.actions.labels" . | nindent 4 }} {{- include "gitea.actions.labels" . | nindent 4 }}
data: data:
config.yaml: | config.yaml: |
{{- with .Values.statefulset.runner.config -}} {{- with .Values.statefulset.actRunner.config -}}
{{- if kindIs "string" . -}} {{- if kindIs "string" . -}}
{{ . | nindent 4}} {{ . | nindent 4}}
{{- else -}} {{- else -}}

View File

@ -5,7 +5,7 @@ apiVersion: apps/v1
kind: StatefulSet kind: StatefulSet
metadata: metadata:
labels: labels:
{{- include "gitea.actions.labels.runner" . | nindent 4 }} {{- include "gitea.actions.labels.actRunner" . | nindent 4 }}
{{- with .Values.statefulset.labels }} {{- with .Values.statefulset.labels }}
{{- toYaml . | nindent 4 }} {{- toYaml . | nindent 4 }}
{{- end }} {{- end }}
@ -13,19 +13,19 @@ metadata:
{{- with .Values.statefulset.annotations }} {{- with .Values.statefulset.annotations }}
{{- toYaml . | nindent 4 }} {{- toYaml . | nindent 4 }}
{{- end }} {{- end }}
name: {{ include "gitea.actions.fullname" . }}-runner name: {{ include "gitea.actions.fullname" . }}-act-runner
namespace: {{ .Values.namespace | default .Release.Namespace }} namespace: {{ .Values.namespace | default .Release.Namespace }}
spec: spec:
replicas: {{ .Values.statefulset.replicas | default 1 }} replicas: {{ .Values.statefulset.replicas | default 1 }}
selector: selector:
matchLabels: matchLabels:
{{- include "gitea.actions.selectorLabels.runner" . | nindent 6 }} {{- include "gitea.actions.selectorLabels.actRunner" . | nindent 6 }}
template: template:
metadata: metadata:
annotations: annotations:
checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} checksum/config: {{ include (print $.Template.BasePath "/config-act-runner.yaml") . | sha256sum }}
labels: labels:
{{- include "gitea.actions.labels.runner" . | nindent 8 }} {{- include "gitea.actions.labels.actRunner" . | nindent 8 }}
{{- with .Values.statefulset.labels }} {{- with .Values.statefulset.labels }}
{{- toYaml . | nindent 8 }} {{- toYaml . | nindent 8 }}
{{- end }} {{- end }}
@ -49,7 +49,7 @@ spec:
{{- if .Values.preExtraInitContainers }} {{- if .Values.preExtraInitContainers }}
{{- toYaml .Values.preExtraInitContainers | nindent 8 }} {{- toYaml .Values.preExtraInitContainers | nindent 8 }}
{{- end }} {{- end }}
{{- if .Values.statefulset.runner.flushCache }} {{- if .Values.statefulset.actRunner.flushCache }}
- name: cache-flusher - name: cache-flusher
image: "{{ include "gitea.actions.init.image" . }}" image: "{{ include "gitea.actions.init.image" . }}"
command: command:
@ -64,23 +64,16 @@ spec:
fi fi
volumeMounts: volumeMounts:
- mountPath: /data - mountPath: /data
name: data-runner name: data-act-runner
{{- end }} {{- end }}
- name: reach-gitea - name: init-gitea
image: "{{ include "gitea.actions.init.image" . }}" image: "{{ include "gitea.actions.init.image" . }}"
command: command:
- sh - sh
- -c - -c
- | - |
{{- if .Values.init.preConnectionCommandOverride }}
{{ .Values.init.preConnectionCommandOverride }}
{{- end }}
echo 'Trying to reach Gitea on {{ include "gitea.actions.local_root_url" . }}' echo 'Trying to reach Gitea on {{ include "gitea.actions.local_root_url" . }}'
{{- if .Values.init.connectionCommandOverride }}
until timeout 10 {{ .Values.init.connectionCommandOverride }} {{ include "gitea.actions.local_root_url" . }}; do
{{- else }}
until timeout 10 wget --no-check-certificate --spider {{ include "gitea.actions.local_root_url" . }}; do until timeout 10 wget --no-check-certificate --spider {{ include "gitea.actions.local_root_url" . }}; do
{{- end }}
sleep 3 sleep 3
echo "Trying again in 3 seconds..." echo "Trying again in 3 seconds..."
done done
@ -135,9 +128,9 @@ spec:
{{- toYaml .Values.postExtraInitContainers | nindent 8 }} {{- toYaml .Values.postExtraInitContainers | nindent 8 }}
{{- end }} {{- end }}
containers: containers:
- name: runner - name: act-runner
image: "{{ include "gitea.actions.runner.image" . }}" image: "{{ include "gitea.actions.actRunner.image" . }}"
imagePullPolicy: {{ .Values.statefulset.runner.pullPolicy }} imagePullPolicy: {{ .Values.statefulset.actRunner.pullPolicy }}
workingDir: /data workingDir: /data
env: env:
- name: GITEA_RUNNER_REGISTRATION_TOKEN - name: GITEA_RUNNER_REGISTRATION_TOKEN
@ -148,24 +141,24 @@ spec:
- name: GITEA_INSTANCE_URL - name: GITEA_INSTANCE_URL
value: {{ include "gitea.actions.local_root_url" . }} value: {{ include "gitea.actions.local_root_url" . }}
- name: CONFIG_FILE - name: CONFIG_FILE
value: /runner/config.yaml value: /actrunner/config.yaml
- name: TZ - name: TZ
value: {{ .Values.statefulset.timezone | default "Etc/UTC" }} value: {{ .Values.statefulset.timezone | default "Etc/UTC" }}
{{- if .Values.statefulset.runner.extraEnvs }} {{- if .Values.statefulset.actRunner.extraEnvs }}
{{- toYaml .Values.statefulset.runner.extraEnvs | nindent 12 }} {{- toYaml .Values.statefulset.actRunner.extraEnvs | nindent 12 }}
{{- end }} {{- end }}
resources: resources:
{{- toYaml .Values.statefulset.resources | nindent 12 }} {{- toYaml .Values.statefulset.resources | nindent 12 }}
volumeMounts: volumeMounts:
- mountPath: /runner/config.yaml - mountPath: /actrunner/config.yaml
name: runner-config name: act-runner-config
subPath: config.yaml subPath: config.yaml
- mountPath: /var/run/docker.sock - mountPath: /var/run/docker.sock
name: docker-socket name: docker-socket
subPath: docker.sock subPath: docker.sock
- mountPath: /data - mountPath: /data
name: data-runner name: data-act-runner
{{- with .Values.statefulset.runner.extraVolumeMounts }} {{- with .Values.statefulset.actRunner.extraVolumeMounts }}
{{- toYaml . | nindent 12 }} {{- toYaml . | nindent 12 }}
{{- end }} {{- end }}
{{- if .Values.global.imagePullSecrets }} {{- if .Values.global.imagePullSecrets }}
@ -187,9 +180,9 @@ spec:
{{- toYaml . | nindent 8 }} {{- toYaml . | nindent 8 }}
{{- end }} {{- end }}
volumes: volumes:
- name: runner-config - name: act-runner-config
configMap: configMap:
name: {{ include "gitea.actions.fullname" . }}-runner-configmap name: {{ include "gitea.actions.fullname" . }}-act-runner-config
- name: docker-socket - name: docker-socket
emptyDir: {} emptyDir: {}
{{- with .Values.statefulset.extraVolumes }} {{- with .Values.statefulset.extraVolumes }}
@ -197,7 +190,7 @@ spec:
{{- end }} {{- end }}
volumeClaimTemplates: volumeClaimTemplates:
- metadata: - metadata:
name: data-runner name: data-act-runner
spec: spec:
accessModes: [ "ReadWriteOnce" ] accessModes: [ "ReadWriteOnce" ]
{{- include "gitea.actions.persistence.storageClass" . | indent 8 }} {{- include "gitea.actions.persistence.storageClass" . | indent 8 }}

View File

@ -1,22 +1,22 @@
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json # yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
suite: actions template | configmap suite: actions template | config-act-runner
release: release:
name: gitea-actions-unittests name: gitea-actions-unittests
namespace: testing namespace: testing
templates: templates:
- templates/configmap.yaml - templates/config-act-runner.yaml
tests: tests:
- it: doesn't renders a ConfigMap by default - it: doesn't renders a ConfigMap by default
template: templates/configmap.yaml template: templates/config-act-runner.yaml
asserts: asserts:
- hasDocuments: - hasDocuments:
count: 0 count: 0
- it: renders a ConfigMap - it: renders a ConfigMap
template: templates/configmap.yaml template: templates/config-act-runner.yaml
set: set:
enabled: true enabled: true
statefulset: statefulset:
runner: actRunner:
config: | config: |
log: log:
level: info level: info
@ -31,7 +31,7 @@ tests:
- containsDocument: - containsDocument:
kind: ConfigMap kind: ConfigMap
apiVersion: v1 apiVersion: v1
name: gitea-actions-unittests-runner-configmap name: gitea-actions-unittests-act-runner-config
- equal: - equal:
path: data["config.yaml"] path: data["config.yaml"]
value: | value: |
@ -43,11 +43,11 @@ tests:
labels: labels:
- "ubuntu-latest" - "ubuntu-latest"
- it: renders a ConfigMap with inline yaml - it: renders a ConfigMap with inline yaml
template: templates/configmap.yaml template: templates/config-act-runner.yaml
set: set:
enabled: true enabled: true
statefulset: statefulset:
runner: actRunner:
config: | config: |
container: container:
valid_volumes: valid_volumes:
@ -59,7 +59,7 @@ tests:
- containsDocument: - containsDocument:
kind: ConfigMap kind: ConfigMap
apiVersion: v1 apiVersion: v1
name: gitea-actions-unittests-runner-configmap name: gitea-actions-unittests-act-runner-config
- matchRegex: - matchRegex:
path: data["config.yaml"] path: data["config.yaml"]
pattern: '(?m)^\s*options:\s*-v /var/run/docker.sock:/var/run/docker.sock\s*$' pattern: '(?m)^\s*options:\s*-v /var/run/docker.sock:/var/run/docker.sock\s*$'

View File

@ -4,7 +4,7 @@ release:
namespace: testing namespace: testing
templates: templates:
- templates/statefulset.yaml - templates/statefulset.yaml
- templates/configmap.yaml - templates/config-act-runner.yaml
tests: tests:
# #
## GENERIC ## GENERIC
@ -27,10 +27,10 @@ tests:
- containsDocument: - containsDocument:
kind: StatefulSet kind: StatefulSet
apiVersion: apps/v1 apiVersion: apps/v1
name: gitea-actions-unittests-runner name: gitea-actions-unittests-act-runner
- equal: - equal:
path: spec.template.metadata.annotations["checksum/config"] path: spec.template.metadata.annotations["checksum/config"]
value: "83e4d1bb70cc2a861cd18fdb42537e700d4055d431713e64e28c3874c5660097" value: "368836e4e5d947f06f2d65c7cc3fc3ad050aaced506443f54a8ffc17bb11afd2"
- it: Has fsGroup in securityContext - it: Has fsGroup in securityContext
template: templates/statefulset.yaml template: templates/statefulset.yaml
@ -44,7 +44,7 @@ tests:
- containsDocument: - containsDocument:
kind: StatefulSet kind: StatefulSet
apiVersion: apps/v1 apiVersion: apps/v1
name: gitea-actions-unittests-runner name: gitea-actions-unittests-act-runner
- equal: - equal:
path: spec.template.spec.securityContext["fsGroup"] path: spec.template.spec.securityContext["fsGroup"]
value: 1000 value: 1000
@ -61,7 +61,7 @@ tests:
- containsDocument: - containsDocument:
kind: StatefulSet kind: StatefulSet
apiVersion: apps/v1 apiVersion: apps/v1
name: gitea-actions-unittests-runner name: gitea-actions-unittests-act-runner
- equal: - equal:
path: spec.template.spec.securityContext["fsGroupChangePolicy"] path: spec.template.spec.securityContext["fsGroupChangePolicy"]
value: "OnRootMismatch" value: "OnRootMismatch"
@ -78,7 +78,7 @@ tests:
- containsDocument: - containsDocument:
kind: StatefulSet kind: StatefulSet
apiVersion: apps/v1 apiVersion: apps/v1
name: gitea-actions-unittests-runner name: gitea-actions-unittests-act-runner
- equal: - equal:
path: spec.template.spec.securityContext["fsGroupChangePolicy"] path: spec.template.spec.securityContext["fsGroupChangePolicy"]
value: "Always" value: "Always"
@ -95,7 +95,7 @@ tests:
- containsDocument: - containsDocument:
kind: StatefulSet kind: StatefulSet
apiVersion: apps/v1 apiVersion: apps/v1
name: gitea-actions-unittests-runner name: gitea-actions-unittests-act-runner
- equal: - equal:
path: spec.template.spec.containers[0].env[0] path: spec.template.spec.containers[0].env[0]
value: value:
@ -116,7 +116,7 @@ tests:
- containsDocument: - containsDocument:
kind: StatefulSet kind: StatefulSet
apiVersion: apps/v1 apiVersion: apps/v1
name: gitea-actions-unittests-runner name: gitea-actions-unittests-act-runner
- equal: - equal:
path: spec.template.spec.containers[0].env[1] path: spec.template.spec.containers[0].env[1]
value: value:
@ -143,7 +143,7 @@ tests:
- containsDocument: - containsDocument:
kind: StatefulSet kind: StatefulSet
apiVersion: apps/v1 apiVersion: apps/v1
name: gitea-actions-unittests-runner name: gitea-actions-unittests-act-runner
- equal: - equal:
path: spec.template.spec.containers[0].env[1] path: spec.template.spec.containers[0].env[1]
value: value:
@ -170,7 +170,7 @@ tests:
- containsDocument: - containsDocument:
kind: StatefulSet kind: StatefulSet
apiVersion: apps/v1 apiVersion: apps/v1
name: gitea-actions-unittests-runner name: gitea-actions-unittests-act-runner
- equal: - equal:
path: spec.template.spec.containers[0].env[1] path: spec.template.spec.containers[0].env[1]
value: value:
@ -225,65 +225,65 @@ tests:
value: "test-storageclass" value: "test-storageclass"
# #
## GITEA_RUNNER ## ACT_RUNNER
# #
- it: act-runner uses fullOverride - it: act-runner uses fullOverride
template: templates/statefulset.yaml template: templates/statefulset.yaml
set: set:
enabled: true enabled: true
statefulset.runner.fullOverride: test.io/runner:x.y.z statefulset.actRunner.fullOverride: test.io/act_runner:x.y.z
asserts: asserts:
- hasDocuments: - hasDocuments:
count: 1 count: 1
- containsDocument: - containsDocument:
kind: StatefulSet kind: StatefulSet
apiVersion: apps/v1 apiVersion: apps/v1
name: gitea-actions-unittests-runner name: gitea-actions-unittests-act-runner
- equal: - equal:
path: spec.template.spec.containers[0].image path: spec.template.spec.containers[0].image
value: test.io/runner:x.y.z value: test.io/act_runner:x.y.z
- it: act-runner uses digest - it: act-runner uses digest
template: templates/statefulset.yaml template: templates/statefulset.yaml
set: set:
enabled: true enabled: true
statefulset.runner.tag: 1.0.4 statefulset.actRunner.tag: 0.3.1
statefulset.runner.digest: sha256:abcdef123456 statefulset.actRunner.digest: sha256:abcdef123456
asserts: asserts:
- hasDocuments: - hasDocuments:
count: 1 count: 1
- containsDocument: - containsDocument:
kind: StatefulSet kind: StatefulSet
apiVersion: apps/v1 apiVersion: apps/v1
name: gitea-actions-unittests-runner name: gitea-actions-unittests-act-runner
- equal: - equal:
path: spec.template.spec.containers[0].image path: spec.template.spec.containers[0].image
value: docker.gitea.com/runner:1.0.4@sha256:abcdef123456 value: docker.gitea.com/act_runner:0.3.1@sha256:abcdef123456
- it: act-runner uses global.imageRegistry - it: act-runner uses global.imageRegistry
template: templates/statefulset.yaml template: templates/statefulset.yaml
set: set:
enabled: true enabled: true
global.imageRegistry: test.io global.imageRegistry: test.io
statefulset.runner.tag: 1.0.4 statefulset.actRunner.tag: 0.3.1
asserts: asserts:
- hasDocuments: - hasDocuments:
count: 1 count: 1
- containsDocument: - containsDocument:
kind: StatefulSet kind: StatefulSet
apiVersion: apps/v1 apiVersion: apps/v1
name: gitea-actions-unittests-runner name: gitea-actions-unittests-act-runner
- equal: - equal:
path: spec.template.spec.containers[0].image path: spec.template.spec.containers[0].image
value: test.io/runner:1.0.4 value: test.io/act_runner:0.3.1
- it: renders additional environment variables for act-runner container in StatefulSet - it: renders additional environment variables for act-runner container in StatefulSet
template: templates/statefulset.yaml template: templates/statefulset.yaml
set: set:
enabled: true enabled: true
statefulset: statefulset:
runner: actRunner:
extraEnvs: extraEnvs:
- name: "CUSTOM_ENV" - name: "CUSTOM_ENV"
value: "1" value: "1"
@ -297,7 +297,7 @@ tests:
- containsDocument: - containsDocument:
kind: StatefulSet kind: StatefulSet
apiVersion: apps/v1 apiVersion: apps/v1
name: gitea-actions-unittests-runner name: gitea-actions-unittests-act-runner
- equal: - equal:
path: spec.template.spec.containers[0].env[4] path: spec.template.spec.containers[0].env[4]
value: value:
@ -318,7 +318,7 @@ tests:
extraVolumes: extraVolumes:
- name: my-act-runner-volume - name: my-act-runner-volume
emptyDir: {} emptyDir: {}
runner: actRunner:
extraVolumeMounts: extraVolumeMounts:
- mountPath: /mnt - mountPath: /mnt
name: my-act-runner-volume name: my-act-runner-volume
@ -328,7 +328,7 @@ tests:
- containsDocument: - containsDocument:
kind: StatefulSet kind: StatefulSet
apiVersion: apps/v1 apiVersion: apps/v1
name: gitea-actions-unittests-runner name: gitea-actions-unittests-act-runner
- contains: - contains:
any: true any: true
path: spec.template.spec.containers[0].volumeMounts path: spec.template.spec.containers[0].volumeMounts
@ -351,7 +351,7 @@ tests:
- containsDocument: - containsDocument:
kind: StatefulSet kind: StatefulSet
apiVersion: apps/v1 apiVersion: apps/v1
name: gitea-actions-unittests-runner name: gitea-actions-unittests-act-runner
- equal: - equal:
path: spec.template.spec.initContainers[1].image path: spec.template.spec.initContainers[1].image
value: test.io/dind:x.y.z value: test.io/dind:x.y.z
@ -368,7 +368,7 @@ tests:
- containsDocument: - containsDocument:
kind: StatefulSet kind: StatefulSet
apiVersion: apps/v1 apiVersion: apps/v1
name: gitea-actions-unittests-runner name: gitea-actions-unittests-act-runner
- equal: - equal:
path: spec.template.spec.initContainers[1].image path: spec.template.spec.initContainers[1].image
value: test.io/docker:28.3.3-dind value: test.io/docker:28.3.3-dind
@ -407,7 +407,7 @@ tests:
- containsDocument: - containsDocument:
kind: StatefulSet kind: StatefulSet
apiVersion: apps/v1 apiVersion: apps/v1
name: gitea-actions-unittests-runner name: gitea-actions-unittests-act-runner
- contains: - contains:
any: true any: true
path: spec.template.spec.initContainers[1].volumeMounts path: spec.template.spec.initContainers[1].volumeMounts
@ -430,7 +430,7 @@ tests:
- containsDocument: - containsDocument:
kind: StatefulSet kind: StatefulSet
apiVersion: apps/v1 apiVersion: apps/v1
name: gitea-actions-unittests-runner name: gitea-actions-unittests-act-runner
- equal: - equal:
path: spec.template.spec.initContainers[0].image path: spec.template.spec.initContainers[0].image
value: test.io/busybox:x.y.z value: test.io/busybox:x.y.z
@ -447,7 +447,7 @@ tests:
- containsDocument: - containsDocument:
kind: StatefulSet kind: StatefulSet
apiVersion: apps/v1 apiVersion: apps/v1
name: gitea-actions-unittests-runner name: gitea-actions-unittests-act-runner
- equal: - equal:
path: spec.template.spec.initContainers[0].image path: spec.template.spec.initContainers[0].image
value: test.io/busybox:1.37.0 value: test.io/busybox:1.37.0

View File

@ -1,34 +1,34 @@
# Configure Gitea Actions # Configure Gitea Actions
## @section Gitea Actions ## @section Gitea Actions
# #
## @param enabled Create a Gitea Runner StatefulSet. ## @param enabled Create an act runner StatefulSet.
## @param statefulset.replicas the amount of (replica) runner pods deployed ## @param statefulset.replicas the amount of (replica) runner pods deployed
## @param statefulset.timezone is the timezone that will be set in the runner image ## @param statefulset.timezone is the timezone that will be set in the act_runner image
## @param statefulset.annotations Gitea Runner annotations ## @param statefulset.annotations Act runner annotations
## @param statefulset.labels Gitea Runner labels ## @param statefulset.labels Act runner labels
## @param statefulset.resources Gitea Runner resources ## @param statefulset.resources Act runner resources
## @param statefulset.nodeSelector NodeSelector for the statefulset ## @param statefulset.nodeSelector NodeSelector for the statefulset
## @param statefulset.tolerations Tolerations for the statefulset ## @param statefulset.tolerations Tolerations for the statefulset
## @param statefulset.affinity Affinity for the statefulset ## @param statefulset.affinity Affinity for the statefulset
## @param statefulset.extraVolumes Extra volumes for the statefulset ## @param statefulset.extraVolumes Extra volumes for the statefulset
## @param statefulset.persistence.size Size for persistence to store Gitea Runner data ## @param statefulset.persistence.size Size for persistence to store act runner data
## @param statefulset.securityContext Customize the SecurityContext ## @param statefulset.securityContext Customize the SecurityContext
## @param statefulset.serviceAccountName Customize the service account name ## @param statefulset.serviceAccountName Customize the service account name
## @param statefulset.runtimeClassName Select a different RuntimeClass for pods ## @param statefulset.runtimeClassName Select a different RuntimeClass for pods
## @param statefulset.hostAliases Inject entries into the /etc/hosts file ## @param statefulset.hostAliases Inject entries into the /etc/hosts file
# #
## @param statefulset.persistence.size Size for persistence to store Gitea Runner data ## @param statefulset.persistence.size Size for persistence to store act runner data
# #
## @param statefulset.runner.registry image registry, e.g. gcr.io,docker.io ## @param statefulset.actRunner.registry image registry, e.g. gcr.io,docker.io
## @param statefulset.runner.repository The Gitea Runner image ## @param statefulset.actRunner.repository The Gitea act runner image
## @param statefulset.runner.tag The Gitea Runner tag ## @param statefulset.actRunner.tag The Gitea act 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.actRunner.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.actRunner.pullPolicy The Gitea act runner pullPolicy
## @param statefulset.runner.fullOverride Completely overrides the image registry, path/image, tag and digest. ## @param statefulset.actRunner.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.actRunner.extraVolumeMounts Allows mounting extra volumes in the act runner container
## @param statefulset.runner.extraEnvs Allows adding custom environment variables ## @param statefulset.actRunner.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.actRunner.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.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.dind.rootless [default: false] a simple flag to let helm know we are dealing with a rootless dind container ## @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 ## @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,10 +68,10 @@ statefulset:
persistence: persistence:
size: 1Gi size: 1Gi
runner: actRunner:
registry: "docker.gitea.com" registry: "docker.gitea.com"
repository: runner repository: act_runner
tag: 1.0.6 tag: 0.4.1
digest: "" digest: ""
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
fullOverride: "" fullOverride: ""
@ -85,7 +85,7 @@ statefulset:
# See full details: https://gitea.com/gitea/helm-actions/issues/73 # See full details: https://gitea.com/gitea/helm-actions/issues/73
flushCache: false flushCache: false
# See full example here: https://gitea.com/gitea/runner/src/branch/main/internal/pkg/config/config.example.yaml # See full example here: https://gitea.com/gitea/act_runner/src/branch/main/internal/pkg/config/config.example.yaml
config: | config: |
log: log:
level: debug level: debug
@ -100,7 +100,7 @@ statefulset:
uid: "" uid: ""
registry: "docker.io" registry: "docker.io"
repository: docker repository: docker
tag: 29.5.2-dind tag: 29.4.0-dind
digest: "" digest: ""
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
fullOverride: "" fullOverride: ""
@ -121,28 +121,22 @@ statefulset:
## @section Gitea Actions Init ## @section Gitea Actions Init
# #
## @param init.image.registry Image registry, e.g. gcr.io,docker.io ## @param init.image.registry image registry, e.g. gcr.io,docker.io
## @param init.image.repository The init image (default: busyboxy but can be changed to alpine e.g.) ## @param init.image.repository The init image
## @param init.image.tag The init image tag ## @param init.image.tag the init image tag
## @param init.image.digest Image digest. Allows to pin the given image tag. Useful for having control over mutable tags like `latest` ## @param init.image.digest Image digest. Allows to pin the given image tag. Useful for having control over mutable tags like `latest`
## @param init.image.pullPolicy The init image pullPolicy ## @param init.image.pullPolicy The init image pullPolicy
## @param init.image.fullOverride Completely overrides the image registry, path/image, tag and digest ## @param init.image.fullOverride Completely overrides the image registry, path/image, tag and digest.
#
## @param init.connectionCommandOverride Possiblity to change the command with which the container tests its connection to the Gitea server
## @param init.preConnectionCommandOverride Possibility to add commands that happen before the connection test loop
init: init:
image: image:
registry: "" registry: ""
repository: busybox repository: busybox
# Overrides the image tag whose default is the chart appVersion. # Overrides the image tag whose default is the chart appVersion.
tag: "1.38.0" tag: "1.37.0"
digest: "" digest: ""
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
fullOverride: "" fullOverride: ""
connectionCommandOverride: ""
preConnectionCommandOverride: ""
## @section Runner Token Secret Configuration ## @section Runner Token Secret Configuration
# #
## @param existingSecret Secret that contains the token ## @param existingSecret Secret that contains the token
@ -152,7 +146,7 @@ existingSecretKey: ""
## @section Gitea URL Setting ## @section Gitea URL Setting
# #
## @param giteaRootURL URL the Gitea Runner registers and connects with ## @param giteaRootURL URL the act_runner registers and connect with
giteaRootURL: "" giteaRootURL: ""
## @section Extra Init Containers ## @section Extra Init Containers