Skip to content

Commit 97e0990

Browse files
committed
build: Publish Javadoc properly
1 parent a8ca4dc commit 97e0990

File tree

3 files changed

+92
-58
lines changed

3 files changed

+92
-58
lines changed

.github/workflows/ci.yaml

Lines changed: 65 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ on:
1010
release:
1111
types: [released]
1212

13+
env:
14+
PROJECT_NAME: math
15+
1316
jobs:
1417
build:
1518
# Only run on PRs if the source branch is on someone else's repo
@@ -20,63 +23,67 @@ jobs:
2023
matrix:
2124
os: [ubuntu-latest, windows-latest]
2225
steps:
23-
# Setup
24-
- name: Check out
25-
uses: actions/checkout@v2
26-
- name: Setup JDK 11
27-
uses: actions/setup-java@v2
28-
with:
29-
distribution: adopt
30-
java-version: 11
31-
- name: Validate Gradle wrapper
32-
uses: gradle/wrapper-validation-action@v1
26+
# Setup
27+
- name: Check out
28+
uses: actions/checkout@v2
29+
with:
30+
ssh-key: ${{ secrets.SPONGE_JD_DEPLOY_KEY }}
31+
- name: Setup JDK 11
32+
uses: actions/setup-java@v2
33+
with:
34+
distribution: adopt
35+
java-version: 11
36+
- name: Validate Gradle wrapper
37+
uses: gradle/wrapper-validation-action@v1
3338

