-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrelease.sh
executable file
·55 lines (41 loc) · 1.63 KB
/
release.sh
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
#!/bin/bash
set -euo pipefail
IFS=$'\n\t'
function log() {
purple="\033[0;35m"
bold=$(tput bold)
normal=$(tput sgr0)
echo -e "${purple}${bold}>>> ${1}${normal}"
}
current_version=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout)
log "Current version: ${current_version}"
next_version=$(echo "${current_version}" | sed 's/-SNAPSHOT//g')
log "Next version: ${next_version}"
log "Updating README.md"
sed -i '' "s/<version>.*<\/version>/<version>${next_version}<\/version>/" README.md
gradle_prefix='testImplementation "com.mikemybytes:junit5-formatted-source:'
sed -i '' "s/testImplementation.*junit5-formatted-source:.*/${gradle_prefix}${next_version}\"/" README.md
git add README.md
git commit -m "docs: [release] Update artifact coordinates (new version ${next_version})"
log "Building with Maven"
./mvnw clean verify
log "Preparing Maven release"
./mvnw --batch-mode release:clean release:prepare
released_version=$(git describe --abbrev=0 --tags)
log "Released version: ${released_version}"
log "Cleaning up after Maven release"
./mvnw --batch-mode release:clean
log "Pushing to git"
git push origin main
git push origin "${released_version}"
log "Checking out released sourced"
git checkout --quiet "${released_version}"
log "Staging artifacts"
# ensure all artifacts are staged
# https://jreleaser.org/guide/latest/examples/maven/staging-artifacts.html
./mvnw deploy -DaltDeploymentRepository=local::file:./target/staging-deploy
log "Invoking jreleaser"
./mvnw -pl :junit5-formatted-source-parent jreleaser:full-release
log "Checking out main"
git checkout main
log "Successfully released version ${released_version}"