Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
e824518a4a | ||
|
f8471dcc90 | ||
|
5707f19659 |
@ -1,58 +0,0 @@
|
|||||||
name: Package and publish helm chart
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
package-helm:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
name: Check out code
|
|
||||||
|
|
||||||
- name: Set up Helm
|
|
||||||
uses: azure/setup-helm@v4.2.0
|
|
||||||
with:
|
|
||||||
version: v3.14.4
|
|
||||||
|
|
||||||
- name: Set up yq
|
|
||||||
uses: mikefarah/yq@master
|
|
||||||
|
|
||||||
- name: Check for changed charts
|
|
||||||
id: changed-files
|
|
||||||
uses: tj-actions/changed-files@v44
|
|
||||||
with:
|
|
||||||
dir_names: true
|
|
||||||
dir_names_max_depth: '2'
|
|
||||||
files: 'charts/**'
|
|
||||||
|
|
||||||
- name: Run helm lint on all changed charts
|
|
||||||
shell: bash
|
|
||||||
env:
|
|
||||||
ALL_CHANGED_CHARTS: ${{ steps.changed-files.outputs.all_changed_files }}
|
|
||||||
run: |
|
|
||||||
REPO_PATH=$(git rev-parse --show-toplevel)
|
|
||||||
for chart in ${ALL_CHANGED_CHARTS}; do
|
|
||||||
cd ${REPO_PATH}/${chart}
|
|
||||||
helm dependency build
|
|
||||||
helm lint .
|
|
||||||
done
|
|
||||||
|
|
||||||
- name: build helm package
|
|
||||||
shell: bash
|
|
||||||
if: gitea.ref == 'refs/heads/main'
|
|
||||||
env:
|
|
||||||
PACKAGE_TOKEN: ${{ secrets.PACKAGE_TOKEN }}
|
|
||||||
CHART_NAME: ${{ steps.chart_name.outputs.result }}
|
|
||||||
CHART_VERSION: ${{ steps.chart_version.outputs.result }}
|
|
||||||
ALL_CHANGED_CHARTS: ${{ steps.changed-files.outputs.all_changed_files }}
|
|
||||||
run: |
|
|
||||||
REPO_PATH=$(git rev-parse --show-toplevel)
|
|
||||||
for chart in ${ALL_CHANGED_CHARTS}; do
|
|
||||||
cd ${REPO_PATH}/${chart}
|
|
||||||
CHART_NAME=$(yq .name Chart.yaml)
|
|
||||||
CHART_VERSION=$(yq .version Chart.yaml)
|
|
||||||
echo "Packaging ${CHART_NAME}-${CHART_VERSION}"
|
|
||||||
helm package .
|
|
||||||
curl -H "Authorization: token $PACKAGE_TOKEN" -X POST --upload-file ${CHART_NAME}-${CHART_VERSION}.tgz https://git.rre.nu/api/packages/jonas/helm/api/charts
|
|
||||||
done
|
|
40
.gitignore
vendored
40
.gitignore
vendored
@ -1,40 +0,0 @@
|
|||||||
# General files for the project
|
|
||||||
pkg/*
|
|
||||||
*.pyc
|
|
||||||
bin/*
|
|
||||||
.project
|
|
||||||
/.bin
|
|
||||||
/_test/secrets/*.json
|
|
||||||
*.tgz
|
|
||||||
Chart.lock
|
|
||||||
|
|
||||||
# OSX leaves these everywhere on SMB shares
|
|
||||||
._*
|
|
||||||
|
|
||||||
# OSX trash
|
|
||||||
.DS_Store
|
|
||||||
|
|
||||||
# Files generated by JetBrains IDEs, e.g. IntelliJ IDEA
|
|
||||||
.idea/
|
|
||||||
*.iml
|
|
||||||
|
|
||||||
# Vscode files
|
|
||||||
.vscode
|
|
||||||
|
|
||||||
# Emacs save files
|
|
||||||
*~
|
|
||||||
\#*\#
|
|
||||||
.\#*
|
|
||||||
|
|
||||||
# Vim-related files
|
|
||||||
[._]*.s[a-w][a-z]
|
|
||||||
[._]s[a-w][a-z]
|
|
||||||
*.un~
|
|
||||||
Session.vim
|
|
||||||
.netrwhist
|
|
||||||
|
|
||||||
# Chart dependencies
|
|
||||||
**/charts/*.tgz
|
|
||||||
|
|
||||||
.history
|
|
||||||
|
|
@ -8,5 +8,4 @@ repos:
|
|||||||
- id: end-of-file-fixer
|
- id: end-of-file-fixer
|
||||||
exclude: README.md$
|
exclude: README.md$
|
||||||
- id: check-yaml
|
- id: check-yaml
|
||||||
exclude: all.yaml
|
|
||||||
- id: check-added-large-files
|
- id: check-added-large-files
|
||||||
|
1
charts/.gitignore → charts/gotify/.gitignore
vendored
1
charts/.gitignore → charts/gotify/.gitignore
vendored
@ -1,3 +1,2 @@
|
|||||||
Chart.lock
|
Chart.lock
|
||||||
charts/
|
charts/
|
||||||
*.tgz
|
|
18
charts/gotify/Chart.yaml
Normal file
18
charts/gotify/Chart.yaml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v2
|
||||||
|
name: gotify
|
||||||
|
description: Gotify · a simple server for sending and receiving messages
|
||||||
|
type: application
|
||||||
|
version: 1.0.0
|
||||||
|
appVersion: 2.5.0
|
||||||
|
kubeVersion: ">=1.27.0"
|
||||||
|
home: https://gotify.net/
|
||||||
|
sources:
|
||||||
|
- https://git.rre.nu/jonas/helm-charts
|
||||||
|
maintainers:
|
||||||
|
- name: Jonas Forsberg
|
||||||
|
email: barregargamel@gmail.com
|
||||||
|
dependencies:
|
||||||
|
- name: lib
|
||||||
|
repository: "oci://repo.rre.nu/helm"
|
||||||
|
version: 1.0.2
|
91
charts/gotify/values.yaml
Normal file
91
charts/gotify/values.yaml
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
image:
|
||||||
|
repository: ghcr.io/gotify/server
|
||||||
|
gotify:
|
||||||
|
server:
|
||||||
|
keepaliveperiodseconds: 0 # 0 = use Go default (15s); -1 = disable keepalive; set the interval in which keepalive packets will be sent. Only change this value if you know what you are doing.
|
||||||
|
listenaddr: "" # the address to bind on, leave empty to bind on all addresses. Prefix with "unix:" to create a unix socket. Example: "unix:/tmp/gotify.sock".
|
||||||
|
port: 80 # the port the HTTP server will listen on
|
||||||
|
|
||||||
|
ssl:
|
||||||
|
enabled: false # if https should be enabled
|
||||||
|
redirecttohttps: true # redirect to https if site is accessed by http
|
||||||
|
listenaddr: "" # the address to bind on, leave empty to bind on all addresses. Prefix with "unix:" to create a unix socket. Example: "unix:/tmp/gotify.sock".
|
||||||
|
port: 443 # the https port
|
||||||
|
certfile: # the cert file (leave empty when using letsencrypt)
|
||||||
|
certkey: # the cert key (leave empty when using letsencrypt)
|
||||||
|
letsencrypt:
|
||||||
|
enabled: false # if the certificate should be requested from letsencrypt
|
||||||
|
accepttos: false # if you accept the tos from letsencrypt
|
||||||
|
cache: data/certs # the directory of the cache from letsencrypt
|
||||||
|
hosts: # the hosts for which letsencrypt should request certificates
|
||||||
|
# - mydomain.tld
|
||||||
|
# - myotherdomain.tld
|
||||||
|
responseheaders: # response headers are added to every response (default: none)
|
||||||
|
# X-Custom-Header: "custom value"
|
||||||
|
trustedproxies: # IPs or IP ranges of trusted proxies. Used to obtain the remote ip via the X-Forwarded-For header. (configure 127.0.0.1 to trust sockets)
|
||||||
|
# - 127.0.0.1
|
||||||
|
# - 192.168.178.0/24
|
||||||
|
# - ::1
|
||||||
|
|
||||||
|
cors: # Sets cors headers only when needed and provides support for multiple allowed origins. Overrides Access-Control-* Headers in response headers.
|
||||||
|
alloworigins:
|
||||||
|
# - ".+.example.com"
|
||||||
|
# - "otherdomain.com"
|
||||||
|
allowmethods:
|
||||||
|
# - "GET"
|
||||||
|
# - "POST"
|
||||||
|
allowheaders:
|
||||||
|
# - "Authorization"
|
||||||
|
# - "content-type"
|
||||||
|
|
||||||
|
stream:
|
||||||
|
pingperiodseconds: 45 # the interval in which websocket pings will be sent. Only change this value if you know what you are doing.
|
||||||
|
allowedorigins: # allowed origins for websocket connections (same origin is always allowed, default only same origin)
|
||||||
|
# - ".+.example.com"
|
||||||
|
# - "otherdomain.com"
|
||||||
|
database: # see below
|
||||||
|
dialect: sqlite3
|
||||||
|
connection: data/gotify.db
|
||||||
|
defaultuser: # on database creation, gotify creates an admin user (these values will only be used for the first start, if you want to edit the user after the first start use the WebUI)
|
||||||
|
name: admin # the username of the default user
|
||||||
|
pass: admin # the password of the default user
|
||||||
|
passstrength: 10 # the bcrypt password strength (higher = better but also slower)
|
||||||
|
uploadedimagesdir: data/images # the directory for storing uploaded images
|
||||||
|
pluginsdir: data/plugins # the directory where plugin resides (leave empty to disable plugins)
|
||||||
|
registration: false # enable registrations
|
||||||
|
|
||||||
|
service: # services that should be created
|
||||||
|
main:
|
||||||
|
enabled: true
|
||||||
|
type: ClusterIP
|
||||||
|
annotations: {}
|
||||||
|
labels: {}
|
||||||
|
ports:
|
||||||
|
http:
|
||||||
|
port: 80
|
||||||
|
|
||||||
|
ingress:
|
||||||
|
enabled: false
|
||||||
|
service: http # what service should the ingress target
|
||||||
|
#Service to target
|
||||||
|
servicePort: 80
|
||||||
|
className: ""
|
||||||
|
annotations:
|
||||||
|
{}
|
||||||
|
# kubernetes.io/ingress.class: nginx
|
||||||
|
# kubernetes.io/tls-acme: "true"
|
||||||
|
hosts:
|
||||||
|
- host: chart-example.local
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: ImplementationSpecific
|
||||||
|
|
||||||
|
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: http
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: http
|
@ -1,19 +0,0 @@
|
|||||||
---
|
|
||||||
apiVersion: v2
|
|
||||||
name: home-assistant
|
|
||||||
description: Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts.
|
|
||||||
type: application
|
|
||||||
version: 1.0.0
|
|
||||||
appVersion: 2024.11.1
|
|
||||||
kubeVersion: ">=1.27.0"
|
|
||||||
home: https://www.home-assistant.io/
|
|
||||||
sources:
|
|
||||||
- https://git.rre.nu/jonas/helm-charts
|
|
||||||
- https://github.com/home-assistant/core
|
|
||||||
maintainers:
|
|
||||||
- name: Jonas Forsberg
|
|
||||||
email: barregargamel@gmail.com
|
|
||||||
dependencies:
|
|
||||||
- name: lib
|
|
||||||
repository: https://git.rre.nu/api/packages/jonas/helm
|
|
||||||
version: 1.0.4
|
|
@ -1,44 +0,0 @@
|
|||||||
|
|
||||||
Home-assistant
|
|
||||||
===========
|
|
||||||
|
|
||||||
Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts.
|
|
||||||
|
|
||||||
|
|
||||||
## Configuration
|
|
||||||
|
|
||||||
The following table lists the configurable parameters of the Home-assistant chart and their default values.
|
|
||||||
|
|
||||||
| Parameter | Description | Default |
|
|
||||||
| ------------------------ | ----------------------- | -------------- |
|
|
||||||
| `image.repository` | | `"ghcr.io/home-assistant/home-assistant"` |
|
|
||||||
| `image.tag` | | `null` |
|
|
||||||
| `controller.enabled` | should the main workload be included or not | `true` |
|
|
||||||
| `controller.type` | valid options are deployment, statefulset, job | `"statefulset"` |
|
|
||||||
| `service.http.enabled` | | `true` |
|
|
||||||
| `service.http.ports.http.port` | | `80` |
|
|
||||||
| `service.http.ports.http.targetPort` | | `8123` |
|
|
||||||
| `ingress.enabled` | | `false` |
|
|
||||||
| `ingress.service` | what service should the ingress target | `"http"` |
|
|
||||||
| `ingress.servicePort` | | `80` |
|
|
||||||
| `ingress.className` | | `"nginx"` |
|
|
||||||
| `ingress.hosts` | | `[{"host": "example.local", "paths": [{"path": "/", "pathType": "Prefix"}]}]` |
|
|
||||||
| `ingress.annotations` | | `{}` |
|
|
||||||
| `ingress.tls` | | `[]` |
|
|
||||||
| `volumeClaimTemplates` | | `[{"name": "config", "mountPath": "/config", "accessMode": "ReadWriteOnce", "storageClassName": "longhorn", "size": "1Gi"}]` |
|
|
||||||
| `livenessProbe.httpGet.path` | | `"/"` |
|
|
||||||
| `livenessProbe.httpGet.port` | | `8123` |
|
|
||||||
| `livenessProbe.initialDelaySeconds` | | `5` |
|
|
||||||
| `livenessProbe.periodSeconds` | | `3` |
|
|
||||||
| `volumes` | | `[{"name": "configs", "configMap": {"name": "hass-configs", "items": [{"key": "configuration.yaml", "path": "configuration.yaml"}, {"key": "automations.yaml", "path": "automations.yaml"}, {"key": "scenes.yaml", "path": "scenes.yaml"}, {"key": "scripts.yaml", "path": "scripts.yaml"}]}}, {"name": "secrets", "secret": {"secretName": "hass-secrets", "items": [{"key": "secrets.yaml", "path": "secrets.yaml"}]}}]` |
|
|
||||||
| `volumeMounts` | | `[{"name": "configs", "mountPath": "/config/configuration.yaml", "subPath": "configuration.yaml", "readOnly": true}, {"name": "configs", "mountPath": "/config/automations.yaml", "subPath": "automations.yaml", "readOnly": true}, {"name": "configs", "mountPath": "/config/scenes.yaml", "subPath": "scenes.yaml", "readOnly": true}, {"name": "configs", "mountPath": "/config/scripts.yaml", "subPath": "scripts.yaml", "readOnly": true}, {"name": "secrets", "mountPath": "/config/secrets.yaml", "subPath": "secrets.yaml", "readOnly": true}]` |
|
|
||||||
| `hass_configs.configuration.yaml` | | `"# Loads default set of integrations. Do not remove.\ndefault_config:\n\n# Load frontend themes from the themes folder\nfrontend:\n themes: !include_dir_merge_named themes\n\nautomation: !include automations.yaml\nscript: !include scripts.yaml\nscene: !include scenes.yaml\n"` |
|
|
||||||
| `hass_configs.automations.yaml` | | `"[]\n"` |
|
|
||||||
| `hass_configs.scenes.yaml` | | `"# scenes\n"` |
|
|
||||||
| `hass_configs.scripts.yaml` | | `"# scripts\n"` |
|
|
||||||
| `hass_secrets.secrets.yaml` | | `"# Use this file to store secrets like usernames and passwords.\n# Learn more at https://www.home-assistant.io/docs/configuration/secrets/\nsome_password: welcome\n"` |
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
name: hass-configs
|
|
||||||
namespace: {{ .Values.namespace | default "default" }}
|
|
||||||
labels: {{ include "lib.labels" . | nindent 4 }}
|
|
||||||
data: {{ .Values.hass_configs | toYaml | nindent 2 }}
|
|
@ -1,11 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Secret
|
|
||||||
metadata:
|
|
||||||
name: hass-secrets
|
|
||||||
namespace: {{ .Values.namespace | default "default" }}
|
|
||||||
labels: {{ include "lib.labels" . | nindent 4 }}
|
|
||||||
type: Opauge
|
|
||||||
data:
|
|
||||||
{{- range $n, $v := .Values.hass_secrets -}}
|
|
||||||
{{ $n | nindent 2 }}: {{ $v | b64enc }}
|
|
||||||
{{- end }}
|
|
@ -1,113 +0,0 @@
|
|||||||
image:
|
|
||||||
repository: ghcr.io/home-assistant/home-assistant
|
|
||||||
tag:
|
|
||||||
|
|
||||||
controller: # main workload
|
|
||||||
enabled: true # should the main workload be included or not
|
|
||||||
type: statefulset # valid options are deployment, statefulset, job
|
|
||||||
|
|
||||||
service:
|
|
||||||
http:
|
|
||||||
enabled: true
|
|
||||||
ports:
|
|
||||||
http:
|
|
||||||
port: 80
|
|
||||||
targetPort: 8123
|
|
||||||
|
|
||||||
ingress:
|
|
||||||
enabled: false
|
|
||||||
service: http # what service should the ingress target
|
|
||||||
servicePort: 80
|
|
||||||
className: "nginx"
|
|
||||||
hosts:
|
|
||||||
- host: example.local
|
|
||||||
paths:
|
|
||||||
- path: /
|
|
||||||
pathType: Prefix
|
|
||||||
annotations:
|
|
||||||
{}
|
|
||||||
tls: []
|
|
||||||
# - secretName: chart-example-tls
|
|
||||||
# hosts:
|
|
||||||
# - chart-example.local
|
|
||||||
|
|
||||||
volumeClaimTemplates:
|
|
||||||
- name: config
|
|
||||||
mountPath: /config
|
|
||||||
accessMode: "ReadWriteOnce"
|
|
||||||
storageClassName: "longhorn"
|
|
||||||
size: 1Gi
|
|
||||||
|
|
||||||
livenessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /
|
|
||||||
port: 8123
|
|
||||||
initialDelaySeconds: 5
|
|
||||||
periodSeconds: 3
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
- name: configs
|
|
||||||
configMap:
|
|
||||||
name: hass-configs
|
|
||||||
items:
|
|
||||||
- key: configuration.yaml
|
|
||||||
path: configuration.yaml
|
|
||||||
- key: automations.yaml
|
|
||||||
path: automations.yaml
|
|
||||||
- key: scenes.yaml
|
|
||||||
path: scenes.yaml
|
|
||||||
- key: scripts.yaml
|
|
||||||
path: scripts.yaml
|
|
||||||
- name: secrets
|
|
||||||
secret:
|
|
||||||
secretName: hass-secrets
|
|
||||||
items:
|
|
||||||
- key: secrets.yaml
|
|
||||||
path: secrets.yaml
|
|
||||||
|
|
||||||
volumeMounts:
|
|
||||||
- name: configs
|
|
||||||
mountPath: /config/configuration.yaml
|
|
||||||
subPath: configuration.yaml
|
|
||||||
readOnly: true
|
|
||||||
- name: configs
|
|
||||||
mountPath: /config/automations.yaml
|
|
||||||
subPath: automations.yaml
|
|
||||||
readOnly: true
|
|
||||||
- name: configs
|
|
||||||
mountPath: /config/scenes.yaml
|
|
||||||
subPath: scenes.yaml
|
|
||||||
readOnly: true
|
|
||||||
- name: configs
|
|
||||||
mountPath: /config/scripts.yaml
|
|
||||||
subPath: scripts.yaml
|
|
||||||
readOnly: true
|
|
||||||
- name: secrets
|
|
||||||
mountPath: /config/secrets.yaml
|
|
||||||
subPath: secrets.yaml
|
|
||||||
readOnly: true
|
|
||||||
|
|
||||||
hass_configs:
|
|
||||||
configuration.yaml: |
|
|
||||||
# Loads default set of integrations. Do not remove.
|
|
||||||
default_config:
|
|
||||||
|
|
||||||
# Load frontend themes from the themes folder
|
|
||||||
frontend:
|
|
||||||
themes: !include_dir_merge_named themes
|
|
||||||
|
|
||||||
automation: !include automations.yaml
|
|
||||||
script: !include scripts.yaml
|
|
||||||
scene: !include scenes.yaml
|
|
||||||
automations.yaml: |
|
|
||||||
[]
|
|
||||||
scenes.yaml: |
|
|
||||||
# scenes
|
|
||||||
scripts.yaml: |
|
|
||||||
# scripts
|
|
||||||
|
|
||||||
hass_secrets:
|
|
||||||
secrets.yaml: |
|
|
||||||
# Use this file to store secrets like usernames and passwords.
|
|
||||||
# Learn more at https://www.home-assistant.io/docs/configuration/secrets/
|
|
||||||
some_password: welcome
|
|
Loading…
Reference in New Issue
Block a user