diff --git a/.gitea/workflows/ci_cd.yml b/.gitea/workflows/ci_cd.yml new file mode 100644 index 0000000..e8e587e --- /dev/null +++ b/.gitea/workflows/ci_cd.yml @@ -0,0 +1,33 @@ +name: Deploy + +on: + push: + branches: + - main + +jobs: + deploy: + name: Deploy + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v5 + + - name: Setup ssh-agent + uses: webfactory/ssh-agent@v0.9.0 + with: + ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} + + - name: Deploy to remote + env: + REMOTE_USER: ${{ vars.REMOTE_USER }} + REMOTE_HOST: ${{ vars.REMOTE_HOST }} + REMOTE_PATH: ${{ vars.REMOTE_PATH }} + run: | + ssh -o StrictHostKeyChecking=no "$REMOTE_USER"@"$REMOTE_HOST" "mkdir -p \"$REMOTE_PATH\"" + scp -r ./* "$REMOTE_USER"@"$REMOTE_HOST":"$REMOTE_PATH" + ssh "$REMOTE_USER"@"$REMOTE_HOST" "docker compose -f $REMOTE_PATH/compose.yml down" + ssh "$REMOTE_USER"@"$REMOTE_HOST" "docker compose -f $REMOTE_PATH/compose.yml pull" + ssh "$REMOTE_USER"@"$REMOTE_HOST" "docker compose -f $REMOTE_PATH/compose.yml up -d --force-recreate" + diff --git a/compose.yml b/compose.yml new file mode 100644 index 0000000..4171b69 --- /dev/null +++ b/compose.yml @@ -0,0 +1,39 @@ +services: + home_assistant: + image: ghcr.io/home-assistant/home-assistant:2026.2.1 + user: 2019:2019 # home_assistant:home_assistant + restart: unless-stopped + depends_on: + init: + condition: service_completed_successfully + restart: true + networks: + - home_assistant_network + ports: + - 8123:8123 + environment: + TZ: Europe/London + volumes: + - config:/config:rw + + init: + image: busybox:1.37.0 + user: root:root + command: /init.sh + restart: no + network_mode: none + volumes: + - ./init.sh:/init.sh:ro + # Used for resolving user and group names within the init script + - /etc/passwd:/etc/passwd:ro + - /etc/group:/etc/group:ro + # Mount all named volumes so they can be initialised + - config:/config:rw + +volumes: + config: + +networks: + home_assistant_network: + driver: bridge + diff --git a/init.sh b/init.sh new file mode 100755 index 0000000..6c31a68 --- /dev/null +++ b/init.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env sh + +# Define a helper function that runs a command +# If the command fails, the script prints an error message +# and exits immediately. +run() { + # "$@" expands to all arguments passed to this function + # and preserves proper word splitting and quoting. + "$@" || { + echo "Error: command failed: $*" >&2 + exit 1 + } +} + +run chown home_assistant:home_assistant /config +