Use prebuilt Docker image for Gitea workflows
All checks were successful
Test blackout notifier / test (push) Successful in 4s
All checks were successful
Test blackout notifier / test (push) Successful in 4s
This commit is contained in:
46
README.md
46
README.md
@@ -22,7 +22,7 @@ state is stored in `state/outages.json` and committed back to this repository.
|
||||
|
||||
## Local setup
|
||||
|
||||
Python 3.11 or newer is required. CI uses Python 3.13.
|
||||
Python 3.11 or newer is required. The Gitea runner image uses Debian's Python 3.11.
|
||||
|
||||
```sh
|
||||
python -m venv .venv
|
||||
@@ -62,17 +62,40 @@ Shell and Gitea-provided variables take precedence over `.env`.
|
||||
## Gitea deployment
|
||||
|
||||
This repository targets Gitea 1.25.x and a Docker-based runner advertising the
|
||||
`ubuntu-latest` label. The runner needs outbound access to the Gitea instance,
|
||||
`gitea.com`, PyPI, SAAPA, and EitaaYar.
|
||||
`ubuntu-latest` label. Both workflows run inside the locally built
|
||||
`daily-blackout-check-runner:latest` image. It contains Node for the checkout
|
||||
action plus Python, Git, timezone data, application dependencies, pytest, and
|
||||
Ruff. Scheduled jobs therefore do not install Python or download Python packages.
|
||||
|
||||
1. Enable Actions in the repository settings.
|
||||
2. Confirm an online runner advertises `ubuntu-latest`.
|
||||
3. Add these repository Actions secrets:
|
||||
Build the image on the Docker host used by `act_runner`:
|
||||
|
||||
```sh
|
||||
cd /path/to/daily-blackout-check
|
||||
docker build \
|
||||
--tag daily-blackout-check-runner:latest \
|
||||
runner-image
|
||||
docker image inspect daily-blackout-check-runner:latest >/dev/null
|
||||
```
|
||||
|
||||
Only `runner-image/` is sent as the Docker build context, so local secrets and
|
||||
outage state never enter the build context or image.
|
||||
|
||||
The image is local rather than registry-hosted, matching the deployment pattern
|
||||
used by `mahak-api-docs`. Build it on every runner host that can claim this job.
|
||||
Rebuild it whenever `runner-image/Dockerfile`, `runner-image/requirements.lock`,
|
||||
or dependency declarations in `pyproject.toml` change. The image build requires
|
||||
Docker Hub and PyPI access; normal workflow runs only need the Gitea instance,
|
||||
`gitea.com`, SAAPA, and EitaaYar.
|
||||
|
||||
1. Build `daily-blackout-check-runner:latest` on the runner's Docker host.
|
||||
2. Enable Actions in the repository settings.
|
||||
3. Confirm an online Docker runner advertises `ubuntu-latest`.
|
||||
4. Add these repository Actions secrets:
|
||||
`BARGHEMAN_TOKEN`, `EITAAYAR_TOKEN`, `CHAT_ID`, and `BILL_IDS`.
|
||||
4. Run the test workflow manually.
|
||||
5. Run **Hourly blackout check** manually once and inspect the notification and
|
||||
5. Run the test workflow manually.
|
||||
6. Run **Hourly blackout check** manually once and inspect the notification and
|
||||
resulting state commit.
|
||||
6. Leave the `@hourly` schedule enabled.
|
||||
7. Leave the `@hourly` schedule enabled.
|
||||
|
||||
The workflow uses fully qualified `https://gitea.com/actions/...` actions rather
|
||||
than resolving actions through GitHub. Gitea 1.25 ignores workflow `permissions`
|
||||
@@ -81,6 +104,11 @@ Its checkout credential must retain the default ability to push to the current
|
||||
repository. Scheduled jobs should not be manually overlapped; in the rare event
|
||||
of a push race, the job fails and unsaved notices may be repeated on the next run.
|
||||
|
||||
If a workflow tries to pull the local image instead of using it, ensure the image
|
||||
exists in the same Docker daemon used by `act_runner` and set
|
||||
`container.force_pull: false` in the runner's generated `config.yaml`, then
|
||||
restart the runner.
|
||||
|
||||
## Development
|
||||
|
||||
```sh
|
||||
|
||||
Reference in New Issue
Block a user