Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions .github/release-drafter.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# https://github.com/release-drafter/release-drafter?tab=readme-ov-file#configuration-options
template: |
$CHANGES

**Full Changelog**: https://github.com/$OWNER/$REPOSITORY/compare/$PREVIOUS_TAG...v$RESOLVED_VERSION
name-template: 'docs-builder $RESOLVED_VERSION'
tag-template: '$RESOLVED_VERSION'
change-template: '- $TITLE by @$AUTHOR in #$NUMBER'
categories:
- title: '💥 Breaking Changes'
labels:
- 'breaking' # When a breaking change is introduced
- title: '✨ Features'
labels:
- 'feature' # When a new feature is introduced
- 'enhancement' # When an existing feature is improved
- title: '🐛 Bug Fixes'
labels:
- 'bug' # When a bug is fixed
- 'fix' # When a bug is fixed
- title: '📝 Documentation'
labels:
- 'documentation' # When documentation is updated
- title: '🧰 Maintenance'
labels:
- 'chore' # When a chore is done
- 'ci' # When CI is updated
- 'dependencies' # When dependencies are updated
exclude-labels:
- 'changelog:skip' # When a PR should be excluded from the changelog
version-resolver:
major:
labels:
- 'breaking'
minor:
labels:
- 'feature'
- 'enhancement'
default: patch
26 changes: 26 additions & 0 deletions .github/workflows/create-major-tag.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---
# This workflow creates a major tag in the format of vX when a release is published.
# E.g. if a release is published with the tag v1.1.0, this workflow will create a tag v1.
name: create-major-tag

on:
release:
types:
- published

permissions:
contents: write

jobs:
create-major-tag:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Get major version
run: |
MAJOR_VERSION=$(echo "${GITHUB_REF#refs/tags/}" | awk -F. '{print $1}')
echo "MAJOR_VERSION=${MAJOR_VERSION}" >> "${GITHUB_ENV}"
- name: Create major tag
run: |
git tag "v${MAJOR_VERSION}"
git push -f origin "refs/tags/v${MAJOR_VERSION}"
20 changes: 20 additions & 0 deletions .github/workflows/release-drafter.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: release-drafter

on:
push:
branches:
- main

permissions:
contents: read

jobs:
update-release-draft:
permissions:
contents: write
pull-requests: read
runs-on: ubuntu-latest
steps:
- uses: release-drafter/release-drafter@3f0f87098bd6b5c5b9a36d49c41d998ea58f9348 # v6.0.0
env:
GITHUB_TOKEN: ${{ github.token }}
33 changes: 33 additions & 0 deletions .github/workflows/required-labels.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: required-labels

on:
pull_request_target:
types:
- opened
- labeled
- unlabeled
- synchronize

permissions:
contents: read

jobs:
check-labels:
permissions:
contents: read
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- id: get-labels
run: |
labels=$(yq '[.categories[].labels] + .exclude-labels | flatten | unique | sort | @tsv' .github/release-drafter.yml | tr '\t' ',')
echo "labels=$labels" >> "${GITHUB_OUTPUT}"
- id: check-labels
uses: mheap/github-action-required-labels@5847eef68201219cf0a4643ea7be61e77837bbce # v5.4.1
with:
mode: exactly
count: 1
use_regex: false
add_comment: true
labels: ${{ steps.get-labels.outputs.labels }}
27 changes: 27 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -136,3 +136,30 @@ To test performance it's best to build the binary and run outside of docker:

For reference here's the `markitpy-doc` docset (50k markdown files) currently takes `14s` vs `several minutes` compared to
existing surveyed tools

# Release Process

This section outlines the process for releasing a new version of this project.

## Versioning

This project uses [Semantic Versioning](https://semver.org/) and its version is
automatically determined by [release-drafter](https://github.com/release-drafter/release-drafter)
based on the labels of the pull requests merged into the `main` branch.

See the [release-drafter configuration](../.github/release-drafter.yml) for more details.

## Creating a New Release

Every time a pull request is merged into the `main` branch, release-drafter will
create a draft release or update the existing draft release in the [Releases](https://github.com/elastic/docs-builder/releases) page.

To create a new release you need to publish the existing draft release created by release-drafter.

> [!IMPORTANT]
> Make sure the [release-drafter workflow](../.github/workflows/release-drafter.yml) is finished before publishing the release.

> [!NOTE]
> When a release is published, the [create-major-tag workflow](../.github/workflows/create-major-tag.yml)
> will force push a new major tag in the format `vX` where `X` is the major version of the release.
> For example, if the release is `1.2.3` was published, the workflow will force push a new tag `v1` on the same commit.
Loading