aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/release.yml
blob: 01eaeeed05ed34b9b914dc5108f2c242fb4bd475 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
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