I'm trying to evaluate nomuls for hosting epp and other components. I've been running into multiple problems just trying to get a basic build & test.
I'm performing these steps on a Macbook M1 Pro w/16GB memory, running Sonoma 14.6, w/Docker desktop 4.37.2.
I've been working in cloud environments for a long time, in devops and infrastructure roles. Most recently GCP w/Cloud Run, GKE, GAE, and all the typical supporting GCP stuff.
I dont think I'm missing anything, but I feel like i've been down multiple rabbit holes over the past day or so trying to just get a simple build on my local to succeed before even attempting to push into a GCP/GAE project.
Where am I going wrong in this?
Below is where i've been, and this is only a portion of the rabbit holes, but i cant help but think something is not correct early in the process.
Does anyone have any feedback on how to get a simple build to complete successfully?
# My nomulus experience(s)
here in you'll find my notes on my nomulus experience(s). I'm not sure what i'm going to do with this yet, but I'm going to try to keep it up to date, as it may help others
# initial build
per [instructions](
https://github.com/google/nomulus/blob/master/docs/install.md), git clone the repo and run `./nom_buid build`
So, I started with a `./nom_buid build` and found some rabbit holes...
first, the install doc seems out of date, which is partially my inspiration for this doc.
I came across [this post](
https://groups.google.com/g/nomulus-discuss/c/4QyFknshKSU/m/VFwbn9e9BAAJ), which basically says:
```
1) set up GCP projects for production and test environments
2) update projects.gradle with the names of those environments
3) update the configuration files in core/src/main/java/google/registry/config/files with correct configuration for those environments (e.g. nomulus-config-production.yaml, overriding the values in default-config.yaml as appropriate). At minimum you'll want to set up a client id and secret for registryTool.
4) deploy to an environment with "./nom_build appengineDeploy --environment=<environment-name>" where <environment-name> is the short name of an environment in projects.gradle. For example, to deploy to sandbox: "./nom_build appengineDeploy --environment=sandbox"
```
this is generally in alignment with the current install docs.
## 2025-03-05
---
java, a bunch of brew install, found that openjdk@23 has some stuff that breaks (I didnt capture the error, but I'll try to remember to come back to it)
anyhow, downgraded to openjdk@21
---
just trying to run tests locally;
found [this post](
https://groups.google.com/g/nomulus-discuss/c/ENYixOao-P4/m/35sC0ATpAgAJ) that indicates you should be able to simply clone the repo and run 'gradlew test` and all tests should pass...
```
> Task :db:test FAILED
SchemaTest > deploySchema_emptyDb() FAILED
org.testcontainers.containers.ContainerFetchException at GenericContainer.java:1364
Caused by: com.github.dockerjava.api.exception.NotFoundException at DefaultInvocationBuilder.java:241
5 tests completed, 1 failed, 2 skipped
```
lots of other errors as well about classes not being found, etc. so i decided to try to do a build...
---
### ./nom_buid build fails,
error: `Execution failed for task ':db:test'.`
`org.testcontainers.containers.ContainerFetchException: Can't get Docker image: RemoteDockerImage(imageName=aarch64/postgres:17-alpine, imagePullPolicy=DefaultPullPolicy(), imageNameSubstitutor=org.testcontainers.utility.ImageNameSubstitutor$LogWrappedImageNameSubstitutor@25df2014)`
update `NomulusPostgreSql.java` to use `latest` instead of `17-alpine`
` private static final String TARGET_VERSION = "latest";`
code formatter updates some white space
`javaIncrementalFormatCheck` fails
did not run `javaIncrementalFormatApply` to fix the whitespace. I didnt see this task until later.
Iinstead I just commented out the task in `build.gradle`
`// tasks.build.dependsOn(tasks.javaIncrementalFormatCheck)`
the list of things then sprials into updating container image for postgres from 17-alpine to latest, test cases failing for different reasons; mostly because of core:standardTest failing miserably. for which i've just been stripping test after test, forcing test assertions true, etc.. I can provide similar notes for all of this as well, but I think at this point you'll understand.