aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/release.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/release.yml')
-rw-r--r--.github/workflows/release.yml88
1 files changed, 88 insertions, 0 deletions
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..01eaeee
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,88 @@
+name: Release
+on:
+ release:
+ types: [prereleased, released]
+
+jobs:
+ release:
+ name: Publish Plugin
+ runs-on: ubuntu-latest
+ permissions:
+ contents: write
+ pull-requests: write
+ steps:
+ - name: Fetch Sources
+ uses: actions/checkout@v4
+ with:
+ ref: ${{ github.event.release.tag_name }}
+
+ - name: Setup Java
+ uses: actions/setup-java@v4
+ with:
+ distribution: zulu
+ java-version: 17
+
+ - name: Setup Gradle
+ uses: gradle/actions/setup-gradle@v3
+ with:
+ gradle-home-cache-cleanup: true
+
+ - name: Export Properties
+ id: properties
+ shell: bash
+ run: |
+ CHANGELOG="$(cat << 'EOM' | sed -e 's/^[[:space:]]*$//g' -e '/./,$!d'
+ ${{ github.event.release.body }}
+ EOM
+ )"
+
+ echo "changelog<<EOF" >> $GITHUB_OUTPUT
+ echo "$CHANGELOG" >> $GITHUB_OUTPUT
+ echo "EOF" >> $GITHUB_OUTPUT
+
+ - name: Patch Changelog
+ if: ${{ steps.properties.outputs.changelog != '' }}
+ env:
+ CHANGELOG: ${{ steps.properties.outputs.changelog }}
+ run: |
+ ./gradlew patchChangelog --release-note="$CHANGELOG"
+
+ - name: Publish Plugin
+ env:
+ PUBLISH_TOKEN: ${{ secrets.PUBLISH_TOKEN }}
+ CERTIFICATE_CHAIN: ${{ secrets.CERTIFICATE_CHAIN }}
+ PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }}
+ PRIVATE_KEY_PASSWORD: ${{ secrets.PRIVATE_KEY_PASSWORD }}
+ run: ./gradlew publishPlugin
+
+ - name: Upload Release Asset
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ run: gh release upload ${{ github.event.release.tag_name }} ./build/distributions/*
+
+ - name: Create Pull Request
+ if: ${{ steps.properties.outputs.changelog != '' }}
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ run: |
+ VERSION="${{ github.event.release.tag_name }}"
+ BRANCH="changelog-update-$VERSION"
+ LABEL="release changelog"
+
+ git config user.email "action@github.com"
+ git config user.name "GitHub Action"
+
+ git checkout -b $BRANCH
+ git commit -am "Changelog update - $VERSION"
+ git push --set-upstream origin $BRANCH
+
+ gh label create "$LABEL" \
+ --description "Pull requests with release changelog update" \
+ --force \
+ || true
+
+ gh pr create \
+ --title "Changelog update - \`$VERSION\`" \
+ --body "Current pull request contains patched \`CHANGELOG.md\` file for the \`$VERSION\` version." \
+ --label "$LABEL" \
+ --head $BRANCH