-
Notifications
You must be signed in to change notification settings - Fork 351
Express Gateway Release Process
Express Gateway's Release Process is almost completely automated. An important objective that we always strive for is: Express Gateway should be releasable with a single command. This is compulsory. To be honest, we haven't been able to reach this stage yet, but hopefully we will.
In order to trigger it, just publish a tag to Github (you can generate it by simply doing npm version (major|minor|patch)
and then git push --follow-tags
.
Once that is done, CircleCI will detect the new tag and, once tests are passing for all the jobs, it will:
- Publish the new package to NPM
- Build a Docker Image locally and push it to DockerHub with
latest
andvx.y.z
tag - Locally clone the docker-express-gateway repository so it can update its Dockerfile with the latest version as well as generating a new Helm definition file for the new version. This, right now, requires a manual bump to a specific env variable in the
.circleci/config.yml
file - Fork the official Helm Chart repository, update the EG's definition file with the latest tag, push the changes back and open a pull request to the original repo
- Fork the official Docker Images repository, update the EG's definition file with the latest commit SHA, push the changes back and open a pull request to the original repo.
In case you want to know more technical detail, feel free to check our CircleCI configuration file
Once that's done, make sure to create a new Release on Github, writing a meaningful Changelog.
The new release will trigger another automatism, this time managed by our Zapier account, that will:
- Take the release notes and send them to our mailing list — discuss at express minus gateway dot io.
- Take the release notes and send them to Gitter as a message.
Unfortunately there's one manual process I haven't been able to automate yet. You need to go in our website repository and put the current version here and here. I know this is lame, but I haven't been able to come up with a better idea yet. Maybe an API Call to Github releases?
While it's not mandatory, when there's a minor|major
release, we try to update all the possible dependencies. If you're releasing Express Gateway, consider doing it.
Docker Cloud account for Express Gateway has been configured so that if your branch name ends with -d
— the Cloud service will build an image for such branch. You can find the entire list on the Tags Page. When you're done with the image it would be polite to remove that, although nobody is going to kill you for that