Skip to content

ci: add composer-normalize, conventional-pr-title, dclint; bind compose ports to localhost#41

Merged
kojiromike merged 1 commit into
mainfrom
kojiromike/add-missing-ci-workflows
May 12, 2026
Merged

ci: add composer-normalize, conventional-pr-title, dclint; bind compose ports to localhost#41
kojiromike merged 1 commit into
mainfrom
kojiromike/add-missing-ci-workflows

Conversation

@kojiromike
Copy link
Copy Markdown
Contributor

@kojiromike kojiromike commented May 12, 2026

Summary

Brings oce-cli-import-codes closer to parity with oce-cli-manage-users on the CI side, and incidentally fixes localhost-only port binding so dclint passes.

New CI workflows

Callers of openCoreEMR/github-workflows-public@0.0.4:

  • composer-normalizecomposer normalize --dry-run (ergebnis/composer-normalize is already in dev deps)
  • conventional-pr-title — validates PR titles against the conventional-commits spec
  • dclint — lints compose.yml

compose.yml changes (required to make dclint pass)

  • All published ports switched from short-form (- "80") to long-form with host_ip: 127.0.0.1, so the dev MySQL/CouchDB/etc. no longer expose to 0.0.0.0.
  • Added required name: oce-cli-import-codes.
  • Alphabetized services and reordered service keys per dclint expected layout.

Behavior change: anyone who relied on LAN access to the dev stack now needs an SSH tunnel or to set host_ip: 0.0.0.0 explicitly.

.dclintrc.json

Mirrors oce-cli-manage-users. Disables the no-duplicate-exported-ports rule, which false-positives on long-form ports without a published field (Docker assigns each service a distinct random host port; dclint reads the published key as empty string and treats them as duplicates).

Not added (and why)

  • composer-require-checker — needs both a maglnet/composer-require-checker dev dep and a .composer-require-checker.json config file. Add separately when ready.
  • hadolint — no Dockerfile* in the repo today.

Pre-existing issue uncovered (not in scope here)

The phpunit and phpunit-coverage services in compose.yml reference dockerfile: Dockerfile.test, which does not exist in the repo. Hidden today because both services are under profiles: [test] and only run on explicit invocation. Worth a follow-up to either add the Dockerfile or remove the phantom services.

The structural refactor (move openemr/openemr to tools/openemr/ sub-vendor pattern, rewire compose.yml + Taskfile.yml + phpstan script) is deferred to a separate PR.

Test plan

  • All new CI checks pass on this PR (actionlint, composer-normalize, conventional-pr-title, dclint)
  • Existing checks still pass (phpunit, phpcs, phpstan, rector, etc.)
  • Local task dev:start still brings up the stack (ports now on 127.0.0.1)

@kojiromike kojiromike force-pushed the kojiromike/add-missing-ci-workflows branch from 60ddb6b to d18f8a3 Compare May 12, 2026 15:27
…se ports to localhost

Brings oce-cli-import-codes closer to parity with oce-cli-manage-users
on the CI side, and incidentally fixes localhost-only port binding so
dclint passes.

New CI workflows (callers of openCoreEMR/github-workflows-public@0.0.4):

- composer-normalize: composer normalize --dry-run (ergebnis/composer-normalize is already in dev deps)
- conventional-pr-title: validates PR titles against the conventional-commits spec
- dclint: lints compose.yml

compose.yml changes (required to make dclint pass):

- All published ports switched from short-form (- "80") to long-form
  with host_ip: 127.0.0.1, so the dev MySQL/CouchDB/etc. no longer
  expose to 0.0.0.0
- Added required name: oce-cli-import-codes
- Alphabetized services and reordered service keys per dclint expected layout
- Behavior change: anyone who relied on LAN access to the dev stack
  now needs an SSH tunnel or to set host_ip: 0.0.0.0 explicitly

.dclintrc.json mirrors oce-cli-manage-users — disables the
no-duplicate-exported-ports rule, which false-positives on long-form
ports without a "published" field (Docker assigns each service a
distinct random host port; dclint reads the published key as empty
string and treats them as duplicates).

Not added (and why):

- composer-require-checker: needs both maglnet/composer-require-checker
  dev dep and a .composer-require-checker.json config file
- hadolint: no Dockerfile* in the repo today

Pre-existing (not addressed here): the phpunit and phpunit-coverage
services in compose.yml reference dockerfile: Dockerfile.test, which
does not exist. Hidden today because both services are under
profiles: [test] and only run on explicit invocation.

The structural refactor (move openemr/openemr to tools/openemr/
sub-vendor pattern, rewire compose.yml + Taskfile.yml + phpstan
script) is deferred to a separate PR.
@kojiromike kojiromike force-pushed the kojiromike/add-missing-ci-workflows branch from f0723a5 to 8822fd1 Compare May 12, 2026 16:17
@kojiromike kojiromike changed the title ci: add composer-normalize, conventional-pr-title, dclint workflows ci: add composer-normalize, conventional-pr-title, dclint; bind compose ports to localhost May 12, 2026
@kojiromike kojiromike merged commit a46eb3e into main May 12, 2026
4 checks passed
@kojiromike kojiromike deleted the kojiromike/add-missing-ci-workflows branch May 12, 2026 16:34
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.

1 participant