1 # SPDX-FileCopyrightText: The Storage-Units Authors
2 # SPDX-License-Identifier: 0BSD
4 name: Automated Release
11 runs-on: ubuntu-latest
17 uses: actions/checkout@v4
21 name: Fetch last release info
22 run: echo "tag=$(gh release view --json tagName --jq '.tagName')" >> $GITHUB_OUTPUT
24 GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
27 run: echo "count=$(git rev-list --count ${{ steps.last_release.outputs.tag }}..HEAD)" >> $GITHUB_OUTPUT
29 name: Create Release Version
30 if: steps.commits.outputs.count > 0
31 run: echo "version=$(date +'%Y.%-m.%-d')" >> $GITHUB_OUTPUT
34 if: steps.commits.outputs.count > 0
35 run: echo "sha=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT
38 if: steps.commits.outputs.count > 0
39 run: echo "iso8601=$(date --utc --iso-8601=seconds)" >> $GITHUB_OUTPUT
42 if: steps.commits.outputs.count > 0
43 uses: actions/setup-java@v4
50 server-username: MAVEN_CENTRAL_USERNAME
51 server-password: MAVEN_CENTRAL_TOKEN
53 name: Cache Dependencies
54 if: steps.commits.outputs.count > 0
55 uses: actions/cache@v3
57 path: ~/.m2/repository
58 key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
60 ${{ runner.os }}-maven-
63 if: steps.commits.outputs.count > 0
64 uses: timheuer/base64-to-file@v1.2
66 fileName: signing.key.asc
67 fileDir: ${{ github.workspace}}
68 encodedString: ${{ secrets.GPG_SECRET_KEY_BASE64 }}
70 name: Set Release Version
71 if: steps.commits.outputs.count > 0
72 run: mvn --batch-mode --define newVersion=${{ steps.release.outputs.version }} --define generateBackupPoms=false versions:set
74 name: Deploy Maven Artifact
75 if: steps.commits.outputs.count > 0
79 --activate-profiles release
80 --define scmTag=${{ steps.sha.outputs.sha }}
81 --define pgp.secretkey=keyfile:${{ steps.gpg.outputs.filePath }}
82 --define pgp.passphrase=literal:${{ secrets.GPG_SECRET_KEY_PASSWORD }}
83 --define project.build.outputTimestamp=${{ steps.timestamp.outputs.iso8601 }}
86 MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }}
87 MAVEN_CENTRAL_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }}
88 MAVEN_OPTS: "--add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.desktop/java.awt.font=ALL-UNNAMED"
91 if: steps.commits.outputs.count > 0
92 uses: softprops/action-gh-release@v1
94 tag_name: ${{ steps.release.outputs.version }}
95 name: ${{ steps.release.outputs.version }}
96 token: ${{ secrets.GITHUB_TOKEN }}
99 generate_release_notes: true
102 if: steps.commits.outputs.count > 0
103 uses: dawidd6/action-send-mail@v3
105 server_address: ${{ secrets.MAIL_SERVER }}
106 server_port: ${{ secrets.MAIL_PORT }}
107 username: ${{ secrets.MAIL_USERNAME }}
108 password: ${{ secrets.MAIL_PASSWORD }}
109 subject: ${{ github.event.repository.name }} version ${{ steps.release.outputs.version }} published
110 body: See ${{ steps.create_release.outputs.url }} for details.
111 to: announcements@metio.groups.io
112 from: ${{ secrets.MAIL_SENDER }}
114 name: Send Matrix Message
115 if: steps.commits.outputs.count > 0
116 uses: s3krit/matrix-message-action@v0.0.3
118 room_id: ${{ secrets.MATRIX_ROOM_ID }}
119 access_token: ${{ secrets.MATRIX_ACCESS_TOKEN }}
120 message: ${{ github.event.repository.name }} version [${{ steps.release.outputs.version }}](${{ steps.create_release.outputs.url }}) published