Compare commits

..

37 Commits

Author SHA1 Message Date
4e948193c9
chore(deps): update docker.io/library/node docker tag to v24.3.0 2025-06-25 19:11:13 +00:00
80673d104b
chore(deps): update docker.io/library/node docker tag to v24.3.0 2025-06-25 16:11:32 +00:00
4731577534
chore(deps): update dependency @bitnami/readme-generator-for-helm to v2.7.1 2025-06-25 10:12:57 +00:00
e1ad6999c2
chore(deps): update volkerraschek/helm docker tag to v3.18.3 2025-06-18 06:32:52 +00:00
82f57cc993
chore(deps): update docker.io/volkerraschek/helm docker tag to v3.18.3 2025-06-17 19:12:38 +00:00
ae9b59f0c0
chore(deps): update docker.io/library/node docker tag to v24.2.0 2025-06-10 04:11:15 +00:00
9e519d1659
chore(deps): update docker.io/library/node docker tag to v24.2.0 2025-06-10 01:10:21 +00:00
1938a56284
ci(add-annotations): set kind of Artifacthub annotation correctly 2025-06-07 12:17:30 +02:00
eefe3634ee
chore(deps): update dependency volker.raschek/prometheus-fail2ban-exporter-charts to v0.4.21 2025-06-06 22:10:49 +00:00
ea7b775501
chore(ci): adapt helm chart name 2025-06-06 23:45:51 +02:00
ccc60e335c
docs(README): set correct chart version 2025-06-06 23:40:03 +02:00
02a9de23c0
chore(ci): separate upload steps 2025-06-06 23:34:44 +02:00
0c0c0e5ea7
fix(Chart): escape changelog messages for artifacthub 2025-06-06 22:03:34 +02:00
863c3a30c1
fix(Chart): escape changelog messages for artifacthub 2025-06-06 22:01:12 +02:00
c9a45d8040
chore(deps): update dependency volker.raschek/prometheus-fail2ban-exporter-charts to v0.4.16 2025-06-04 19:11:43 +00:00
24d29f2b09
chore(ci): cleanup scripts 2025-06-04 19:43:26 +02:00
a4180e0953
chore(ci): use git tag sort to get last two tags 2025-06-04 19:23:13 +02:00
c5783bd053
chore(ci): log commits 2025-06-04 19:18:32 +02:00
7cfe55a106
chore(ci): extend logging of add-annotations.sh 2025-06-04 18:53:06 +02:00
a0bb4f2277
chore(ci): write error message to stderr 2025-06-04 18:47:02 +02:00
022a4d2155
chore(deps): update dependency volker.raschek/prometheus-fail2ban-exporter-charts to v0.4.11 2025-06-03 22:11:02 +00:00
130ee5d49e
refac(ci): add more logs into GitHub Actions 2025-06-03 21:37:51 +02:00
be667bad1d
refac(ci): cleanup GitHub Actions 2025-06-03 21:34:02 +02:00
01614570f7
fix(scripts): adapt script parameter list 2025-06-03 21:32:28 +02:00
6de5e9aa48
chore(ci): use actions/checkout to fetch tags 2025-06-03 21:26:55 +02:00
2740175246
fix(scripts): exit when change log file is empty 2025-06-03 21:14:26 +02:00
7caedbe80d
fix(scripts): exit when change log file is empty 2025-06-03 21:14:13 +02:00
eac8c552bb
chore(chart): remove change log 2025-06-03 21:04:09 +02:00
c4b209a1a4
chore(ci): change arguments of add-annotations.sh 2025-06-03 20:53:45 +02:00
9cd56ac7f6
chore(ci): enforce to checkout git tag 2025-06-03 20:46:41 +02:00
6425930268
chore(ci): checkout tags without pruning 2025-06-03 20:39:08 +02:00
69c4b3dd4d
chore(ci): checkout tags via git 2025-06-03 20:33:39 +02:00
d56f5e65c7
chore(ci): fetch tags 2025-06-03 20:19:07 +02:00
4229055965
chore(ci): print tags 2025-06-03 20:10:37 +02:00
34edb19f8e
chore(metadata): adapt link to binary 2025-06-03 20:04:52 +02:00
61020ff224
chore(metadata): add further Artifacthub.io annotations 2025-06-03 19:47:58 +02:00
bfdec6719a
chore(license): publish under the MIT license 2025-06-03 19:41:09 +02:00
10 changed files with 104 additions and 61 deletions

