Published a new article, Semantic release to npm and/or ghcr without any tooling, as a new submission to the 2021 GitHub Actions Hackathon on DEV, showcasing how we made our semantic-release shareable configuration available to the world without installing any local dependencies, using GitHub marketplace actions or container based actions.
The post is deeply technical, covering our motivations for some architectural decisions, how we simplified our configuration, preset defaults and how to manipulate them without forking;
The covered use cases for this action:
- any kind of public npm package
- containerized NodeJS application
- containerized NodeJS GitHub action
And the different ways we can run this action from:
- npm devDependencies (not advised)
- GitHub container registry package
- GitHub marketplace action
Here are all the open source actions we used throughout the post to demo different use cases:
- actions/checkout@v2 - most performant git checkout
- actions/setup-node@v2.1.5 - we use it to set the node version to 16
- actions/upload-artifact@v2 - we use it to transport our artifacts in between jobs
- actions/download-artifact@v2 - we use it to download our artifacts in between jobs
- docker/setup-buildx-action@v1 - we use it to setup the docker builder
- actions/cache@v2 - we use it to cache docker layers
- docker/metadata-action@v3 - we use it to normalise most of our docker container values
- docker/build-push-action@v2 - we use this to build the container
- bahmutov/npm-install@v1 - lightning fast npm ci with built-in cache
- open-sauced/semantic-release-conventional-config@v3 - semantic-release configuration, docker container and GitHub action
- geekyeggo/delete-artifact@v1 - deletes produced artifacts
The post is deeply technical, covering our motivations for some architectural decisions, how we simplified our configuration, preset defaults and how to manipulate them without forking;
The covered use cases for this action:
- any kind of public npm package
- containerized NodeJS application
- containerized NodeJS GitHub action
And the different ways we can run this action from:
- npm devDependencies (not advised)
- GitHub container registry package
- GitHub marketplace action
Here are all the open source actions we used throughout the post to demo different use cases:
- actions/checkout@v2 - most performant git checkout
- actions/setup-node@v2.1.5 - we use it to set the node version to 16
- actions/upload-artifact@v2 - we use it to transport our artifacts in between jobs
- actions/download-artifact@v2 - we use it to download our artifacts in between jobs
- docker/setup-buildx-action@v1 - we use it to setup the docker builder
- actions/cache@v2 - we use it to cache docker layers
- docker/metadata-action@v3 - we use it to normalise most of our docker container values
- docker/build-push-action@v2 - we use this to build the container
- bahmutov/npm-install@v1 - lightning fast npm ci with built-in cache
- open-sauced/semantic-release-conventional-config@v3 - semantic-release configuration, docker container and GitHub action
- geekyeggo/delete-artifact@v1 - deletes produced artifacts