npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

gitlab-release-note-generator

v1.2.6

Published

[![CircleCI](https://circleci.com/gh/jk1z/gitlab-release-note-generator/tree/master.svg?style=svg)](https://circleci.com/gh/jk1z/gitlab-release-note-generator/tree/master) [![codecov](https://codecov.io/gh/jk1z/gitlab-release-note-generator/branch/master/

Downloads

6

Readme

CircleCI codecov

Gitlab Release Note Generator

A Gitlab release note generator that generates release note on latest tag

Feature

  • Generate release note on the latest tag based on merge requests and issues

  • Distinguished title with issues or merge requests that have the following labels: enhancement, breaking change, feature and bug

    (Note. if an issue or merge request that has 2 or more labels, that issue or merge request will be displayed again under the corresponding title)

  • Ability to send the generated release notes to Slack

  • Can be integrated as a CD service. Tutorial below

How it works

  1. Find the latest tag
  2. Find the previous tag that is on the same branch as the latest tag.
  3. Locate the date range between the latest and the previous tag. If there is only a tag in the project, then the from date will be the project creation date and the to date will be that tag's creation date.
  4. Find all Merged merge requests and Closed issues within that time range
  5. Generate a release note/changelog based on the findings above.

Software requirement

  • NodeJS ^10.x.x OR docker
  • A gitlab personal access token with api permission. How to Tutorial

How to run this app

Docker method

docker container run -e GITLAB_PERSONAL_TOKEN=gitlabSampleToken -e GITLAB_PROJECT_ID=12345678 -e TARGET_BRANCH=sampleTargetBranch -e TARGET_TAG_REGEX=sampleRegex 00freezy00/gitlab-release-note-generator

Nodejs Method

  • Fill in the parameters mainly GITLAB_PERSONAL_TOKEN, GITLAB_PROJECT_ID, TARGET_BRANCH(optional. Use it only if you want to find tags in the same specific branch), TARGET_TAG_REGEX (optional. Can use it to distinguish master or develop branch version bump), PUBLISH_TO_SLACK (optional) and SLACK_WEBHOOK_URL (optional) in app/env.js or feed it in process.env through npm
  • npm install
  • npm start
  • After couple seconds, latest tag should have a release note

Gitlab CI method

  1. Need to pass in gitlab personal access token as a CI variable

  2. Need to pass in SLACK_WEBHOOK_URL as a CI variable (optional)

  3. c/p the .sample.gitlab-ci.yml to your gitlab ci.

    What's included in the sample gitlab CI script

    • generate-release-note job. Generates a release note on the tag after detecting tag push with this regex /^[0-9]+.[0-9]+.[0-9]+(-[0-9]+)?$/
    • tag-after-deployment job (optional). Tag the commit that contains a version bump with this regex /^[0-9]+.[0-9]+.[0-9]+(-[0-9]+)?$/. Require ssh key to work.
  4. Customise the gitlab ci script to your need

Reference gitlab repo: generator test

Options

These can be specified using environment variables

  • GITLAB_API_ENDPOINT: Your gitlab instance's endpoint
    • Default https://gitlab.com/api/v4
  • GITLAB_PERSONAL_TOKEN: Grant api read/access permission
  • GITLAB_PROJECT_ID: Your project id that is located under settings > general
  • TARGET_BRANCH: The branch to look for release tags (ie master)
  • TARGET_TAG_REGEX: Regular expression of the release tags to search (ie: ^release-.*$)
  • TZ: The timezone for your release notes
    • Default "Australia/Melbourne"
  • ISSUE_CLOSED_SECONDS: The amount of seconds to search after the last commit, useful for Merge Requests that close their tickets a second after the commit.
    • Default 0
  • PUBLISH_TO_SLACK: Feature flag to turn on or off publishing release notes to Slack. (optional).
  • SLACK_WEBHOOK_URL: Your Slack webhook URL to send the generated release notes to Slack (optional).

Building and Running locally

export GITLAB_PERSONAL_TOKEN=MYGITLABACCESSTOKEN
export GITLAB_PROJECT_ID=99
export GITLAB_API_ENDPOINT=https://my.gitlab.com/api/v4

// run docker to build my local version
docker build -t local-gitlab-release-note-generator .

// run my local version
docker container run \
  -e TZ=America/New_York \
  -e GITLAB_API_ENDPOINT=$GITLAB_API_ENDPOINT \
  -e GITLAB_PERSONAL_TOKEN=$GITLAB_PERSONAL_TOKEN \
  -e GITLAB_PROJECT_ID=$GITLAB_PROJECT_ID \
  -e TARGET_BRANCH=master \
  -e TARGET_TAG_REGEX=^release-.*$ \
  -e PUBLISH_TO_SLACK=true \
  -e SLACK_WEBHOOK_URL=$SLACK_WEBHOOK_URL \
  local-gitlab-release-note-generator

TODO:

Feature

  • Release notes generation on selected tag
  • Customise template for the release note

Credits

Thanks to github-changelog-generator for inspiring me to make this app. Sorry, I couldn't wait any longer for that gitlab feature to be merged in.