-
Notifications
You must be signed in to change notification settings - Fork 0
140 lines (126 loc) · 5.6 KB
/
Copy pathpublish-sonatype.yml
File metadata and controls
140 lines (126 loc) · 5.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
name: Publish libraries to Sonatype Central
on:
release:
types: [released]
workflow_dispatch:
inputs:
version:
description: Existing v-prefixed release tag version to publish (e.g. 0.3.0)
required: true
default: 0.3.0
type: string
permissions:
contents: read
concurrency:
group: sonatype-publish
cancel-in-progress: false
jobs:
publish:
name: Publish both release AARs
permissions:
contents: write
if: >-
github.event_name == 'workflow_dispatch' ||
(github.event_name == 'release' && !github.event.release.draft && !github.event.release.prerelease)
runs-on: ubuntu-24.04
environment: maven-central
steps:
- name: Resolve release version
id: version
env:
RELEASE_TAG: ${{ github.event.release.tag_name }}
MANUAL_VERSION: ${{ inputs.version }}
shell: bash
run: |
if [[ "$GITHUB_EVENT_NAME" == release ]]; then
version="${RELEASE_TAG#v}"
else
version="${MANUAL_VERSION#v}"
fi
if [[ ! "$version" =~ ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)$ ]]; then
echo '::error::Expected a stable version such as 1.0.0 or v1.0.0.'
exit 1
fi
printf 'version=%s\n' "$version" >> "$GITHUB_OUTPUT"
- name: Check out source
uses: actions/checkout@v4
with:
ref: ${{ github.event_name == 'release' && github.ref || format('refs/tags/v{0}', steps.version.outputs.version) }}
- name: Set up Java
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '21'
cache: gradle
- name: Set up Android SDK
uses: android-actions/setup-android@v3
with:
packages: platform-tools
- name: Install Android SDK and NDK
run: sdkmanager "platforms;android-35" "build-tools;35.0.0" "ndk;28.2.13676358"
- name: Set up Rust
run: |
rustup toolchain install 1.87.0 --profile minimal --component rustfmt,clippy --no-self-update
rustup default 1.87.0
- name: Run Rust checks
run: |
cargo fmt --all -- --check
cargo test --workspace --locked
cargo clippy --workspace --all-targets --locked -- -D warnings
- name: Run online and cache checks
shell: bash
run: |
classes="$RUNNER_TEMP/office-checks"
mkdir -p "$classes"
javac --release 11 -Xlint:all -Werror -d "$classes" \
viewer/src/main/java/cn/jingzhuan/lib/office/OfficeCache.java \
viewer-online/src/main/java/cn/jingzhuan/lib/office/online/RemoteOfficeRequest.java \
viewer-online/src/main/java/cn/jingzhuan/lib/office/online/RemoteOfficeDownloader.java \
viewer-online/src/main/java/cn/jingzhuan/lib/office/online/HttpUrlConnectionOfficeDownloader.java \
scripts/tests/OfficeCacheChecks.java scripts/tests/RemoteDownloaderChecks.java
java -cp "$classes" cn.jingzhuan.lib.office.OfficeCacheChecks
java -cp "$classes" RemoteDownloaderChecks
- name: Run sheet layout checks
shell: bash
run: |
classes="$RUNNER_TEMP/sheet-layout-checks"
mkdir -p "$classes"
javac --release 11 -Xlint:all -Werror -d "$classes" \
viewer/src/main/java/cn/jingzhuan/lib/office/OfficeDocument.java \
viewer/src/main/java/cn/jingzhuan/lib/office/SpreadsheetDocument.java \
viewer/src/main/java/cn/jingzhuan/lib/office/SheetLayout.java \
viewer/src/androidTest/java/cn/jingzhuan/lib/office/SheetLayoutChecks.java
java -cp "$classes" cn.jingzhuan.lib.office.SheetLayoutChecks
- name: Build and publish both signed libraries to Maven Central
env:
PUBLISHED_VERSION: ${{ steps.version.outputs.version }}
PUBLISHED_ARTIFACT_ID: ${{ vars.PUBLISHED_ARTIFACT_ID }}
PUBLISHED_NAME: ${{ vars.PUBLISHED_NAME }}
PUBLISHED_DESCRIPTION: ${{ vars.PUBLISHED_DESCRIPTION }}
PUBLISHED_URL: ${{ vars.PUBLISHED_URL }}
PUBLISHED_LICENSE_NAME: ${{ vars.PUBLISHED_LICENSE_NAME }}
PUBLISHED_LICENSE_URL: ${{ vars.PUBLISHED_LICENSE_URL }}
PUBLISHED_DEVELOPER_ID: ${{ vars.PUBLISHED_DEVELOPER_ID }}
PUBLISHED_DEVELOPER_NAME: ${{ vars.PUBLISHED_DEVELOPER_NAME }}
PUBLISHED_DEVELOPER_EMAIL: ${{ vars.PUBLISHED_DEVELOPER_EMAIL }}
SONATYPE_NAMESPACE: ${{ vars.SONATYPE_NAMESPACE }}
SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
SIGNING_KEY: ${{ secrets.SIGNING_KEY }}
SIGNING_PASSWORD: ${{ secrets.SIGNING_PASSWORD }}
run: |
./gradlew --no-daemon --stacktrace :prepareRelease :viewer-online:lintRelease :demo:assembleRelease
./gradlew --no-daemon --stacktrace :publishToSonatype -PsonatypePublishingType=automatic
- name: Attach both AARs to GitHub Release
env:
GH_TOKEN: ${{ github.token }}
GH_REPO: ${{ github.repository }}
RELEASE_TAG: ${{ github.event.release.tag_name || format('v{0}', steps.version.outputs.version) }}
RELEASE_VERSION: ${{ steps.version.outputs.version }}
run: |
for module in viewer viewer-online; do
cp "$module/build/outputs/aar/$module-release.aar" "$RUNNER_TEMP/$module-$RELEASE_VERSION.aar"
done
gh release upload "$RELEASE_TAG" \
"$RUNNER_TEMP/viewer-$RELEASE_VERSION.aar" \
"$RUNNER_TEMP/viewer-online-$RELEASE_VERSION.aar"