diff --git a/.github/workflows/publish-javadoc.yml b/.github/workflows/publish-javadoc.yml
index 644dfa5849..03275bbc32 100644
--- a/.github/workflows/publish-javadoc.yml
+++ b/.github/workflows/publish-javadoc.yml
@@ -7,18 +7,34 @@ on:
- master
- main
+permissions:
+ contents: read
+ pages: write
+ id-token: write
+
jobs:
publish:
runs-on: ubuntu-latest
+ environment:
+ name: github-pages
+ url: ${{ steps.deployment.outputs.page_url }}
steps:
- - name: Deploy JavaDoc 🚀
- uses: MathieuSoysal/Javadoc-publisher.yml@main
+ - name: Checkout
+ uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262
+ - name: Set up Java
+ uses: actions/setup-java@cf277c60eb25467037889841efdb72551f06f6c3
+ with:
+ distribution: temurin
+ java-version: '21'
+ cache: maven
+ - name: Build Javadoc
+ run: mvn -B -f AdvancedCore/pom.xml org.apache.maven.plugins:maven-javadoc-plugin:3.12.0:javadoc
+ - name: Configure Pages
+ uses: actions/configure-pages@983d7736d9b0ae728b81ab479565c72886d7745b
+ - name: Upload Pages artifact
+ uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa
with:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- javadoc-branch: gh-pages
- java-version: 21
- target-folder: ''
- project: maven # or gradle
- # subdirectories: moduleA moduleB #for subdirectories support, needs to be run with custom command
- custom-command: mvn -f AdvancedCore/pom.xml deploy -P javadoc javadoc:aggregate
- javadoc-source-folder: 'AdvancedCore/target/reports/apidocs'
+ path: AdvancedCore/target/reports/apidocs
+ - name: Deploy Pages
+ id: deployment
+ uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e
diff --git a/AdvancedCore/pom.xml b/AdvancedCore/pom.xml
index 0b4ec710e2..383ffe5bbe 100644
--- a/AdvancedCore/pom.xml
+++ b/AdvancedCore/pom.xml
@@ -208,7 +208,7 @@
com.bencodez
simpleapi
- 1.0.2-SNAPSHOT
+ 1.0.2-20260905.234759-10
compile
diff --git a/AdvancedCore/src/test/java/com/bencodez/advancedcore/build/BuildInputPinningTest.java b/AdvancedCore/src/test/java/com/bencodez/advancedcore/build/BuildInputPinningTest.java
new file mode 100644
index 0000000000..c2fc3069f1
--- /dev/null
+++ b/AdvancedCore/src/test/java/com/bencodez/advancedcore/build/BuildInputPinningTest.java
@@ -0,0 +1,38 @@
+package com.bencodez.advancedcore.build;
+
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+
+import org.junit.jupiter.api.Test;
+
+class BuildInputPinningTest {
+
+ @Test
+ void javadocPublisherUsesImmutableRevisionAndExplicitPermissions() throws IOException {
+ String workflow = Files.readString(Path.of("..", ".github", "workflows", "publish-javadoc.yml"));
+ String normalizedWorkflow = workflow.replace("\r\n", "\n");
+
+ assertFalse(workflow.contains("MathieuSoysal/Javadoc-publisher"));
+ assertTrue(workflow.matches("(?s).*actions/checkout@[0-9a-f]{40}.*"));
+ assertTrue(workflow.matches("(?s).*actions/setup-java@[0-9a-f]{40}.*"));
+ assertTrue(workflow.matches("(?s).*actions/deploy-pages@[0-9a-f]{40}.*"));
+ assertTrue(normalizedWorkflow.contains("permissions:\n contents: read\n pages: write\n id-token: write"));
+ assertTrue(workflow.contains("maven-javadoc-plugin:3.12.0:javadoc"));
+ assertFalse(workflow.contains("Javadoc-publisher.yml@main"));
+ }
+
+ @Test
+ void simpleApiDependencyUsesImmutableSnapshotBuild() throws IOException {
+ String pom = Files.readString(Path.of("pom.xml"));
+ int dependency = pom.indexOf("simpleapi");
+
+ assertTrue(dependency >= 0);
+ String declaration = pom.substring(dependency, Math.min(pom.length(), dependency + 200));
+ assertFalse(declaration.contains("SNAPSHOT"));
+ assertTrue(declaration.contains("1.0.2-20260905.234759-10"));
+ }
+}