Files
action-home-assistant/action.yaml
Trez.One f5adf955b7
Lint / yamllint (push) Successful in 9s
Release Drafter / ✏️ Draft release (push) Failing after 9s
Lint / Prettier (push) Successful in 16s
Test / Home Assistant Core Configuration Check (push) Successful in 30s
Stale / 🧹 Clean up stale issues and PRs (push) Failing after 50s
Lock / 🔒 Lock closed issues and PRs (push) Failing after 30s
Merge remote-tracking branch 'refs/remotes/origin/main'
2025-08-31 21:38:20 -04:00

121 lines
3.9 KiB
YAML

---
name: "Frenck's Home Assistant Core Configuration Check"
description: 🚀 Frenck's GitHub Action for running a Home Assistant config check.
author: frenck
branding:
color: red
icon: thumbs-up
inputs:
path:
description: Path to the folder containing the Home Assistant configuration
default: "."
required: false
secrets:
description: Alternative secrets file to use
required: false
version:
description: Version to use; dev/beta/stable or a specific version number
required: false
env_file:
description: Possible path to environment file to use
required: false
runs:
using: "composite"
steps:
- name: 🏗 Check if the configuration is actually there
id: check
shell: bash
run: |
path="${{ inputs.path }}"
path="${path%/}"
if [[ ! -d "${path}" ]]; then
echo "::error ::Could not find specified configuration path: ${path}"
exit 1
fi
if [[ ! -f "${path}/configuration.yaml" ]]; then
echo "::error ::Could not find configuration.yaml file in: ${path}"
exit 1
fi
echo "path=${path}" >> "$GITHUB_OUTPUT"
- name: 🏗 Ensure secrets are in place
shell: bash
run: |
if [[ -z "${{ inputs.secrets }}" ]]; then
exit 0
fi
secrets="${{ inputs.secrets }}"
secrets="${secrets%/}"
if [[ -d "${secrets}" ]] && [[ -f "${secrets}/secrets.yaml" ]];
then
secrets="${secrets}/secrets.yaml"
elif [[ -d "${{ steps.check.outputs.path }}/${secrets}" ]] && \
[[ -f "${{ steps.check.outputs.path }}/${secrets}/secrets.yaml" ]];
then
secrets="${{ steps.check.outputs.path }}/${secrets}/secrets.yaml"
elif [[ -f "${{ steps.check.outputs.path }}/${secrets}" ]];
then
secrets="${{ steps.check.outputs.path }}/${secrets}"
elif [[ ! -f "${secrets}" ]];
then
echo "::error ::Could not find specified secrets file:"\
" ${{ inputs.secrets }}"
exit 1
fi
cp "${secrets}" "${{ steps.check.outputs.path }}/secrets.yaml"
- name: 🏗 Determine & download requested Home Assistant version
shell: bash
id: version
run: |
version="${{ inputs.version }}"
if [[ -z "${version}" ]]; then
if [[ -f "${{ steps.check.outputs.path }}/.HA_VERSION" ]]; then
version=$(<"${{ steps.check.outputs.path }}/.HA_VERSION")
else
echo "::warning ::No specific version found or specified;"\
"Using 'stable' instead. Specify the version in the GitHub"\
"Action or ensure the '.HA_VERSION' file is in your repository."
version="stable"
fi
fi
echo "version=${version}" >> "$GITHUB_OUTPUT"
docker pull -q "ghcr.io/home-assistant/home-assistant:${version}"
- name: 🏗 Register Home Assistant problem matcher
shell: bash
run: |
matcher="${{ github.action_path }}/matcher.json"
echo "::add-matcher::${matcher}"
- name: 🚀 Run Home Assistant Configuration Check
shell: bash
# yamllint disable rule:line-length
run: |
docker run --rm \
--entrypoint "" \
"ghcr.io/home-assistant/home-assistant:${{ steps.version.outputs.version }}" \
python -m homeassistant --version
env_file_arg=""
if [[ -f "${{ inputs.env_file }}" ]]; then
env_file_arg="--env-file ${{ inputs.env_file }}"
fi
docker run --rm \
--entrypoint "" \
--volumes-from ${{ env.JOB_CONTAINER_NAME }} \
$env_file_arg \
--workdir ${GITHUB_WORKSPACE} \
"ghcr.io/home-assistant/home-assistant:${{ steps.version.outputs.version }}" \
python -m homeassistant \
--config "${{ steps.check.outputs.path }}" \
--script check_config