Compare commits

..

8 Commits

Author SHA1 Message Date
3a3f64a59b modified: .gitea/workflows/deploy.yaml
All checks were successful
Casa Home Assistant CI/CD Pipeline (testing) / build (push) Successful in 14s
2025-11-22 02:51:41 +00:00
160176f905 modified: .gitea/workflows/deploy.yaml 2025-11-22 02:42:52 +00:00
d8e6d72e25 simple kubectl test
Some checks are pending
Casa Home Assistant CI/CD Pipeline (testing) / build (push) Waiting to run
2025-11-22 02:30:43 +00:00
1b7b53ddd1 added GITHUB_TEMP env
Some checks are pending
Casa Home Assistant CI/CD Pipeline (testing) / build (push) Waiting to run
2025-11-22 02:25:39 +00:00
ac33cbfc6d fx actions folder name
Some checks failed
Casa Home Assistant CI/CD Pipeline (testing) / build (push) Failing after 14s
2025-11-22 02:20:02 +00:00
cf4dd050ca re enable actions
Some checks failed
Casa Home Assistant CI/CD Pipeline (testing) / build (push) Failing after 15s
2025-11-22 02:17:22 +00:00
473808832b fix runs-on
All checks were successful
Casa Home Assistant CI/CD Pipeline (testing) / build (push) Successful in 15s
2025-11-22 02:16:12 +00:00
f29285d800 clean up workflow
Some checks failed
Casa Home Assistant CI/CD Pipeline (testing) / build (push) Has been cancelled
2025-11-22 02:13:36 +00:00
6 changed files with 93 additions and 37 deletions

View File

@@ -0,0 +1,45 @@
name: Setup kubectl
description: "Reads kube config from inputs and sets KUBECONFIG"
inputs:
kube_server:
description: "Kubernetes API server address"
required: true
kube_ca_base64:
description: "Base64-encoded CA certificate"
required: true
kube_token:
description: "ServiceAccount token"
required: true
runs:
using: "composite"
steps:
- name: Create kubeconfig
shell: bash
run: |
set -euo pipefail
mkdir -p "${GITHUB_TEMP}/.kube"
cat <<EOF > "${GITHUB_TEMP}/.kube/config"
apiVersion: v1
kind: Config
clusters:
- cluster:
certificate-authority-data: ${{ inputs.kube_ca_base64 }}
server: ${{ inputs.kube_server }}
name: cluster
contexts:
- context:
cluster: cluster
namespace: default
user: user
name: context
current-context: context
users:
- name: user
user:
token: ${{ inputs.kube_token }}
EOF
echo "KUBECONFIG=${GITHUB_TEMP}/.kube/config" >> "${GITHUB_ENV}"

View File

