name: "Renovate: Bump on Push" on: push: branches: - "renovate/**" tags-ignore: - "**" jobs: renovate-bump: name: Get changed Apps runs-on: ubuntu-20.04 container: image: ghcr.io/truecharts/devcontainer:v3.1.1@sha256:44047909bbf54cb1ce3551ae0b342244a5bdcd62562a7f2f07caad4bf8856ee4 steps: - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3 name: Checkout with: fetch-depth: 0 token: ${{ secrets.BOT_TOKEN }} - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3 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("(?(?(?[\/]?)[^\/]+\/)(?(?[\/]?)[^\/]+\/)(?(?[\/]?)[^\/]+)(?.+))"; "\(.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" 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