Compare commits
12 Commits
526fc6dfec
...
generic-de
| Author | SHA1 | Date | |
|---|---|---|---|
| 7c8145f741 | |||
|
c2ef2a6e0b
|
|||
| 0fda9c9db4 | |||
| 0765ad2336 | |||
| fb667e69bd | |||
|
577d6d9288
|
|||
| 83f23d6f4a | |||
| ef6c469f6c | |||
| 28e6783d73 | |||
| f7b6037ffc | |||
|
3941d174a8
|
|||
| f693b7f16f |
@@ -17,7 +17,63 @@ env:
|
|||||||
BASE_BRANCH: "origin/${{ gitea.base_ref }}"
|
BASE_BRANCH: "origin/${{ gitea.base_ref }}"
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
lint-test:
|
chart-testing:
|
||||||
|
runs-on: ubuntu-js
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v6
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Set up Helm
|
||||||
|
uses: azure/setup-helm@v4
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.GITEA_TOKEN }}
|
||||||
|
version: v3.19.2
|
||||||
|
|
||||||
|
- name: Set up Node.js
|
||||||
|
uses: actions/setup-node@v6
|
||||||
|
with:
|
||||||
|
node-version: '24'
|
||||||
|
|
||||||
|
- name: Set up Python
|
||||||
|
uses: actions/setup-python@v6
|
||||||
|
with:
|
||||||
|
python-version: '3.14'
|
||||||
|
|
||||||
|
- name: Set up Chart Testing
|
||||||
|
uses: helm/chart-testing-action@v2.7.0
|
||||||
|
with:
|
||||||
|
yamale_version: "6.0.0"
|
||||||
|
|
||||||
|
- name: Run Chart Testing (list-changed)
|
||||||
|
id: list-changed
|
||||||
|
run: |
|
||||||
|
changed=$(ct list-changed --target-branch ${{ gitea.event.repository.default_branch }})
|
||||||
|
if [[ -n "$changed" ]]; then
|
||||||
|
echo "changed=true" >> $GITHUB_OUTPUT
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Run Chart Testing (lint)
|
||||||
|
if: steps.list-changed.outputs.changed == 'true'
|
||||||
|
run: ct lint --validate-maintainers=false --target-branch ${{ gitea.event.repository.default_branch }}
|
||||||
|
|
||||||
|
- name: ntfy Failed
|
||||||
|
uses: niniyas/ntfy-action@master
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
url: '${{ secrets.NTFY_URL }}'
|
||||||
|
topic: '${{ secrets.NTFY_TOPIC }}'
|
||||||
|
title: 'Test Failure - Helm Charts'
|
||||||
|
priority: 3
|
||||||
|
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
|
||||||
|
tags: action,failed
|
||||||
|
details: 'Tests have failed for Helm Charts'
|
||||||
|
icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png'
|
||||||
|
actions: '[{"action": "view", "label": "Open Gitea", "url": "https://gitea.alexlebens.dev/alexlebens/helm-charts/actions?workflow=lint-test.yaml", "clear": true}]'
|
||||||
|
image: true
|
||||||
|
|
||||||
|
lint-helm:
|
||||||
runs-on: ubuntu-js
|
runs-on: ubuntu-js
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
@@ -36,7 +92,13 @@ jobs:
|
|||||||
id: branch-exists
|
id: branch-exists
|
||||||
if: github.event_name == 'push' || steps.check-branch-exists.outputs.exists == 'true' && github.event_name == 'pull_request'
|
if: github.event_name == 'push' || steps.check-branch-exists.outputs.exists == 'true' && github.event_name == 'pull_request'
|
||||||
run: |
|
run: |
|
||||||
echo ">> Branch ${{ gitea.base_ref }} exists, will continue with linting"
|
if [ ${{ github.event_name == 'push' }} ]; then
|
||||||
|
echo ">> Action is from a push event, will continue with linting"
|
||||||
|
|
||||||
|
else
|
||||||
|
echo ">> Branch ${{ gitea.base_ref }} exists, will continue with linting"
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
echo "----"
|
echo "----"
|
||||||
|
|
||||||
@@ -44,20 +106,11 @@ jobs:
|
|||||||
|
|
||||||
- name: Set up Helm
|
- name: Set up Helm
|
||||||
uses: azure/setup-helm@v4
|
uses: azure/setup-helm@v4
|
||||||
|
if: steps.branch-exists.outputs.exists == 'true'
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.GITEA_TOKEN }}
|
token: ${{ secrets.GITEA_TOKEN }}
|
||||||
version: v3
|
version: v3
|
||||||
|
|
||||||
- name: Set up Python
|
|
||||||
uses: actions/setup-python@v6
|
|
||||||
with:
|
|
||||||
python-version: '3.14'
|
|
||||||
|
|
||||||
- name: Set up Chart Testing
|
|
||||||
uses: helm/chart-testing-action@v2.8.0
|
|
||||||
with:
|
|
||||||
yamale_version: "6.0.0"
|
|
||||||
|
|
||||||
- name: Check Directories for Changes
|
- name: Check Directories for Changes
|
||||||
id: check-dir-changes
|
id: check-dir-changes
|
||||||
if: steps.branch-exists.outputs.exists == 'true'
|
if: steps.branch-exists.outputs.exists == 'true'
|
||||||
@@ -83,6 +136,7 @@ jobs:
|
|||||||
|
|
||||||
for path in $GIT_DIFF; do
|
for path in $GIT_DIFF; do
|
||||||
CHANGED_CHARTS+=$(echo "$path" | awk -F '/' '{print $2}')
|
CHANGED_CHARTS+=$(echo "$path" | awk -F '/' '{print $2}')
|
||||||
|
CHANGED_CHARTS+=$(echo " ")
|
||||||
done
|
done
|
||||||
|
|
||||||
else
|
else
|
||||||
@@ -94,13 +148,13 @@ jobs:
|
|||||||
if [ -n "${CHANGED_CHARTS}" ]; then
|
if [ -n "${CHANGED_CHARTS}" ]; then
|
||||||
echo ""
|
echo ""
|
||||||
echo ">> Chart to Lint:"
|
echo ">> Chart to Lint:"
|
||||||
echo "$(echo "${CHANGED_CHARTS[@]}" | sort -u)"
|
echo "$(echo "${CHANGED_CHARTS}" | sort -u)"
|
||||||
|
|
||||||
echo "----"
|
echo "----"
|
||||||
|
|
||||||
echo "changes-detected=true" >> $GITEA_OUTPUT
|
echo "changes-detected=true" >> $GITEA_OUTPUT
|
||||||
echo "chart-dir<<EOF" >> $GITEA_OUTPUT
|
echo "chart-dir<<EOF" >> $GITEA_OUTPUT
|
||||||
echo "$(echo "${CHANGED_CHARTS[@]}" | sort -u)" >> $GITEA_OUTPUT
|
echo "$(echo "${CHANGED_CHARTS}" | sort -u)" >> $GITEA_OUTPUT
|
||||||
echo "EOF" >> $GITEA_OUTPUT
|
echo "EOF" >> $GITEA_OUTPUT
|
||||||
else
|
else
|
||||||
echo "changes-detected=false" >> $GITEA_OUTPUT
|
echo "changes-detected=false" >> $GITEA_OUTPUT
|
||||||
@@ -156,18 +210,6 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
- name: Run Chart Testing (list-changed)
|
|
||||||
id: list-changed
|
|
||||||
run: |
|
|
||||||
changed=$(ct list-changed --target-branch ${{ gitea.event.repository.default_branch }})
|
|
||||||
if [[ -n "$changed" ]]; then
|
|
||||||
echo "changed=true" >> $GITHUB_OUTPUT
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Run Chart Testing (lint)
|
|
||||||
if: steps.list-changed.outputs.changed == 'true'
|
|
||||||
run: ct lint --validate-maintainers=false --target-branch ${{ gitea.event.repository.default_branch }}
|
|
||||||
|
|
||||||
- name: ntfy Failed
|
- name: ntfy Failed
|
||||||
uses: niniyas/ntfy-action@master
|
uses: niniyas/ntfy-action@master
|
||||||
if: failure()
|
if: failure()
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
apiVersion: v2
|
apiVersion: v2
|
||||||
name: generic-device-plugin
|
name: generic-device-plugin
|
||||||
version: 0.20.4
|
version: 0.20.7
|
||||||
description: Generic Device Plugin
|
description: Generic Device Plugin
|
||||||
keywords:
|
keywords:
|
||||||
- generic-device-plugin
|
- generic-device-plugin
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# generic-device-plugin
|
# generic-device-plugin
|
||||||
|
|
||||||
 
