### Description of the change Remove the AWS S3 upload steps from the release workflow. Charts are now published only to Cloudflare R2 (plus the OCI registry on Docker Hub). Removed steps: - `aws credential configure` (`aws-actions/configure-aws-credentials`) - `Copy files to S3 and clear cache` The `awscli` install step is kept, since the Cloudflare R2 sync still uses `aws s3 sync` with a custom endpoint. ### Benefits - One less publishing target to keep in sync, removing duplicated chart uploads. - The `AWS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_REGION` and `AWS_S3_BUCKET` secrets are no longer needed. ### Possible drawbacks Anything still pointing at the S3 bucket directly will no longer receive new chart releases; the Cloudflare R2 bucket behind `https://dl.gitea.com/charts` must be the only source of truth. --------- Co-authored-by: bircni <bircni@icloud.com> Reviewed-on: https://gitea.com/gitea/helm-gitea/pulls/1103 Reviewed-by: bircni <bircni@icloud.com> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
123 lines
5.3 KiB
YAML
123 lines
5.3 KiB
YAML
name: generate-chart
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- "*"
|
|
|
|
jobs:
|
|
generate-chart-publish:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v7.0.0
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Install packages via apt
|
|
run: |
|
|
apt update --yes
|
|
apt install --yes curl ca-certificates curl gnupg jq
|
|
|
|
- name: Install helm
|
|
env:
|
|
# renovate: datasource=docker depName=alpine/helm
|
|
HELM_VERSION: "3.21.3"
|
|
run: |
|
|
curl --fail --location --output /dev/stdout --silent --show-error https://get.helm.sh/helm-v${HELM_VERSION}-linux-$(dpkg --print-architecture).tar.gz | tar --extract --gzip --file /dev/stdin
|
|
mv linux-$(dpkg --print-architecture)/helm /usr/local/bin/
|
|
rm --force --recursive linux-$(dpkg --print-architecture) helm-v${HELM_VERSION}-linux-$(dpkg --print-architecture).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_linux_$(dpkg --print-architecture).tar.gz | tar --extract --gzip --file /dev/stdin
|
|
mv yq_linux_$(dpkg --print-architecture) /usr/local/bin
|
|
rm --force --recursive yq_linux_$(dpkg --print-architecture) yq_linux_$(dpkg --print-architecture).tar.gz
|
|
yq --version
|
|
|
|
- name: Install docker-ce via apt
|
|
run: |
|
|
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: |
|
|
pip install awscli --break-system-packages
|
|
aws --version
|
|
|
|
- name: Import GPG key
|
|
id: import_gpg
|
|
uses: https://github.com/crazy-max/ghaction-import-gpg@v7
|
|
with:
|
|
gpg_private_key: ${{ secrets.GPGSIGN_KEY }}
|
|
passphrase: ${{ secrets.GPGSIGN_PASSPHRASE }}
|
|
fingerprint: CC64B1DB67ABBEECAB24B6455FC346329753F4B0
|
|
|
|
- name: Add Artifacthub.io annotations
|
|
run: |
|
|
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: Copy files to Cloudflare R2
|
|
env:
|
|
AWS_ACCESS_KEY_ID: ${{ secrets.CLOUDFLARE_R2_ACCESS_KEY_ID }}
|
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.CLOUDFLARE_R2_SECRET_ACCESS_KEY }}
|
|
AWS_DEFAULT_REGION: auto
|
|
CLOUDFLARE_R2_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_R2_ACCOUNT_ID }}
|
|
CLOUDFLARE_R2_BUCKET: ${{ secrets.CLOUDFLARE_R2_BUCKET }}
|
|
run: |
|
|
aws s3 sync gitea/ s3://${CLOUDFLARE_R2_BUCKET}/charts/ --endpoint-url https://${CLOUDFLARE_R2_ACCOUNT_ID}.r2.cloudflarestorage.com
|
|
|
|
release-gitea:
|
|
needs: generate-chart-publish
|
|
runs-on: ubuntu-latest
|
|
container: docker.io/thegeeklab/git-sv:2.1.3
|
|
steps:
|
|
- name: install tools
|
|
run: |
|
|
apk add -q --update --no-cache nodejs
|
|
- uses: actions/checkout@v7.0.0
|
|
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 }}"
|