feat(gitea-actions): install jq in the ESP-IDF CI image
esp32-stm32-vcu's scripts/release.sh uses jq to rewrite the protocol
manifest before publishing it to S3. The image did not have it, so the
release aborted at:
./scripts/release.sh: line 61: jq: command not found
The failure mode is nastier than a red job. jq is only reached *after*
the firmware .bin and version.json have already been uploaded, so
clients were served the new build while the git tag, the Gitea release
and the protocol manifest were never written — the repo still showed
the previous release as latest while production served a newer one.
Only jq was missing; aws and sha256sum are already present (verified in
the rebuilt image: jq-1.7, aws-ok, sha256sum-ok).
This surfaced when the skudak firmware jobs were moved into this image
(they previously ran on the default gitea-ci image, which has jq).
This commit is contained in:
@@ -1,16 +1,23 @@
|
|||||||
# ESP-IDF firmware job image (managed by ansible: roles/gitea-actions).
|
# ESP-IDF firmware job image (managed by ansible: roles/gitea-actions).
|
||||||
# Adds node (required by actions/checkout and other JS actions), the AWS CLI
|
# Adds node (required by actions/checkout and other JS actions), the AWS CLI
|
||||||
# (firmware artifacts ship to S3), and the common-yaml header generator's Python
|
# (firmware artifacts ship to S3), jq (the release script rewrites the protocol
|
||||||
# deps on top of the official Espressif toolchain.
|
# manifest with it), and the common-yaml header generator's Python deps on top
|
||||||
|
# of the official Espressif toolchain.
|
||||||
# IDF lives at /opt/esp/idf — firmware jobs source /opt/esp/idf/export.sh.
|
# IDF lives at /opt/esp/idf — firmware jobs source /opt/esp/idf/export.sh.
|
||||||
# python3-yaml + python3-jinja2 are installed as distro packages so the
|
# python3-yaml + python3-jinja2 are installed as distro packages so the
|
||||||
# common-yaml generator runs with a plain `python3 generate.py` — no pip at job
|
# common-yaml generator runs with a plain `python3 generate.py` — no pip at job
|
||||||
# time (the base image's system Python is PEP 668 externally-managed) and no
|
# time (the base image's system Python is PEP 668 externally-managed) and no
|
||||||
# need to source the IDF venv just to generate headers.
|
# need to source the IDF venv just to generate headers.
|
||||||
|
#
|
||||||
|
# jq is required by esp32-stm32-vcu scripts/release.sh, which publishes the
|
||||||
|
# protocol manifest and BLE_API.md to S3 after the firmware upload. Without it
|
||||||
|
# the release aborts *after* the firmware and version.json are already live —
|
||||||
|
# clients get the new build while the tag, Gitea release and protocol manifest
|
||||||
|
# are never written. Keep it installed.
|
||||||
FROM espressif/idf:{{ esp_idf_version }}
|
FROM espressif/idf:{{ esp_idf_version }}
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
curl ca-certificates unzip python3-yaml python3-jinja2 \
|
curl ca-certificates unzip jq python3-yaml python3-jinja2 \
|
||||||
&& curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
|
&& curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
|
||||||
&& apt-get install -y --no-install-recommends nodejs \
|
&& apt-get install -y --no-install-recommends nodejs \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|||||||
Reference in New Issue
Block a user