diff --git a/.github/workdlows/renovate-app-version.sh b/.github/workdlows/renovate-app-version.sh new file mode 100644 index 000000000..017b22e70 --- /dev/null +++ b/.github/workdlows/renovate-app-version.sh @@ -0,0 +1,26 @@ +#!/bin/bash +# This script copies the version from docker-compose.yml to config.json. + +app_name=$1 +old_version=$2 + +# find all docker-compose files under apps/$app_name (there should be only one) +docker_compose_files=$(find apps/$app_name/$old_version -name docker-compose.yml) + +for docker_compose_file in $docker_compose_files +do + # Assuming that the app version will be from the first docker image + first_service=$(yq '.services | keys | .[0]' $docker_compose_file) + + image=$(yq .services.$first_service.image $docker_compose_file) + + # Only apply changes if the format is : + if [[ "$image" == *":"* ]]; then + version=$(cut -d ":" -f2- <<< "$image") + + # Trim the "v" prefix + trimmed_version=${version/#"v"} + + mv apps/$app_name/$old_version apps/$app_name/$trimmed_version + fi +done diff --git a/.github/workdlows/renovate-app-version.yml b/.github/workdlows/renovate-app-version.yml new file mode 100644 index 000000000..d0921e2de --- /dev/null +++ b/.github/workdlows/renovate-app-version.yml @@ -0,0 +1,49 @@ +name: Update app version in Renovate Branches + +on: + push: + branches: [ 'renovate/*' ] + +jobs: + update-app-version: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Configure repo + run: | + git config --local user.email "githubaction@githubaction.com" + git config --local user.name "github-action update-app-version" + + - name: Get list of updated files by the last commit in this branch separated by space + id: updated-files + run: | + echo "::set-output name=files::$(git diff-tree --no-commit-id --name-only -r ${{ github.sha }} | tr '\n' ' ')" + + - name: Run renovate-app-version.sh on updated files + run: | + IFS=' ' read -ra files <<< "${{ steps.updated-files.outputs.files }}" + + for file in "${files[@]}"; do + if [[ $file == *"docker-compose.yml"* ]]; then + app_name=$(echo $file | cut -d'/' -f 2) + old_version=$(echo $file | cut -d'/' -f 3) + chmod +x .github/workflows/renovate-app-version.sh + .github/workflows/renovate-app-version.sh $app_name $old_version + fi + done + + - name: Commit & Push Changes + run: | + IFS=' ' read -ra files <<< "${{ steps.updated-files.outputs.files }}" + + for file in "${files[@]}"; do + if [[ $file == *"docker-compose.yml"* ]]; then + app_name=$(echo $file | cut -d'/' -f 2) + git add "apps/$app_name/*" && git commit -m "Update app version" --no-verify && git push || true + fi + done + diff --git a/.github/workdlows/renovate.yml b/.github/workdlows/renovate.yml new file mode 100644 index 000000000..314af9d8e --- /dev/null +++ b/.github/workdlows/renovate.yml @@ -0,0 +1,25 @@ +name: Renovate + +on: + schedule: + - cron: "0 0 * * *" + push: + branches: + - main + workflow_dispatch: + inputs: + manual-trigger: + description: 'Manually trigger Renovate' + default: '' + +jobs: + renovate: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3.3.0 + - name: Run Renovate + uses: renovatebot/github-action@v38.1.0 + with: + useSlim: false + token: ${{ secrets.GITHUBTOKEN }} diff --git a/renovate.json b/renovate.json new file mode 100644 index 000000000..5910ed4ba --- /dev/null +++ b/renovate.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": ["config:base"], + "gitIgnoredAuthors": [ + "githubaction@githubaction.com" + ], + "packageRules": [ + { + "packageNames": ["docker-compose"], + "automerge": true + } + ], + "prCreation": "immediate" +}