Compare commits
No commits in common. "main" and "pipline" have entirely different histories.
@ -2,7 +2,8 @@ name: Package and publish helm chart
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
jobs:
|
jobs:
|
||||||
package-helm:
|
package-helm:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@ -26,33 +27,20 @@ jobs:
|
|||||||
dir_names_max_depth: '2'
|
dir_names_max_depth: '2'
|
||||||
files: 'charts/**'
|
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
|
- name: build helm package
|
||||||
shell: bash
|
shell: bash
|
||||||
if: gitea.ref == 'refs/heads/main'
|
|
||||||
env:
|
env:
|
||||||
PACKAGE_TOKEN: ${{ secrets.PACKAGE_TOKEN }}
|
PACKAGE_TOKEN: ${{ secrets.REPO_HOST }}
|
||||||
CHART_NAME: ${{ steps.chart_name.outputs.result }}
|
CHART_NAME: ${{ steps.chart_name.outputs.result }}
|
||||||
CHART_VERSION: ${{ steps.chart_version.outputs.result }}
|
CHART_VERSION: ${{ steps.chart_version.outputs.result }}
|
||||||
ALL_CHANGED_CHARTS: ${{ steps.changed-files.outputs.all_changed_files }}
|
ALL_CHANGED_CHARTS: ${{ steps.changed-files.outputs.all_changed_files }}
|
||||||
run: |
|
run: |
|
||||||
REPO_PATH=$(git rev-parse --show-toplevel)
|
REPO_PATH=$(git rev-parse --show-toplevel)
|
||||||
for chart in ${ALL_CHANGED_CHARTS}; do
|
for chart in ${ALL_CHANGED_CHARTS}; do
|
||||||
cd ${REPO_PATH}/${chart}
|
cd ${REPO_PATH}/charts/${chart}
|
||||||
CHART_NAME=$(yq .name Chart.yaml)
|
CHART_NAME=$(yq .name Chart.yaml)
|
||||||
CHART_VERSION=$(yq .version Chart.yaml)
|
CHART_VERSION=$(yq .version Chart.yaml)
|
||||||
echo "Packaging ${CHART_NAME}-${CHART_VERSION}"
|
echo "Packaging ${CHART_NAME}-${CHART_VERSION}
|
||||||
helm package .
|
helm package $REPO_PATH
|
||||||
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
|
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
|
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
|
|
||||||
|
|
@ -4,7 +4,7 @@ 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.
|
description: Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts.
|
||||||
type: application
|
type: application
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
appVersion: 2024.11.1
|
appVersion: v2024.11.1
|
||||||
kubeVersion: ">=1.27.0"
|
kubeVersion: ">=1.27.0"
|
||||||
home: https://www.home-assistant.io/
|
home: https://www.home-assistant.io/
|
||||||
sources:
|
sources:
|
||||||
@ -16,4 +16,4 @@ maintainers:
|
|||||||
dependencies:
|
dependencies:
|
||||||
- name: lib
|
- name: lib
|
||||||
repository: https://git.rre.nu/api/packages/jonas/helm
|
repository: https://git.rre.nu/api/packages/jonas/helm
|
||||||
version: 1.0.4
|
version: 1.0.3
|
||||||
|
@ -13,30 +13,10 @@ The following table lists the configurable parameters of the Home-assistant char
|
|||||||
| ------------------------ | ----------------------- | -------------- |
|
| ------------------------ | ----------------------- | -------------- |
|
||||||
| `image.repository` | | `"ghcr.io/home-assistant/home-assistant"` |
|
| `image.repository` | | `"ghcr.io/home-assistant/home-assistant"` |
|
||||||
| `image.tag` | | `null` |
|
| `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.path` | | `"/"` |
|
||||||
| `livenessProbe.httpGet.port` | | `8123` |
|
| `livenessProbe.httpGet.port` | | `8123` |
|
||||||
| `livenessProbe.initialDelaySeconds` | | `5` |
|
| `livenessProbe.initialDelaySeconds` | | `5` |
|
||||||
| `livenessProbe.periodSeconds` | | `3` |
|
| `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 }}
|
|
@ -31,83 +31,18 @@ ingress:
|
|||||||
# hosts:
|
# hosts:
|
||||||
# - chart-example.local
|
# - chart-example.local
|
||||||
|
|
||||||
|
|
||||||
volumeClaimTemplates:
|
volumeClaimTemplates:
|
||||||
- name: config
|
- name: config
|
||||||
mountPath: /config
|
mountPath: /config
|
||||||
accessMode: "ReadWriteOnce"
|
accessMode: "ReadWriteOnce"
|
||||||
storageClassName: "longhorn"
|
storageClassName: "default"
|
||||||
size: 1Gi
|
size: 1Gi
|
||||||
|
|
||||||
|
|
||||||
livenessProbe:
|
livenessProbe:
|
||||||
httpGet:
|
httpGet:
|
||||||
path: /
|
path: /
|
||||||
port: 8123
|
port: 8123
|
||||||
initialDelaySeconds: 5
|
initialDelaySeconds: 5
|
||||||
periodSeconds: 3
|
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