ci(installer): run trusted SSH E2E matrix
Некоторые проверки не удались
CI / test (push) Successful in 3m19s
Docker / Build and publish worker image (push) Successful in 17m20s
SSH Source-Install E2E / Alpine/Ubuntu/Arch source-install E2E (push) Failing after 2m48s
Некоторые проверки не удались
CI / test (push) Successful in 3m19s
Docker / Build and publish worker image (push) Successful in 17m20s
SSH Source-Install E2E / Alpine/Ubuntu/Arch source-install E2E (push) Failing after 2m48s
Этот коммит содержится в:
@@ -1,5 +1,50 @@
|
||||
# Changelog
|
||||
|
||||
## 2026-08-13
|
||||
|
||||
### Source-install E2E in CI (work package 5)
|
||||
|
||||
- Added `.github/workflows/test-ssh.yml`, a Gitea Actions workflow that runs
|
||||
the Alpine/Ubuntu/Arch Docker/OpenSSH source-install matrix (`make test-ssh`)
|
||||
on pushes to `master` and on manual `workflow_dispatch` only, separate from
|
||||
the Docker-free unit CI. It does not trigger on `pull_request`: the distro
|
||||
fixtures execute the checked-out code inside privileged Docker, so untrusted
|
||||
PR code must never run there automatically. It bounds the job with
|
||||
`timeout-minutes: 90` (the go-test `-timeout 60m` stays in place), scopes
|
||||
concurrency per ref (`test-ssh-${{ gitea.ref }}`), declares
|
||||
`permissions: contents: read`, uploads no artifacts, and cleans up on every
|
||||
path.
|
||||
- Pinned the two actions to immutable full commit SHAs (verified against the
|
||||
GitHub API): `actions/checkout@v4` ->
|
||||
`11d5960a326750d5838078e36cf38b85af677262` and `actions/setup-go@v5` ->
|
||||
`40f1582b2485089dde7abd97c1529aa768e1baff`. The repo-wide convention still
|
||||
leaves `ci.yml`/`docker.yml` on moving tags (accepted, documented risk); see
|
||||
`docs/source-installation.md`.
|
||||
- Wired `RSMON_TEST_IMAGE_ALPINE` / `RSMON_TEST_IMAGE_UBUNTU` /
|
||||
`RSMON_TEST_IMAGE_ARCH` and `RSMON_TEST_DOCKER_DNS` repository variables
|
||||
(all empty by default) so CI can pin per-fixture mirror/snapshot images and
|
||||
a resolver for flaky CI DNS.
|
||||
- Added `scripts/ci/test-ssh.sh`: preflights Docker and the harness's
|
||||
loopback port-publishing requirement with a tiny `docker run -p
|
||||
127.0.0.1::22` probe (fails fast with an actionable message plus
|
||||
diagnostics/fix options instead of a 60m timeout on an unsupported runner),
|
||||
then runs `make test-ssh` and traps `EXIT` to remove every leftover
|
||||
`rsmon-worker-test-*` container/network/image tag. Cleanup filters are
|
||||
anchored to the harness's own prefix/repository so they never touch a shared
|
||||
base image. The workflow adds an `if: always()` cleanup step as a
|
||||
belt-and-suspenders so a killed job never leaves test material on the runner.
|
||||
- External network is fetched live by design (go.dev toolchain, rocketgit.ru
|
||||
source clone, distro repos); operators can pin a resolver via the
|
||||
`RSMON_TEST_DOCKER_DNS` repository variable (comma-separated nameservers,
|
||||
applied as `docker run --dns ...`) and mirror/snapshot overrides via
|
||||
`RSMON_TEST_IMAGE_ALPINE` / `RSMON_TEST_IMAGE_UBUNTU` /
|
||||
`RSMON_TEST_IMAGE_ARCH`.
|
||||
- Fixed a history-dependent test fragility: `TestSourceInstallDirtyCheckoutPreservesStaging`
|
||||
and the rollback test's build-failure step dirty the tracked tree by
|
||||
appending a marker line to `Makefile` instead of `git checkout master~1 --
|
||||
Makefile`, which silently stopped dirtying the tree once the last commit did
|
||||
not touch that file.
|
||||
|
||||
## 2026-08-12
|
||||
|
||||
### Source-install hardening review
|
||||
|
||||
Ссылка в новой задаче
Block a user