A generally-up-to-date image containing semantic-release and most official and community plugins, good for use in containerized CI/CD pipelines!
Update: Several of the community plugins have started exhibiting dependency resolution issues with semantic-release, so I have commented them out in the interest of keeping the image updated to the core semantic-release builds. Please log an issue if this causes a problem, or feel free to fork this repo to have your own customized semantic-release image.
The image assumes that /source
is the working directory, and has semantic-release
as the default ENTRYPOINT, so you can verify things are working with:
docker run --rm -ti -v .:/source -e GITHUB_TOKEN=YOUR-TOKEN-HERE jaredreisinger/semantic-release --dry-run
(with your token in place of YOUR-TOKEN-HERE
, of course)... and you should see the regular dry-run output from semantic-release. Depending on the plugins your .releaserc
specifies, you may need other environment variables defined.
Using Drone as an example, you can create a release step as simply as:
# . . .
steps:
# . . .
- name: release
image: jaredreisinger/semantic-release
environment:
GITHUB_TOKEN:
from_secret: github_token
(Assuming here that github_token
has already been set up as a Drone repository or organization secret.) If you have a .releaserc
file, your chosen plugins and configuration will magically be used. Also note that Drone binds the source directory to the image and sets that directory as the current working one, so there's no need to specifically mount into /source
. This should be true of any Docker-based CI/CD.
Given the sheer number of plugins, I've decided to simply include everything as "latest".
Even though normal Dockerfile practice is to combine RUN commands to reduce the number of layers, we take advantage of caching by separating these out, and attempting to put the more-stable and less-often-updated components first.