deployment-tool: Add platform-specific deployments and flag to send disc notification

This commit is contained in:
Oliver
2025-06-27 19:55:00 +02:00
parent 462dc063f7
commit a5cf2af22e
3 changed files with 52 additions and 15 deletions

View File

@@ -27,22 +27,36 @@ jobs:
- name: Modify gradlew permissions
run: chmod +x ./gradlew
- name: Build FancyNpcs
- name: Build deployment tool
run: ./gradlew :tools:deployment:shadowJar
- name: Build FancyNpcs for Modrinth
env:
RELEASE_CHANNEL: 'snapshot'
RELEASE_PLATFORM: 'modrinth'
run: ./gradlew :plugins:fancynpcs:shadowJar
- name: Build deployment tool
run: ./gradlew :tools:deployment:shadowJar
- name: Deploy
- name: Deploy to Modrinth
env:
MODRINTH_API_KEY: ${{ secrets.MODRINTH_API_KEY }}
DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
run:
cd tools/deployment/build/libs &&
java -jar deployment.jar ../../../../plugins/fancynpcs/snapshot_deployment_config.json
java -jar deployment.jar modrinth ../../../../plugins/fancynpcs/snapshot_deployment_config.json true
# - name: Build FancyNpcs for Hangar
# env:
# RELEASE_CHANNEL: 'snapshot'
# RELEASE_PLATFORM: 'hangar'
# run: ./gradlew :plugins:fancynpcs:shadowJar
#
# - name: Deploy to Hangar
# env:
# HANGAR_API_KEY: "${{ secrets.HANGAR_API_KEY }}"
# DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
# run:
# cd tools/deployment/build/libs &&
# java -jar deployment.jar hangar ../../../../plugins/fancynpcs/snapshot_deployment_config.json true
- name: Publish to reposilite (snapshots)
run: ./gradlew :plugins:fancynpcs:fn-api:publishAllPublicationsToFancyinnovationsSnapshotsRepository

View File

@@ -1 +1 @@
2.6.0.276
2.6.0.277

View File

@@ -15,10 +15,32 @@ public class Main {
private static final Gson GSON = new Gson();
public static void main(String[] args) throws IOException {
String configFilePath = args[0];
if (args.length < 2) {
System.err.println("Usage: java -jar deployment.jar <platform> <config_file path> [send_notification]");
System.exit(1);
}
String platform = args[0];
String configFilePath = args[1];
String configData = Files.readString(Path.of(configFilePath));
Configuration configuration = GSON.fromJson(configData, Configuration.class);
boolean sendNotification = args.length > 2 && Boolean.parseBoolean(args[2]);
if (platform.equalsIgnoreCase("modrinth")) {
deployToModrinth(configuration);
}
if (sendNotification) {
sendDiscordNotification(configuration);
System.out.println("Deployment completed and notification sent.");
} else {
System.out.println("Deployment completed without sending notification.");
}
}
private static void deployToModrinth(Configuration configuration) {
String modrinthApiKey = System.getenv("MODRINTH_API_KEY");
ModrinthService modrinthService = new ModrinthService(modrinthApiKey);
try {
@@ -26,12 +48,14 @@ public class Main {
} catch (IOException e) {
e.printStackTrace();
}
}
private static void sendDiscordNotification(Configuration configuration) {
String discordWebhookUrl = System.getenv("DISCORD_WEBHOOK_URL");
if (discordWebhookUrl != null) {
DiscordWebhook.Data data = new DiscordWebhook.Data("Deployment completed", List.of(
new DiscordWebhook.Data.Embed(
"New version of "+configuration.projectName(),
"New version of " + configuration.projectName(),
"""
**Version:** %s
**Channel:** %s
@@ -42,7 +66,7 @@ public class Main {
configuration.channel(),
GitService.getCommitHash().substring(0, 7),
GitService.getCommitHash(),
"https://modrinth.com/plugin/"+configuration.projectName()+"/version/"+configuration.readVersion()),
"https://modrinth.com/plugin/" + configuration.projectName() + "/version/" + configuration.readVersion()),
0x00FF00
)
@@ -52,7 +76,6 @@ public class Main {
} else {
System.out.println("Discord webhook URL not set. Skipping notification.");
}
}
}