Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 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
37 changes: 37 additions & 0 deletions .github/release-drafter.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# 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 v$RESOLVED_VERSION'
tag-template: 'v$RESOLVED_VERSION'
change-template: '- $TITLE by @$AUTHOR in #$NUMBER'
categories:
- title: '💥 Breaking Changes'
labels:
- 'changelog:breaking' # When a breaking change is introduced
- title: '✨ Features'
labels:
- 'changelog:feature' # When a new feature is introduced
- 'changelog:enhancement' # When an existing feature is improved
- title: '🐛 Bug Fixes'
labels:
- 'changelog:fix' # When a bug is fixed
- title: '📝 Documentation'
labels:
- 'changelog:docs' # When documentation is updated
- title: '🧰 Maintenance'
labels:
- 'changelog:chore' # When a chore is done
- 'changelog:ci' # When CI is updated
- 'changelog:dependencies' # When dependencies are updated
exclude-labels:
- 'changelog:skip' # When a PR should be excluded from the changelog
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can still discuss the appropriate labels.

Copy link
Member

@Mpdreamz Mpdreamz Jan 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ahh ignore previous comments, can we remove the changelog: prefix from these? Except for the changelog:skip label.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated labels: e49c1c7

version-resolver:
major:
labels:
- 'changelog:breaking'
minor:
labels:
- 'changelog:feature'
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/v}" | 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 `v1.2.3` was published, the workflow will force push a new tag `v1` on the same commit.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we drop the v* prefix from the release-drafter? Just because we are already set up with Major.Minor.Patch tags.

Alternatively I can update our minver and workflow triggers.

Copy link
Member Author

@reakaleek reakaleek Jan 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I expected this discussion.

We can use a version with the v prefix.

Would you also like to remove the automation for v1,v2, etc tags? Or do we actually also create this?

this is mainly for the github actions usage convention

Copy link
Member Author

@reakaleek reakaleek Jan 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will change the versioning scheme to semver without the v prefix.

however, it will still create v[0-9]+ tag.

0fc2d20 and 4e015f3

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! yeah release tags being \d.\d.\d and special v\d tags for github actions works for me!

Loading