@ -4,13 +4,12 @@ set -e
CHART_FILE="Chart.yaml" CHART_FILE="Chart.yaml"
if [ ! -f "${CHART_FILE}" ]; then if [ ! -f "${CHART_FILE}" ]; then
echo "ERROR: ${CHART_FILE} not found!" echo "ERROR: ${CHART_FILE} not found!" 1>&2
exit 1 exit 1
fi fi
DEFAULT_NEW_TAG="$(git tag --sort=-version:refname | head -n 1)"
DEFAULT_NEW_TAG="$(git describe --abbrev=0)" DEFAULT_OLD_TAG="$(git tag --sort=-version:refname | head -n 2 | tail -n 1)"
DEFAULT_OLD_TAG="$(git describe --abbrev=0 --tags "$(git rev-list --tags --skip=1 --max-count=1)")"
if [ -z "${1}" ]; then if [ -z "${1}" ]; then
read -p "Enter start tag [${DEFAULT_OLD_TAG}]: " OLD_TAG read -p "Enter start tag [${DEFAULT_OLD_TAG}]: " OLD_TAG
@ -19,7 +18,7 @@ if [ -z "${1}" ]; then
fi fi
while [ -z "$(git tag --list "${OLD_TAG}")" ]; do while [ -z "$(git tag --list "${OLD_TAG}")" ]; do
echo "ERROR: Tag '${OLD_TAG}' not found!" echo "ERROR: Tag '${OLD_TAG}' not found!" 1>&2
read -p "Enter start tag [${DEFAULT_OLD_TAG}]: " OLD_TAG read -p "Enter start tag [${DEFAULT_OLD_TAG}]: " OLD_TAG
if [ -z "${OLD_TAG}" ]; then if [ -z "${OLD_TAG}" ]; then
OLD_TAG="${DEFAULT_OLD_TAG}" OLD_TAG="${DEFAULT_OLD_TAG}"
@ -28,34 +27,35 @@ if [ -z "${1}" ]; then
else else
OLD_TAG=${1} OLD_TAG=${1}
if [ -z "$(git tag --list "${OLD_TAG}")" ]; then if [ -z "$(git tag --list "${OLD_TAG}")" ]; then
echo "ERROR: Tag '${OLD_TAG}' not found!" echo "ERROR: Tag '${OLD_TAG}' not found!" 1>&2
exit 1 exit 1
fi fi
fi fi
if [ -z "${1}" ]; then if [ -z "${2}" ]; then
read -p "Enter end tag [${DEFAULT_NEW_TAG}]: " NEW_TAG read -p "Enter end tag [${DEFAULT_NEW_TAG}]: " NEW_TAG
if [ -z "${NEW_TAG}" ]; then if [ -z "${NEW_TAG}" ]; then
NEW_TAG="${DEFAULT_NEW_TAG}" NEW_TAG="${DEFAULT_NEW_TAG}"
fi fi
while [ -z "$(git tag --list "${NEW_TAG}")" ]; do while [ -z "$(git tag --list "${NEW_TAG}")" ]; do
echo "ERROR: Tag '${NEW_TAG}' not found!" echo "ERROR: Tag '${NEW_TAG}' not found!" 1>&2
read -p "Enter end tag [${DEFAULT_NEW_TAG}]: " NEW_TAG read -p "Enter end tag [${DEFAULT_NEW_TAG}]: " NEW_TAG
if [ -z "${NEW_TAG}" ]; then if [ -z "${NEW_TAG}" ]; then
NEW_TAG="${DEFAULT_NEW_TAG}" NEW_TAG="${DEFAULT_NEW_TAG}"
fi fi
done done
else else
NEW_TAG=${1} NEW_TAG=${2}
if [ -z "$(git tag --list "${NEW_TAG}")" ]; then if [ -z "$(git tag --list "${NEW_TAG}")" ]; then
echo "ERROR: Tag '${NEW_TAG}' not found!" echo "ERROR: Tag '${NEW_TAG}' not found!" 1>&2
exit 1 exit 1
fi fi
fi fi
YAML_FILE=$(mktemp) CHANGE_LOG_YAML=$(mktemp)
echo "[]" > "${CHANGE_LOG_YAML}"
function map_type_to_kind() { function map_type_to_kind() {
case "${1}" in case "${1}" in
@ -80,24 +80,35 @@ function map_type_to_kind() {
esac esac
} }
COMMIT_TITLES=$(git log "${OLD_TAG}..${NEW_TAG}" --pretty=format:"%s") COMMIT_TITLES="$(git log --pretty=format:"%s" "${OLD_TAG}..${NEW_TAG}")"
echo "INFO: Generate change log entries from ${OLD_TAG} until ${NEW_TAG}"
while IFS= read -r line; do while IFS= read -r line; do
if [[ "${line}" =~ ^([a-zA-Z]+)(\([^\)]+\))?\:\ (.+)$ ]]; then if [[ "${line}" =~ ^([a-zA-Z]+)(\([^\)]+\))?\:\ (.+)$ ]]; then
TYPE="${BASH_REMATCH[1]}" TYPE="${BASH_REMATCH[1]}"
KIND=$(map_type_to_kind "${TYPE}")
if [ "${TYPE}" == "skip" ]; then if [ "${KIND}" == "skip" ]; then
continue continue
fi fi
DESC="${BASH_REMATCH[3]}" DESC="${BASH_REMATCH[3]}"
KIND=$(map_type_to_kind "${TYPE}")
yq --inplace ". += [ {\"kind\": \"${KIND}\", \"description\": \"${DESC}\"}]" "${YAML_FILE}" echo "- ${KIND}: ${DESC}"
jq --arg kind "${KIND}" --arg description "${DESC}" '. += [ $ARGS.named ]' < "${CHANGE_LOG_YAML}" > "${CHANGE_LOG_YAML}.new"
mv "${CHANGE_LOG_YAML}.new" "${CHANGE_LOG_YAML}"
fi fi
done <<< "${COMMIT_TITLES}" done <<< "${COMMIT_TITLES}"
yq --no-colors --inplace ".annotations.\"artifacthub.io/changes\" |= loadstr(\"${YAML_FILE}\") | sort_keys(.)" "${CHART_FILE}" if [ -s "${CHANGE_LOG_YAML}" ]; then
yq --no-colors --inplace ".version = \"${NEW_TAG}\"" "${CHART_FILE}" yq --inplace --input-format json --output-format yml "${CHANGE_LOG_YAML}"
yq --no-colors --inplace ".annotations.\"artifacthub.io/changes\" |= loadstr(\"${CHANGE_LOG_YAML}\") | sort_keys(.)" "${CHART_FILE}"
else
echo "ERROR: Changelog file is empty: ${CHANGE_LOG_YAML}" 1>&2
exit 1
fi
rm "${YAML_FILE}" rm "${CHANGE_LOG_YAML}"

@ -15,7 +15,7 @@ on:
jobs: jobs:
generate-parameters: generate-parameters:
container: container:
image: docker.io/library/node:24.1.0-alpine image: docker.io/library/node:24.3.0-alpine
runs-on: runs-on:
- ubuntu-latest - ubuntu-latest
steps: steps:

@ -13,7 +13,7 @@ on:
jobs: jobs:
helm-lint: helm-lint:
container: container:
image: docker.io/volkerraschek/helm:3.18.2 image: docker.io/volkerraschek/helm:3.18.3
runs-on: runs-on:
- ubuntu-latest - ubuntu-latest
steps: steps:
@ -28,7 +28,7 @@ jobs:
helm-unittest: helm-unittest:
container: container:
image: docker.io/volkerraschek/helm:3.18.2 image: docker.io/volkerraschek/helm:3.18.3
runs-on: runs-on:
- ubuntu-latest - ubuntu-latest
steps: steps:

@ -15,7 +15,7 @@ on:
jobs: jobs:
markdown-link-checker: markdown-link-checker:
container: container:
image: docker.io/library/node:24.1.0-alpine image: docker.io/library/node:24.3.0-alpine
runs-on: runs-on:
- ubuntu-latest - ubuntu-latest
steps: steps:
@ -31,7 +31,7 @@ jobs:
markdown-lint: markdown-lint:
container: container:
image: docker.io/library/node:24.1.0-alpine image: docker.io/library/node:24.3.0-alpine
runs-on: runs-on:
- ubuntu-latest - ubuntu-latest
steps: steps:

@ -8,46 +8,54 @@ on:
jobs: jobs:
publish-chart: publish-chart:
container: container:
image: docker.io/volkerraschek/helm:3.18.2 image: docker.io/volkerraschek/helm:3.18.3
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Install tooling - name: Install packages via apk
run: | run: |
apk update apk update
apk add git npm yq apk add git npm jq yq
- uses: actions/checkout@v4 - uses: actions/checkout@v4
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Add Artifacthub.io annotations - name: Add Artifacthub.io annotations
run: | run: |
NEW_TAG="$(git describe --abbrev=0)" NEW_TAG="$(git tag --sort=-version:refname | head -n 1)"
OLD_TAG="$(git describe --abbrev=0 --tags "$(git rev-list --tags --skip=1 --max-count=1)")" OLD_TAG="$(git tag --sort=-version:refname | head -n 2 | tail -n 1)"
.gitea/scripts/add-annotations.sh "${NEW_TAG}" "${OLD_TAG}" .gitea/scripts/add-annotations.sh "${OLD_TAG}" "${NEW_TAG}"
- name: Extract meta information
run: |
echo "PACKAGE_VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
echo "REPOSITORY_NAME=$(echo ${GITHUB_REPOSITORY} | cut -d '/' -f 2 | sed --regexp-extended 's/-charts?//g')" >> $GITHUB_ENV
echo "REPOSITORY_OWNER=$(echo ${GITHUB_REPOSITORY} | cut -d '/' -f 1)" >> $GITHUB_ENV
- name: Update Helm Chart version in README.md
run: sed -i -E "s/^CHART_VERSION=.*/CHART_VERSION=${PACKAGE_VERSION}/g" README.md
- name: Package chart - name: Package chart
run: |
helm dependency build
helm package --version "${PACKAGE_VERSION}" ./
- name: Upload Chart to ChartMuseum
env: env:
CHARTMUSEUM_PASSWORD: ${{ secrets.CHARTMUSEUM_PASSWORD }} CHARTMUSEUM_PASSWORD: ${{ secrets.CHARTMUSEUM_PASSWORD }}
CHARTMUSEUM_REPOSITORY: ${{ vars.CHARTMUSEUM_REPOSITORY }} CHARTMUSEUM_REPOSITORY: ${{ vars.CHARTMUSEUM_REPOSITORY }}
CHARTMUSEUM_USERNAME: ${{ secrets.CHARTMUSEUM_USERNAME }} CHARTMUSEUM_USERNAME: ${{ secrets.CHARTMUSEUM_USERNAME }}
CHARTMUSEUM_HOSTNAME: ${{ vars.CHARTMUSEUM_HOSTNAME }} CHARTMUSEUM_HOSTNAME: ${{ vars.CHARTMUSEUM_HOSTNAME }}
GITEA_PACKAGE_REGISTRY_TOKEN: ${{ secrets.GIT_CRYPTIC_SYSTEMS_PACKAGE_REGISTRY_TOKEN }}
GITEA_SERVER_URL: ${{ github.server_url }}
run: | run: |
PACKAGE_VERSION=${GITHUB_REF#refs/tags/}
REPOSITORY_NAME=$(echo ${GITHUB_REPOSITORY} | cut -d '/' -f 2 | sed --regexp-extended 's/-charts?//g')
REPOSITORY_OWNER=$(echo ${GITHUB_REPOSITORY} | cut -d '/' -f 1)
helm dependency build
helm package --version "${PACKAGE_VERSION}" ./
# chart-museum
helm repo add --username ${CHARTMUSEUM_USERNAME} --password ${CHARTMUSEUM_PASSWORD} chartmuseum https://${CHARTMUSEUM_HOSTNAME}/${CHARTMUSEUM_REPOSITORY} helm repo add --username ${CHARTMUSEUM_USERNAME} --password ${CHARTMUSEUM_PASSWORD} chartmuseum https://${CHARTMUSEUM_HOSTNAME}/${CHARTMUSEUM_REPOSITORY}
helm cm-push ${REPOSITORY_NAME}-${PACKAGE_VERSION}.tgz chartmuseum helm cm-push ${REPOSITORY_NAME}-${PACKAGE_VERSION}.tgz chartmuseum
helm repo remove chartmuseum helm repo remove chartmuseum
# gitea - name: Upload Chart to Gitea
env:
GITEA_PACKAGE_REGISTRY_TOKEN: ${{ secrets.GIT_CRYPTIC_SYSTEMS_PACKAGE_REGISTRY_TOKEN }}
GITEA_SERVER_URL: ${{ github.server_url }}
run: |
helm repo add --username ${REPOSITORY_OWNER} --password ${GITEA_PACKAGE_REGISTRY_TOKEN} gitea ${GITEA_SERVER_URL}/api/packages/${REPOSITORY_OWNER}/helm 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 cm-push ${REPOSITORY_NAME}-${PACKAGE_VERSION}.tgz gitea
helm repo remove gitea helm repo remove gitea

@ -1,18 +1,21 @@
annotations:
artifacthub.io/links: |
- name: Prometheus Fail2Ban exporter (binary)
url: https://git.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter
- name: support
url: https://git.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter-charts/issues
apiVersion: v2 apiVersion: v2
name: prometheus-fail2ban-exporter
description: Prometheus metric exporter for Fail2Ban
type: application
version: "0.1.0"
appVersion: "0.1.1" appVersion: "0.1.1"
description: Prometheus metric exporter for Fail2Ban
# icon: https://annotations.example.com/icon.png # icon: https://annotations.example.com/icon.png
keywords: keywords:
- prometheus - prometheus
- prometheus-exporter - prometheus-exporter
- prometheus-fail2ban-exporter - prometheus-fail2ban-exporter
- fail2ban-exporter - fail2ban-exporter
name: prometheus-fail2ban-exporter
sources: sources:
- https://git.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter-charts - https://git.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter-charts
- https://git.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter - https://git.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter
type: application
version: "0.4.1"

21
LICENSE Normal file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2025 Markus Pesch
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

@ -4,13 +4,13 @@ CONTAINER_RUNTIME?=$(shell which podman)
# HELM_IMAGE # HELM_IMAGE
HELM_IMAGE_REGISTRY_HOST?=docker.io HELM_IMAGE_REGISTRY_HOST?=docker.io
HELM_IMAGE_REPOSITORY?=volkerraschek/helm HELM_IMAGE_REPOSITORY?=volkerraschek/helm
HELM_IMAGE_VERSION?=3.18.2 # renovate: datasource=docker registryUrl=https://docker.io depName=volkerraschek/helm HELM_IMAGE_VERSION?=3.18.3 # renovate: datasource=docker registryUrl=https://docker.io depName=volkerraschek/helm
HELM_IMAGE_FULLY_QUALIFIED=${HELM_IMAGE_REGISTRY_HOST}/${HELM_IMAGE_REPOSITORY}:${HELM_IMAGE_VERSION} HELM_IMAGE_FULLY_QUALIFIED=${HELM_IMAGE_REGISTRY_HOST}/${HELM_IMAGE_REPOSITORY}:${HELM_IMAGE_VERSION}
# NODE_IMAGE # NODE_IMAGE
NODE_IMAGE_REGISTRY_HOST?=docker.io NODE_IMAGE_REGISTRY_HOST?=docker.io
NODE_IMAGE_REPOSITORY?=library/node NODE_IMAGE_REPOSITORY?=library/node
NODE_IMAGE_VERSION?=24.1.0-alpine # renovate: datasource=docker registryUrl=https://docker.io depName=docker.io/library/node packageName=library/node NODE_IMAGE_VERSION?=24.3.0-alpine # renovate: datasource=docker registryUrl=https://docker.io depName=docker.io/library/node packageName=library/node
NODE_IMAGE_FULLY_QUALIFIED=${NODE_IMAGE_REGISTRY_HOST}/${NODE_IMAGE_REPOSITORY}:${NODE_IMAGE_VERSION} NODE_IMAGE_FULLY_QUALIFIED=${NODE_IMAGE_REGISTRY_HOST}/${NODE_IMAGE_REPOSITORY}:${NODE_IMAGE_VERSION}
# MISSING DOT # MISSING DOT

@ -42,7 +42,7 @@ version of the chart must be in sync with the `values.yaml`. Newer *minor* versi
versions can break something! versions can break something!
```bash ```bash
CHART_VERSION=0.4.0 CHART_VERSION=0.4.21
helm show values prometheus-exporters/prometheus-fail2ban-exporter --version "${CHART_VERSION}" > values.yaml helm show values prometheus-exporters/prometheus-fail2ban-exporter --version "${CHART_VERSION}" > values.yaml
``` ```

6
package-lock.json generated

@ -17,9 +17,9 @@
} }
}, },
"node_modules/@bitnami/readme-generator-for-helm": { "node_modules/@bitnami/readme-generator-for-helm": {
"version": "2.7.0", "version": "2.7.1",
"resolved": "https://registry.npmjs.org/@bitnami/readme-generator-for-helm/-/readme-generator-for-helm-2.7.0.tgz", "resolved": "https://registry.npmjs.org/@bitnami/readme-generator-for-helm/-/readme-generator-for-helm-2.7.1.tgz",
"integrity": "sha512-fVxExmcuJ9NZb9ZE9OW3+lG8pUlXJAJdaO8UukV3A7WzYu4qOTr03MXPH9Gt5e/6mo3x4WYI/cXBksKfS0qn3w==", "integrity": "sha512-HCt4wdEVYfPPVX8P6be8LgejVPEHJvnXXJBErdcSWmNgbbXowJhFwnB1uTdzkT00kqSBd8KQMdzjoQFGgv2/Ww==",
"dev": true, "dev": true,
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {