Skip to content

Express Gateway Release Process

Vincenzo Chianese edited this page Apr 10, 2019 · 12 revisions

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

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:

  1. Publish the new package to NPM
  2. Build a Docker Image locally and push it to DockerHub with latest and vx.y.z tag
  3. 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.
  4. 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
  5. 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:

  1. Take the release notes and send them to our mailing list — discuss at express minus gateway dot io.
  2. Take the release notes and send them to Gitter as a message.
  3. Inform our lovely and huge marketing team (just 1 person so far) of the new version, so they can react accordingly.

Wait!

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?

Hold on!

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.

Release a development image on Docker

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

Clone this wiki locally