|
 
|
||||||
|
|
||||||
Generic Device Plugin
|
Generic Device Plugin
|
||||||
|
|
||||||
@@ -28,7 +28,7 @@ Generic Device Plugin
|
|||||||
| config | object | `{"data":"devices:\n - name: serial\n groups:\n - paths:\n - path: /dev/ttyUSB*\n - paths:\n - path: /dev/ttyACM*\n - paths:\n - path: /dev/tty.usb*\n - paths:\n - path: /dev/cu.*\n - paths:\n - path: /dev/cuaU*\n - paths:\n - path: /dev/rfcomm*\n - name: video\n groups:\n - paths:\n - path: /dev/video0\n - name: fuse\n groups:\n - count: 10\n paths:\n - path: /dev/fuse\n - name: audio\n groups:\n - count: 10\n paths:\n - path: /dev/snd\n - name: capture\n groups:\n - paths:\n - path: /dev/snd/controlC0\n - path: /dev/snd/pcmC0D0c\n - paths:\n - path: /dev/snd/controlC1\n mountPath: /dev/snd/controlC0\n - path: /dev/snd/pcmC1D0c\n mountPath: /dev/snd/pcmC0D0c\n - paths:\n - path: /dev/snd/controlC2\n mountPath: /dev/snd/controlC0\n - path: /dev/snd/pcmC2D0c\n mountPath: /dev/snd/pcmC0D0c\n - paths:\n - path: /dev/snd/controlC3\n mountPath: /dev/snd/controlC0\n - path: /dev/snd/pcmC3D0c\n mountPath: /dev/snd/pcmC0D0c\n","enabled":true}` | Config map |
|
| config | object | `{"data":"devices:\n - name: serial\n groups:\n - paths:\n - path: /dev/ttyUSB*\n - paths:\n - path: /dev/ttyACM*\n - paths:\n - path: /dev/tty.usb*\n - paths:\n - path: /dev/cu.*\n - paths:\n - path: /dev/cuaU*\n - paths:\n - path: /dev/rfcomm*\n - name: video\n groups:\n - paths:\n - path: /dev/video0\n - name: fuse\n groups:\n - count: 10\n paths:\n - path: /dev/fuse\n - name: audio\n groups:\n - count: 10\n paths:\n - path: /dev/snd\n - name: capture\n groups:\n - paths:\n - path: /dev/snd/controlC0\n - path: /dev/snd/pcmC0D0c\n - paths:\n - path: /dev/snd/controlC1\n mountPath: /dev/snd/controlC0\n - path: /dev/snd/pcmC1D0c\n mountPath: /dev/snd/pcmC0D0c\n - paths:\n - path: /dev/snd/controlC2\n mountPath: /dev/snd/controlC0\n - path: /dev/snd/pcmC2D0c\n mountPath: /dev/snd/pcmC0D0c\n - paths:\n - path: /dev/snd/controlC3\n mountPath: /dev/snd/controlC0\n - path: /dev/snd/pcmC3D0c\n mountPath: /dev/snd/pcmC0D0c\n","enabled":true}` | Config map |
|
||||||
| config.data | string | See [values.yaml](./values.yaml) | generic-device-plugin config file [[ref]](https://github.com/squat/generic-device-plugin#usage) |
|
| config.data | string | See [values.yaml](./values.yaml) | generic-device-plugin config file [[ref]](https://github.com/squat/generic-device-plugin#usage) |
|
||||||
| deviceDomain | string | `"devic.es"` | Domain used by devices for identifcation |
|
| deviceDomain | string | `"devic.es"` | Domain used by devices for identifcation |
|
||||||
| image | object | `{"pullPolicy":"Always","repository":"ghcr.io/squat/generic-device-plugin","tag":"latest@sha256:4896ffd516624d6eb7572e102bc4397e91f8bc3b2fb38b5bfefd758baae3dcf2"}` | Default image |
|
| image | object | `{"pullPolicy":"Always","repository":"ghcr.io/squat/generic-device-plugin","tag":"latest@sha256:a8482160f4ef7a52fb3aff05f8ba8e71b7e3974fc9929cb629d615149358c036"}` | Default image |
|
||||||
| name | string | `"generic-device-plugin"` | Name override of release |
|
| name | string | `"generic-device-plugin"` | Name override of release |
|
||||||
| resources | object | `{"requests":{"cpu":"50m","memory":"10Mi"}}` | Default resources |
|
| resources | object | `{"requests":{"cpu":"50m","memory":"10Mi"}}` | Default resources |
|
||||||
| service | object | `{"listenPort":8080}` | Service port |
|
| service | object | `{"listenPort":8080}` | Service port |
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ name: generic-device-plugin
|
|||||||
# -- Default image
|
# -- Default image
|
||||||
image:
|
image:
|
||||||
repository: ghcr.io/squat/generic-device-plugin
|
repository: ghcr.io/squat/generic-device-plugin
|
||||||
tag: latest@sha256:4896ffd516624d6eb7572e102bc4397e91f8bc3b2fb38b5bfefd758baae3dcf2
|
tag: latest@sha256:aa0571c7f461fb99747ada00f2de69eb856dcbbc0e87965fffe37a15f7bc006f
|
||||||
pullPolicy: Always
|
pullPolicy: Always
|
||||||
|
|
||||||
# -- Domain used by devices for identifcation
|
# -- Domain used by devices for identifcation
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
apiVersion: v2
|
apiVersion: v2
|
||||||
name: postgres-cluster
|
name: postgres-cluster
|
||||||
version: 6.16.1
|
version: 6.17.1
|
||||||
description: Cloudnative-pg Cluster
|
description: Cloudnative-pg Cluster
|
||||||
keywords:
|
keywords:
|
||||||
- database
|
- database
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# postgres-cluster
|
# postgres-cluster
|
||||||
|
|
||||||
 
|
 
|
||||||
|
|
||||||
Cloudnative-pg Cluster
|
Cloudnative-pg Cluster
|
||||||
|
|
||||||
@@ -62,7 +62,7 @@ Cloudnative-pg Cluster
|
|||||||
| nameOverride | string | `""` | Override the name of the cluster |
|
| nameOverride | string | `""` | Override the name of the cluster |
|
||||||
| namespaceOverride | string | `""` | Override the namespace of the chart |
|
| namespaceOverride | string | `""` | Override the namespace of the chart |
|
||||||
| poolers | list | `[]` | List of PgBouncer poolers |
|
| poolers | list | `[]` | List of PgBouncer poolers |
|
||||||
| recovery | object | `{"backup":{"backupName":"","database":"app","owner":"","pitrTarget":{"time":""}},"import":{"databases":[],"pgDumpExtraOptions":[],"pgRestoreExtraOptions":[],"postImportApplicationSQL":[],"roles":[],"schemaOnly":false,"source":{"database":"app","host":"","passwordSecret":{"create":false,"key":"password","name":"","value":""},"port":5432,"sslCertSecret":{"key":"","name":""},"sslKeySecret":{"key":"","name":""},"sslMode":"verify-full","sslRootCertSecret":{"key":"","name":""},"username":"app"},"type":"microservice"},"method":"backup","objectStore":{"clusterName":"","data":{"compression":"snappy","encryption":"","jobs":1},"database":"app","destinationPath":"","endpointCA":{"create":false,"key":"","name":""},"endpointCredentials":"","endpointURL":"https://nyc3.digitaloceanspaces.com","index":1,"name":"recovery","owner":"","pitrTarget":{"time":""},"wal":{"compression":"snappy","encryption":"","maxParallel":1}},"pgBaseBackup":{"database":"app","owner":"","secret":"","source":{"database":"app","host":"","passwordSecret":{"create":false,"key":"password","name":"","value":""},"port":5432,"sslCertSecret":{"key":"","name":""},"sslKeySecret":{"key":"","name":""},"sslMode":"verify-full","sslRootCertSecret":{"key":"","name":""},"username":""}}}` | Recovery settings when booting cluster from external cluster |
|
| recovery | object | `{"backup":{"backupName":"","database":"app","owner":"","pitrTarget":{"time":""}},"import":{"databases":[],"pgDumpExtraOptions":[],"pgRestoreExtraOptions":[],"postImportApplicationSQL":[],"roles":[],"schemaOnly":false,"source":{"database":"app","host":"","passwordSecret":{"create":false,"key":"password","name":"","value":""},"port":5432,"sslCertSecret":{"key":"","name":""},"sslKeySecret":{"key":"","name":""},"sslMode":"verify-full","sslRootCertSecret":{"key":"","name":""},"username":"app"},"type":"microservice"},"method":"backup","objectStore":{"clusterName":"","data":{"compression":"snappy","encryption":"","jobs":1},"database":"app","destinationPath":"","endpointCA":{"create":false,"key":"","name":""},"endpointCredentials":"","endpointURL":"https://nyc3.digitaloceanspaces.com","index":1,"name":"recovery","owner":"","pitrTarget":{"time":""},"wal":{"compression":"snappy","encryption":"","maxParallel":1}},"pgBaseBackup":{"database":"app","owner":"","secret":"","source":{"database":"app","host":"","passwordSecret":{"create":false,"key":"password","name":"","value":""},"port":5432,"sslCertSecret":{"key":"","name":""},"sslKeySecret":{"key":"","name":""},"sslMode":"disable","sslRootCertSecret":{"key":"","name":""},"username":""}}}` | Recovery settings when booting cluster from external cluster |
|
||||||
| recovery.backup.backupName | string | `""` | Name of the backup to recover from. |
|
| recovery.backup.backupName | string | `""` | Name of the backup to recover from. |
|
||||||
| recovery.backup.database | string | `"app"` | Name of the database used by the application. Default: `app`. |
|
| recovery.backup.database | string | `"app"` | Name of the database used by the application. Default: `app`. |
|
||||||
| recovery.backup.owner | string | `""` | Name of the owner of the database in the instance to be used by applications. Defaults to the value of the `database` key. |
|
| recovery.backup.owner | string | `""` | Name of the owner of the database in the instance to be used by applications. Defaults to the value of the `database` key. |
|
||||||
@@ -103,7 +103,7 @@ Cloudnative-pg Cluster
|
|||||||
| recovery.pgBaseBackup.database | string | `"app"` | Name of the database used by the application. Default: `app`. |
|
| recovery.pgBaseBackup.database | string | `"app"` | Name of the database used by the application. Default: `app`. |
|
||||||
| recovery.pgBaseBackup.owner | string | `""` | Name of the owner of the database in the instance to be used by applications. Defaults to the value of the `database` key. |
|
| recovery.pgBaseBackup.owner | string | `""` | Name of the owner of the database in the instance to be used by applications. Defaults to the value of the `database` key. |
|
||||||
| recovery.pgBaseBackup.secret | string | `""` | Name of the secret containing the initial credentials for the owner of the user database. If empty a new secret will be created from scratch |
|
| recovery.pgBaseBackup.secret | string | `""` | Name of the secret containing the initial credentials for the owner of the user database. If empty a new secret will be created from scratch |
|
||||||
| recovery.pgBaseBackup.source | object | `{"database":"app","host":"","passwordSecret":{"create":false,"key":"password","name":"","value":""},"port":5432,"sslCertSecret":{"key":"","name":""},"sslKeySecret":{"key":"","name":""},"sslMode":"verify-full","sslRootCertSecret":{"key":"","name":""},"username":""}` | Configuration for the source database |
|
| recovery.pgBaseBackup.source | object | `{"database":"app","host":"","passwordSecret":{"create":false,"key":"password","name":"","value":""},"port":5432,"sslCertSecret":{"key":"","name":""},"sslKeySecret":{"key":"","name":""},"sslMode":"disable","sslRootCertSecret":{"key":"","name":""},"username":""}` | Configuration for the source database |
|
||||||
| recovery.pgBaseBackup.source.passwordSecret.create | bool | `false` | Whether to create a secret for the password |
|
| recovery.pgBaseBackup.source.passwordSecret.create | bool | `false` | Whether to create a secret for the password |
|
||||||
| recovery.pgBaseBackup.source.passwordSecret.key | string | `"password"` | The key in the secret containing the password |
|
| recovery.pgBaseBackup.source.passwordSecret.key | string | `"password"` | The key in the secret containing the password |
|
||||||
| recovery.pgBaseBackup.source.passwordSecret.name | string | `""` | Name of the secret containing the password |
|
| recovery.pgBaseBackup.source.passwordSecret.name | string | `""` | Name of the secret containing the password |
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ externalClusters:
|
|||||||
{{- end }}
|
{{- end }}
|
||||||
{{- if eq .Values.recovery.import.type "monolith" }}
|
{{- if eq .Values.recovery.import.type "monolith" }}
|
||||||
roles:
|
roles:
|
||||||
{{- with .Values.replica.importRoles }}
|
{{- with .Values.recovery.import.roles }}
|
||||||
{{- . | toYaml | nindent 8 }}
|
{{- . | toYaml | nindent 8 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|||||||
@@ -330,7 +330,7 @@ recovery:
|
|||||||
port: 5432
|
port: 5432
|
||||||
username: ""
|
username: ""
|
||||||
database: "app"
|
database: "app"
|
||||||
sslMode: "verify-full"
|
sslMode: "disable"
|
||||||
passwordSecret:
|
passwordSecret:
|
||||||
|
|
||||||
# -- Whether to create a secret for the password
|
# -- Whether to create a secret for the password
|
||||||
|
|||||||
Reference in New Issue
Block a user