fix(deploy): use managed Python and report missing Bunny credentials
07fd9ff parent: 5736f05 modified
.github/workflows/deploy-bunny.yml +3 -3 | @@ -71,7 +71,7 @@ jobs: | ||
| 71 | 71 | |
| 72 | 72 | - name: Install pinned Pebble toolchain |
| 73 | 73 | run: | |
| 74 | - uv tool install pebble-tool==5.0.40 | |
| 74 | + uv tool install --managed-python --python 3.11 pebble-tool==5.0.40 | |
| 75 | 75 | pebble sdk install 4.33.1 |
| 76 | 76 | |
| 77 | 77 | - name: Validate package version |
| @@ -131,8 +131,8 @@ jobs: | ||
| 131 | 131 | run: | |
| 132 | 132 | set -euo pipefail |
| 133 | 133 | |
| 134 | - test -n "$BUNNY_STORAGE_ENDPOINT" | |
| 135 | - test -n "$BUNNY_STORAGE_PASSWORD" | |
| 134 | + [[ -n "$BUNNY_STORAGE_ENDPOINT" ]] || { echo "Missing required production variable BUNNY_STORAGE_ENDPOINT" >&2; exit 1; } | |
| 135 | + [[ -n "$BUNNY_STORAGE_PASSWORD" ]] || { echo "Missing required production secret BUNNY_STORAGE_PASSWORD" >&2; exit 1; } | |
| 136 | 136 | endpoint="${BUNNY_STORAGE_ENDPOINT%/}" |
| 137 | 137 | case "$endpoint" in |
| 138 | 138 | https://*) ;; |
| @@ -71,7 +71,7 @@ jobs: | |||
| 71 | 71 | ||
| 72 | - name: Install pinned Pebble toolchain | 72 | - name: Install pinned Pebble toolchain |
| 73 | run: | | 73 | run: | |
| 74 | - uv tool install pebble-tool==5.0.40 | 74 | + uv tool install --managed-python --python 3.11 pebble-tool==5.0.40 |
| 75 | pebble sdk install 4.33.1 | 75 | pebble sdk install 4.33.1 |
| 76 | 76 | ||
| 77 | - name: Validate package version | 77 | - name: Validate package version |
| @@ -131,8 +131,8 @@ jobs: | |||
| 131 | run: | | 131 | run: | |
| 132 | set -euo pipefail | 132 | set -euo pipefail |
| 133 | 133 | ||
| 134 | - test -n "$BUNNY_STORAGE_ENDPOINT" | 134 | + [[ -n "$BUNNY_STORAGE_ENDPOINT" ]] || { echo "Missing required production variable BUNNY_STORAGE_ENDPOINT" >&2; exit 1; } |
| 135 | - test -n "$BUNNY_STORAGE_PASSWORD" | 135 | + [[ -n "$BUNNY_STORAGE_PASSWORD" ]] || { echo "Missing required production secret BUNNY_STORAGE_PASSWORD" >&2; exit 1; } |
| 136 | endpoint="${BUNNY_STORAGE_ENDPOINT%/}" | 136 | endpoint="${BUNNY_STORAGE_ENDPOINT%/}" |
| 137 | case "$endpoint" in | 137 | case "$endpoint" in |
| 138 | https://*) ;; | 138 | https://*) ;; |
modified
CHANGELOG.md +5 -2 | @@ -1,18 +1,21 @@ | ||
| 1 | 1 | # Changelog |
| 2 | 2 | |
| 3 | -## [1.2.2] - 2026-10-06 | |
| 3 | +## [1.2.2] - 2026-10-07 | |
| 4 | 4 | |
| 5 | 5 | Traffic reporting now handles PRIM incident schedules containing up to 256 application periods, preventing longer valid notices from disabling traffic information for unrelated lines. |
| 6 | 6 | |
| 7 | 7 | Catalog activation now lets the atomic rename decide whether the candidate and active paths share a filesystem. This avoids false rejections when OverlayFS reports different devices for a file and its parent directory. |
| 8 | 8 | |
| 9 | +Release deployments now install the pinned `pebble-tool` with a uv-managed Python 3.11 so SDK installation does not depend on the runner's system Python providing `ensurepip`. The production backup gate also names missing Bunny storage settings instead of failing silently. | |
| 10 | + | |
| 9 | 11 | ### Fixes |
| 10 | 12 | |
| 11 | 13 | - fix(traffic): accept up to 256 application periods per disruption (`1380da0`) |
| 14 | +- fix(deploy): use managed Python and report missing Bunny credentials | |
| 12 | 15 | |
| 13 | 16 | ### Changes |
| 14 | 17 | |
| 15 | -- chore(release): bump to version 1.2.2 | |
| 18 | +- chore(release): bump to version 1.2.2 (`5736f05`) | |
| 16 | 19 | |
| 17 | 20 | ## [1.2.1] - 2026-09-20 |
| 18 | 21 | |
| @@ -1,18 +1,21 @@ | |||
| 1 | # Changelog | 1 | # Changelog |
| 2 | 2 | ||
| 3 | -## [1.2.2] - 2026-10-06 | 3 | +## [1.2.2] - 2026-10-07 |
| 4 | 4 | ||
| 5 | Traffic reporting now handles PRIM incident schedules containing up to 256 application periods, preventing longer valid notices from disabling traffic information for unrelated lines. | 5 | Traffic reporting now handles PRIM incident schedules containing up to 256 application periods, preventing longer valid notices from disabling traffic information for unrelated lines. |
| 6 | 6 | ||
| 7 | Catalog activation now lets the atomic rename decide whether the candidate and active paths share a filesystem. This avoids false rejections when OverlayFS reports different devices for a file and its parent directory. | 7 | Catalog activation now lets the atomic rename decide whether the candidate and active paths share a filesystem. This avoids false rejections when OverlayFS reports different devices for a file and its parent directory. |
| 8 | 8 | ||
| 9 | +Release deployments now install the pinned `pebble-tool` with a uv-managed Python 3.11 so SDK installation does not depend on the runner's system Python providing `ensurepip`. The production backup gate also names missing Bunny storage settings instead of failing silently. | ||
| 10 | + | ||
| 9 | ### Fixes | 11 | ### Fixes |
| 10 | 12 | ||
| 11 | - fix(traffic): accept up to 256 application periods per disruption (`1380da0`) | 13 | - fix(traffic): accept up to 256 application periods per disruption (`1380da0`) |
| 14 | +- fix(deploy): use managed Python and report missing Bunny credentials | ||
| 12 | 15 | ||
| 13 | ### Changes | 16 | ### Changes |
| 14 | 17 | ||
| 15 | -- chore(release): bump to version 1.2.2 | 18 | +- chore(release): bump to version 1.2.2 (`5736f05`) |
| 16 | 19 | ||
| 17 | ## [1.2.1] - 2026-09-20 | 20 | ## [1.2.1] - 2026-09-20 |
| 18 | 21 | ||
modified
README.md +1 -1 | @@ -112,7 +112,7 @@ npm run build:config-site # assemble var/config-site; f | ||
| 112 | 112 | |
| 113 | 113 | To rebuild the hosted catalog independently, run **Rebuild and publish IDFM catalog** from GitHub Actions, using `.github/workflows/rebuild-catalog.yml`. It uses the existing `production` environment's IDFM and Bunny credentials and publishes only catalog files, with up to 75 concurrent curl uploads. The manifest is uploaded last. It does not build the PBW, deploy the settings page, or create a GitHub release. |
| 114 | 114 | |
| 115 | -Uploads are skipped when the hosted IDFM source revision is unchanged. Enable `force_catalog_upload` when republishing a catalog format change from the same source data. The workflow retains the previous manifest for rollback and shares the production publication lock with page deployments and rollbacks. Release tags continue through `deploy-bunny.yml`, without rebuilding the catalog. | |
| 115 | +Uploads are skipped when the hosted IDFM source revision is unchanged. Enable `force_catalog_upload` when republishing a catalog format change from the same source data. The workflow retains the previous manifest for rollback and shares the production publication lock with page deployments and rollbacks. Release tags continue through `deploy-bunny.yml`, without rebuilding the catalog. Release deployments install the pinned `pebble-tool` on a uv-managed Python 3.11, because the runner's system Python has no `ensurepip`, and require the `production` environment's `BUNNY_STORAGE_ENDPOINT` variable and `BUNNY_STORAGE_PASSWORD` secret; when either is unset, the deployment fails at the backup gate with an error naming the missing one. | |
| 116 | 116 | |
| 117 | 117 | ## Contributing |
| 118 | 118 | |
| @@ -112,7 +112,7 @@ npm run build:config-site # assemble var/config-site; f | |||
| 112 | 112 | ||
| 113 | To rebuild the hosted catalog independently, run **Rebuild and publish IDFM catalog** from GitHub Actions, using `.github/workflows/rebuild-catalog.yml`. It uses the existing `production` environment's IDFM and Bunny credentials and publishes only catalog files, with up to 75 concurrent curl uploads. The manifest is uploaded last. It does not build the PBW, deploy the settings page, or create a GitHub release. | 113 | To rebuild the hosted catalog independently, run **Rebuild and publish IDFM catalog** from GitHub Actions, using `.github/workflows/rebuild-catalog.yml`. It uses the existing `production` environment's IDFM and Bunny credentials and publishes only catalog files, with up to 75 concurrent curl uploads. The manifest is uploaded last. It does not build the PBW, deploy the settings page, or create a GitHub release. |
| 114 | 114 | ||
| 115 | -Uploads are skipped when the hosted IDFM source revision is unchanged. Enable `force_catalog_upload` when republishing a catalog format change from the same source data. The workflow retains the previous manifest for rollback and shares the production publication lock with page deployments and rollbacks. Release tags continue through `deploy-bunny.yml`, without rebuilding the catalog. | 115 | +Uploads are skipped when the hosted IDFM source revision is unchanged. Enable `force_catalog_upload` when republishing a catalog format change from the same source data. The workflow retains the previous manifest for rollback and shares the production publication lock with page deployments and rollbacks. Release tags continue through `deploy-bunny.yml`, without rebuilding the catalog. Release deployments install the pinned `pebble-tool` on a uv-managed Python 3.11, because the runner's system Python has no `ensurepip`, and require the `production` environment's `BUNNY_STORAGE_ENDPOINT` variable and `BUNNY_STORAGE_PASSWORD` secret; when either is unset, the deployment fails at the backup gate with an error naming the missing one. |
| 116 | 116 | ||
| 117 | ## Contributing | 117 | ## Contributing |
| 118 | 118 | ||