-
-
Notifications
You must be signed in to change notification settings - Fork 84
141 lines (109 loc) · 5.1 KB
/
buildrelease.yml
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# 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 }}"