Skip to content

Commit 3ba1d32

Browse files
authored
Merge pull request #651 from Multiverse/release_v2
GHA release workflow v2
2 parents 4bb2648 + 80087b5 commit 3ba1d32

File tree

5 files changed

+122
-5
lines changed

5 files changed

+122
-5
lines changed

.github/labeler.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
prerelease:
2+
- '*'

.github/workflows/pr_labeler.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
name: "Pull Request Labeler"
2+
3+
on:
4+
pull_request_target:
5+
types: [opened]
6+
branches: [main]
7+
8+
jobs:
9+
prerelease_labeler:
10+
permissions:
11+
contents: read
12+
pull-requests: write
13+
runs-on: ubuntu-latest
14+
steps:
15+
- uses: actions/labeler@v4
16+
with:
17+
repo-token: "${{ secrets.GITHUB_TOKEN }}"
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
name: Manually promote last prerelease to release
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
version:
7+
description: 'Version to promote'
8+
required: true
9+
version-bump:
10+
description: 'Version bump to apply - should usually match the version bump used for the prerelease since last release'
11+
required: true
12+
type: choice
13+
options:
14+
- 'patch'
15+
- 'minor'
16+
- 'major'
17+
18+
jobs:
19+
manually_promote_release:
20+
runs-on: ubuntu-latest
21+
steps:
22+
- name: Verify input version is prerelease
23+
run: |
24+
if [[ "${{ github.event.inputs.version }}" != *"pre"* ]]; then
25+
echo "Version must be a prerelease"
26+
exit 1
27+
fi
28+
- name: Get release info
29+
id: get-release
30+
uses: cardinalby/git-get-release-action@v1
31+
env:
32+
GITHUB_TOKEN: ${{ github.token }}
33+
with:
34+
tag: ${{ github.event.inputs.version }}
35+
36+
- uses: actions/checkout@v3
37+
with:
38+
ref: ${{ steps.get-release.outputs.tag_name }}
39+
40+
- uses: actions/setup-java@v3
41+
with:
42+
java-version: '11'
43+
distribution: 'adopt'
44+
cache: gradle
45+
46+
- name: Validate Gradle wrapper
47+
uses: gradle/wrapper-validation-action@v1
48+
49+
- name: Remove prerelease tag
50+
run: |
51+
echo "Removing prerelease tag from version"
52+
echo "VERSION=$(echo ${{ steps.get-release.outputs.tag_name }} | sed -E 's/-pre.*//')" >> $GITHUB_ENV
53+
- name: Build
54+
uses: gradle/gradle-build-action@v2
55+
with:
56+
arguments: clean build -x test -x checkstyleMain -x checkstyleTest
57+
env:
58+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
59+
GITHUB_VERSION: ${{ env.VERSION }}
60+
61+
- name: Create release
62+
id: release
63+
uses: Multiverse/release-on-push-action@skip_prs
64+
env:
65+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
66+
with:
67+
bump_version_scheme: ${{ github.event.inputs.version-bump }}
68+
tag_prefix: ''
69+
release_name: "<RELEASE_VERSION>"
70+
use_github_release_notes: true
71+
ref: ${{ steps.get-release.outputs.target_commitish }}
72+
skip_prs: true
73+
74+
- name: Publish package
75+
uses: gradle/gradle-build-action@v2
76+
with:
77+
arguments: publish
78+
env:
79+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
80+
GITHUB_VERSION: ${{ env.VERSION }}
81+
82+
- name: Upload release artifact
83+
uses: svenstaro/upload-release-action@v2
84+
with:
85+
repo_token: ${{ secrets.GITHUB_TOKEN }}
86+
file: build/libs/multiverse-portals-${{ env.VERSION }}.jar
87+
asset_name: multiverse-portals-${{ steps.release.outputs.tag_name }}.jar
88+
tag: ${{ steps.release.outputs.tag_name }}

.github/workflows/release.yml

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,27 +28,37 @@ jobs:
2828

2929
- name: Create release
3030
id: release
31-
uses: rymndhng/release-on-push-action@v0.27.0
31+
uses: Multiverse/release-on-push-action@support_prerelease
3232
env:
3333
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
3434
with:
3535
bump_version_scheme: norelease
3636
tag_prefix: ''
37-
release_name: "Release <RELEASE_VERSION>"
37+
release_name: "<RELEASE_VERSION>"
3838
use_github_release_notes: true
3939

40+
- name: Modify version scheme
41+
run: |
42+
if [[ "${{ steps.release.outputs.tag_name }}" == *"pre"* ]]; then
43+
echo "Replacing prerelease version scheme with SNAPSHOT"
44+
echo "VERSION=$(echo ${{ steps.release.outputs.tag_name }} | sed -E 's/-pre.*/-SNAPSHOT/')" >> $GITHUB_ENV
45+
else
46+
echo "Using release version scheme"
47+
echo "VERSION=${{ steps.release.outputs.tag_name }}" >> $GITHUB_ENV
48+
fi
49+
4050
- name: Publish package
4151
uses: gradle/gradle-build-action@v2
4252
with:
4353
arguments: publish
4454
env:
45-
GITHUB_VERSION: ${{ steps.release.outputs.tag_name }}
55+
GITHUB_VERSION: ${{ env.VERSION }}
4656
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
4757

4858
- name: Upload release artifact
4959
uses: svenstaro/upload-release-action@v2
5060
with:
5161
repo_token: ${{ secrets.GITHUB_TOKEN }}
52-
file: build/libs/multiverse-portals-${{ steps.release.outputs.tag_name }}.jar
62+
file: build/libs/multiverse-portals-${{ env.VERSION }}.jar
5363
asset_name: multiverse-portals-${{ steps.release.outputs.tag_name }}.jar
5464
tag: ${{ steps.release.outputs.tag_name }}

.github/workflows/require_label.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,4 @@ jobs:
1515
with:
1616
mode: exactly
1717
count: 1
18-
labels: "release:major, release:minor, release:patch, no release"
18+
labels: "release:major, release:minor, release:patch, no version bump"

0 commit comments

Comments
 (0)