1 Commits
Author SHA1 Message Date
CSRBot 0d44527f1f chore(deps): update dependency mikefarah/yq to v4.53.3
Install yq / install-yq (ubuntu-latest-amd64, amd64, linux) (push) Successful in 7s
Install yq / install-yq (ubuntu-latest-arm64, arm64, linux) (push) Successful in 10s
Markdown linter / markdown-link-checker (push) Successful in 22s
Install yq / install-yq (ubuntu-latest-amd64, amd64, linux) (pull_request) Successful in 7s
Markdown linter / markdown-lint (push) Successful in 33s
Markdown linter / markdown-link-checker (pull_request) Successful in 23s
Install yq / install-yq (ubuntu-latest-arm64, arm64, linux) (pull_request) Successful in 14s
Markdown linter / markdown-lint (pull_request) Successful in 28s
2026-08-16 19:52:27 +00:00
7 changed files with 24 additions and 142 deletions
-70
View File
@@ -1,70 +0,0 @@
name: Auto release tagged
on:
push:
branches: [ "master" ]
paths:
- install-yq.sh
env:
GIT_EMAIL: noreply@cryptic.systems
GIT_USER: CSRBot
jobs:
tag_on_change:
permissions:
actions: write
contents: write
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
with:
fetch-depth: 0
- name: Check if DC_VERSION line changed
id: check_change
run: |
echo "changed=false" >> $GITHUB_OUTPUT
for file in install-yq.sh; do
if git diff HEAD~1 HEAD -- "${file}" | grep --quiet '^[+-]internal_yq_version'; then
echo "internal_yq_version line changed."
echo "changed=true" >> $GITHUB_OUTPUT
break
fi
done
- name: Stop if no change detected
if: steps.check_change.outputs.changed == 'false'
run: echo "No internal_yq_version change. Exiting..."
- name: Get latest tag
if: steps.check_change.outputs.changed == 'true'
id: get_tag
run: |
latest_tag=$(git tag --sort=-v:refname | grep --extended-regexp '^v[0-9]+\.[0-9]+\.[0-9]+$' | head --lines 1 || echo "v0.0.0")
echo "latest_tag=$latest_tag" >> $GITHUB_OUTPUT
echo "Latest tag: $latest_tag"
- name: Increment patch version
if: steps.check_change.outputs.changed == 'true'
id: bump
run: |
latest_tag="${{ steps.get_tag.outputs.latest_tag }}"
IFS='.' read -r major minor patch <<< "${latest_tag#v}"
patch=$((patch + 1))
new_tag="v${major}.${minor}.${patch}"
echo "new_tag=$new_tag" >> $GITHUB_OUTPUT
echo "New tag: $new_tag"
- name: Create and push new tag
if: steps.check_change.outputs.changed == 'true'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
new_tag=${{ steps.bump.outputs.new_tag }}
git config --local user.name "${GIT_USER}"
git config --local user.email "${GIT_EMAIL}"
git tag -a "${new_tag}" -m "${new_tag}"
git push origin "${new_tag}"
+1 -1
View File
@@ -38,6 +38,6 @@ jobs:
YQ_ARCH: ${{ matrix.yq-arch }}
YQ_BINARY_NAME: ${{ inputs.yq-binary-name }}
YQ_DOWNLOAD_URL: ${{ inputs.yq-download-url }}
YQ_OS: ${{ matrix.yq-os }}
YQ_OS: ${{ matrix .yq-os }}
YQ_VERSION: ${{ inputs.yq-version }}
run: ./install-yq.sh
+11 -30
View File
@@ -1,25 +1,23 @@
# ah-annotation
GitHub Action to generate [ArtifactHub
annotations](https://artifacthub.io/docs/topics/annotations/helm/#supported-annotations) from Git commit history and add
them to `Chart.yaml`.
GitHub Action to generate ArtifactHub changelog annotations from Git commit history and add them to `Chart.yaml`.
The action parses conventional commit messages between two Git tags and produces an `artifacthub.io/changes` annotation.
Pre-release tags according to [SemVer 2.0](https://semver.org/) (e.g. `-alpha`, `-beta.1`, `-rc.2`) are detected
automatically and result in an `artifacthub.io/prerelease` annotation instead.
Pre-release tags (matching `-rc`) are detected automatically and result in an `artifacthub.io/prerelease` annotation
instead.
## Usage
### Auto-detect tags
Without explicit inputs the action determines the two most recent stable (non-pre-release) tags from the Git history:
Without explicit inputs the action determines the two most recent non-RC tags from the Git history:
```yaml
steps:
- uses: actions/checkout@v7.0.1
with:
fetch-depth: 0
- uses: volker.raschek/ah-annotations@v0.1.2
- uses: volker.raschek/ah-annotations@v0.0.1
```
### Explicit tags
@@ -31,7 +29,7 @@ steps:
- uses: actions/checkout@v7.0.1
with:
fetch-depth: 0
- uses: volker.raschek/ah-annotations@v0.1.2
- uses: volker.raschek/ah-annotations@v0.0.1
with:
old-tag: v1.0.0
new-tag: v2.0.0
@@ -39,34 +37,17 @@ steps:
## Inputs
| Name | Required | Default | Description |
| ------------------ | -------- | ------------------------------------ | ------------------------------------------ |
| `chart-path` | no | `${{ github.workspace }}/Chart.yaml` | Path to the Helm chart file. |
| `old-tag` | no | auto-detected | Start tag for changelog generation. |
| `new-tag` | no | auto-detected | End tag for changelog generation. |
| `yq-version` | no | `v4.53.3` | Version of yq to install. |
| `yq-arch` | no | auto-detected | Architecture of yq binary to download. |
| `yq-os` | no | auto-detected | Operating system of yq binary to download. |
| `yq-binary-name` | no | `yq` | Name of the yq binary to download. |
| `yq-download-url` | no | auto-built | Full URL to download yq from. |
| Name | Required | Default | Description |
| --------- | -------- | ------------- | ------------------------------------ |
| `old-tag` | no | auto-detected | Start tag for changelog generation. |
| `new-tag` | no | auto-detected | End tag for changelog generation. |
## Requirements
- The repository must be checked out with full history (`fetch-depth: 0`).
- A `Chart.yaml` file must exist at the path specified by `chart-path`.
- A `Chart.yaml` file must exist in the working directory.
- Commit messages must follow the [Conventional Commits](https://www.conventionalcommits.org/) format.
## Pre-releases
Tags containing a hyphen-separated pre-release identifier according to [SemVer 2.0](https://semver.org/) are treated as
pre-releases (e.g. `v1.0.0-alpha`, `v1.0.0-beta.1`, `v2.0.0-rc.2`). When `new-tag` is a pre-release tag, the action:
1. Sets `artifacthub.io/prerelease: "true"` in `Chart.yaml`.
2. Skips changelog generation entirely.
When auto-detecting tags (no explicit `old-tag`/`new-tag`), the action ignores pre-release tags and selects the two
most recent stable tags instead.
## Commit type mapping
| Commit type | ArtifactHub kind |
+1 -5
View File
@@ -2,10 +2,6 @@ name: "ArtifactHub Annotations"
description: "Generate ArtifactHub changelog annotations from git commit history and add them to Chart.yaml"
inputs:
chart-path:
description: "Path to the Helm chart file"
default: "${{ github.workspace }}/Chart.yaml"
required: false
old-tag:
description: "Start tag for changelog generation. If not set, auto-detected from git tags."
required: false
@@ -53,7 +49,7 @@ runs:
- name: Add ArtifactHub annotations
shell: bash
env:
CHART_FILE: ${{ inputs.chart-path }}
INPUT_OLD_TAG: ${{ inputs.old-tag }}
INPUT_NEW_TAG: ${{ inputs.new-tag }}
run: "${GITHUB_ACTION_PATH}/add-annotations.sh"
+5 -5
View File
@@ -6,8 +6,8 @@
set -euo pipefail
readonly CHART_FILE="${CHART_FILE:="Chart.yaml"}"
readonly PRERELEASE_PATTERN="\-[a-zA-Z0-9]+([-\.][a-zA-Z0-9]+)*$"
readonly CHART_FILE="Chart.yaml"
readonly RC_PATTERN="\-rc([-\.][0-9]+)?$"
CHANGE_LOG_YAML=""
@@ -24,8 +24,8 @@ if [[ ! -f "${CHART_FILE}" ]]; then
fi
# Determine old and new tags
DEFAULT_NEW_TAG="$(git tag --sort=-version:refname | grep --invert-match --perl-regexp "${PRERELEASE_PATTERN}" | head --lines 1)"
DEFAULT_OLD_TAG="$(git tag --sort=-version:refname | grep --invert-match --perl-regexp "${PRERELEASE_PATTERN}" | head --lines 2 | tail --lines 1)"
DEFAULT_NEW_TAG="$(git tag --sort=-version:refname | grep --invert-match --perl-regexp "${RC_PATTERN}" | head --lines 1)"
DEFAULT_OLD_TAG="$(git tag --sort=-version:refname | grep --invert-match --perl-regexp "${RC_PATTERN}" | head --lines 2 | tail --lines 1)"
if [[ -n "${INPUT_OLD_TAG:-}" ]]; then
OLD_TAG="${INPUT_OLD_TAG}"
@@ -49,7 +49,7 @@ if [[ -z "$(git tag --list "${NEW_TAG}")" ]]; then
exit 1
fi
if [[ "${NEW_TAG}" =~ ${PRERELEASE_PATTERN} ]]; then
if [[ "${NEW_TAG}" =~ ${RC_PATTERN} ]]; then
echo "INFO: Tag '${NEW_TAG}' is a prerelease, setting prerelease annotation and skipping changelog."
yq --no-colors --inplace ".annotations.\"artifacthub.io/prerelease\" = \"true\" | sort_keys(.)" "${CHART_FILE}"
exit 0
+6 -6
View File
@@ -14,7 +14,7 @@ YQ_VERSION="${YQ_VERSION:="${internal_yq_version}"}"
case "${YQ_OS:-}" in
linux*) ;;
darwin*) ;;
*) echo "ERROR: Unsupported OS: $(uname -s)"; exit 1;;
*) echo "Unsupported OS: $(uname -s)"; exit 1;;
esac
@@ -22,7 +22,7 @@ esac
case "${YQ_ARCH:-}" in
amd64* | x86_64*) YQ_ARCH="amd64" ;;
aarch64 | arm64*) YQ_ARCH="arm64" ;;
*) echo "ERROR: Unsupported architecture: $(uname -m)"; exit 1;;
*) echo "Unsupported architecture: $(uname -m)"; exit 1;;
esac
# Build download URL if not explicitly provided
@@ -41,7 +41,7 @@ fi
# Download and extract yq binary from .tar.gz
if [[ "${YQ_DOWNLOAD_URL}" =~ \.tar\.gz$ ]]; then
echo "INFO: Downloading and extracting yq from ${YQ_DOWNLOAD_URL}..."
echo "Downloading and extracting yq from ${YQ_DOWNLOAD_URL}..."
tmp_dir="$(mktemp -d)"
trap 'rm -rf "${tmp_dir}"' EXIT
@@ -61,7 +61,7 @@ if [[ "${YQ_DOWNLOAD_URL}" =~ \.tar\.gz$ ]]; then
# Download yq binary directly
else
echo "INFO: Downloading yq from ${YQ_DOWNLOAD_URL}..."
echo "Downloading yq from ${YQ_DOWNLOAD_URL}..."
curl \
--fail \
@@ -74,9 +74,9 @@ fi
chmod +x "${bin_path}"
yq_installed_version="$("${bin_path}" --version)"
echo "INFO: Installed ${yq_installed_version} in ${bin_path}"
echo "Installed ${yq_installed_version} in ${bin_path}"
# Ensure yq is in PATH for subsequent steps
if [[ -n "${GITHUB_PATH:-}" ]]; then
dirname "${bin_path}" >> "${GITHUB_PATH}"
echo "$(dirname "${bin_path}")" >> "${GITHUB_PATH}"
fi
-25
View File
@@ -31,34 +31,9 @@
"depNameTemplate": "actions/checkout",
"datasourceTemplate": "github-releases",
"versioningTemplate": "semver"
},
{
"customType": "regex",
"fileMatch": [
"^README\\.md$"
],
"matchStrings": [
"yq-version.[ \\t]+\\|[ \\t]+no[ \\t]+\\|[ \\t]+.(?<currentValue>v[\\d]+\\.[\\d]+\\.[\\d]+)"
],
"depNameTemplate": "mikefarah/yq",
"datasourceTemplate": "github-releases",
"versioningTemplate": "semver"
}
],
"packageRules": [
{
"addLabels": [
"renovate/automerge"
],
"automerge": true,
"matchDepNames": [
"mikefarah/yq"
],
"matchUpdateTypes": [
"minor",
"patch"
]
},
{
"addLabels": [
"renovate/automerge",