feat: add containerized build/test environment via Dockerfile - #1493
Conversation
|
Looks like the Java CI failure is preexisting -- I reran the latest |
|
Confirmed, looks like a flaky test -- see https://github.com/dtinit/data-transfer-project/actions/runs/26077383377 run history |
lisad
left a comment
There was a problem hiding this comment.
additional documentation is appreciated!
Runs the test suite via the Dockerfile/docker-compose added in #1493, on the same push/PR triggers as the existing Gradle workflow, so the two can be compared side by side before the containerized path becomes the default.
|
cc @simonxander -- I am curious if this direction would simplify your work / Developer Experience / deployment setup. Let me know if you'd be up for a discussion here (probably via a call). |
Hi @alexeyqu, thanks for the ping! I have tested the For further discussion, I prefer text-based communication. Please feel free to share your thoughts right here in the comments! |
|
Thank you @simonxander -- I am continuing to improve the DevEx setup here, would greatly appreciate any ideas. Currently the next proposed step is some docker image tightening in #1505. |
Adds a
Dockerfilepinned togradle:8.10.2-jdk11and adocker-compose.ymlso contributors can run the full test suite with no local JDK installed:docker compose run --rm testThe compose file encodes the source bind-mount and a named volume for the Gradle dependency cache, so the first run resolves dependencies and subsequent runs reuse them.
Notable decisions / tradeoffs
COPYed into the image, so the image doesn't need rebuilding on every code change. Thedocker-compose.ymlhides this from contributors -- they just rundocker compose run..gitignorecleanup: removed the bareDockerfilerule. The rule's comment said it was for the demo-server's generatedDockerfile, but that file lands indistributions/demo-server/build/demo/Dockerfile-- already covered by thebuild/ignore rule. The bare rule was redundant.datatransferproject/dev: mirrors the existingdatatransferproject/demoimage produced by the:dockerizetask, establishing a consistent namespace.gradle:*-jdk17fails outright. Not a preference; a hard constraint from the wrapper version.