Skip to content

Conversation

@stevedylandev
Copy link
Contributor

@stevedylandev stevedylandev commented Dec 12, 2025

This PR closes #1359 by adding the following:

  • snapshot-release.yml - Automatically publishes @next packages and docker images for commits to main
  • preview-release.yml - A manual workflow that can be run to create @preview packages for a branch, helpful for testing a PR before merging to main
  • Updates package.json to support scripting in new workflows
  • Updates docs at ensnode.io/docs/contributing/releases with new flow

@vercel
Copy link

vercel bot commented Dec 12, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (UTC)
admin.ensnode.io Ready Ready Preview, Comment Dec 22, 2025 1:00pm
ensnode.io Ready Ready Preview, Comment Dec 22, 2025 1:00pm
ensrainbow.io Ready Ready Preview, Comment Dec 22, 2025 1:00pm

@changeset-bot
Copy link

changeset-bot bot commented Dec 12, 2025

⚠️ No Changeset found

Latest commit: cdcdbc4

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

Copy link
Contributor

@tk-o tk-o left a comment

Choose a reason for hiding this comment

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

Looks awesome to me 🚀 I suggested some minor changes, feel free to merge the PR once ready.

Copy link
Member

@lightwalker-eth lightwalker-eth left a comment

Choose a reason for hiding this comment

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

@stevedylandev Thanks, excited for this! Shared some questions and requests for advice 👍

Co-authored-by: lightwalker.eth <[email protected]>
Co-authored-by: Tomek Kopacki <[email protected]>
Copy link
Member

@lightwalker-eth lightwalker-eth left a comment

Choose a reason for hiding this comment

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

@stevedylandev Thanks for the updates. One more key remaining issue. Please take the lead to merge when ready 👍


## Choosing the Right Release Type

### For Production Use: `@latest` (Full Releases)
Copy link
Member

Choose a reason for hiding this comment

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

We'll need to be very careful here. I think it will be a big issue for people if we suggest they setup their deployments of ENSNode to always install @latest. This will cause all kinds of chaos and pain. Please ask if you have any questions about why.

We need to explain with precision here the distinction between using docker images that were made as a full release vs pinning your deployments of docker images to the @latest tag.

We need to explain (specifically!) why pinning your docker image deployments using the @latest tag will cause problems and is highly not recommended.

We need to explain the process someone should go through to decide which specific version number tag they should use for their docker image deployments.

Please ask in Slack and bring others from the team into the discussion on this. I believe it will be important to get input from @tk-o or @shrugs on this who have a lot of experience now with the nuances of ENSNode deployments and how this works with DATABASE_SCHEMA values, etc.

Copy link
Collaborator

Choose a reason for hiding this comment

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

yeah we should encourage people to use a specific version not the latest tag itself — we're not abiding by real semver so minors can have breaking changes. if it's trivial, it might even be best to remove the latest tag entirely, to avoid anyone doing that?


- Check the GitHub releases page for the latest stable version and release notes
- Pin specific versions in your integrations rather than using tags like `@latest`
- Use full releases (`@latest`) as much as possible for stability
Copy link
Member

Choose a reason for hiding this comment

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

I see this bullet and the one above. They touch on the idea in my new comment up above but they do not sufficiently bring attention to this key issue.

@lightwalker-eth lightwalker-eth mentioned this pull request Dec 19, 2025
Copy link
Member

@lightwalker-eth lightwalker-eth left a comment

Choose a reason for hiding this comment

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

@stevedylandev Sharing feedback on the latest changes.

npm install @ensnode/package-name@latest
docker run ghcr.io/namehash/ensnode:latest
npm install @ensnode/package-name@1
docker run ghcr.io/namehash/ensnode:1
Copy link
Member

Choose a reason for hiding this comment

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

These example version numbers look a bit funny to me. Maybe better to give an example such as 1.0.0 and also to explicitly identify how the bash commands have example placholder version numbers and that the reader should follow (instructions) to decide version to actually install.

My worry includes people blindly copy/pasting whatever is written here.

**When to use:**
- When you need maximum stability and reliability
- When you want thoroughly tested features
- Production deployments and any critical infrastructure
Copy link
Member

Choose a reason for hiding this comment

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

"... and any critical infrastructure"

What does this mean? How is it distinct from "Production deployments"?

- When you need maximum stability and reliability
- When you want thoroughly tested features
- Production deployments and any critical infrastructure
- When you need maximum stability and control over updates
Copy link
Member

Choose a reason for hiding this comment

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

What is the goal for writing this? I find this confusing and unclear.

- The version will never change - you control when to upgrade
- No unexpected breaking changes or behavior changes

**Important:** Never use the `latest` tag for Docker deployments (e.g., `ghcr.io/namehash/ensnode:latest` or `ghcr.io/namehash/ensnode`). The `latest` tag is a mutable pointer that will automatically pull different versions over time, causing unexpected updates and potential breaking changes in your deployment. Always pin to a specific version number from the [GitHub releases page](https://github.com/namehash/ensnode/releases).
Copy link
Member

Choose a reason for hiding this comment

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

I believe we have a way to create some kind of a special "callout" box in these .mdx files?

- Stable, well-tested releases
- Complete release notes and changelog entries
- Stable, well-tested releases with complete release notes
- The version will never change - you control when to upgrade
Copy link
Member

Choose a reason for hiding this comment

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

This is confusing and unclear. It should be written better.

**What to expect:**
- Stable, well-tested releases
- Complete release notes and changelog entries
- Stable, well-tested releases with complete release notes
Copy link
Member

Choose a reason for hiding this comment

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

We aren't performing strong enough testing yet for us to fairly claim "well-tested releases" yet.

We shouldn't write things that sound nice if they are not true.

- The version will never change - you control when to upgrade
- No unexpected breaking changes or behavior changes

**Important:** Never use the `latest` tag for Docker deployments (e.g., `ghcr.io/namehash/ensnode:latest` or `ghcr.io/namehash/ensnode`). The `latest` tag is a mutable pointer that will automatically pull different versions over time, causing unexpected updates and potential breaking changes in your deployment. Always pin to a specific version number from the [GitHub releases page](https://github.com/namehash/ensnode/releases).
Copy link
Member

Choose a reason for hiding this comment

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

Can we just completely remove any use of the latest tag on all the Docker images we publish (current and future)?

Note that use of the latest tag is a key issue with Docker images. It's not as big of an issue for NPM packages.

- Pin specific versions in your integrations rather than using tags like `@latest`
- Use full releases (`@latest`) as much as possible for stability
- Only use snapshot releases (`@next`) for experimenting with new features
- **Always pin Docker deployments to specific version numbers** (e.g., `1.2.3`) - never use `latest` or omit the tag
Copy link
Member

Choose a reason for hiding this comment

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

This idea should be moved into the related section. Why are you expecting the reader to read the full page? This reflects not giving proper consideration to human behavior.

Copy link
Contributor Author

@stevedylandev stevedylandev Dec 22, 2025

Choose a reason for hiding this comment

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

I was originally following the patterns from this comment but you're right, there is probably a better way to make this more succinct.

- Use full releases (`@latest`) as much as possible for stability
- Only use snapshot releases (`@next`) for experimenting with new features
- **Always pin Docker deployments to specific version numbers** (e.g., `1.2.3`) - never use `latest` or omit the tag
- Check the [GitHub releases page](https://github.com/namehash/ensnode/releases) to find the specific version number you need
Copy link
Member

Choose a reason for hiding this comment

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

This is a good idea, but it's in the wrong place.

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.

Add prerelease option to release workflows

5 participants