Skip to content

Commit 7365f32

Browse files
authored
Migrate Maven Central deployment (#67)
1 parent 94b321e commit 7365f32

14 files changed

Lines changed: 246 additions & 127 deletions

.github/workflows/codeql-analysis.yml

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,33 +12,36 @@ jobs:
1212
analyze:
1313
name: Analyze
1414
runs-on: ubuntu-latest
15-
15+
permissions:
16+
contents: read
17+
security-events: write
1618
strategy:
1719
fail-fast: false
1820
matrix:
1921
language: ['java']
2022

2123
steps:
2224
- name: Checkout repository
23-
uses: actions/checkout@v5
25+
uses: actions/checkout@v6
2426
with:
2527
fetch-depth: 2
28+
persist-credentials: false
2629

2730
- uses: actions/setup-java@v5
2831
with:
2932
distribution: 'adopt'
30-
java-version: 11
33+
java-version: 17
3134

3235
- name: Setup Gradle
33-
uses: gradle/actions/setup-gradle@v4
36+
uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92 # v6.2.0
3437

3538
- name: Initialize CodeQL
36-
uses: github/codeql-action/init@v3
39+
uses: github/codeql-action/init@v4
3740
with:
3841
languages: ${{ matrix.language }}
3942

4043
- name: Autobuild
41-
uses: github/codeql-action/autobuild@v3
44+
uses: github/codeql-action/autobuild@v4
4245

4346
- name: Perform CodeQL Analysis
44-
uses: github/codeql-action/analyze@v3
47+
uses: github/codeql-action/analyze@v4

.github/workflows/dependency-submission.yml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,20 @@ on:
55
push:
66
branches: [ main ]
77

8-
permissions:
9-
contents: write # Required for dependency submission
10-
118
jobs:
129
dependency-submission:
10+
permissions:
11+
contents: write # Required for dependency submission
1312
runs-on: ubuntu-latest
1413
steps:
1514
- name: Checkout sources
16-
uses: actions/checkout@v5
15+
uses: actions/checkout@v6
16+
with:
17+
persist-credentials: false
1718
- name: Setup Java
1819
uses: actions/setup-java@v5
1920
with:
2021
distribution: 'temurin'
2122
java-version: 17
2223
- name: Generate and submit dependency graph
23-
uses: gradle/actions/dependency-submission@v4
24+
uses: gradle/actions/dependency-submission@3f131e8634966bd73d06cc69884922b02e6faf92 # v6.2.0

.github/workflows/gh-pages.yml

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ on:
44
push:
55
branches: ["main"]
66
workflow_dispatch:
7+
pull_request:
8+
branches: [main]
79

810
concurrency:
911
group: "pages"
@@ -16,24 +18,26 @@ jobs:
1618
contents: read
1719
steps:
1820
- name: Checkout
19-
uses: actions/checkout@v5
21+
uses: actions/checkout@v6
22+
with:
23+
persist-credentials: false
2024
- name: Set up JDK 17
2125
uses: actions/setup-java@v5
2226
with:
2327
distribution: 'temurin'
2428
java-version: 17
2529
- name: Setup Gradle
26-
uses: gradle/actions/setup-gradle@v4
30+
uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92 # v6.2.0
2731
- name: Setup Pages
28-
uses: actions/configure-pages@v5
32+
uses: actions/configure-pages@v6
2933
- name: Build Javadoc
3034
run: ./gradlew javadoc --info
3135
- name: Build Reports
3236
run: ./gradlew check jacocoTestReport --info
3337
- name: Collect artifacts
3438
run: cp -r build/reports/ build/docs/
3539
- name: Upload artifact
36-
uses: actions/upload-pages-artifact@v4
40+
uses: actions/upload-pages-artifact@v5
3741
with:
3842
path: ./build/docs/
3943

@@ -50,4 +54,4 @@ jobs:
5054
steps:
5155
- name: Deploy to GitHub Pages
5256
id: deployment
53-
uses: actions/deploy-pages@v4
57+
uses: actions/deploy-pages@v5
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#!/bin/bash
2+
3+
set -o errexit
4+
set -o nounset
5+
set -o pipefail
6+
7+
base_dir="$( cd "$(dirname "$0")/../.." >/dev/null 2>&1 ; pwd -P )"
8+
readonly base_dir
9+
readonly build_dir="$base_dir/build"
10+
readonly release_artifacts_dir="$build_dir/release-artifacts"
11+
12+
cd "$base_dir"
13+
echo "Reading project version from Gradle project at ${base_dir}..."
14+
project_version=$(./gradlew properties --console=plain --quiet | grep "^version:" | awk '{print $2}')
15+
readonly project_version
16+
echo "Read project version '$project_version' from Gradle project"
17+
18+
mkdir -p "$release_artifacts_dir"
19+
cp -v "$build_dir/libs/fritzbox-java-api-$project_version.jar" "$release_artifacts_dir/fritzbox-java-api-$project_version.jar"
20+
21+
release_artifacts=$(find "$release_artifacts_dir" -type f)
22+
readonly release_artifacts
23+
24+
readonly title="Release $project_version"
25+
readonly tag="$project_version"
26+
echo "Creating release:"
27+
echo "Git tag : $tag"
28+
echo "Title : $title"
29+
echo "Artifacts: $release_artifacts"
30+
31+
# shellcheck disable=SC2086
32+
release_url=$(gh release create --latest --title "$title" --target main "$tag" $release_artifacts)
33+
readonly release_url
34+
echo "Release URL: $release_url"

.github/workflows/gradle.yml

Lines changed: 42 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,20 @@ on:
77
branches: [main]
88

99
jobs:
10-
build:
11-
10+
build-and-test:
11+
permissions:
12+
contents: read
1213
runs-on: ubuntu-latest
1314
strategy:
1415
matrix:
15-
java: [11, 17, 21, 23]
16+
java: [17, 21, 25]
1617
env:
17-
DEFAULT_JAVA: 11
18+
DEFAULT_JAVA: 17
1819

1920
steps:
20-
- uses: actions/checkout@v5
21+
- uses: actions/checkout@v6
22+
with:
23+
persist-credentials: false
2124

2225
- name: Setup Java ${{ matrix.java }}
2326
uses: actions/setup-java@v5
@@ -26,10 +29,10 @@ jobs:
2629
java-version: ${{ matrix.java }}
2730

2831
- name: Setup Gradle
29-
uses: gradle/actions/setup-gradle@v4
32+
uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92 # v6.2.0
3033

3134
- name: Cache SonarQube packages
32-
uses: actions/cache@v4
35+
uses: actions/cache@v5
3336
with:
3437
path: ~/.sonar/cache
3538
key: ${{ runner.os }}-java-${{ matrix.java }}-sonar
@@ -40,7 +43,38 @@ jobs:
4043

4144
- name: Sonar analysis
4245
if: ${{ env.DEFAULT_JAVA == matrix.java && env.SONAR_TOKEN != null }}
43-
run: ./gradlew sonarqube -Dsonar.token=$SONAR_TOKEN --info --warning-mode=summary
46+
run: ./gradlew sonarqube -Dsonar.token=$SONAR_TOKEN --info --warning-mode=summary -PjavaVersion=${{ matrix.java }}
4447
env:
4548
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
4649
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
50+
51+
ossindex:
52+
permissions:
53+
contents: read
54+
runs-on: ubuntu-latest
55+
steps:
56+
- uses: actions/checkout@v6
57+
with:
58+
persist-credentials: false
59+
- name: Setup Java 17
60+
uses: actions/setup-java@v5
61+
with:
62+
distribution: 'temurin'
63+
java-version: 17
64+
- name: Setup Gradle
65+
uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92 # v6.2.0
66+
- name: Run OSS Index
67+
run: ./gradlew ossIndex --info --warning-mode all
68+
env:
69+
ORG_GRADLE_PROJECT_ossIndexUsername: ${{ secrets.OSSINDEX_USERNAME }}
70+
ORG_GRADLE_PROJECT_ossIndexToken: ${{ secrets.OSSINDEX_TOKEN }}
71+
72+
build:
73+
permissions:
74+
contents: read
75+
runs-on: ubuntu-slim
76+
needs:
77+
- build-and-test
78+
- ossindex
79+
steps:
80+
- run: echo "Build successful"

.github/workflows/release.yml

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
name: Release
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
skip-deploy-maven-central:
7+
description: "Skip deployment to Maven Central"
8+
required: true
9+
type: boolean
10+
default: false
11+
12+
jobs:
13+
release:
14+
runs-on: ubuntu-latest
15+
defaults:
16+
run:
17+
shell: "bash"
18+
concurrency:
19+
group: ${{ github.workflow }}
20+
cancel-in-progress: false
21+
permissions:
22+
contents: write # Required for creating GitHub release
23+
steps:
24+
- name: Checkout
25+
uses: actions/checkout@v6
26+
with:
27+
persist-credentials: false
28+
29+
- name: Fail if not running on main branch
30+
if: ${{ github.ref != 'refs/heads/main' }}
31+
run: |
32+
echo "Not running on main branch, github.ref is $GITHUB_REF. Please start this workflow only on main."
33+
exit 1
34+
env:
35+
GITHUB_REF: ${{ github.ref }}
36+
37+
- uses: actions/setup-java@v5
38+
with:
39+
distribution: "temurin"
40+
java-version: 17
41+
42+
- name: Setup Gradle
43+
uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92 # v6.2.0
44+
45+
- name: Build
46+
run: ./gradlew clean build --info --warning-mode all
47+
48+
- name: Publish to Maven Central
49+
if: ${{ !inputs.skip-deploy-maven-central }}
50+
run: ./gradlew publishToSonatype closeAndReleaseSonatypeStagingRepository --info --warning-mode all
51+
env:
52+
ORG_GRADLE_PROJECT_sonatypeUsername: ${{ secrets.MAVEN_CENTRAL_PORTAL_USERNAME }}
53+
ORG_GRADLE_PROJECT_sonatypePassword: ${{ secrets.MAVEN_CENTRAL_PORTAL_TOKEN }}
54+
ORG_GRADLE_PROJECT_signingKey: ${{ secrets.OSSRH_GPG_SECRET_KEY }}
55+
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.OSSRH_GPG_SECRET_KEY_PASSWORD }}
56+
57+
- name: Create GitHub Release
58+
run: ./.github/workflows/github_release.sh
59+
env:
60+
GH_TOKEN: ${{ github.token }}

