|
name: Release |
|
|
|
on: |
|
# Trigger on GitHub UI release creation |
|
release: |
|
types: [published] |
|
# release-please creates tags/releases with GITHUB_TOKEN, which does not |
|
# trigger downstream workflows. release-please.yml dispatches this workflow |
|
# on the tag ref so release artifacts are built and uploaded. |
|
workflow_dispatch: |
|
inputs: |
|
release_tag: |
|
description: Existing tag to publish or repair. Empty uses the workflow ref. |
|
required: false |
|
type: string |
|
# Trigger on branch push for pre-releases |
|
push: |
|
branches: [connect] |
|
|
|
jobs: |
|
build: |
|
runs-on: ubuntu-latest |
|
permissions: |
|
contents: write |
|
steps: |
|
- uses: actions/checkout@v4 |
|
with: |
|
fetch-depth: 0 # Fetch all history for git describe |
|
ref: ${{ inputs.release_tag || github.ref }} |
|
|
|
- name: Set up JDK 17 |
|
uses: actions/setup-java@v4 |
|
with: |
|
distribution: 'temurin' |
|
java-version: '17' |
|
cache: 'gradle' |
|
|
|
- name: Setup Gradle |
|
uses: gradle/actions/setup-gradle@v3 |
|
|
|
- name: Build |
|
run: ./gradlew build |
|
|
|
- name: Get version |
|
id: version |
|
run: | |
|
VERSION=$(./gradlew properties -q | grep "^version:" | awk '{print $2}') |
|
echo "version=$VERSION" >> $GITHUB_OUTPUT |
|
echo "Building version: $VERSION" |
|
|
|
- name: Resolve release tag |
|
id: release-tag |
|
if: github.event_name == 'release' || github.event_name == 'workflow_dispatch' |
|
run: | |
|
TAG="${{ inputs.release_tag }}" |
|
if [ -z "$TAG" ]; then |
|
TAG="${{ github.event.release.tag_name }}" |
|
fi |
|
if [ -z "$TAG" ]; then |
|
TAG="${GITHUB_REF_NAME}" |
|
fi |
|
echo "tag=$TAG" >> "$GITHUB_OUTPUT" |
|
echo "Release tag: $TAG" |
|
|
|
# For release events: upload artifacts to the release |
|
- name: Upload Release Artifacts |
|
if: github.event_name == 'release' || github.event_name == 'workflow_dispatch' |
|
uses: softprops/action-gh-release@v2 |
|
with: |
|
tag_name: ${{ steps.release-tag.outputs.tag }} |
|
files: | |
|
spigot/build/libs/connect-spigot.jar |
|
velocity/build/libs/connect-velocity.jar |
|
bungee/build/libs/connect-bungee.jar |
|
LICENSE |
|
|
|
# Also update "latest" release with stable file names for download sites |
|
- name: Update Latest Release |
|
if: github.event_name == 'release' || github.event_name == 'workflow_dispatch' |
|
uses: softprops/action-gh-release@v2 |
|
with: |
|
tag_name: latest |
|
name: "Latest Release (${{ steps.release-tag.outputs.tag }})" |
|
prerelease: false |
|
files: | |
|
spigot/build/libs/connect-spigot.jar |
|
velocity/build/libs/connect-velocity.jar |
|
bungee/build/libs/connect-bungee.jar |
|
LICENSE |
|
body: | |
|
Latest stable release. |
|
|
|
**Version:** ${{ steps.release-tag.outputs.tag }} |
|
|
|
Download links (stable URLs): |
|
- [connect-spigot.jar](https://github.com/${{ github.repository }}/releases/download/latest/connect-spigot.jar) |
|
- [connect-velocity.jar](https://github.com/${{ github.repository }}/releases/download/latest/connect-velocity.jar) |
|
- [connect-bungee.jar](https://github.com/${{ github.repository }}/releases/download/latest/connect-bungee.jar) |
|
|
|
# For branch push: create/update pre-release |
|
- name: Prepare Pre-Release Artifacts |
|
if: github.event_name == 'push' |
|
run: | |
|
mkdir -p prerelease |
|
cp spigot/build/libs/connect-spigot.jar prerelease/connect-spigot-prerelease.jar |
|
cp velocity/build/libs/connect-velocity.jar prerelease/connect-velocity-prerelease.jar |
|
cp bungee/build/libs/connect-bungee.jar prerelease/connect-bungee-prerelease.jar |
|
|
|
- name: Update Pre-Release |
|
if: github.event_name == 'push' |
|
uses: softprops/action-gh-release@v2 |
|
with: |
|
tag_name: latest-prerelease |
|
name: "Latest Pre-Release (${{ steps.version.outputs.version }})" |
|
prerelease: true |
|
files: | |
|
prerelease/*.jar |
|
LICENSE |
|
body: | |
|
Automated pre-release build from `connect` branch. |
|
|
|
**Version:** ${{ steps.version.outputs.version }} |
|
**Commit:** ${{ github.sha }} |
|
|
|
⚠️ This is a development build and may be unstable. |