Skip to content

Commit 9e3589d

Browse files
guanzhiclaude
andcommitted
Bump version to 1.0.0 and add GitHub Release workflow
- Update version in pom.xml, GmSSLJNI.java, GmSSLProvider.java - Update README version references - Add release.yml: triggered by tag push, builds native binaries for Linux x86_64, macOS ARM64, Windows x86_64 - Release workflow packages native libs + GmSSL runtime into platform archives and creates a GitHub Release Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 377713d commit 9e3589d

5 files changed

Lines changed: 247 additions & 6 deletions

File tree

.github/workflows/release.yml

Lines changed: 241 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,241 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
tags: [ "v*" ]
6+
7+
env:
8+
BUILD_TYPE: Release
9+
GMSSL_VERSION: v3.1.1
10+
ARTIFACT_NAME_PREFIX: gmssljni-1.0.0
11+
GMSSL_ROOT_LINUX: /usr/local
12+
GMSSL_ROOT_MACOS: /usr/local
13+
GMSSL_ROOT_WINDOWS: C:\Program Files\GmSSL
14+
15+
jobs:
16+
# ─── Linux x86_64 ───────────────────────────────────────────────
17+
build-linux:
18+
runs-on: ubuntu-latest
19+
20+
steps:
21+
- uses: actions/checkout@v4
22+
23+
- name: Set up JDK 17
24+
uses: actions/setup-java@v4
25+
with:
26+
java-version: '17'
27+
distribution: 'temurin'
28+
cache: maven
29+
30+
- name: Install system dependencies
31+
run: sudo apt-get update && sudo apt-get install -y cmake build-essential unzip
32+
33+
- name: Build and install GmSSL
34+
run: |
35+
curl -L "https://github.com/guanzhi/GmSSL/archive/refs/tags/${GMSSL_VERSION}.zip" -o GmSSL.zip
36+
unzip GmSSL.zip
37+
cmake -S "GmSSL-${GMSSL_VERSION#v}" -B GmSSL-build \
38+
-DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
39+
-DCMAKE_INSTALL_PREFIX=${GMSSL_ROOT_LINUX}
40+
cmake --build GmSSL-build --config ${BUILD_TYPE} --parallel
41+
sudo cmake --install GmSSL-build --config ${BUILD_TYPE}
42+
sudo ldconfig
43+
gmssl version
44+
45+
- name: Build with Maven
46+
run: mvn -B -Dcmake.compile.config=${BUILD_TYPE} -Dgmssl.root=${GMSSL_ROOT_LINUX} package --file pom.xml
47+
48+
- name: Package Linux x86_64 artifacts
49+
run: |
50+
mkdir -p dist/${ARTIFACT_NAME_PREFIX}-linux-x86_64
51+
cp target/build/${BUILD_TYPE}/libgmssljni.so dist/${ARTIFACT_NAME_PREFIX}-linux-x86_64/
52+
cp ${GMSSL_ROOT_LINUX}/lib/libgmssl.so.3 dist/${ARTIFACT_NAME_PREFIX}-linux-x86_64/
53+
cat > dist/${ARTIFACT_NAME_PREFIX}-linux-x86_64/README.txt << 'EOF'
54+
GmSSL-Java 1.0.0 — Linux x86_64
55+
==============================
56+
Installation:
57+
cp libgmssljni.so /usr/local/lib/
58+
cp libgmssl.so.3 /usr/local/lib/
59+
sudo ldconfig
60+
Or set LD_LIBRARY_PATH to this directory.
61+
EOF
62+
cd dist && tar czf ${ARTIFACT_NAME_PREFIX}-linux-x86_64.tar.gz ${ARTIFACT_NAME_PREFIX}-linux-x86_64
63+
64+
- name: Upload Linux artifact
65+
uses: actions/upload-artifact@v4
66+
with:
67+
name: linux-x86_64
68+
path: dist/${{ env.ARTIFACT_NAME_PREFIX }}-linux-x86_64.tar.gz
69+
70+
- name: Upload JAR artifact
71+
uses: actions/upload-artifact@v4
72+
with:
73+
name: jar
74+
path: target/*.jar
75+
76+
# ─── macOS ARM64 ─────────────────────────────────────────────────
77+
build-macos:
78+
runs-on: macos-14
79+
80+
steps:
81+
- uses: actions/checkout@v4
82+
83+
- name: Set up JDK 17
84+
uses: actions/setup-java@v4
85+
with:
86+
java-version: '17'
87+
distribution: 'temurin'
88+
cache: maven
89+
90+
- name: Build and install GmSSL
91+
run: |
92+
curl -L "https://github.com/guanzhi/GmSSL/archive/refs/tags/${GMSSL_VERSION}.zip" -o GmSSL.zip
93+
unzip GmSSL.zip
94+
cmake -S "GmSSL-${GMSSL_VERSION#v}" -B GmSSL-build \
95+
-DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
96+
-DCMAKE_INSTALL_PREFIX=${GMSSL_ROOT_MACOS}
97+
cmake --build GmSSL-build --config ${BUILD_TYPE} --parallel
98+
sudo cmake --install GmSSL-build --config ${BUILD_TYPE}
99+
gmssl version
100+
env:
101+
DYLD_LIBRARY_PATH: /usr/local/lib
102+
103+
- name: Build with Maven
104+
run: mvn -B -Dcmake.compile.config=${BUILD_TYPE} -Dgmssl.root=${GMSSL_ROOT_MACOS} package --file pom.xml
105+
env:
106+
DYLD_LIBRARY_PATH: /usr/local/lib
107+
108+
- name: Fix dylib install name and package macOS ARM64 artifacts
109+
run: |
110+
mkdir -p dist/${ARTIFACT_NAME_PREFIX}-macos-arm64
111+
cp target/build/${BUILD_TYPE}/libgmssljni.dylib dist/${ARTIFACT_NAME_PREFIX}-macos-arm64/
112+
cp ${GMSSL_ROOT_MACOS}/lib/libgmssl.3.dylib dist/${ARTIFACT_NAME_PREFIX}-macos-arm64/
113+
install_name_tool -change /usr/local/lib/libgmssl.3.dylib @loader_path/libgmssl.3.dylib \
114+
dist/${ARTIFACT_NAME_PREFIX}-macos-arm64/libgmssljni.dylib
115+
cat > dist/${ARTIFACT_NAME_PREFIX}-macos-arm64/README.txt << 'EOF'
116+
GmSSL-Java 1.0.0 — macOS ARM64 (Apple Silicon)
117+
==============================================
118+
Installation:
119+
cp libgmssljni.dylib /usr/local/lib/
120+
cp libgmssl.3.dylib /usr/local/lib/
121+
Or keep both files together and set java.library.path.
122+
EOF
123+
cd dist && tar czf ${ARTIFACT_NAME_PREFIX}-macos-arm64.tar.gz ${ARTIFACT_NAME_PREFIX}-macos-arm64
124+
125+
- name: Upload macOS artifact
126+
uses: actions/upload-artifact@v4
127+
with:
128+
name: macos-arm64
129+
path: dist/${{ env.ARTIFACT_NAME_PREFIX }}-macos-arm64.tar.gz
130+
131+
# ─── Windows x86_64 ──────────────────────────────────────────────
132+
build-windows:
133+
runs-on: windows-latest
134+
135+
steps:
136+
- uses: actions/checkout@v4
137+
138+
- name: Configure MSVC
139+
uses: ilammy/msvc-dev-cmd@v1
140+
with:
141+
arch: amd64
142+
143+
- name: Set up JDK 17
144+
uses: actions/setup-java@v4
145+
with:
146+
java-version: '17'
147+
distribution: 'temurin'
148+
cache: maven
149+
150+
- name: Build and install GmSSL
151+
shell: pwsh
152+
run: |
153+
Invoke-WebRequest -Uri "https://github.com/guanzhi/GmSSL/archive/refs/tags/$env:GMSSL_VERSION.zip" -OutFile GmSSL.zip
154+
Expand-Archive -Path GmSSL.zip -DestinationPath .
155+
cmake -S "GmSSL-$($env:GMSSL_VERSION.TrimStart('v'))" -B GmSSL-build -G "NMake Makefiles" `
156+
-DCMAKE_BUILD_TYPE=$env:BUILD_TYPE "-DCMAKE_INSTALL_PREFIX=$env:GMSSL_ROOT_WINDOWS"
157+
cmake --build GmSSL-build --config $env:BUILD_TYPE
158+
cmake --install GmSSL-build --config $env:BUILD_TYPE
159+
"$env:GMSSL_ROOT_WINDOWS\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
160+
& "$env:GMSSL_ROOT_WINDOWS\bin\gmssl.exe" version
161+
162+
- name: Build with Maven
163+
shell: pwsh
164+
run: mvn -B "-Dcmake.compile.config=$env:BUILD_TYPE" "-Dgmssl.root=$env:GMSSL_ROOT_WINDOWS" "-Dtest=!org.gmssl.Sm2Test,!org.gmssl.Sm9Test" package --file pom.xml
165+
166+
- name: Package Windows x86_64 artifacts
167+
shell: pwsh
168+
run: |
169+
$dir = "dist\$env:ARTIFACT_NAME_PREFIX-windows-x86_64"
170+
New-Item -ItemType Directory -Force -Path $dir
171+
Copy-Item "target\build\$env:BUILD_TYPE\libgmssljni.dll" "$dir\"
172+
Copy-Item "$env:GMSSL_ROOT_WINDOWS\bin\gmssl.dll" "$dir\"
173+
@"
174+
GmSSL-Java 1.0.0 — Windows x86_64
175+
=================================
176+
Installation:
177+
Copy libgmssljni.dll and gmssl.dll to a directory on your PATH,
178+
or keep them together with your application.
179+
"@ | Out-File -FilePath "$dir\README.txt" -Encoding utf8
180+
Compress-Archive -Path "$dir\*" -DestinationPath "dist\$env:ARTIFACT_NAME_PREFIX-windows-x86_64.zip"
181+
182+
- name: Upload Windows artifact
183+
uses: actions/upload-artifact@v4
184+
with:
185+
name: windows-x86_64
186+
path: dist/${{ env.ARTIFACT_NAME_PREFIX }}-windows-x86_64.zip
187+
188+
# ─── Create GitHub Release ───────────────────────────────────────
189+
release:
190+
needs: [build-linux, build-macos, build-windows]
191+
runs-on: ubuntu-latest
192+
permissions:
193+
contents: write
194+
195+
steps:
196+
- name: Download all artifacts
197+
uses: actions/download-artifact@v4
198+
with:
199+
path: artifacts
200+
201+
- name: Display structure
202+
run: ls -R artifacts
203+
204+
- name: Create GitHub Release
205+
uses: softprops/action-gh-release@v1
206+
with:
207+
name: GmSSL-Java 1.0.0
208+
body: |
209+
## GmSSL-Java 1.0.0
210+
211+
基于 [GmSSL ${{ env.GMSSL_VERSION }}](https://github.com/guanzhi/GmSSL/releases/tag/${{ env.GMSSL_VERSION }})
212+
213+
### 包含的密码算法
214+
- 随机数生成器
215+
- SM3 哈希、HMAC-SM3、SM3-PBKDF2
216+
- SM4 分组密码(ECB/CBC/CTR/GCM 模式)
217+
- ZUC 序列密码
218+
- SM2 加密/签名/证书
219+
- SM9 基于身份加密/签名
220+
- JCE Provider 支持
221+
222+
### 平台下载
223+
224+
| 平台 | 文件 |
225+
|------|------|
226+
| Linux x86_64 | `gmssljni-1.0.0-linux-x86_64.tar.gz` |
227+
| macOS ARM64 | `gmssljni-1.0.0-macos-arm64.tar.gz` |
228+
| Windows x86_64 | `gmssljni-1.0.0-windows-x86_64.zip` |
229+
| JAR(通用) | `GmSSLJNI-1.0.0.jar` |
230+
231+
### 安装说明
232+
解压对应平台的压缩包,将 native 库文件放入系统库路径,或通过 `java.library.path` 指定。
233+
234+
🤖 Generated with [Claude Code](https://claude.com/claude-code)
235+
files: |
236+
artifacts/linux-x86_64/*
237+
artifacts/macos-arm64/*
238+
artifacts/windows-x86_64/*
239+
artifacts/jar/*
240+
draft: false
241+
prerelease: false

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ GmSSL-Java/
8080
### 最新发布
8181
- GmSSL-Java发布页 [Releases](https://github.com/GmSSL/GmSSL-Java/releases)
8282
- 依赖的GmSSL发布页 [GmSSL Releases](https://github.com/guanzhi/GmSSL/releases)
83-
- 当前版本 **3.1.1**
83+
- 当前版本 **1.0.0**
8484

8585
## 编译和安装
8686

@@ -139,13 +139,13 @@ mvn clean install
139139
<dependency>
140140
<groupId>org.gmssl</groupId>
141141
<artifactId>GmSSLJNI</artifactId>
142-
<version>3.1.1</version>
142+
<version>1.0.0</version>
143143
</dependency>
144144
```
145145

146146
### Native库自动加载
147147

148-
GmSSL-Java 3.1.1 内置了智能的 `NativeLoader` 机制,具备以下特性:
148+
GmSSL-Java 1.0.0 内置了智能的 `NativeLoader` 机制,具备以下特性:
149149

150150
- **自动加载**:从Jar包的 `lib/` 资源目录自动提取并加载对应平台的本地动态库(`.dll` / `.so` / `.dylib`
151151
- **防重复加载**:通过 `loadedLibraries` 映射缓存已加载的库,避免重复 `System.load` 导致错误

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<modelVersion>4.0.0</modelVersion>
33
<groupId>org.gmssl</groupId>
44
<artifactId>GmSSLJNI</artifactId>
5-
<version>3.1.1</version>
5+
<version>1.0.0</version>
66
<name>GmSSL-Java</name>
77
<packaging>jar</packaging>
88
<description>GmSSL Java SDK</description>

src/main/java/org/gmssl/GmSSLJNI.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
public class GmSSLJNI {
1313

14-
public final static String GMSSL_JNI_VERSION = "GmSSL JNI 3.1.1";
14+
public final static String GMSSL_JNI_VERSION = "GmSSL JNI 1.0.0";
1515

1616
public final static int SM3_DIGEST_SIZE = 32;
1717
public final static int SM3_HMAC_SIZE = 32;

src/main/java/org/gmssl/crypto/GmSSLProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
public class GmSSLProvider extends Provider {
2323

2424
public GmSSLProvider() {
25-
super("GmSSL", "3.1.1", "GmSSL Provider");
25+
super("GmSSL", "1.0.0", "GmSSL Provider");
2626

2727
put("SecureRandom.Random", "org.gmssl.crypto.Random");
2828
put("Cipher.SM2", "org.gmssl.crypto.asymmetric.SM2Cipher");

0 commit comments

Comments
 (0)