Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ci: create canary releases on commit (#73)
ci: small bugfixes ci: add git-cliff docs: add changelogs ci: drop changelog compare links . Changelog comparing links are of questionable utility in a mono-repo given the resulting list isn't filtered by subpath.
- Loading branch information
1 parent
17bc1eb
commit f74bcce
Showing
26 changed files
with
3,024 additions
and
1,382 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
# git-cliff ~ default configuration file | ||
# https://git-cliff.org/docs/configuration | ||
# | ||
# Lines starting with "#" are comments. | ||
# Configuration options are organized into tables and keys. | ||
# See documentation for more information on available options. | ||
|
||
[changelog] | ||
# changelog header | ||
header = """ | ||
# Changelog\n | ||
All notable changes to this project will be documented in this file.\n | ||
""" | ||
# template for the changelog body | ||
# https://tera.netlify.app/docs | ||
body = """ | ||
{% if version %}\ | ||
## {{ version | trim_start_matches(pat="v") }} - {{ timestamp | date(format="%Y-%m-%d") }} | ||
{% else %}\ | ||
## unreleased | ||
{% endif %}\ | ||
{% for group, commits in commits | group_by(attribute="group") %} | ||
### {{ group | upper_first }} | ||
{% for commit in commits %} | ||
- {% if commit.breaking %}🚨 **breaking** {% endif %}{{ commit.message | upper_first }} ([{{ commit.id | truncate(length=6, end="") }}](https://github.com/graphops/launchpad-charts/commit/{{ commit.id }}))\ | ||
{% endfor %} | ||
{% endfor %}\n | ||
""" | ||
# remove the leading and trailing whitespace from the template | ||
trim = true | ||
# changelog footer | ||
footer = """ | ||
""" | ||
|
||
[git] | ||
# parse the commits based on https://www.conventionalcommits.org | ||
conventional_commits = true | ||
# filter out the commits that are not conventional | ||
filter_unconventional = true | ||
# process each line of a commit as an individual commit | ||
split_commits = true | ||
# regex for preprocessing the commit messages | ||
commit_preprocessors = [ | ||
# { pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](https://github.com/orhun/git-cliff/issues/${2}))"}, # replace issue numbers | ||
# Parse renovate's commit body table to descriminate updated images | ||
{ pattern = '[\|].*[\|]\s*(\S*)\s*[\|]\s*(\S*)\s*[\|]\s*(\S*)\s*[\|]', replace = "feat(deps): Update ${1} from ${2} to ${3}" }, | ||
] | ||
# regex for parsing and grouping commits | ||
commit_parsers = [ | ||
{ message = "^feat", group = "<!-- 0 -->✨ Features" }, | ||
{ message = "^chore\\(deps\\)", group = "<!-- 0 -->✨ Features" }, | ||
{ message = "^fix", group = "<!-- 1 -->🐛 Bug Fixes" }, | ||
{ message = "^doc", group = "<!-- 3 -->📚 Documentation" }, | ||
{ message = "^perf", group = "<!-- 4 -->⚡️ Performance" }, | ||
{ message = "^refactor", group = "<!-- 2 -->♻️ Refactor" }, | ||
{ message = "^style", group = "<!-- 5 -->🎨 Styling" }, | ||
{ message = "^test", group = "<!-- 6 -->🧪 Testing" }, | ||
{ message = "^chore\\(release\\): prepare for", skip = true }, | ||
{ message = "^chore\\(pr\\)", skip = true }, | ||
{ message = "^chore\\(pull\\)", skip = true }, | ||
{ message = "^chore", group = "<!-- 7 -->⚙️ Miscellaneous Tasks" }, | ||
{ body = ".*security", group = "<!-- 8 -->🛡️ Security" }, | ||
] | ||
# protect breaking changes from being skipped due to matching a skipping commit_parser | ||
protect_breaking_commits = false | ||
# filter out the commits that are not matched by commit parsers | ||
filter_commits = true | ||
# glob pattern for matching git tags | ||
tag_pattern = "v[0-9]*" | ||
# regex for skipping tags | ||
#skip_tags = "v0.1.0-beta.1" | ||
skip_tags = "" | ||
# regex for ignoring tags | ||
ignore_tags = "" | ||
# sort the tags topologically | ||
topo_order = false | ||
# sort the commits inside sections by oldest/newest order | ||
sort_commits = "newest" | ||
# limit the number of commits included in the changelog. | ||
# limit_commits = 42 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
|
||
name: Release on Commit (Canary) | ||
|
||
on: | ||
push: | ||
branches: | ||
- 'renovate/*' | ||
|
||
jobs: | ||
find-tags-to-release: | ||
runs-on: ubuntu-latest | ||
permissions: | ||
contents: write # for creating tags | ||
outputs: | ||
release-tags: ${{ steps.list-release-tags.outputs.release-tags }} | ||
release-streams: ${{ steps.list-release-tags.outputs.release-streams }} | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v3 | ||
with: | ||
fetch-depth: 0 | ||
|
||
- name: Configure Git | ||
run: | | ||
git config user.name "${{ github.actor }}" | ||
git config user.email "${{ github.actor}}@users.noreply.github.com" | ||
- name: Get list of changed charts | ||
id: list-changed-charts | ||
uses: tj-actions/changed-files@v35.9.2 | ||
with: | ||
files: charts/** | ||
dir_names: "true" | ||
dir_names_max_depth: "2" | ||
|
||
- name: List and create tags | ||
id: list-release-tags | ||
shell: bash | ||
run: | | ||
tags=() | ||
declare -A release_streams=() | ||
for chart_dir in ${{ steps.list-changed-charts.outputs.all_modified_files }}; do | ||
chart_name=$(echo ${chart_dir} | cut -d '/' -f 2) | ||
latest_version="$(git -c 'versionsort.suffix=-' tag --sort 'version:refname' --list "$chart_name-*" | grep -Ev '.*-[[:digit:]]+.[[:digit:]]+.[[:digit:]]+-.*' | tail -n1)" | ||
next_patch="$(echo "$latest_version" | sed -E 's/(.*-)?([[:digit:]]+).([[:digit:]]+).([[:digit:]]+)/echo \2.\3.$((\4 + 1))/e')" | ||
last_pre_tag="$(git -c 'versionsort.suffix=-' tag --sort 'version:refname' --list "$chart_name-$next_patch-*" | tail -n1)" | ||
if [ -z "$last_pre_tag" ]; then | ||
index=1 | ||
else | ||
index=$(echo "$last_pre_tag" | sed -E 's/(.*-)?[[:digit:]]+.[[:digit:]]+.[[:digit:]]+-canary.([[:digit:]]+)(#.*)?/echo $((\2 + 1))/e') | ||
fi | ||
next_tag="$chart_name-$next_patch-canary.$index" | ||
tags+=("$next_tag") | ||
git tag -a "$next_tag" -m "Release $next_tag" | ||
release_streams["canary"]=1 | ||
done | ||
git push --tags | ||
echo "release-tags<<EOF" >> $GITHUB_OUTPUT | ||
echo "$(jq -Rc '. / " "' <<< ${tags[*]})" >> $GITHUB_OUTPUT | ||
echo "EOF" >> $GITHUB_OUTPUT | ||
echo "release-streams<<EOF" >> $GITHUB_OUTPUT | ||
echo "$(jq -Rc '. / " "' <<< ${!release_streams[@]})" >> $GITHUB_OUTPUT | ||
echo "EOF" >> $GITHUB_OUTPUT | ||
call-release: | ||
needs: find-tags-to-release | ||
uses: ./.github/workflows/make-chart-release.yaml | ||
permissions: | ||
contents: write # for updating index.yaml | ||
strategy: | ||
matrix: | ||
tag: ${{ fromJson(needs.find-tags-to-release.outputs.release-tags) }} | ||
fail-fast: false | ||
if: ${{ needs.find-tags-to-release.outputs.release-tags != '[]' }} | ||
with: | ||
tag: ${{ matrix.tag }} | ||
|
||
call-update-helm-repo: | ||
needs: | ||
- call-release | ||
- find-tags-to-release | ||
uses: ./.github/workflows/update-helm-repo.yaml | ||
permissions: | ||
contents: write # for updating index.yaml | ||
strategy: | ||
matrix: | ||
repo: ${{ fromJson(needs.find-tags-to-release.outputs.release-streams) }} | ||
if: ${{ needs.find-tags-to-release.outputs.release-streams != '[]' }} | ||
with: | ||
repo: ${{ matrix.repo }} |
Oops, something went wrong.