Skip to content

Commit b06abac

Browse files
Sebastian Hoßsebhoss
authored andcommitted
automate release & update workflows some more
1 parent 22f500c commit b06abac

File tree

2 files changed

+92
-26
lines changed

2 files changed

+92
-26
lines changed

.github/workflows/release.yml

Lines changed: 80 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -7,52 +7,108 @@ on:
77
- cron: 27 4 * * TUE
88
workflow_dispatch:
99
jobs:
10-
build:
10+
publish:
1111
runs-on: ubuntu-latest
12+
permissions:
13+
contents: write
1214
steps:
13-
- uses: actions/checkout@v3
14-
- name: Set up Java
15+
- id: checkout
16+
name: Clone Git Repository
17+
uses: actions/checkout@v3
18+
- id: commits
19+
name: Count Commits
20+
run: echo "count=$(git rev-list --count HEAD --since='last Tuesday')" >> $GITHUB_OUTPUT
21+
- id: release
22+
name: Create Release Version
23+
if: steps.commits.outputs.count > 0
24+
run: echo "version=$(date +'%Y.%-m.%-d')" >> $GITHUB_OUTPUT
25+
- id: sha
26+
name: Last Commit
27+
if: steps.commits.outputs.count > 0
28+
run: echo "sha=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT
29+
- id: timestamp
30+
name: Build Timestamp
31+
if: steps.commits.outputs.count > 0
32+
run: echo "iso8601=$(date --utc --iso-8601=seconds)" >> $GITHUB_OUTPUT
33+
- id: setup-java
34+
name: Set up Java
35+
if: steps.commits.outputs.count > 0
1536
uses: actions/setup-java@v3
1637
with:
1738
java-version: 17
39+
java-package: jdk
40+
architecture: x64
1841
distribution: temurin
1942
server-id: ossrh
2043
server-username: MAVEN_CENTRAL_USERNAME
2144
server-password: MAVEN_CENTRAL_TOKEN
22-
- uses: actions/cache@v3
45+
- id: cache
46+
name: Cache Dependencies
47+
if: steps.commits.outputs.count > 0
48+
uses: actions/cache@v3
2349
with:
2450
path: ~/.m2/repository
2551
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
2652
restore-keys: |
2753
${{ runner.os }}-maven-
28-
- name: Create release version
29-
id: release
30-
run: echo "::set-output name=version::$(date +'%Y.%-m.%-d')"
31-
- name: Count commits in last week
32-
id: commits
33-
run: echo "::set-output name=count::$(git rev-list --count HEAD --since='last Tuesday')"
34-
- name: Set release version
35-
run: mvn --batch-mode versions:set -DnewVersion=${{ steps.release.outputs.version }} -DgenerateBackupPoms=false
3654
- id: gpg
37-
if: steps.commits.outputs.count > 0
3855
name: GPG Key
39-
run: echo "${{ secrets.GPG_SECRET_KEY_BASE64 }}" | base64 --decode > $GITHUB_WORKSPACE/signing.key.asc
40-
- name: Publish to Maven Central
4156
if: steps.commits.outputs.count > 0
42-
run: mvn --batch-mode --activate-profiles release deploy -Dpgp.secretkey=keyfile:$GITHUB_WORKSPACE/signing.key.asc -Dpgp.passphrase=literal:${{ secrets.GPG_SECRET_KEY_PASSWORD }}
57+
uses: timheuer/[email protected]
58+
with:
59+
fileName: signing.key.asc
60+
fileDir: ${{ github.workspace}}
61+
encodedString: ${{ secrets.GPG_SECRET_KEY_BASE64 }}
62+
- id: pom-version
63+
name: Set Release Version
64+
if: steps.commits.outputs.count > 0
65+
run: mvn --batch-mode --define newVersion=${{ steps.release.outputs.version }} --define generateBackupPoms=false versions:set
66+
- id: deploy-maven
67+
name: Deploy Maven Artifact
68+
if: steps.commits.outputs.count > 0
69+
run: |
70+
mvn \
71+
--batch-mode \
72+
--activate-profiles release \
73+
--define scmTag=${{ steps.sha.outputs.sha }} \
74+
--define pgp.secretkey=keyfile:${{ steps.gpg.outputs.filePath }} \
75+
--define pgp.passphrase=literal:${{ secrets.GPG_SECRET_KEY_PASSWORD }} \
76+
--define project.build.outputTimestamp=${{ steps.timestamp.outputs.iso8601 }} \
77+
deploy
4378
env:
4479
MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }}
4580
MAVEN_CENTRAL_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }}
46-
- name: Create Release
81+
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"
82+
- id: create_release
83+
name: Create Release
4784
if: steps.commits.outputs.count > 0
48-
id: create_release
49-
uses: actions/[email protected]
50-
env:
51-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
85+
uses: softprops/action-gh-release@v1
5286
with:
5387
tag_name: ${{ steps.release.outputs.version }}
54-
release_name: ${{ steps.release.outputs.version }}
88+
name: ${{ steps.release.outputs.version }}
89+
token: ${{ secrets.GITHUB_TOKEN }}
5590
draft: false
5691
prerelease: false
57-
body: |
58-
Automated release, see [commits](https://github.com/metio/storage-units/commits/${{ steps.release.outputs.version }}) for changes.
92+
generate_release_notes: true
93+
- id: mail
94+
name: Send Mail
95+
if: steps.commits.outputs.count > 0
96+
uses: dawidd6/[email protected]
97+
with:
98+
server_address: ${{ secrets.MAIL_SERVER }}
99+
server_port: ${{ secrets.MAIL_PORT }}
100+
username: ${{ secrets.MAIL_USERNAME }}
101+
password: ${{ secrets.MAIL_PASSWORD }}
102+
subject: ${{ github.event.repository.name }} version ${{ steps.release.outputs.version }} published
103+
body: See ${{ steps.create_release.outputs.url }} for details.
104+
105+
from: ${{ secrets.MAIL_SENDER }}
106+
- id: matrix
107+
name: Send Matrix Message
108+
if: steps.commits.outputs.count > 0
109+
uses: s3krit/[email protected]
110+
with:
111+
room_id: ${{ secrets.MATRIX_ROOM_ID }}
112+
access_token: ${{ secrets.MATRIX_ACCESS_TOKEN }}
113+
message: ${{ github.event.repository.name }} version [${{ steps.release.outputs.version }}](${{ steps.create_release.outputs.url }}) published
114+
server: matrix.org

.github/workflows/update-parent.yml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,11 @@ jobs:
2525
${{ runner.os }}-maven-
2626
- name: Update Parent
2727
run: mvn --batch-mode versions:update-parent --define generateBackupPoms=false
28-
- name: Create Pull Request
28+
- id: cpr
29+
name: Create Pull Request
2930
uses: peter-evans/create-pull-request@v4
3031
with:
31-
token: ${{ secrets.GITHUB_TOKEN }}
32+
token: ${{ secrets.PAT }}
3233
commit-message: Update parent to latest version
3334
committer: GitHub <[email protected]>
3435
author: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com>
@@ -38,4 +39,13 @@ jobs:
3839
assignees: |
3940
sebhoss
4041
draft: false
42+
base: main
4143
branch: update-parent
44+
delete-branch: true
45+
- name: Enable Pull Request Automerge
46+
if: steps.cpr.outputs.pull-request-operation == 'created'
47+
uses: peter-evans/enable-pull-request-automerge@v2
48+
with:
49+
token: ${{ secrets.PAT }}
50+
pull-request-number: ${{ steps.cpr.outputs.pull-request-number }}
51+
merge-method: rebase

0 commit comments

Comments
 (0)