From a5cf2af22e34466e43ea4c37f4ebb58254ec643b Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 27 Jun 2025 19:55:00 +0200 Subject: [PATCH] deployment-tool: Add platform-specific deployments and flag to send disc notification --- .../workflows/deploy-snapshot-fancynpcs.yml | 26 ++++++++++--- plugins/fancynpcs/VERSION | 2 +- .../main/java/de/oliver/deployment/Main.java | 39 +++++++++++++++---- 3 files changed, 52 insertions(+), 15 deletions(-) diff --git a/.github/workflows/deploy-snapshot-fancynpcs.yml b/.github/workflows/deploy-snapshot-fancynpcs.yml index dc1d681a..db180c8f 100644 --- a/.github/workflows/deploy-snapshot-fancynpcs.yml +++ b/.github/workflows/deploy-snapshot-fancynpcs.yml @@ -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 \ No newline at end of file diff --git a/plugins/fancynpcs/VERSION b/plugins/fancynpcs/VERSION index 4c38acaa..f781f07e 100644 --- a/plugins/fancynpcs/VERSION +++ b/plugins/fancynpcs/VERSION @@ -1 +1 @@ -2.6.0.276 \ No newline at end of file +2.6.0.277 \ No newline at end of file diff --git a/tools/deployment/src/main/java/de/oliver/deployment/Main.java b/tools/deployment/src/main/java/de/oliver/deployment/Main.java index 19798a3f..71318f8b 100644 --- a/tools/deployment/src/main/java/de/oliver/deployment/Main.java +++ b/tools/deployment/src/main/java/de/oliver/deployment/Main.java @@ -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 [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,23 +48,25 @@ 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 **Commit:** [%s](https://github.com/FancyMcPlugins/fancyplugins/commit/%s) **Download:** %s """.formatted( - configuration.readVersion(), - configuration.channel(), - GitService.getCommitHash().substring(0, 7), - GitService.getCommitHash(), - "https://modrinth.com/plugin/"+configuration.projectName()+"/version/"+configuration.readVersion()), + configuration.readVersion(), + configuration.channel(), + GitService.getCommitHash().substring(0, 7), + GitService.getCommitHash(), + "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."); } - } }