150 lines
6.3 KiB
YAML
150 lines
6.3 KiB
YAML
name: "Renovate: Bump on Push"
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- "renovate/**"
|
|
tags-ignore:
|
|
- "**"
|
|
|
|
jobs:
|
|
renovate-bump:
|
|
name: Get changed Apps
|
|
runs-on: ubuntu-22.04
|
|
container:
|
|
image: ghcr.io/truecharts/devcontainer:3.1.10@sha256:c239addf725eb5cedf79517f8089fdafdc32b5270d1893ee87ae6e511b9bcae3
|
|
steps:
|
|
- uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4
|
|
name: Checkout
|
|
with:
|
|
fetch-depth: 0
|
|
token: ${{ secrets.BOT_TOKEN }}
|
|
- uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4
|
|
name: Checkout
|
|
with:
|
|
fetch-depth: 0
|
|
ref: master
|
|
path: master
|
|
|
|
- name: Setting repo parent dir as safe safe.directory
|
|
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
|
|
|
|
- uses: dorny/paths-filter@v2
|
|
id: filter
|
|
with:
|
|
list-files: json
|
|
filters: |
|
|
changed:
|
|
- 'charts/stable/**'
|
|
- 'charts/incubator/**'
|
|
- 'charts/SCALE/**'
|
|
- 'charts/library/**'
|
|
- 'charts/dependency/**'
|
|
- 'charts/core/**'
|
|
- 'charts/enterprise/**'
|
|
- 'charts/games/**'
|
|
- name: Filter filter-output
|
|
run: echo '${{ toJson(steps.filter.outputs) }}' > changes.json
|
|
|
|
- name: Bump and Sync
|
|
shell: bash
|
|
run: |
|
|
# Designed to ensure the appversion in Chart.yaml is in sync with the primary Chart tag if found
|
|
# Also makes sure that home link is pointing to the correct url
|
|
sync_tag() {
|
|
local chart="$1"
|
|
local chartname="$2"
|
|
local train="$3"
|
|
echo "Attempting to sync primary tag with appversion for: ${chartname}"
|
|
local tag="$(cat ${chart}/values.yaml | grep '^ tag: ' | awk -F" " '{ print $2 }' | head -1)"
|
|
tag="${tag%%@*}"
|
|
tag="${tag:-auto}"
|
|
tag=$(echo $tag | sed "s/release-//g")
|
|
tag=$(echo $tag | sed "s/release_//g")
|
|
tag=$(echo $tag | sed "s/version-//g")
|
|
tag=$(echo $tag | sed "s/version_//g")
|
|
tag="${tag#*V.}"
|
|
tag="${tag#*v-}"
|
|
tag="${tag#*v}"
|
|
tag="${tag%-*}"
|
|
tag="${tag:0:10}"
|
|
tag="${tag%-}"
|
|
tag="${tag%_}"
|
|
tag="${tag%.}"
|
|
echo "Updating tag of ${chartname} to ${tag}..."
|
|
sed -i -e "s|appVersion: .*|appVersion: \"${tag}\"|" "${chart}/Chart.yaml"
|
|
echo "Updating icon of ${chartname}..."
|
|
sed -i -e "s|icon: .*|icon: https:\/\/truecharts.org\/img\/hotlink-ok\/chart-icons\/${chartname}.png|" "${chart}/Chart.yaml"
|
|
echo "Updating home of ${chartname}..."
|
|
sed -i -e "s|home: .*|home: https:\/\/truecharts.org\/charts\/${train}\/${chartname}|" "${chart}/Chart.yaml"
|
|
echo "Attempting to update sources of ${chartname}..."
|
|
echo "Using go-yq verion: <$(go-yq -V)>"
|
|
# Get all sources (except truecharts)
|
|
curr_sources=$(go-yq '.sources[] | select(. != "https://github.com/truecharts*")' "${chart}/Chart.yaml")
|
|
# Empty sources list in-place
|
|
go-yq -i 'del(.sources.[])' "${chart}/Chart.yaml"
|
|
# Add truechart source
|
|
tcsource="https://github.com/truecharts/charts/tree/master/charts/$train/$chartname" go-yq -i '.sources += env(tcsource)' "${chart}/Chart.yaml"
|
|
# Add the rest of the sources
|
|
while IFS= read -r line; do
|
|
src="$line" go-yq -i '.sources += env(src)' "${chart}/Chart.yaml" || echo "src set error"
|
|
done <<< "$curr_sources"
|
|
echo "Sources of ${chartname} updated!"
|
|
}
|
|
export -f sync_tag
|
|
|
|
# The actual script
|
|
APPS=$(jq --raw-output '.changed_files | fromjson | .[] |= sub("(?<filepath>(?<first_directory>(?<root1>[\/]?)[^\/]+\/)(?<second_directory>(?<root2>[\/]?)[^\/]+\/)(?<third_directory>(?<root3>[\/]?)[^\/]+)(?<extra_paths>.+))"; "\(.third_directory)") | unique' changes.json | jq -r '.[]')
|
|
echo "changed apps: ${APPS[*]}"
|
|
for chart in ${APPS[*]}
|
|
do
|
|
if [[ "${chart}" == '.gitkeep' ]]; then
|
|
echo "Skipping..."
|
|
return
|
|
elif test -f "./charts/stable/${chart}/Chart.yaml"; then
|
|
train="stable"
|
|
elif test -f "./charts/incubator/${chart}/Chart.yaml"; then
|
|
train="incubator"
|
|
elif test -f "./charts/SCALE/${chart}/Chart.yaml"; then
|
|
train="SCALE"
|
|
elif test -f "./charts/library/${chart}/Chart.yaml"; then
|
|
train="library"
|
|
elif test -f "./charts/dependency/${chart}/Chart.yaml"; then
|
|
train="dependency"
|
|
elif test -f "./charts/core/${chart}/Chart.yaml"; then
|
|
train="core"
|
|
elif test -f "./charts/games/${chart}/Chart.yaml"; then
|
|
train="games"
|
|
elif test -f "./charts/enterprise/${chart}/Chart.yaml"; then
|
|
train="enterprise"
|
|
elif test -f "./charts/operators/${chart}/Chart.yaml"; then
|
|
train="operators"
|
|
else
|
|
train="incubator"
|
|
fi
|
|
echo "Comparing versions for ${train}/${chart}"
|
|
master=$(cat ./master/charts/${train}/${chart}/Chart.yaml | grep "^version")
|
|
current=$(cat ./charts/${train}/${chart}/Chart.yaml | grep "^version")
|
|
echo "master version: ${master}"
|
|
echo "current version: ${current}"
|
|
if [[ "${master}" != "${current}" ]]; then
|
|
echo "Version does not have to be bumped"
|
|
else
|
|
echo "Bumping patch version for ${train}/${chart}"
|
|
./tools/bump.sh patch ./charts/${train}/${chart}
|
|
fi
|
|
|
|
sync_tag "charts/${train}/${chart}" "${chart}" "${train}"
|
|
done
|
|
- name: Cleanup
|
|
run: |
|
|
rm -rf changes.json
|
|
rm -rf master
|
|
- name: Commit and Push new version
|
|
run: |
|
|
git config user.name "TrueCharts-Bot"
|
|
git config user.email "bot@truecharts.org"
|
|
git add --all
|
|
git commit -sm "Commit bumped Chart Version" || exit 0
|
|
git push
|