Summary
Audit the repo's CI/CD setup (currently a single GitHub Actions workflow, .github/workflows/docker-build-and-test.yml) and look for ways to make it more thorough, faster, and lower-maintenance. This is a scoping/audit issue - not a mandate to implement everything below, just a punch list to work through and prioritize.
What exists today
- One workflow,
docker-build-and-test.yml, triggered on push/PR to 2.x and dev. It copies the .dist config templates into place, builds the image via docker-compose up -d --build, runs docker-compose ps, then tears down. No other workflows exist (no lint/test job, no CodeQL, no Dependabot config, no release automation).
- Linting (
eslint) and the full test suite (@hapi/lab, 143 tests) currently only run locally via the Husky pre-commit hook (lint-staged + npm run start-test) - they are not run in CI at all.
- Neither
dev nor 2.x has any branch protection rules configured (confirmed via gh api repos/.../branches/{dev,2.x}/protection -> 404 "Branch not protected"), so CI passing isn't actually required before merge.
Specific things worth checking during the audit
Non-goals
This issue is for the audit and recommendations, not a single PR that does everything above - expect follow-up issues/PRs per finding once prioritized.
Summary
Audit the repo's CI/CD setup (currently a single GitHub Actions workflow,
.github/workflows/docker-build-and-test.yml) and look for ways to make it more thorough, faster, and lower-maintenance. This is a scoping/audit issue - not a mandate to implement everything below, just a punch list to work through and prioritize.What exists today
docker-build-and-test.yml, triggered on push/PR to2.xanddev. It copies the.distconfig templates into place, builds the image viadocker-compose up -d --build, runsdocker-compose ps, then tears down. No other workflows exist (no lint/test job, no CodeQL, no Dependabot config, no release automation).eslint) and the full test suite (@hapi/lab, 143 tests) currently only run locally via the Husky pre-commit hook (lint-staged+npm run start-test) - they are not run in CI at all.devnor2.xhas any branch protection rules configured (confirmed viagh api repos/.../branches/{dev,2.x}/protection-> 404 "Branch not protected"), so CI passing isn't actually required before merge.Specific things worth checking during the audit
npm run lintandnpm run start-testnever run in GitHub Actions - only via the local pre-commit hook, which can be skipped (--no-verify) or simply isn't installed on a contributor's machine. Consider adding atest.ymlworkflow that runs lint + the lab suite against a realmongodbservice container on every push/PR.actions/checkout@v3anddocker/setup-buildx-action@v2are behind current major versions (v4/v5), which matters as GitHub deprecates older Node-based action runtimes.docker-composeinstall. The workflow doessudo apt-get install -y docker-compose, which pulls Ubuntu'sdocker-composepackage - the unmaintained Python-based v1 (currently 1.29.2 via apt onubuntu-latest/noble). GitHub-hosted runners already ship thedocker composev2 plugin; the apt-get step is unnecessary and installs stale software with different quirks than what most deployers will actually run.docker-compose psright after starting the containers - it doesn't verify the server actually came up (e.g.curl -f http://localhost:8000/sealog-server/documentation). A crash-looping container could still pass this job. The "Run tests or validation" step is present but fully commented out.sudo mkdir -p /data/sealog-filesis now unused now thatdocker-compose.yml.diststores files in a named volume rather than a host bind mount (see Add .env.dist template for environment-based configuration #92/Add .env.dist and wire up automatic .env loading #93) - worth pruning along with other commented-out scaffolding (# services:block).actions/setup-nodewithcache: npm) nor Docker layer caching (actions/cacheordocker/build-push-actionwith a GHA cache backend) is used, so every run reinstalls/rebuilds from scratch.devnor2.xrequires the existing check to pass, so a red CI run doesn't actually block a merge. Worth deciding whether to turn this on now that there's a working PR-based flow (see [[feedback_pr_base_branch]] convention of PRs targetingdev).misc/) has no CI at all.misc/python_sealogand the aux-data-manager framework have no lint (flake8/pylint, though these are referenced inpackage.json'slint-stagedfor pre-commit) or test coverage in Actions.Non-goals
This issue is for the audit and recommendations, not a single PR that does everything above - expect follow-up issues/PRs per finding once prioritized.