-
Notifications
You must be signed in to change notification settings - Fork 22
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
214 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,213 @@ | ||
name: Build and Version Update | ||
|
||
on: | ||
push: | ||
branches: | ||
- main | ||
- merge | ||
- dev | ||
- fabric-experimental-gradle | ||
|
||
jobs: | ||
build: | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- name: Checkout main repository | ||
uses: actions/checkout@v2 | ||
|
||
- name: Set up JDK | ||
uses: actions/setup-java@v2 | ||
with: | ||
java-version: '21' | ||
distribution: 'adopt' | ||
|
||
- name: Setup Gradle | ||
uses: gradle/gradle-build-action@v2 | ||
with: | ||
gradle-version: 8.8 | ||
|
||
# Temporary workaround to packetevents bugs, use custom fork build | ||
- name: Checkout packetevents repository | ||
uses: actions/checkout@v3 | ||
with: | ||
repository: Axionize/packetevents | ||
ref: 2.0-fabric-serverside-fix | ||
path: packetevents | ||
|
||
- name: Update version in packetevents | ||
run: | | ||
cd packetevents | ||
sed -i 's/val fullVersion = ".*"/val fullVersion = "2.5.8"/' build.gradle.kts | ||
- name: Build packetevents with Gradle | ||
run: | | ||
cd packetevents | ||
gradle build | ||
- name: Publish packetevents to Maven Local | ||
run: | | ||
cd packetevents | ||
gradle publishToMavenLocal | ||
- name: Generate build number | ||
id: buildnumber | ||
uses: einaregilsson/build-number@v3 | ||
with: | ||
token: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: Update version in build.gradle.kts | ||
id: update_version | ||
run: | | ||
# Read current fullVersion from build.gradle.kts | ||
FULL_VERSION=$(grep 'val fullVersion =' build.gradle.kts | awk -F '"' '{print $2}') | ||
IFS='.' read -ra VERSION_PARTS <<< "$FULL_VERSION" | ||
PATCH=$((VERSION_PARTS[2] + 1)) | ||
NEW_VERSION="${VERSION_PARTS[0]}.${VERSION_PARTS[1]}.$PATCH-dev-axionize-b${{ steps.buildnumber.outputs.build_number }}" | ||
echo "NEW_VERSION=${NEW_VERSION}" >> $GITHUB_ENV | ||
# Update fullVersion in build.gradle | ||
sed -i "s/val fullVersion = \".*\"/val fullVersion = \"$NEW_VERSION\"/" build.gradle.kts | ||
# Ensure snapshot is set to false | ||
sed -i "s/val snapshot = .*/val snapshot = false/" build.gradle.kts | ||
- name: Build with Gradle | ||
run: gradle clean build | ||
|
||
- name: Rename shaded jar to overwrite non-shaded jar | ||
run: mv bukkit/build/libs/knockbacksync-bukkit-${{ env.NEW_VERSION }}-all.jar bukkit/build/libs/knockbacksync-bukkit-${{ env.NEW_VERSION }}.jar | ||
|
||
# Download PaperSpigot (Choose version for reproducibility | ||
- name: Download PaperSpigot | ||
run: | | ||
mkdir -p paper-server/plugins | ||
curl -o paperclip.jar https://api.papermc.io/v2/projects/paper/versions/1.21.1/builds/120/downloads/paper-1.21.1-120.jar | ||
mv paperclip.jar paper-server/ | ||
# Copy Plugin into Plugins Folder and Start Server | ||
- name: Copy Plugin and Start Paper Server | ||
run: | | ||
cp bukkit/build/libs/knockbacksync-bukkit-${{ env.NEW_VERSION }}.jar paper-server/plugins/ | ||
cd paper-server | ||
# Start the server to remap the plugin | ||
timeout 60 java -Xms3G -Xmx3G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -jar -Dcom.mojang.eula.agree=true paperclip.jar --nogui || true | ||
# Get the Hashes of the Original and Remapped JARs | ||
- name: Calculate Hashes | ||
run: | | ||
# Calculate hash for the original JAR | ||
ORIGINAL_HASH=$(sha256sum bukkit/build/libs/knockbacksync-bukkit-${{ env.NEW_VERSION }}.jar | awk '{print $1}') | ||
echo "ORIGINAL_HASH=$ORIGINAL_HASH" >> $GITHUB_ENV | ||
# Calculate hash for the remapped JAR | ||
REMAPPED_HASH=$(sha256sum paper-server/plugins/.paper-remapped/knockbacksync-bukkit-${{ env.NEW_VERSION }}.jar | awk '{print $1}') | ||
echo "REMAPPED_HASH=$REMAPPED_HASH" >> $GITHUB_ENV | ||
# Calculate hash for the remapped JAR | ||
FABRIC_HASH=$(sha256sum fabric/build/libs/knockbacksync-fabric-${{ env.NEW_VERSION }}.jar | awk '{print $1}') | ||
echo "FABRIC_HASH=$FABRIC_HASH" >> $GITHUB_ENV | ||
# Download, update, and re-upload dev-builds.txt | ||
- name: Update dev-builds.txt | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
run: | | ||
# Download the current dev-builds.txt | ||
curl -L -o dev-builds.txt https://github.com/Axionize/knockback-sync/releases/download/hashlist/dev-builds.txt | ||
# Ensure the file ends with a newline, then append new information | ||
sed -i -e '$a\' dev-builds.txt | ||
# echo "KnockBackSync-${{ env.NEW_VERSION }}.jar" >> dev-builds.txt | ||
echo "${{ env.ORIGINAL_HASH }}" >> dev-builds.txt | ||
# echo "KnockBackSync-${{ env.NEW_VERSION }}-remapped.jar" >> dev-builds.txt | ||
echo "${{ env.REMAPPED_HASH }}" >> dev-builds.txt | ||
echo "${{ env.FABRIC_HASH }}" >> dev-builds.txt | ||
# Get the release ID for the 'hashlist' release | ||
RELEASE_ID=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \ | ||
"https://api.github.com/repos/Axionize/knockback-sync/releases/tags/hashlist" | jq -r .id) | ||
# Delete the old dev-builds.txt asset | ||
ASSET_ID=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \ | ||
"https://api.github.com/repos/Axionize/knockback-sync/releases/$RELEASE_ID/assets" | \ | ||
jq -r '.[] | select(.name == "dev-builds.txt") | .id') | ||
if [ ! -z "$ASSET_ID" ]; then | ||
curl -X DELETE -H "Authorization: token $GITHUB_TOKEN" \ | ||
"https://api.github.com/repos/Axionize/knockback-sync/releases/assets/$ASSET_ID" | ||
fi | ||
# Upload the new dev-builds.txt | ||
curl -X POST -H "Authorization: token $GITHUB_TOKEN" \ | ||
-H "Content-Type: application/octet-stream" \ | ||
--data-binary @dev-builds.txt \ | ||
"https://uploads.github.com/repos/Axionize/knockback-sync/releases/$RELEASE_ID/assets?name=dev-builds.txt" | ||
- name: Create artifacts directory | ||
run: mkdir -p artifacts | ||
|
||
- name: Copy bukkit artifact | ||
run: cp bukkit/build/libs/knockbacksync-bukkit-${{ env.NEW_VERSION }}.jar artifacts/ | ||
|
||
- name: Copy fabric artifact | ||
run: cp fabric/build/libs/knockbacksync-fabric-${{ env.NEW_VERSION }}.jar artifacts/ | ||
|
||
- name: Zip the artifacts | ||
run: zip -r KnockbackSync-${{ env.NEW_VERSION }}.zip artifacts/* | ||
|
||
- name: Upload artifacts zip | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: KnockbackSync-${{ env.NEW_VERSION }}.zip | ||
path: KnockbackSync-${{ env.NEW_VERSION }}.zip | ||
retention-days: 90 | ||
|
||
- uses: Kir-Antipov/[email protected] | ||
with: | ||
modrinth-id: wGTbjSTq | ||
modrinth-featured: true | ||
modrinth-unfeature-mode: subset | ||
modrinth-token: ${{ secrets.MODRINTH_TOKEN }} | ||
|
||
files: | | ||
bukkit/build/libs/knockbacksync-bukkit-${{ env.NEW_VERSION }}.jar | ||
name: KnockbackSync-${{ env.NEW_VERSION }} | ||
version: ${{ env.NEW_VERSION }} | ||
version-type: beta | ||
|
||
loaders: | | ||
bukkit | ||
spigot | ||
paper | ||
folia | ||
game-versions: | | ||
>=1.18.2 | ||
retry-attempts: 2 | ||
retry-delay: 10000 | ||
fail-mode: fail | ||
|
||
- uses: Kir-Antipov/[email protected] | ||
with: | ||
modrinth-id: wGTbjSTq | ||
modrinth-featured: true | ||
modrinth-unfeature-mode: subset | ||
modrinth-token: ${{ secrets.MODRINTH_TOKEN }} | ||
|
||
files: | | ||
fabric/build/libs/knockbacksync-fabric-${{ env.NEW_VERSION }}.jar | ||
name: KnockbackSync-${{ env.NEW_VERSION }} | ||
version: ${{ env.NEW_VERSION }} | ||
version-type: beta | ||
|
||
loaders: | | ||
fabric | ||
game-versions: | | ||
>=1.21 | ||
retry-attempts: 2 | ||
retry-delay: 10000 | ||
fail-mode: fail |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters