From dff777e6de9e9af98ef7c211385686c567c471e5 Mon Sep 17 00:00:00 2001 From: Markus Pesch Date: Tue, 3 Jun 2025 20:02:15 +0200 Subject: [PATCH] feat: support Artifacthub annotations --- .gitea/scripts/add-annotations.sh | 103 ++++++++++++++++++++++++++++++ .gitea/workflows/release.yaml | 15 +++-- Chart.yaml | 6 ++ 3 files changed, 120 insertions(+), 4 deletions(-) create mode 100755 .gitea/scripts/add-annotations.sh diff --git a/.gitea/scripts/add-annotations.sh b/.gitea/scripts/add-annotations.sh new file mode 100755 index 0000000..af3c261 --- /dev/null +++ b/.gitea/scripts/add-annotations.sh @@ -0,0 +1,103 @@ +#!/bin/bash + +set -e + +CHART_FILE="Chart.yaml" +if [ ! -f "${CHART_FILE}" ]; then + echo "ERROR: ${CHART_FILE} not found!" + exit 1 +fi + + +DEFAULT_NEW_TAG="$(git describe --abbrev=0)" +DEFAULT_OLD_TAG="$(git describe --abbrev=0 --tags "$(git rev-list --tags --skip=1 --max-count=1)")" + +if [ -z "${1}" ]; then + read -p "Enter start tag [${DEFAULT_OLD_TAG}]: " OLD_TAG + if [ -z "${OLD_TAG}" ]; then + OLD_TAG="${DEFAULT_OLD_TAG}" + fi + + while [ -z "$(git tag --list "${OLD_TAG}")" ]; do + echo "ERROR: Tag '${OLD_TAG}' not found!" + read -p "Enter start tag [${DEFAULT_OLD_TAG}]: " OLD_TAG + if [ -z "${OLD_TAG}" ]; then + OLD_TAG="${DEFAULT_OLD_TAG}" + fi + done +else + OLD_TAG=${1} + if [ -z "$(git tag --list "${OLD_TAG}")" ]; then + echo "ERROR: Tag '${OLD_TAG}' not found!" + exit 1 + fi +fi + +if [ -z "${1}" ]; then + read -p "Enter end tag [${DEFAULT_NEW_TAG}]: " NEW_TAG + if [ -z "${NEW_TAG}" ]; then + NEW_TAG="${DEFAULT_NEW_TAG}" + fi + + while [ -z "$(git tag --list "${NEW_TAG}")" ]; do + echo "ERROR: Tag '${NEW_TAG}' not found!" + read -p "Enter end tag [${DEFAULT_NEW_TAG}]: " NEW_TAG + if [ -z "${NEW_TAG}" ]; then + NEW_TAG="${DEFAULT_NEW_TAG}" + fi + done +else + NEW_TAG=${1} + + if [ -z "$(git tag --list "${NEW_TAG}")" ]; then + echo "ERROR: Tag '${NEW_TAG}' not found!" + exit 1 + fi +fi + +YAML_FILE=$(mktemp) + +function map_type_to_kind() { + case "${1}" in + feat) + echo "added" + ;; + fix) + echo "fixed" + ;; + chore|style|test|ci|docs|refac) + echo "changed" + ;; + revert) + echo "removed" + ;; + sec) + echo "security" + ;; + *) + echo "skip" + ;; + esac +} + +COMMIT_TITLES=$(git log "${OLD_TAG}..${NEW_TAG}" --pretty=format:"%s") + +while IFS= read -r line; do + if [[ "${line}" =~ ^([a-zA-Z]+)(\([^\)]+\))?\:\ (.+)$ ]]; then + TYPE="${BASH_REMATCH[1]}" + + if [ "${TYPE}" == "skip" ]; then + continue + fi + + DESC="${BASH_REMATCH[3]}" + KIND=$(map_type_to_kind "${TYPE}") + + yq --inplace ". += [ {\"kind\": \"${KIND}\", \"description\": \"${DESC}\"}]" "${YAML_FILE}" + fi +done <<< "${COMMIT_TITLES}" + +yq --no-colors --inplace ".annotations.\"artifacthub.io/changes\" |= loadstr(\"${YAML_FILE}\") | sort_keys(.)" "${CHART_FILE}" +yq --no-colors --inplace ".version = \"${NEW_TAG}\"" "${CHART_FILE}" + +rm "${YAML_FILE}" \ No newline at end of file diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml index 556c0c7..5d70917 100644 --- a/.gitea/workflows/release.yaml +++ b/.gitea/workflows/release.yaml @@ -14,12 +14,19 @@ jobs: - name: Install tooling run: | apk update - apk add git npm + apk add git npm yq - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Add Artifacthub.io annotations + run: | + NEW_TAG="$(git describe --abbrev=0)" + OLD_TAG="$(git describe --abbrev=0 --tags "$(git rev-list --tags --skip=1 --max-count=1)")" + .gitea/scripts/add-annotations.sh "${NEW_TAG}" "${OLD_TAG}" + - name: Package chart env: - HELM_REPO_NAME: upload - CHARTMUSEUM_PASSWORD: ${{ secrets.CHARTMUSEUM_PASSWORD }} CHARTMUSEUM_REPOSITORY: ${{ vars.CHARTMUSEUM_REPOSITORY }} CHARTMUSEUM_USERNAME: ${{ secrets.CHARTMUSEUM_USERNAME }} @@ -43,4 +50,4 @@ jobs: # gitea helm repo add --username ${REPOSITORY_OWNER} --password ${GITEA_PACKAGE_REGISTRY_TOKEN} gitea ${GITEA_SERVER_URL}/api/packages/${REPOSITORY_OWNER}/helm helm cm-push ${REPOSITORY_NAME}-${PACKAGE_VERSION}.tgz gitea - helm repo remove gitea \ No newline at end of file + helm repo remove gitea diff --git a/Chart.yaml b/Chart.yaml index cf5bc82..0383ad6 100644 --- a/Chart.yaml +++ b/Chart.yaml @@ -1,3 +1,9 @@ +annotations: + artifacthub.io/links: | + - name: Prometheus PostgreSQL exporter (binary) + url: https://github.com/prometheus-community/postgres_exporter + - name: support + url: https://git.cryptic.systems/volker.raschek/prometheus-postgres-exporter/issues apiVersion: v2 name: prometheus-postgres-exporter description: Prometheus metric exporter for PostgreSQL