Skip to main content
Deno 2 is finally here 🎉️
Learn more

Denotation

deno module deno compatibility

denotation is a tool for versioning and creating GitHub releases, which can run as part of an automatic Continuous Integration & Continuous Delivery (CI/CD) pipeline. The next semantic version is determined by conventional commit history.

Requirements

  • deno 1.21 or higher
  • git and gh (available by default in GitHub Actions)

Usage

When the script runs it will look at the commits made since the last git tag, for example v1.0.0. Depending on the conventional commit messages it will increment with either a patch (v1.0.1), minor version (v1.1.0) or major version (v2.0.0).

The following example shows how to use denotation as a step in GitHub Actions to create a release:

name: release

on: workflow_dispatch

jobs:
  release:
    runs-on: ubuntu-20.04
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0
      - uses: denoland/setup-deno@v1.1.0
        with:
          deno-version: v1.x.x
      - run: |
          deno run --allow-run='gh,git' --unstable https://deno.land/x/denotation@v0.3.0/cli.ts
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # GitHub Actions built-in variable.

At the moment Continuous Delivery is supported where a draft release is made with generated release notes and some final edits can be made before publishing to a module registry like deno.land/x.

Roadmap

  • Support Continuous Deployment, where release is immediate and commits with certain scopes like fix(testing) and feat(ci) are automatically filtered from the release notes.

Contributing

You are welcome to report bugs, other issues, or make a feature request! If you want to add a fix/feature/other improvement, fork this repository and make a pull request with your changes.