.settings/org.eclipse.jdt.core.prefs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
1111
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
1212
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
1313
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
14-
org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
14+
org.eclipse.jdt.core.compiler.codegen.targetPlatform=17
1515
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
16-
org.eclipse.jdt.core.compiler.compliance=11
16+
org.eclipse.jdt.core.compiler.compliance=17
1717
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
1818
org.eclipse.jdt.core.compiler.debug.localVariable=generate
1919
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -113,7 +113,7 @@ org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
113113
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
114114
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
115115
org.eclipse.jdt.core.compiler.release=disabled
116-
org.eclipse.jdt.core.compiler.source=11
116+
org.eclipse.jdt.core.compiler.source=17
117117
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
118118
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
119119
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false

CHANGELOG.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,14 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8-
## [1.8.0] - unreleased
8+
## [2.0.1] - unreleased
9+
10+
## [2.0.0] - 2026-06-14
11+
12+
**Breaking Change**: Starting with this release this project requires Java 17.
913

1014
- [#65](https://github.com/kaklakariada/fritzbox-java-api/pull/65) Upgrade dependencies
15+
- [#67](https://github.com/kaklakariada/fritzbox-java-api/pull/67) Upgrade dependencies, migrate Maven Central deployment
1116

1217
## [1.7.0] - 2023-10-07
1318

0 commit comments

Comments
 (0)