34-
# Actually build
35-
- name: Build with Gradle
36-
run: ./gradlew build
37-
- name: Archive test results
38-
if: "${{ always() }}"
39-
uses: actions/upload-artifact@v2
40-
with:
41-
name: "test-results-${{ matrix.os }}"
42-
path: |
43-
build/reports/
44-
*/build/reports/
39+
# Actually build
40+
- name: Build with Gradle
41+
run: ./gradlew build
42+
- name: Archive test results
43+
if: "${{ always() }}"
44+
uses: actions/upload-artifact@v2
45+
with:
46+
name: test-results
47+
path: |
48+
build/reports/
49+
*/build/reports/
4550
46-
# Then publish if we are all set up to do so
47-
- name: Determine status
48-
if: "${{ runner.os == 'Linux' }}"
49-
run: |
50-
if [ "$(./gradlew properties | awk '/^version:/ { print $2; }' | grep '\-SNAPSHOT')" ]; then
51-
echo "STATUS=snapshot" >> $GITHUB_ENV
52-
else
53-
echo "STATUS=release" >> $GITHUB_ENV
54-
fi
55-
- name: Publish with Gradle (snapshot)
56-
if: "${{ runner.os == 'Linux' && env.STATUS != 'release' && github.event_name == 'push' && github.ref == 'refs/heads/master' }}"
57-
run: ./gradlew -PforceSign=true publish
58-
env:
59-
ORG_GRADLE_PROJECT_githubPackagesUsername: "${{ github.actor }}"
60-
ORG_GRADLE_PROJECT_githubPackagesPassword: "${{ secrets.GITHUB_TOKEN }}"
61-
ORG_GRADLE_PROJECT_spongeSnapshotRepo: "${{ secrets.SPONGE_MAVEN_SNAPSHOT_REPO_URL }}"
62-
ORG_GRADLE_PROJECT_spongeReleaseRepo: "${{ secrets.SPONGE_MAVEN_RELEASE_REPO_URL }}"
63-
ORG_GRADLE_PROJECT_spongeUsername: "${{ secrets.SPONGE_MAVEN_REPO_USER }}"
64-
ORG_GRADLE_PROJECT_spongePassword: "${{ secrets.SPONGE_MAVEN_REPO_PASSWORD }}"
65-
ORG_GRADLE_PROJECT_sonatypeUsername: "${{ secrets.SPONGE_MAVEN_OSSRH_USER }}"
66-
ORG_GRADLE_PROJECT_sonatypePassword: "${{ secrets.SPONGE_MAVEN_OSSRH_PASSWORD }}"
67-
ORG_GRADLE_PROJECT_spongeSigningKey: "${{ secrets.SPONGE_SIGNING_KEY }}"
68-
ORG_GRADLE_PROJECT_spongeSigningPassword: "${{ secrets.SPONGE_SIGNING_PASSWORD }}"
69-
- name: Publish with Gradle (release)
70-
if: "${{ runner.os == 'Linux' && env.STATUS == 'release' && github.event_name == 'release' }}"
71-
run: ./gradlew publish closeSonatypeStagingRepository
72-
env:
73-
ORG_GRADLE_PROJECT_githubPackagesUsername: "${{ github.actor }}"
74-
ORG_GRADLE_PROJECT_githubPackagesPassword: "${{ secrets.GITHUB_TOKEN }}"
75-
ORG_GRADLE_PROJECT_spongeSnapshotRepo: "${{ secrets.SPONGE_MAVEN_SNAPSHOT_REPO_URL }}"
76-
ORG_GRADLE_PROJECT_spongeReleaseRepo: "${{ secrets.SPONGE_MAVEN_RELEASE_REPO_URL }}"
77-
ORG_GRADLE_PROJECT_spongeUsername: "${{ secrets.SPONGE_MAVEN_REPO_USER }}"
78-
ORG_GRADLE_PROJECT_spongePassword: "${{ secrets.SPONGE_MAVEN_REPO_PASSWORD }}"
79-
ORG_GRADLE_PROJECT_sonatypeUsername: "${{ secrets.SPONGE_MAVEN_OSSRH_USER }}"
80-
ORG_GRADLE_PROJECT_sonatypePassword: "${{ secrets.SPONGE_MAVEN_OSSRH_PASSWORD }}"
81-
ORG_GRADLE_PROJECT_spongeSigningKey: "${{ secrets.SPONGE_SIGNING_KEY }}"
82-
ORG_GRADLE_PROJECT_spongeSigningPassword: "${{ secrets.SPONGE_SIGNING_PASSWORD }}"
51+
# Then publish if we are all set up to do so
52+
- name: Determine status
53+
if: "${{ runner.os == 'Linux' }}"
54+
run: |
55+
VERSION=$(./gradlew :properties | awk '/^version:/ { print $2; }')
56+
if [ "$(echo $VERSION | grep '\-SNAPSHOT')" ]; then
57+
echo "STATUS=snapshot" >> $GITHUB_ENV
58+
else
59+
echo "STATUS=release" >> $GITHUB_ENV
60+
fi
61+
echo "PROJECT_VERSION=$VERSION" >> $GITHUB_ENV
62+
- name: Publish with Gradle
63+
if: "${{ runner.os == 'Linux' && ((env.STATUS != 'release' && github.event_name == 'push' && github.ref == 'refs/heads/master') || (env.STATUS == 'release' && github.event_name == 'release')) }}"
64+
run: ./gradlew -PforceSign=true publish
65+
env:
66+
ORG_GRADLE_PROJECT_githubPackagesUsername: "${{ github.actor }}"
67+
ORG_GRADLE_PROJECT_githubPackagesPassword: "${{ secrets.GITHUB_TOKEN }}"
68+
ORG_GRADLE_PROJECT_spongeSnapshotRepo: "${{ secrets.SPONGE_MAVEN_SNAPSHOT_REPO_URL }}"
69+
ORG_GRADLE_PROJECT_spongeReleaseRepo: "${{ secrets.SPONGE_MAVEN_RELEASE_REPO_URL }}"
70+
ORG_GRADLE_PROJECT_spongeUsername: "${{ secrets.SPONGE_MAVEN_REPO_USER }}"
71+
ORG_GRADLE_PROJECT_spongePassword: "${{ secrets.SPONGE_MAVEN_REPO_PASSWORD }}"
72+
ORG_GRADLE_PROJECT_sonatypeUsername: "${{ secrets.SPONGE_MAVEN_OSSRH_USER }}"
73+
ORG_GRADLE_PROJECT_sonatypePassword: "${{ secrets.SPONGE_MAVEN_OSSRH_PASSWORD }}"
74+
ORG_GRADLE_PROJECT_spongeSigningKey: "${{ secrets.SPONGE_SIGNING_KEY }}"
75+
ORG_GRADLE_PROJECT_spongeSigningPassword: "${{ secrets.SPONGE_SIGNING_PASSWORD }}"
76+
- name: Publish Javadoc
77+
if: "${{ runner.os == 'Linux' && ((env.STATUS != 'release' && github.event_name == 'push' && github.ref == 'refs/heads/master') || (env.STATUS == 'release' && github.event_name == 'release')) }}"
78+
run: |
79+
git clone git@github.com:SpongePowered/APIJavadocs.git publish-jd -b data -c core.sshCommand="$(git config --local --get core.sshCommand)" -c user.name=Spongie -c user.email="staff@spongepowered.org"
80+
cd publish-jd
81+
DESTDIR="$PROJECT_NAME/$PROJECT_VERSION"
82+
rm -rf $DESTDIR
83+
mkdir -p $DESTDIR
84+
cp -R ../build/docs/javadoc/* $DESTDIR
85+
git add .
86+
git commit -m "Publishing javadoc for $PROJECT_NAME $PROJECT_VERSION"
87+
git push origin
88+
cd ..
89+
rm -rf publish-jd

build.gradle

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import org.gradle.external.javadoc.StandardJavadocDocletOptions
2+
13
import java.io.StringWriter
24
import java.util.stream.Collectors
35

@@ -119,6 +121,25 @@ tasks.withType(JavaCompile.class) {
119121
options.compilerArgs << "-Xlint:-cast" // skip cast warnings, the generated source is most likely just overly safe.
120122
}
121123

124+
// Handle JD publishing with modules
125+
javadoc {
126+
source("src/main/java9")
127+
options {
128+
addStringOption("-patch-module", "org.spongepowered.math=${sourceSets.main.allJava.srcDirs.collect { it.absolutePath }.join(File.pathSeparator)}")
129+
}
130+
}
131+
132+
afterEvaluate {
133+
javadoc {
134+
classpath += sourceSets.java9.output
135+
136+
options {
137+
addStringOption("-release", "9")
138+
addBooleanOption("-no-module-directories", false)
139+
}
140+
}
141+
}
142+
122143
// -- Publishing -- //
123144
indra {
124145
javaVersions {

src/main/java9/module-info.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,15 @@
2323
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
2424
* THE SOFTWARE.
2525
*/
26+
/**
27+
* Immutable math library for Java with a focus on games and computer graphics.
28+
*/
2629
module org.spongepowered.math {
2730
exports org.spongepowered.math;
2831
exports org.spongepowered.math.imaginary;
2932
exports org.spongepowered.math.matrix;
3033
exports org.spongepowered.math.vector;
34+
35+
requires static transitive com.google.errorprone.annotations;
36+
requires java.desktop; // java.awt.Color
3137
}

0 commit comments

Comments
 (0)