From 24caca12198274030f98f8770c95773236c8557a Mon Sep 17 00:00:00 2001 From: zhengkunwang223 <31820853+zhengkunwang223@users.noreply.github.com> Date: Thu, 1 Jun 2023 22:52:51 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=20renovate=20?= =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E6=B5=81=20(#105)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workdlows/renovate-app-version.sh | 26 ++++++++++++ .github/workdlows/renovate-app-version.yml | 49 ++++++++++++++++++++++ .github/workdlows/renovate.yml | 25 +++++++++++ renovate.json | 14 +++++++ 4 files changed, 114 insertions(+) create mode 100644 .github/workdlows/renovate-app-version.sh create mode 100644 .github/workdlows/renovate-app-version.yml create mode 100644 .github/workdlows/renovate.yml create mode 100644 renovate.json diff --git a/.github/workdlows/renovate-app-version.sh b/.github/workdlows/renovate-app-version.sh new file mode 100644 index 00000000..017b22e7 --- /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 00000000..d0921e2d --- /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 00000000..314af9d8 --- /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 00000000..5910ed4b --- /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" +}