From 4784024c00c371492d63a9b63f5087c2c7c2276d Mon Sep 17 00:00:00 2001 From: Jacek Kowalski <Jacek@jacekk.info> Date: Sun, 10 May 2020 22:40:36 +0000 Subject: [PATCH] Use GitHub Actions to automatically create PR on Keycloak release --- .github/workflows/update-deps.yml | 101 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 101 insertions(+), 0 deletions(-) diff --git a/.github/workflows/update-deps.yml b/.github/workflows/update-deps.yml new file mode 100644 index 0000000..704a7ae --- /dev/null +++ b/.github/workflows/update-deps.yml @@ -0,0 +1,101 @@ +on: + schedule: + - cron: '41 8 * * *' + +name: Update dependencies + +jobs: + update: + name: Update dependencies + runs-on: ubuntu-latest + steps: + - id: checkout + name: Checkout code + uses: actions/checkout@v2 + + - id: java + name: Install Java and Maven + uses: actions/setup-java@v1 + with: + java-version: 8 + + - id: update_keycloak + name: Update Keycloak + run: | + mvn -B versions:update-property -Dproperty=keycloak.version + + - id: vars + name: Get project variables + run: | + echo -n "::set-output name=versionUpdated::" + [ -f pom.xml.versionsBackup ] && echo 1 || echo 0 + echo -n "::set-output name=keycloakVersion::" + mvn -q help:evaluate -Dexpression=keycloak.version -DforceStdout 2> /dev/null | grep -E '^[0-9a-zA-Z.-]+$' + + - id: check_branch + name: Check if branch exists + run: | + echo -n "::set-output name=commit::" + if [ '${{ steps.vars.outputs.versionUpdated }}' == '1' ]; then + git ls-remote origin 'feature/keycloak-update-${{ steps.vars.outputs.keycloakVersion }}' + else + git rev-parse HEAD + fi + + - id: reset_repo + name: Reset repository + if: steps.check_branch.outputs.commit == '' + run: | + git reset --hard + + - id: update_deps + name: Update dependencies + if: steps.check_branch.outputs.commit == '' + run: | + mvn versions:set -DnewVersion='${{ steps.vars.outputs.keycloakVersion }}' + mvn versions:compare-dependencies \ + -DremotePom='org.keycloak:keycloak-parent:${{ steps.vars.outputs.keycloakVersion }}' \ + -DupdateDependencies=true -DupdatePropertyVersions=true + mvn versions:use-latest-versions -DallowMajorUpdates=false + + - id: create_commit + name: Create commit + if: steps.check_branch.outputs.commit == '' + run: | + git add pom.xml + git config user.name 'github-actions' + git config user.email '41898282+github-actions[bot]@users.noreply.github.com' + git commit -m 'Update to Keycloak ${{ steps.vars.outputs.keycloakVersion }}' + + - id: create_branch + name: Create branch + if: steps.check_branch.outputs.commit == '' + run: | + git push origin 'HEAD:feature/keycloak-update-${{ steps.vars.outputs.keycloakVersion }}' + + - id: set_token + name: Set access token + if: steps.check_branch.outputs.commit == '' + run: | + echo -n "::set-env name=GH_TOKEN::" + if [ '${{ secrets.GH_TOKEN }}' != '' ]; then + echo '${{ secrets.GH_TOKEN }}' + else + echo '${{ secrets.GITHUB_TOKEN }}' + fi + + - id: create_pull_request_default_token + name: Create pull request + if: steps.check_branch.outputs.commit == '' + uses: actions/github-script@0.9.0 + with: + github-token: ${{ env.GH_TOKEN }} + script: | + github.pulls.create({ + owner: context.repo.owner, + repo: context.repo.repo, + head: 'feature/keycloak-update-${{ steps.vars.outputs.keycloakVersion }}', + base: 'master', + title: 'Update to Keycloak ${{ steps.vars.outputs.keycloakVersion }}', + body: 'Automatic dependency bump due to release of Keycloak ${{ steps.vars.outputs.keycloakVersion }}' + }) -- Gitblit v1.9.1