Skip to content

Release 1.15.0

Release 1.15.0 #28

Workflow file for this run

# This is a basic workflow to help you get started with Actions
name: Build Release
# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
release:
types: [created]
workflow_dispatch:
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
distribution: 'microsoft'
java-version: '17'
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with Gradle
run: ./gradlew build
- uses: actions/upload-artifact@v3
with:
name: Artifacts
path: build/libs/
- name: Read Changelog
id: read_changelog
shell: bash
run: |
CHANGELOG=$(sed '/___/Q' CHANGELOG.md)
CHANGELOG=$(echo "$CHANGELOG" | sed 1d)
CHANGELOGtmp="${CHANGELOG//'%'/'%25'}"
CHANGELOGtmp="${CHANGELOGtmp//$'\n'/'%0A'}"
CHANGELOGtmp="${CHANGELOGtmp//$'\r'/'%0D'}"
echo "::set-output name=changelog::$CHANGELOGtmp"
echo "Changelog:\n$CHANGELOG"
changelog="${CHANGELOG}"
# Because of the 2000 char limit in Discord shorten the changelog
# Calculate the number of characters to delete
delete_chars=$((${#changelog} + 350 - 2000 - 15))
# Check if delete_chars is greater than 0
if [ $delete_chars -gt 0 ]; then
# Extract the "What's Changed" section from the changelog
changed_section=$(echo "$changelog" | awk '/## What'\''s Changed/{flag=1;next}/^$/{flag=0}flag')
# Trim the changed_section based on the delete_chars value and remove the last line
modified_section="${changed_section::-delete_chars}"
modified_section=$(echo "$modified_section" | sed '$d')
# Add "[...] and more" at the end of modified_section
modified_section+="\n[...] and more"
# Format modified_section with printf
modified_section=$(printf "%s" "$modified_section")
# Generate the modified_changelog by inserting modified_section after the "What's Changed" section
modified_changelog=$(awk -v modified_section="$modified_section" '
/^## What'\''s Changed/ { print; print modified_section; f=1; next }
f && /^$/ { f=0 }
!f { print }
END { if (f) print "" }
' ORS='\n' <<< "$changelog")
# Format the modified_changelog by removing "@" characters and enclosing URLs in "<>"
# modified_changelog=$(echo "$modified_changelog" | sed -e 's/@//g' -e 's|https\?://[^[:space:]]*|<\0>|g')
# Store the modified_changelog in the CHANGELOG variable
CHANGELOG=$(echo -n "$modified_changelog")
fi
CHANGELOG="${CHANGELOG//'%'/'%25'}"
CHANGELOG="${CHANGELOG//$'\n'/'%0A'}"
CHANGELOG="${CHANGELOG//$'\r'/'%0D'}"
echo "::set-output name=changelog_discord::$CHANGELOG"
- uses: actions/github-script@v6
id: fname
with:
result-encoding: string
script: |
const fs = require("fs")
return fs.readdirSync("build/libs/").filter(e => !e.endsWith("dev.jar") && !e.endsWith("sources.jar") && e.endsWith(".jar"))[0]
- name: Release
id: uploadrelease
uses: softprops/action-gh-release@v1
with:
body: ${{ steps.read_changelog.outputs.changelog }}
token: ${{ secrets.GH_RELEASE }}
files: build/libs/${{ steps.fname.outputs.result }}
- name: Publish to Modrinth
id: modrinth
env:
MODRINTH_TOKEN: ${{ secrets.MODRINTH_TOKEN }}
CHANGELOG: ${{ steps.read_changelog.outputs.changelog }}
run: ./gradlew modrinth
- name: Get version tag
id: version_tag
run: |
[[ ! "$GITHUB_REF" =~ refs/tags ]] && exit
echo "::set-output name=value::${GITHUB_REF#refs/tags/}"
- name: Discord notification
shell: bash
run: |
OUTPUT="
<@&1134565945482948638>
## Skyblocker ${{ steps.version_tag.outputs.value }}
${{ steps.read_changelog.outputs.changelog_discord }}
:inbox_tray: Download latest version on Modrinth or Github:
<:modrinth:900697862206287882> ${{ steps.modrinth.outputs.url }}
<:github:900697885706952725> ${{ steps.uploadrelease.outputs.url }}
https://hysky.de/"
curl -H "Content-Type: application/json" -d '{"content":"'"${OUTPUT//$'\n'/\\n}"'", "flags": 4}' "${{ secrets.DISCORD_WEBHOOK }}"