@@ -1,48 +1,59 @@
name: Casa Home Assistant CI/CD Pipeline
name: Casa Home Assistant CI/CD Pipeline (testing)
on:
push:
branches:
- fix/*
- main
- master
pull_request:
schedule:
- cron: '0 16 * * 0' # every sunday 4 pm
jobs:
deploy:
build:
runs-on: casa-vlan-cicd
env:
GITHUB_TEMP: ${{ runner.temp }}
GITHUB_TEMP: ${{ runner.temp }}
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Fetch limbo public actions
env:
RUNNER_TEMP: "${{ runner.temp }}"
WORKSPACE: "${{ gitea.workspace }}"
- name: Debug runner paths
run: |
curl -fsSL https://git.limbosolutions.com/kb/gitea/raw/branch/main/cloud-scripts/setup-limbo-actions.sh | bash 2>&1
echo "Runner temp: ${{ runner.temp }}"
echo "Workspace: ${{ gitea.workspace }}"
ls -l ${{ runner.temp }}
ls -l ${{ gitea.workspace }}
- name: Setup kubectl
uses: ./.gitea/limbo_actions/kubectl-setup
uses: ./.gitea/actions/kubectl-setup
with:
kube_server: ${{ secrets.CASA_VLAN_KUBE_SERVER }}
kube_ca_base64: ${{ secrets.CASA_VLAN_KUBE_CA_BASE64 }}
kube_token: ${{ secrets.CASA_VLAN_KUBE_TOKEN }}
- name: Deploy Home Assistant
shell: bash
env:
ENDPOINT_IP: "${{ secrets.CASA_HOMEASSISTANT_ENDPOINT_IP }}"
SERVICE_PORT: "${{ secrets.CASA_HOMEASSISTANT_ENDPOINT_SERVICE_PORT }}"
INGRESS_ROUTES_MATCH: "${{ secrets.CASA_HOMEASSISTANT_INGRESS_ROUTES_MATCH }}"
INGRESS_TLS_SECRET_NAME: "${{ secrets.CASA_HOMEASSISTANT_INGRESS_TLS_SECRET_NAME }}"
kube_server: ${{ secrets.casa_vlan_kube_server }}
kube_ca_base64: ${{ secrets.casa_vlan_kube_ca_base64 }}
kube_token: ${{ secrets.casa_vlan_kube_token }}
- name: Debug runner paths
run: |
kubectl apply -f ./deploy/deployment.yaml \
&& envsubst < ./deploy/service.template.yaml | kubectl apply -f -
echo "Runner temp: ${{ runner.temp }}"
echo "Workspace: ${{ gitea.workspace }}"
ls -l ${{ runner.temp }}
ls -l ${{ gitea.workspace }}
# - name: Deploy Home Assistant
# shell: bash
# run: |
# set -x
# echo "KUBECONFIG=$KUBECONFIG"
# kubectl config view
# kubectl get pods --request-timeout=10s
# - name: Deploy Home Assistant
# shell: bash
# run: |
# set -e
# cd ${{ gitea.workspace }}
# export ENDPOINT_IP="${{ secrets.ENDPOINT_IP }}"
# export SERVICE_PORT=${{ secrets.SERVICE_PORT }}
# export INGRESS_ROUTES_MATCH="${{ secrets.INGRESS_ROUTES_MATCH }}"
# export INGRESS_TLS_SECRET_NAME=${{ secrets.INGRESS_TLS_SECRET_NAME }}
# kubectl apply -f ./deploy/deployment.yaml
# envsubst < ./deploy/service.template.yaml | kubectl apply -f -

View File

@@ -2,9 +2,10 @@
Welcome to my Home Assistant setup repository.
This repository documents and maintains the Home Assistant instance running in my home, hosted on casa server k3s cluster.
Related containers, such as MQTT and speech recognition, are hosted on same cluster.
All essential containers, such as MQTT and speech recognition, are hosted on the same server for seamless integration.
**Table of Contents:**
<!-- omit in toc -->
## Table of Contents
- [Devices](#devices)
- [Broadlink - RM4 Pro](#broadlink---rm4-pro)

View File

@@ -44,8 +44,8 @@ All Environment variables requirements as set as secrets.
[gitea workflow](../.gitea/workflows/deploy.yaml)
## cicd RBAC
## RBAC
```bash { cwd=../ }
kubectl apply -f ./deploy/cicd-rbac.yaml
kubectl apply -f ./deploy/rbac.yaml
```

View File

@@ -33,15 +33,14 @@ spec:
spec:
dnsPolicy: ClusterFirstWithHostNet # ensures pod uses cluster DNS (CoreDNS) for service discovery even with host networking
hostNetwork: true
nodeName: casa # force deploy to master node cluster
tolerations:
- key: "node-role.kubernetes.io/control-plane" # allow installation on control-plane
operator: "Exists"
effect: "NoSchedule"
# delays start so host have time to start on low memory resources
# initContainers:
# - name: delay-start
# image: busybox:latest
# command: ["sh", "-c", "sleep 60"]
containers:
- name: home-assistant
image: "homeassistant/home-assistant"
imagePullPolicy: Always
env:
- name: TZ
value: Europe/Lisbon # set timezone