Skip to content

RELEASE: 7.1.0

RELEASE: 7.1.0 #127

Workflow file for this run

name: Create GitHub Release after GitLab tag mirror
on:
push:
tags:
- '[0-9]+.[0-9]+.[0-9]+'
jobs:
preparations:
name: "Preparations"
runs-on: ubuntu-latest
# OUTPUTS
outputs:
version: ${{ steps.tag.outputs.tag }}
steps:
# GET THE LATEST CODE
- name: Checkout latest code
uses: actions/[email protected]
with:
fetch-depth: 0
# EXTRACT TAG FROM PUSH
- name: Get tag
id: tag
uses: tj-actions/[email protected]
- name: Use tag
run: echo ${{steps.tag.outputs.tag}}
jar-and-media:
name: "JAR and media"
needs: preparations
runs-on: ubuntu-latest
steps:
# GET THE LATEST CODE
- name: Checkout latest code
uses: actions/[email protected]
with:
fetch-depth: 0
# BUILD PROJECT AND PUBLISH
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: '21'
check-latest: true
- name: Set Permissions
run: |
chmod +x gradlew
- uses: gradle/actions/setup-gradle@v3
with:
gradle-version: wrapper
- uses: luangong/setup-install4j@v1
with:
version: '11.0'
license: ${{ secrets.INSTALL4J_LICENSE }}
- name: Remove install4j script
run: |
rm install4j_linux-x64_*.sh
- name: Build release
env:
GITHUB_ACTOR: ${{ secrets.GITHUB_ACTOR }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
./gradlew -Pversion="${{ needs.preparations.outputs.version }}" build --info --full-stacktrace -x :serverpackcreator-api:test -x :serverpackcreator-app:test
./gradlew -Pversion="${{ needs.preparations.outputs.version }}" media --info --full-stacktrace -x :serverpackcreator-api:test -x :serverpackcreator-app:test
- name: Rename JAR and Plugin
run: |
mv serverpackcreator-app/build/libs/serverpackcreator-app-${{ needs.preparations.outputs.version }}.jar serverpackcreator-app/build/libs/ServerPackCreator-${{ needs.preparations.outputs.version }}.jar
- name: Collect files
run: |
mkdir ${{ needs.preparations.outputs.version }}
cp serverpackcreator-api/build/libs/*.jar ${{ needs.preparations.outputs.version }}/
cp serverpackcreator-app/build/libs/*.jar ${{ needs.preparations.outputs.version }}/
cp serverpackcreator-plugin-example/build/libs/*.jar ${{ needs.preparations.outputs.version }}/
cp media/* ${{ needs.preparations.outputs.version }}/
rm -f ${{ needs.preparations.outputs.version }}/output.txt ${{ needs.preparations.outputs.version }}/*plain.jar
- name: Generate checksum
uses: jmgilman/actions-generate-checksum@v1
with:
patterns: |
${{ needs.preparations.outputs.version }}/*
- name: Collect checksum
run: |
cp checksum.txt ${{ needs.preparations.outputs.version }}/
# UPLOAD ARTIFACTS
- uses: actions/upload-artifact@v4
if: ${{ always() }}
with:
name: jar-media-build-artifacts
path: |
media
serverpackcreator-api/build
serverpackcreator-app/build
serverpackcreator-web-frontend/dist
serverpackcreator-plugin-example/build
if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn`
# UPLOAD ARTIFACTS
- uses: actions/upload-artifact@v4
if: ${{ always() }}
with:
name: jar-media-release
path: |
${{ needs.preparations.outputs.version }}
if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn`
release:
name: "Release"
if: ${{ always() }}
runs-on: ubuntu-latest
needs: [preparations, jar-and-media]
steps:
# GET THE LATEST CODE
- name: Checkout latest code
uses: actions/[email protected]
with:
fetch-depth: 0
# GET RELEASE INFO
- name: Get Release Info
run: |
curl --header \
'PRIVATE-TOKEN: ${{ secrets.GITLAB_TOKEN }}' \
'https://git.griefed.de/api/v4/projects/63/releases/${{ needs.preparations.outputs.version }}' >> version.json
# GET DESCRIPTION
- name: Extract version changelog
uses: sergeysova/[email protected]
id: description
with:
cmd: "jq .description version.json -r | sed -e 's/\\n/\\n/g' > description.txt"
multiline: true
- name: General Info
id: info
uses: jaywcjlove/[email protected]
with:
path: misc/INFO.md
- name: Dafuq # Otherwise we wouldn't be able to work with the file. Because reasons...
run: sudo chown $USER description.txt
- name: Check length and truncate if needed
run: |
if [[ $(wc -c description.txt | awk '{print $1}') -ge 9500 ]]; then
truncate -s 9500 description.txt
printf "\n\n............\n\nRelease notes truncated. For more details, see the [CHANGELOG](https://github.com/Griefed/ServerPackCreator/blob/${{ needs.preparations.outputs.version }}/CHANGELOG.md).\n\n" >> description.txt
fi
- uses: actions/download-artifact@v4
with:
name: jar-media-release
path: ${{ needs.preparations.outputs.version }}
- name: Append Info
uses: DamianReeves/[email protected]
with:
path: description.txt
write-mode: append
contents: |
${{ steps.preinfo.outputs.content }}
${{ steps.info.outputs.content }}
# GENERATE RELEASE
- name: Create Release
id: create_release
uses: softprops/[email protected]
with:
token: ${{ secrets.GITHUB_TOKEN }}
tag_name: ${{ needs.preparations.outputs.version }}
name: Release ${{ needs.preparations.outputs.version }}
body_path: description.txt
draft: false
prerelease: false
fail_on_unmatched_files: false
files: |
${{ needs.preparations.outputs.version }}/*
- name: Get source archives
run: |
wget -O ${{ needs.preparations.outputs.version }}/source.zip https://github.com/Griefed/ServerPackCreator/archive/refs/tags/${{ needs.preparations.outputs.version }}.zip
wget -O ${{ needs.preparations.outputs.version }}/source.tar.gz https://github.com/Griefed/ServerPackCreator/archive/refs/tags/${{ needs.preparations.outputs.version }}.tar.gz
- name: Upload release to version-dir
uses: nogsantos/scp-deploy@master
with:
src: ./${{ needs.preparations.outputs.version }}
host: ${{ secrets.SPCUPLOAD_HOST }}
remote: "${{ secrets.SPCUPLOAD_TARGET }}"
user: ${{ secrets.SPCUPLOAD_USERNAME }}
key: ${{ secrets.SPCUPLOAD_KEY }}
- name: Cleanup latest
id: action-ssh
uses: tiyee/[email protected]
with:
host: ${{ secrets.SPCUPLOAD_HOST }}
username: ${{ secrets.SPCUPLOAD_USERNAME }}
privateKey: ${{ secrets.SPCUPLOAD_KEY }}
command: 'rm -f ${{ secrets.SPCUPLOAD_TARGET }}/latest/*'
- name: Upload release to latest-dir
uses: nogsantos/scp-deploy@master
with:
src: ./${{ needs.preparations.outputs.version }}/*
host: ${{ secrets.SPCUPLOAD_HOST }}
remote: "${{ secrets.SPCUPLOAD_TARGET }}/latest"
user: ${{ secrets.SPCUPLOAD_USERNAME }}
key: ${{ secrets.SPCUPLOAD_KEY }}
news:
name: "News on Discord"
runs-on: ubuntu-latest
needs: [preparations, release]
steps:
- name: Get current date
id: date
run: echo "::set-output name=today::$(date +'%Y-%m-%dT%H:%M:%S')"
- name: Post WebHook Message
run: |
curl -L --output ./discord.sh https://raw.githubusercontent.com/ChaoticWeg/discord.sh/master/discord.sh
chmod a+x ./discord.sh
./discord.sh \
--webhook-url="${{ secrets.WEBHOOK_URL }}" \
--username "$GITHUB_REPOSITORY" \
--avatar "https://i.griefed.de/images/2020/11/18/Prosper_Docker_300x300.png" \
--text "There's been a new release for $GITHUB_REPOSITORY. The new version is ${{ needs.preparations.outputs.version }} and is available at <$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/releases/tag/${{ needs.preparations.outputs.version }}>" \
--title "New $GITHUB_REPOSITORY Release" \
--description "There's been a new release for $GITHUB_REPOSITORY. The new version is ${{ needs.preparations.outputs.version }} and is available at $GITHUB_SERVER_URL/$GITHUB_REPOSITORY/releases/tag/${{ needs.preparations.outputs.version }}" \
--color "0xC0FFEE" \
--url "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/releases/tag/${{ needs.preparations.outputs.version }}" \
--author "Griefed" \
--author-url "$GITHUB_SERVER_URL/Griefed" \
--author-icon "https://i.griefed.de/images/2022/01/21/sam_1500x1500.th.jpg" \
--thumbnail "https://i.griefed.de/images/2021/05/08/app.png" \
--field "Author;[Griefed]($GITHUB_SERVER_URL/Griefed)" \
--field "Platform;[GitHub]($GITHUB_SERVER_URL)" \
--footer "Released at ${{ steps.date.outputs.today }}" \
--footer-icon "https://i.griefed.de/images/2022/01/21/start_generation.png"
pages:
name: "GitHub Pages"
runs-on: ubuntu-latest
steps:
- name: Checkout latest code
uses: actions/checkout@master
with:
fetch-depth: 0
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: '21'
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build documentation
run: ./gradlew :serverpackcreator-api:dokkaHtml -Pversion="${{ needs.preparations.outputs.version }}" --full-stacktrace --info -x test
- uses: actions/upload-artifact@v3
with:
name: build-artifacts
path: serverpackcreator-api/build/dokka/
if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn`
# DEPLOY TO GH-PAGES
- name: Deploy to GitHub-Pages
uses: JamesIves/[email protected]
with:
branch: gh-pages
folder: serverpackcreator-api/build/dokka