Skip to content

tests: add nightly workflow#16

Open
j4n wants to merge 15 commits into
j4n/docker-supportfrom
j4n/nightly-matrix
Open

tests: add nightly workflow#16
j4n wants to merge 15 commits into
j4n/docker-supportfrom
j4n/nightly-matrix

Conversation

@j4n

@j4n j4n commented May 20, 2026

Copy link
Copy Markdown

.github/workflows/nightly.yml:

  • Scheduled at 02:17 UTC daily (also workflow_dispatch for manual runs).
  • based on reusable workflow

@j4n j4n force-pushed the j4n/docker-support branch from 5485307 to 7bb8b83 Compare May 20, 2026 14:35

@missytake missytake left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me, but I guess others should look at this as well :)

I think there was also the idea to run https://github.com/chatmail/core/blob/main/.github/workflows/ci.yml against the four different deployment options? afaict you can only pass one CHATMAIL_DOMAIN to it, so it doesn't seem to be cross-server. Which should be enough, too :D

but maybe a cmlxc core-test command is out of scope for this PR, this is already a good start.

How do we get notified on failure?

@j4n j4n force-pushed the j4n/nightly-matrix branch from e41d8b5 to d5a96ea Compare May 20, 2026 14:57
@j4n j4n changed the title tests(docker): add nightly workflow tests: add nightly workflow May 20, 2026
@j4n j4n changed the base branch from j4n/docker-support to main May 20, 2026 15:00
@j4n j4n changed the base branch from main to j4n/docker-support May 20, 2026 15:00
@j4n j4n force-pushed the j4n/docker-support branch from 7bb8b83 to 74b3c30 Compare May 20, 2026 15:05
@j4n j4n force-pushed the j4n/nightly-matrix branch from d5a96ea to 11342ae Compare May 20, 2026 15:05
@j4n j4n changed the base branch from j4n/docker-support to main May 20, 2026 15:06
@j4n j4n changed the base branch from main to j4n/docker-support May 20, 2026 15:06
@j4n j4n force-pushed the j4n/nightly-matrix branch from 11342ae to 9e4704d Compare May 20, 2026 15:10
j4n added 8 commits May 28, 2026 16:21
Containers with Docker or other networking can expose IPs on multiple
interfaces. _extract_ip() now accepts an optional subnet filter so
wait_ready() and list_managed() only pick addresses on incusbr0.
Move the initialization check (DNS container running + base image
present) from cli._check_init() into Incus.check_init() so that
drivers can call it without depending on the CLI module.
…ure()

Allows drivers to pass additional Incus config keys (e.g.
security.nesting=true for Docker-in-LXC) when launching containers.
Threaded through Container and RelayContainer.
…nd on_init_relay default

Move the initenv.sh hook from CmdeployDriver.on_init_relay() into the
Driver base class as the default implementation -- both cmdeploy and
docker drivers used identical bodies.

Extract run_cmdeploy_pytest() as a standalone function so that any
driver sharing the cmdeploy test suite (currently CmdeployDriver and
DockerDriver) can call it without duplicating the env_exports / pytest
command construction.
When the source ref is a full 40-char SHA (e.g. from CI dispatch),
the shallow git-main clone won't have it. Detect this case and
fetch just that commit with --depth 1 before checkout.
When no explicit -v flags are passed and RUNNER_DEBUG=1 is set
(GitHub Actions "Enable debug logging" rerun), auto-bump to -vvv.
The `git reset --hard origin/{ref}` is only useful for branch refs
(fast-forward to latest remote). For SHA refs it always fails silently
since there's no remote tracking branch. Only run it for branch refs.
…elease tags

prep_builder() in driver_base.py did not pull tags, so a subsequent
`git checkout <tag>` fails, needed for release builds.
@j4n j4n force-pushed the j4n/docker-support branch from 74b3c30 to 75f3583 Compare May 28, 2026 14:24
@j4n j4n force-pushed the j4n/nightly-matrix branch from 9e4704d to deaf811 Compare May 28, 2026 14:28
@j4n j4n force-pushed the j4n/docker-support branch from 75f3583 to 2b322ff Compare May 28, 2026 14:42
j4n added 5 commits May 28, 2026 16:44
…ript

Both the cmdeploy and docker drivers need to generate chatmail.ini with
relaxed rate limits for testing. Extract the overrides dict and the
Python snippet builder into shared helpers.
1. driver_cmdeploy.py: CmdeployDriver.on_init_relay() was removed
   during the be9d325 refactor but was never moved to the base class as
   the commit message claimed. The method runs scripts/initenv.sh inside
   the builder to create the relay's venv. Without it, every subsequent
   step that calls `source .../venv/bin/activate` fails with
   "No such file or directory".
Add DockerDriver for deploying chatmail relays via Docker Compose
inside LXC containers (Docker-in-LXC with security.nesting).

Features:
- Pull pre-built images from GHCR (--source ghcr:TAG)
- Inject local builds
- Healthcheck polling / log streaming
- SSH forwarding into Docker containers (for test compatibility)
- DNS zone extraction and PowerDNS loading
- security.privileged fenced behind CI=true

CLI subcommands: deploy, pull, logs, ps, shell
- Register DockerDriver in DRIVER_BY_NAME
- test-cmdeploy: dispatch to driver class from container metadata
- Fix _print_builder_repos to use driver REPO_NAME (avoids dupes)
@j4n j4n force-pushed the j4n/docker-support branch from 2b322ff to 645ba94 Compare May 28, 2026 14:44
- Add cmlxc_ref input to test feature branches
- Disable AppArmor for Docker-in-LXC systemd support
- Cache localchat-docker image (strip Docker images before export)
- Split cache into restore/save for better failure handling
- Per-service failure diagnostics (dovecot, postfix, failed units)
- install incus-base instead of full incus package
- trimmed=: normalise whitespace via xargs before eval so indented
  commands in the multiline cmlxc_commands input parse correctly and
  display cleanly in CI ::group:: labels
- get_service_logs.sh: debug logging calls
  /usr/local/sbin/get-service-logs (installed via COPY in the Docker
  image) which dumps per-service journalctl output, failed units,
  dovecot config, and TLS cert paths
.github/workflows/nightly.yml:
- Scheduled at 02:17 UTC daily (also workflow_dispatch for manual runs).
- based on reusable workflow
@j4n j4n force-pushed the j4n/nightly-matrix branch from deaf811 to 95dc71d Compare May 28, 2026 14:47

@hpk42 hpk42 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it's a bit weird this is living in cmlxc but i guess it's worth a try if this nightly approach reliably works.

@j4n j4n force-pushed the j4n/docker-support branch from 645ba94 to 6c5bc39 Compare June 1, 2026 08:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants