The following PR add the annotation 'artifacthub.io/changes'. For each semantic commit will be the annotation extended. Further information can be found in the documentation of [Artifacthub.io](https://artifacthub.io/docs/topics/annotations/helm/#supported-annotations). The CI has been adapted. The binary jq as well as yq in >= v4.0 is required. Otherwise will not be concatenated the YAML file correctly via the yq expression, because the `loadstr()` expression is not available in lower versions. Additionally the relation between the semantic commit and the Artifacthub.io change log type should be clarified. The current relationshiop can be adapted if needed. Furthermore, yq will be installed as part of the CI steps. It would be great if yq is also available as deb package in >=v4.0. This would reduce the boiler plate to install yq and maintain the version via renovate. Regarding the renovate expression. In my environment works this expression, but I don't know if it also works in this gitea/renovate instance. WIP WIP WIP asd WIP WIP
146 lines
5.7 KiB
YAML
146 lines
5.7 KiB
YAML
name: generate-chart
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- "*"
|
|
|
|
jobs:
|
|
generate-chart-publish:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Determine Architecture and Operating System to support x86_64 and ARM based CI nodes
|
|
run: |
|
|
# determine operating system
|
|
OS=$(uname | tr '[:upper:]' '[:lower:]')
|
|
echo "OS=${OS}" >> $GITHUB_ENV
|
|
echo "INFO: Set environment variable OS=${OS}"
|
|
|
|
# determine architecture
|
|
ARCH="$(uname -m)"
|
|
case "${ARCH}" in
|
|
aarch64) ARCH=arm64;;
|
|
x86_64) ARCH=amd64;;
|
|
esac
|
|
echo "ARCH=${ARCH}" >> $GITHUB_ENV
|
|
echo "INFO: Set environment variable ARCH=${ARCH}"
|
|
|
|
- name: Install packages via apt
|
|
run: |
|
|
apt update --yes
|
|
|
|
echo "INFO: Install packages via apt"
|
|
apt install --yes curl ca-certificates curl gnupg jq
|
|
|
|
- name: Install helm
|
|
env:
|
|
# renovate: datasource=docker depName=alpine/helm
|
|
HELM_VERSION: "3.17.3"
|
|
run: |
|
|
curl --fail --location --output /dev/stdout --silent --show-error https://get.helm.sh/helm-v${HELM_VERSION}-${OS}-${ARCH}.tar.gz | tar --extract --gzip --file /dev/stdin
|
|
mv ${OS}-${ARCH}/helm /usr/local/bin/
|
|
rm --force --recursive ${OS}-${ARCH} helm-v${HELM_VERSION}-${OS}-${ARCH}.tar.gz
|
|
helm version
|
|
|
|
- name: Install yq
|
|
env:
|
|
YQ_VERSION: v4.45.4 # renovate: datasource=github-releases depName=mikefarah/yq
|
|
run: |
|
|
curl --fail --location --output /dev/stdout --silent --show-error https://github.com/mikefarah/yq/releases/download/${YQ_VERSION}/yq_${OS}_${ARCH}.tar.gz | tar --extract --gzip --file /dev/stdin
|
|
mv yq_${OS}_${ARCH} /usr/local/bin
|
|
rm --force --recursive yq_${OS}_${ARCH} yq_${OS}_${ARCH}.tar.gz
|
|
yq --version
|
|
|
|
- name: Install docker-ce via apt
|
|
run: |
|
|
echo "INFO: Install docker"
|
|
install -m 0755 -d /etc/apt/keyrings
|
|
curl --fail --location --silent --show-error https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
|
chmod a+r /etc/apt/keyrings/docker.gpg
|
|
echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
|
|
apt update --yes
|
|
apt install --yes python3 python3-pip apt-transport-https docker-ce-cli
|
|
|
|
- name: Install awscli
|
|
run: |
|
|
echo "INFO: Install awscli via python pip"
|
|
pip install awscli --break-system-packages
|
|
aws --version
|
|
|
|
- name: Import GPG key
|
|
id: import_gpg
|
|
uses: https://github.com/crazy-max/ghaction-import-gpg@v6
|
|
with:
|
|
gpg_private_key: ${{ secrets.GPGSIGN_KEY }}
|
|
passphrase: ${{ secrets.GPGSIGN_PASSPHRASE }}
|
|
fingerprint: CC64B1DB67ABBEECAB24B6455FC346329753F4B0
|
|
|
|
- name: Add Artifacthub.io annotations
|
|
run: |
|
|
NEW_TAG=v12.0.0
|
|
OLD_TAG=v11.0.1
|
|
# NEW_TAG="$(git tag --sort=-version:refname | head --lines 1)"
|
|
# OLD_TAG="$(git tag --sort=-version:refname | head --lines 2 | tail --lines 1)"
|
|
.gitea/scripts/add-annotations.sh "${OLD_TAG}" "${NEW_TAG}"
|
|
|
|
- name: Print Chart.yaml
|
|
run: cat Chart.yaml
|
|
|
|
# Using helm gpg plugin as 'helm package --sign' has issues with gpg2: https://github.com/helm/helm/issues/2843
|
|
- name: package chart
|
|
run: |
|
|
echo ${{ secrets.DOCKER_CHARTS_PASSWORD }} | docker login -u ${{ secrets.DOCKER_CHARTS_USERNAME }} --password-stdin
|
|
# FIXME: use upstream after https://github.com/technosophos/helm-gpg/issues/1 is solved
|
|
helm plugin install https://github.com/pat-s/helm-gpg
|
|
helm dependency build
|
|
helm package --version "${GITHUB_REF#refs/tags/v}" ./
|
|
mkdir gitea
|
|
mv gitea*.tgz gitea/
|
|
curl --fail --location --output gitea/index.yaml --silent --show-error https://dl.gitea.com/charts/index.yaml
|
|
helm repo index gitea/ --url https://dl.gitea.com/charts --merge gitea/index.yaml
|
|
# push to dockerhub
|
|
echo ${{ secrets.DOCKER_CHARTS_PASSWORD }} | helm registry login -u ${{ secrets.DOCKER_CHARTS_USERNAME }} registry-1.docker.io --password-stdin
|
|
helm push gitea/gitea-${GITHUB_REF#refs/tags/v}.tgz oci://registry-1.docker.io/giteacharts
|
|
helm registry logout registry-1.docker.io
|
|
|
|
- name: aws credential configure
|
|
uses: https://github.com/aws-actions/configure-aws-credentials@v4
|
|
with:
|
|
aws-access-key-id: ${{ secrets.AWS_KEY_ID }}
|
|
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
aws-region: ${{ secrets.AWS_REGION }}
|
|
|
|
- name: Copy files to S3 and clear cache
|
|
run: |
|
|
aws s3 sync gitea/ s3://${{ secrets.AWS_S3_BUCKET}}/charts/
|
|
|
|
release-gitea:
|
|
# needs: generate-chart-publish
|
|
runs-on: ubuntu-latest
|
|
container: docker.io/thegeeklab/git-sv:2.0.1
|
|
steps:
|
|
- name: install tools
|
|
run: |
|
|
apk add -q --update --no-cache nodejs
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-tags: true
|
|
fetch-depth: 0
|
|
|
|
- name: Create changelog
|
|
run: |
|
|
git sv current-version
|
|
git sv release-notes -t ${GITHUB_REF#refs/tags/} -o CHANGELOG.md
|
|
sed -i '1,2d' CHANGELOG.md # remove version
|
|
cat CHANGELOG.md
|
|
|
|
- name: Release
|
|
uses: https://github.com/akkuman/gitea-release-action@v1
|
|
with:
|
|
body_path: CHANGELOG.md
|
|
token: "${{ secrets.RELEASE_TOKEN }}"
|