From 10728f8b136f4c31db073a31581c4d63ba4716e0 Mon Sep 17 00:00:00 2001 From: Dennis Juhler Aagaard Date: Thu, 24 Sep 2026 19:49:52 +0200 Subject: [PATCH] ci: install toolchain in Alpine runner --- .gitea/workflows/ci.yml | 27 +++++++++++++++++---------- tests/test_addon_metadata.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 10 deletions(-) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 1f5e0fe..9a472dd 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -15,17 +15,24 @@ jobs: timeout-minutes: 45 steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - - uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 - with: - python-version: "3.12" - cache: pip - - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 - with: - go-version: "1.27.1" - - name: Install test dependencies - run: python -m pip install --requirement requirements-dev.txt + - name: Install test toolchain + run: | + set -eu + apk add --no-cache curl python3 py3-pip + curl --fail --location --silent --show-error \ + --output /tmp/go1.27.1.linux-amd64.tar.gz \ + https://go.dev/dl/go1.27.1.linux-amd64.tar.gz + echo "63d339f0da5ab53635a56f2490a7984dfe12dfcff22ad749f63edaf590168445 /tmp/go1.27.1.linux-amd64.tar.gz" \ + | sha256sum -c - + mkdir -p /opt/go1.27.1 + tar --extract --gzip --file /tmp/go1.27.1.linux-amd64.tar.gz \ + --directory /opt/go1.27.1 --strip-components 1 + ln -sf /opt/go1.27.1/bin/go /usr/local/bin/go + go version + python3 -m venv .venv + .venv/bin/pip install --requirement requirements-dev.txt - name: Validate metadata, patches, and process manager - run: pytest -q + run: .venv/bin/pytest -q - name: Build amd64 image run: docker buildx build --platform linux/amd64 --build-arg BUILD_ARCH=amd64 --load --tag homeassistant-stelloauth-addon:test stelloauth - name: Exercise runtime diff --git a/tests/test_addon_metadata.py b/tests/test_addon_metadata.py index 630d8fd..2323074 100644 --- a/tests/test_addon_metadata.py +++ b/tests/test_addon_metadata.py @@ -173,6 +173,34 @@ def test_ci_builds_and_loads_only_the_amd64_test_image() -> None: assert publication_primitive not in workflow +def test_ci_installs_toolchain_without_hosted_toolcache_actions() -> None: + workflow = (ROOT / ".gitea/workflows/ci.yml").read_text(encoding="utf-8") + parsed = yaml.safe_load(workflow) + steps = parsed["jobs"]["validate"]["steps"] + setup_command = next( + step["run"] for step in steps if step.get("name") == "Install test toolchain" + ) + + assert "actions/setup-python" not in workflow + assert "actions/setup-go" not in workflow + for required_command in ( + "apk add --no-cache curl python3 py3-pip", + "go1.27.1.linux-amd64.tar.gz", + "63d339f0da5ab53635a56f2490a7984dfe12dfcff22ad749f63edaf590168445", + "sha256sum -c -", + "python3 -m venv .venv", + ".venv/bin/pip install --requirement requirements-dev.txt", + ): + assert required_command in setup_command + + validation_command = next( + step["run"] + for step in steps + if step.get("name") == "Validate metadata, patches, and process manager" + ) + assert validation_command == ".venv/bin/pytest -q" + + def test_patch_payloads_disable_git_whitespace_errors() -> None: result = subprocess.run( [