Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ jobs:
commit: "chore(release): version apps"
title: "Release New Version"
version: pnpm changeset:version
publish: pnpm changeset-publish
publish: pnpm changeset:publish
createGithubReleases: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release_snapshot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ jobs:

- name: Publish snapshot packages to NPM
if: steps.snapshot.outputs.hasChanges == 'true'
run: pnpm changeset-publish:next
run: pnpm changeset:publish:next
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
Expand Down
3 changes: 2 additions & 1 deletion apps/ensapi/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@
"lint": "biome check --write .",
"lint:ci": "biome ci",
"typecheck": "tsgo --noEmit",
"generate:gqlschema": "tsx src/omnigraph-api/lib/write-graphql-schema.ts"
"generate:gqlschema": "tsx src/omnigraph-api/lib/write-graphql-schema.ts",
"version:current": "node -p \"require('./package.json').version\""
},
"dependencies": {
"@ensdomains/ensjs": "^4.0.2",
Expand Down
10 changes: 5 additions & 5 deletions docker/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ All commands are run from the **monorepo root**.

| File | Purpose |
| ---------------------------------------- | -------------------------------------------------------------------------------------- |
| `docker/docker-compose.yml` | Base stack — ensindexer, ensapi, ensrainbow, ensadmin, postgres. For mainnet/sepolia. |
| `docker/docker-compose.yml` | Base stack — ensindexer, ensapi, ensrainbow, ensadmin, ensdb. For mainnet/sepolia. |
| `docker/docker-compose.devnet.yml` | Full stack against local devnet (`ens-test-env`). Includes all base services + devnet. |
| `docker/docker-compose.orchestrator.yml` | Minimal infra for CI — devnet + postgres only. Used by `orchestrator.ts`. |
| `docker/docker-compose.orchestrator.yml` | Minimal infra for CI — devnet + ensdb only. Used by `orchestrator.ts`. |
| `docker/services/*.yml` | Individual service definitions. Extended by the compose files above. |
| `docker/envs/.env.docker.common` | Shared env defaults (postgres credentials, internal service URLs). Committed. |
| `docker/envs/.env.docker.common` | Shared env defaults (ensdb credentials, internal service URLs). Committed. |
| `docker/envs/.env.docker.devnet` | Devnet defaults (PLUGINS, etc.). Committed. Works out of the box. |
| `docker/envs/.env.docker.example` | Example for user-specific config. Copy to `.env.docker.local` for mainnet/sepolia. |
| `docker/envs/.env.docker.local` | User config (gitignored). Required for base stack, optional for devnet overrides. |
Expand Down Expand Up @@ -57,7 +57,7 @@ To override defaults (e.g. change `PLUGINS`), create `docker/envs/.env.docker.lo
docker compose -f docker/docker-compose.devnet.yml up -d

# Start only devnet + core services (no ensadmin)
docker compose -f docker/docker-compose.devnet.yml up -d devnet postgres ensrainbow ensindexer ensapi
docker compose -f docker/docker-compose.devnet.yml up -d ensindexer ensapi

# Start only devnet (quick local EVM node, also shows data information about devnet)
docker compose -f docker/docker-compose.devnet.yml up devnet
Expand All @@ -83,7 +83,7 @@ pnpm docker:build:ensadmin

### CI / integration tests

Used internally by `orchestrator.ts` via testcontainers. Starts devnet + postgres only.
Used internally by `orchestrator.ts` via testcontainers. Starts devnet + ensdb only.

```bash
pnpm test:integration:ci
Expand Down
30 changes: 8 additions & 22 deletions docker/docker-compose.devnet.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,6 @@ services:
file: services/ensindexer.yml
service: ensindexer
environment:
# TODO: in future we will migrate devnet to chain_id=1
Comment thread
sevenzing marked this conversation as resolved.
# need to remove `RPC_URL_15658733` in that case
RPC_URL_15658733: http://devnet:8545
RPC_URL_1: http://devnet:8545
ENSINDEXER_SCHEMA_NAME: docker_devnet_v1
LABEL_SET_ID: ens-test-env
NAMESPACE: ens-test-env
env_file:
- path: envs/.env.docker.common
Expand All @@ -21,7 +15,7 @@ services:
depends_on:
ensrainbow:
condition: service_healthy
postgres:
ensdb:
condition: service_healthy
devnet:
condition: service_healthy
Expand All @@ -30,14 +24,8 @@ services:
extends:
file: services/ensapi.yml
service: ensapi
environment:
# TODO: in future we will migrate devnet to chain_id=1
# need to remove `RPC_URL_15658733` in that case
RPC_URL_15658733: http://devnet:8545
RPC_URL_1: http://devnet:8545
ENSINDEXER_SCHEMA_NAME: docker_devnet_v1
depends_on:
postgres:
ensdb:
condition: service_healthy
env_file:
- path: envs/.env.docker.common
Expand All @@ -51,8 +39,6 @@ services:
extends:
file: services/ensrainbow.yml
service: ensrainbow
environment:
LABEL_SET_ID: ens-test-env
env_file:
- path: envs/.env.docker.common
required: true
Expand All @@ -76,12 +62,12 @@ services:
- path: envs/.env.docker.local
required: false

postgres:
ensdb:
extends:
file: services/postgres.yml
service: postgres
file: services/ensdb.yml
service: ensdb
env_file:
- path: ./envs/.env.docker.common
- path: envs/.env.docker.common
required: true

devnet:
Expand All @@ -94,8 +80,8 @@ volumes:
# compose file that references them — they cannot be inherited via `extends`.
# Explicit `name:` prevents collision with the base stack's volumes when both
# are run from the same directory (same project name).
postgres_data:
name: ensnode_devnet_postgres_data
ensdb_data:
name: ensnode_devnet_ensdb_data
driver: local
ensrainbow_data:
name: ensnode_devnet_ensrainbow_data
Expand Down
12 changes: 6 additions & 6 deletions docker/docker-compose.orchestrator.yml
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
# Minimal compose for CI integration tests.
# Provides only the infrastructure services needed by orchestrator.ts:
# devnet (local EVM) and postgres (database).
# devnet (local EVM) and ensdb (database).
services:
devnet:
extends:
file: services/devnet.yml
service: devnet

postgres:
ensdb:
extends:
file: services/postgres.yml
service: postgres
file: services/ensdb.yml
service: ensdb
env_file:
- path: ./envs/.env.docker.common
- path: envs/.env.docker.common
required: true

volumes:
# Docker Compose requires volumes used by services to be declared in each
# compose file that references them — they cannot be inherited via `extends`.
postgres_data:
ensdb_data:
driver: local
17 changes: 11 additions & 6 deletions docker/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,13 @@ services:
extends:
file: services/ensindexer.yml
service: ensindexer
restart: unless-stopped
environment:
ENSINDEXER_SCHEMA_NAME: docker_ensindexer_v1
depends_on:
ensrainbow:
condition: service_healthy
postgres:
ensdb:
condition: service_healthy
env_file:
- path: envs/.env.docker.common
Expand All @@ -21,10 +22,11 @@ services:
extends:
file: services/ensapi.yml
service: ensapi
restart: unless-stopped
environment:
ENSINDEXER_SCHEMA_NAME: docker_ensindexer_v1
depends_on:
postgres:
ensdb:
condition: service_healthy
env_file:
- path: envs/.env.docker.common
Expand All @@ -36,6 +38,7 @@ services:
extends:
file: services/ensrainbow.yml
service: ensrainbow
restart: unless-stopped
env_file:
- path: envs/.env.docker.common
required: true
Expand All @@ -46,6 +49,7 @@ services:
extends:
file: services/ensadmin.yml
service: ensadmin
restart: unless-stopped
depends_on:
ensapi:
condition: service_started
Expand All @@ -55,18 +59,19 @@ services:
- path: envs/.env.docker.local
required: true

postgres:
ensdb:
extends:
file: services/postgres.yml
service: postgres
file: services/ensdb.yml
service: ensdb
restart: unless-stopped
env_file:
- path: envs/.env.docker.common
required: true

volumes:
# Docker Compose requires volumes used by services to be declared in each
# compose file that references them — they cannot be inherited via `extends`.
postgres_data:
ensdb_data:
driver: local
ensrainbow_data:
driver: local
5 changes: 2 additions & 3 deletions docker/envs/.env.docker.common
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
# Shared Docker Compose environment variables
# Used by docker/docker-compose.yml and its variants


# Postgres
Comment thread
sevenzing marked this conversation as resolved.
POSTGRES_DB=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=password

# Internal service URLs (container-to-container)
ENSDB_URL=postgresql://postgres:password@postgres:5432/postgres
ENSDB_URL=postgresql://postgres:password@ensdb:5432/postgres
ENSRAINBOW_URL=http://ensrainbow:3223

# ENS Admin
# ENSAdmin
ENSADMIN_PUBLIC_URL=http://localhost:4173
Comment thread
sevenzing marked this conversation as resolved.
NEXT_PUBLIC_SERVER_CONNECTION_LIBRARY=http://localhost:4334
12 changes: 12 additions & 0 deletions docker/envs/.env.docker.devnet
Original file line number Diff line number Diff line change
@@ -1,6 +1,18 @@
# Default configuration for devnet docker-compose stack.
# These values work out of the box — override by creating .env.docker.local.

# ENSIndexer
PLUGINS=subgraph,ensv2
# ENSIndexer and ENSApi
ENSINDEXER_SCHEMA_NAME=docker_devnet_v1
# ENSIndexer and ENSApi
RPC_URL_1=http://devnet:8545
# ENSIndexer and ENSRainbow
LABEL_SET_VERSION=0
# ENSIndexer and ENSRainbow
LABEL_SET_ID=ens-test-env
# ENSRainbow
DB_SCHEMA_VERSION=3
Comment thread
sevenzing marked this conversation as resolved.
# TODO: in future we might migrate devnet to different chain_id like 1337 or 31337
# need to update this `RPC_URL_15658733` in that case
RPC_URL_15658733=http://devnet:8545
Comment on lines +4 to +18
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Reorder these env keys before merging.

dotenv-linter is already flagging the new ordering here, so this file will keep failing lint until the entries are sorted into the project’s expected order.

🧰 Tools
🪛 dotenv-linter (4.0.0)

[warning] 7-7: [UnorderedKey] The ENSINDEXER_SCHEMA_NAME key should go before the PLUGINS key

(UnorderedKey)


[warning] 11-11: [UnorderedKey] The LABEL_SET_VERSION key should go before the PLUGINS key

(UnorderedKey)


[warning] 13-13: [UnorderedKey] The LABEL_SET_ID key should go before the LABEL_SET_VERSION key

(UnorderedKey)


[warning] 15-15: [UnorderedKey] The DB_SCHEMA_VERSION key should go before the ENSINDEXER_SCHEMA_NAME key

(UnorderedKey)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docker/envs/.env.docker.devnet` around lines 4 - 18, The env file entries are
out of order and failing dotenv-linter; reorder the keys (PLUGINS,
ENSINDEXER_SCHEMA_NAME, RPC_URL_1, RPC_URL_15658733, LABEL_SET_ID,
LABEL_SET_VERSION, DB_SCHEMA_VERSION) into the project’s expected sorted order
so dotenv-linter passes, keeping the existing comments with their related keys
and preserving values for keys like PLUGINS, ENSINDEXER_SCHEMA_NAME, RPC_URL_1,
RPC_URL_15658733, LABEL_SET_VERSION, LABEL_SET_ID, and DB_SCHEMA_VERSION.

2 changes: 1 addition & 1 deletion docker/services/ensadmin.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
services:
ensadmin:
container_name: ensadmin
image: ghcr.io/namehash/ensnode/ensadmin:latest
image: ghcr.io/namehash/ensnode/ensadmin:${ENSNODE_VERSION:-1.10.1}
build:
dockerfile: ./apps/ensadmin/Dockerfile
context: ../..
Expand Down
2 changes: 1 addition & 1 deletion docker/services/ensapi.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
services:
ensapi:
container_name: ensapi
image: ghcr.io/namehash/ensnode/ensapi:latest
image: ghcr.io/namehash/ensnode/ensapi:${ENSNODE_VERSION:-1.10.1}
build:
dockerfile: ./apps/ensapi/Dockerfile
context: ../..
Expand Down
6 changes: 3 additions & 3 deletions docker/services/postgres.yml → docker/services/ensdb.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
services:
postgres:
container_name: postgres
ensdb:
container_name: ensdb
image: postgres:17
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
- ensdb_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
interval: 5s
Expand Down
2 changes: 1 addition & 1 deletion docker/services/ensindexer.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
services:
ensindexer:
container_name: ensindexer
image: ghcr.io/namehash/ensnode/ensindexer:latest
image: ghcr.io/namehash/ensnode/ensindexer:${ENSNODE_VERSION:-1.10.1}
build:
dockerfile: ./apps/ensindexer/Dockerfile
context: ../..
Expand Down
3 changes: 1 addition & 2 deletions docker/services/ensrainbow.yml
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
services:
ensrainbow:
container_name: ensrainbow
image: ghcr.io/namehash/ensnode/ensrainbow:latest
image: ghcr.io/namehash/ensnode/ensrainbow:${ENSNODE_VERSION:-1.10.1}
build:
Comment thread
sevenzing marked this conversation as resolved.
dockerfile: ./apps/ensrainbow/Dockerfile
context: ../..
ports:
- "3223:3223"
volumes:
- ensrainbow_data:/app/apps/ensrainbow/data
restart: unless-stopped
healthcheck:
test: ["CMD", "wget", "-q", "--spider", "http://localhost:3223/health"]
interval: 30s
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ ENSIndexer runs `CREATE EXTENSION IF NOT EXISTS pg_trgm` at startup to back part

ENSNode provides several [Docker Compose](https://docs.docker.com/compose/) files for different use cases:

- **`docker/docker-compose.yml`** — base stack for mainnet/sepolia: ensindexer, ensapi, ensrainbow, ensadmin, postgres
- **`docker/docker-compose.yml`** — base stack for mainnet/sepolia: ensindexer, ensapi, ensrainbow, ensadmin, ensdb (postgres)
- **`docker/docker-compose.devnet.yml`** — full stack against local devnet (ens-test-env), works out of the box with no configuration required

### Mainnet / Sepolia
Expand Down
10 changes: 6 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,15 @@
"audit:osv": "osv-scanner scan source --lockfile pnpm-lock.yaml",
"typecheck": "pnpm -r --parallel --aggregate-output typecheck",
"changeset": "changeset",
"changeset:version": "changeset version && pnpm generate:openapi",
"changeset:next": "changeset version --snapshot next && pnpm generate:openapi",
"changeset-publish": "changeset publish",
"changeset-publish:next": "changeset publish --no-git-tag --snapshot --tag next",
"changeset:version": "changeset version && pnpm release:postversion",
"changeset:next": "changeset version --snapshot next && pnpm release:postversion",
"changeset:publish": "changeset publish",
"changeset:publish:next": "changeset publish --no-git-tag --snapshot --tag next",
"release:postversion": "pnpm docker:version:sync && pnpm generate:openapi",
"packages:prepublish": "pnpm -r prepublish",
"devnet": "docker compose -f docker/docker-compose.devnet.yml up devnet",
"docker:build:ensnode": "pnpm run -w --parallel \"/^docker:build:.*/\"",
"docker:version:sync": "node ./scripts/sync-docker-services-tags.mjs \"$(pnpm -F ensapi -s version:current)\"",
"docker:build:ensindexer": "docker build -f apps/ensindexer/Dockerfile -t ghcr.io/namehash/ensnode/ensindexer:latest .",
"docker:build:ensadmin": "docker build -f apps/ensadmin/Dockerfile -t ghcr.io/namehash/ensnode/ensadmin:latest .",
"docker:build:ensrainbow": "docker build -f apps/ensrainbow/Dockerfile -t ghcr.io/namehash/ensnode/ensrainbow:latest .",
Expand Down
Loading
Loading