Skip to content

Commit 671334a

Browse files
committed
ci: enforce backend tests and update action runtimes
1 parent 693b1b9 commit 671334a

5 files changed

Lines changed: 22 additions & 15 deletions

File tree

‎.dockerignore‎

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,6 @@ logs
3939
!README.md
4040
!src/main/resources/**/*.md
4141

42-
# Test files
43-
**/*.test.*
44-
**/__tests__
45-
**/test
46-
4742
# CI/CD
4843
.github
4944
.gitlab-ci.yml

‎.github/workflows/ci.yml‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ jobs:
1717
timeout-minutes: 40
1818

1919
steps:
20-
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
20+
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
2121

2222
- name: Set up authenticated remote BuildKit
23-
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3
23+
uses: docker/setup-buildx-action@f87e5991a6d7451dcb8d9637bfbc97413f497069 # v4.4.1
2424
with:
2525
driver: remote
2626
endpoint: tcp://buildkit:1234
@@ -30,7 +30,7 @@ jobs:
3030
key=/run/buildkit/tls/client.key
3131
3232
- name: Test Backend, Verify Linked Runtime and Scan Vulnerabilities
33-
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6
33+
uses: docker/build-push-action@c3c9e263c25d99ce0380d002d59b67737d91b0dc # v7.4.0
3434
with:
3535
context: .
3636
file: ./Dockerfile

‎.github/workflows/deploy.yml‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ jobs:
3232

3333
steps:
3434
- name: Checkout tested main commit
35-
uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
35+
uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
3636
with:
3737
ref: ${{ github.event.workflow_run.head_sha }}
3838
fetch-depth: 1
@@ -47,7 +47,7 @@ jobs:
4747
test "$(git rev-parse refs/remotes/origin/main)" = "$TESTED_SHA"
4848
4949
- name: Set up authenticated remote BuildKit
50-
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3
50+
uses: docker/setup-buildx-action@f87e5991a6d7451dcb8d9637bfbc97413f497069 # v4.4.1
5151
with:
5252
driver: remote
5353
endpoint: tcp://buildkit:1234
@@ -57,15 +57,15 @@ jobs:
5757
key=/run/buildkit/tls/client.key
5858
5959
- name: Log in to Container Registry
60-
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3
60+
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
6161
with:
6262
registry: ${{ env.REGISTRY }}
6363
username: ${{ github.repository_owner }}
6464
password: ${{ secrets.GHCR_PAT }}
6565

6666
- name: Extract metadata
6767
id: meta
68-
uses: docker/metadata-action@c299e40c65443455700f0fdfc63efafe5b349051 # v5
68+
uses: docker/metadata-action@dc802804100637a589fabce1cb79ff13a1411302 # v6.2.0
6969
with:
7070
context: git
7171
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
@@ -74,7 +74,7 @@ jobs:
7474
type=sha,prefix=main-
7575
7676
- name: Build and push Docker image
77-
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6
77+
uses: docker/build-push-action@c3c9e263c25d99ce0380d002d59b67737d91b0dc # v7.4.0
7878
with:
7979
context: .
8080
file: ./Dockerfile

‎Dockerfile‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ COPY frontend ./frontend
1212
COPY src ./src
1313

1414
# Run the same backend tests and frontend checks used for local verification.
15-
RUN ./mvnw --batch-mode --no-transfer-progress clean verify && \
15+
RUN ./mvnw --batch-mode --no-transfer-progress -DfailIfNoTests=true clean verify && \
1616
cd frontend && npm audit --audit-level=low
1717

1818
FROM backend-build AS java-runtime

‎docs/maintenance-audit-2026-09-28.md‎

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ Playwright verified the desktop title and terminal styling, `gm`/`cat about.txt`
111111

112112
The owner-reviewed inventory initially contained 24 repositories: six represented projects, four missing public candidates, eight missing private candidates, five forks, and one profile repository. The seven-entry audit baseline included one planned concept without a matching owned repository. The detailed inventory is retained locally because it names unselected private projects. After this audit, the owner selected Discord Option Tailer and Embedify for the release; their catalogue entries are the only approved additions.
113113

114-
### Final integration record
114+
### Initial local validation record
115115

116116
The final local build, dependency checks, workflow review, and executable-JAR/browser smoke checks are complete.
117117

@@ -124,3 +124,15 @@ The final local build, dependency checks, workflow review, and executable-JAR/br
124124
- Workflow evidence: YAML parsing, inline shell syntax, Docker smoke shell syntax, and action pin checks passed. No local container daemon was available; private-runner/remote-BuildKit execution remains unverified.
125125
- Cleanup: the task-owned Java runtime on port 18080 and isolated `website-audit` browser were stopped after verification. No test server is being handed off.
126126
- Both staged and unstaged whitespace checks passed. The index contains only the deliberate dependency/generated-asset removals; source changes remain uncommitted. No push, workflow dispatch, image publication, production deployment, or catalogue addition occurred.
127+
128+
## Subsequent release hardening
129+
130+
After the initial audit, Joshua approved adding Discord Option Tailer and Embedify, committing/pushing the changes, publishing a container through CI, and deploying it to TrueNAS. The catalogue now contains nine entries. Embedify's repository visibility remains unchanged.
131+
132+
- Updated the build to Spring Boot 4.1.1, Java 25 LTS, Node 26.10.0, React 19.3.0, React Router 8.4.0, Vite 8.3.1, TypeScript 7.0.2, and Maven 3.9.16. Java 25 is the maintained LTS choice within Spring Boot 4.1.1's supported Java range; Java 27 is outside that range.
133+
- The container now has separate build and runtime stages. `jdeps` and `jlink` produce the runtime; the published image runs as UID/GID 1001 and contains no Java compiler or Node toolchain.
134+
- CI runs the complete build inside pinned containers on the private TrueNAS runner, avoiding the Adoptium setup API timeout and missing host Node library. Docker action pins use current stable releases.
135+
- Removed Docker build-context test exclusions and enabled Maven `-DfailIfNoTests=true`; a successful container build must execute the backend tests. The seven tests also pass locally on Java 25.
136+
- The final image depends on a fresh non-root runtime smoke test and Trivy scan of its shared runtime filesystem. All detected vulnerability severities fail the build. The preceding Linux scan reported zero Alpine and application-JAR findings, and npm reported zero known vulnerabilities.
137+
138+
Publication and production verification are recorded separately in the local release ledger; the earlier artifact hash and runtime checks above describe the initial audit build.

0 commit comments

Comments
 (0)