Skip to content

Commit b1ecb06

Browse files
authored
Merge pull request #321 from diadoc/DDCORE-9327-fix-build
DDCORE-9327 Актуализировать сборку java-sdk
2 parents 06c2c46 + a76b4ee commit b1ecb06

File tree

158 files changed

+478
-569
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

158 files changed

+478
-569
lines changed

.github/workflows/actions.yml

Lines changed: 75 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,76 @@
1-
2-
on:
1+
on:
32
push:
43
paths-ignore:
54
- "**/*.md"
65
env:
76
JCP_VERSION: 2.0.40450-A
87
JCP_FILENAME_PREFIX: jcp-
9-
8+
DIADOC_SIGNING_SECRET: ${{ secrets.DIADOC_SIGNING_SECRET }}
9+
1010
jobs:
1111
build:
12-
runs-on: windows-2019
12+
runs-on: ubuntu-22.04
1313
steps:
1414
- uses: actions/checkout@v3
1515
with:
1616
fetch-depth: 0
1717

18-
- name: Setup .NET
19-
uses: actions/setup-dotnet@v2
20-
with:
21-
dotnet-version: 6.x
22-
2318
- name: Setup Maven Action
2419
2520
with:
2621
java-version: 17
2722
maven-version: 3.9.8
2823

29-
- name: Setup NuGet.exe
30-
uses: nuget/setup-nuget@v2
31-
with:
32-
nuget-version: '5.x'
33-
34-
- run: nuget install secure-file -ExcludeVersion
35-
- run: ./secure-file/tools/secure-file.exe -decrypt ${{ env.JCP_FILENAME_PREFIX }}${{ env.JCP_VERSION }}.zip.enc -secret ${{ secrets.DIADOC_SIGNING_SECRET }}
3624

37-
- name: Extract JCP from ZIP
38-
uses: ihiroky/extract-action@v1
39-
with:
40-
file_path: ./${{ env.JCP_FILENAME_PREFIX }}${{ env.JCP_VERSION }}.zip
41-
42-
- run: mvn install:install-file -Dfile="JCP.jar" -DgroupId="ru.CryptoPro" -DartifactId="JCP" -Dversion="${{ env.JCP_VERSION }}" -Dpackaging="jar"
43-
working-directory: ./${{ env.JCP_FILENAME_PREFIX }}${{ env.JCP_VERSION }}
44-
- run: mvn install:install-file -Dfile="asn1rt.jar" -DgroupId="com.objsys.asn1j" -DartifactId="asn1rt" -Dversion="${{ env.JCP_VERSION }}" -Dpackaging="jar"
45-
working-directory: ./${{ env.JCP_FILENAME_PREFIX }}${{ env.JCP_VERSION }}
46-
- run: mvn install:install-file -Dfile="ASN1P.jar" -DgroupId="ru.CryptoPro" -DartifactId="ASN1P" -Dversion="${{ env.JCP_VERSION }}" -Dpackaging="jar"
47-
working-directory: ./${{ env.JCP_FILENAME_PREFIX }}${{ env.JCP_VERSION }}
48-
- run: mvn install:install-file -Dfile="JCryptoP.jar" -DgroupId="ru.CryptoPro" -DartifactId="JCryptoP" -Dversion="${{ env.JCP_VERSION }}" -Dpackaging="jar"
49-
working-directory: ./${{ env.JCP_FILENAME_PREFIX }}${{ env.JCP_VERSION }}
50-
25+
- name: Decrypt and Extract JCP Archive
26+
run: |
27+
openssl enc -d -aes-256-cbc \
28+
-in ./${{ env.JCP_FILENAME_PREFIX }}${{ env.JCP_VERSION }}.zip.enc \
29+
-out ./${{ env.JCP_FILENAME_PREFIX }}${{ env.JCP_VERSION }}.zip \
30+
-pass env:DIADOC_SIGNING_SECRET
31+
32+
unzip -o ./${{ env.JCP_FILENAME_PREFIX }}${{ env.JCP_VERSION }}.zip
33+
34+
- name: Install JCP Dependencies
35+
run: |
36+
jars=(
37+
"JCP.jar ru.cryptopro jcp"
38+
"asn1rt.jar com.objsys.asn1j asn1rt"
39+
"ASN1P.jar ru.cryptopro asn1p"
40+
"JCryptoP.jar ru.cryptopro jcryptop"
41+
)
42+
43+
for jar in "${jars[@]}"; do
44+
set -- $jar
45+
mvn install:install-file \
46+
-Dfile=./${{ env.JCP_FILENAME_PREFIX }}${{ env.JCP_VERSION }}/$1 \
47+
-DgroupId=$2 \
48+
-DartifactId=$3 \
49+
-Dversion=${{ env.JCP_VERSION }} \
50+
-Dpackaging=jar
51+
done
52+
5153
- name: Run the build script
52-
uses: cake-build/cake-action@v2
54+
run: mvn package
5355
env:
5456
github_ref_type: ${{ github.ref_type }}
55-
with:
56-
target: Default
57-
arguments: |
58-
configuration: Release
59-
verbosity: Diagnostic
60-
cake-version: 1.3.0
57+
58+
- name: Validate artifacts
59+
run: |
60+
chmod +x .github/workflows/validate_version.sh
61+
ARTIFACT_DIR=target
62+
LATEST_JAR=$(find "$ARTIFACT_DIR" -type f -name "*.jar" -printf "%T@ %p\n" | sort -n | tail -1 | awk '{print $2}')
63+
if [ -z "$LATEST_JAR" ]; then
64+
echo "Error: No JAR files found in $ARTIFACT_DIR."
65+
exit 1
66+
fi
67+
68+
echo "Found latest JAR: $LATEST_JAR"
69+
FILE_NAME=$(basename "$LATEST_JAR")
70+
VERSION=$(echo "$FILE_NAME" | sed -n 's/^diadocsdk-\([0-9.]\+\(-[a-zA-Z0-9.]\+\)*\)\.jar$/\1/p')
71+
echo "Validating version: $VERSION"
72+
.github/workflows/validate_version.sh "$VERSION"
73+
6174
6275
- name: Upload artifacts
6376
uses: actions/upload-artifact@v3
@@ -67,25 +80,43 @@ jobs:
6780
target/*.jar
6881
if-no-files-found: error
6982

70-
publish:
83+
84+
publish-manual:
7185
runs-on: ubuntu-22.04
7286
needs: build
73-
if: startsWith(github.event.ref, 'refs/tags/version')
87+
if: |
88+
startsWith(github.event.ref, 'refs/tags/version')
7489
steps:
7590
- uses: actions/checkout@v3
7691
with:
7792
fetch-depth: 0
7893

79-
- name: Setup .NET
80-
uses: actions/setup-dotnet@v2
81-
with:
82-
dotnet-version: 6.x
83-
8494
- name: Download artifacts
8595
uses: actions/download-artifact@v3
8696
with:
8797
name: packages
8898

99+
- name: Check versions
100+
run: |
101+
ARTIFACT_DIR="/home/runner/work/diadocsdk-java/diadocsdk-java"
102+
LATEST_JAR=$(find "$ARTIFACT_DIR" -type f -name "*.jar" | sort -n | tail -1)
103+
if [ -z "$LATEST_JAR" ]; then
104+
echo "Error: No JAR files found in $ARTIFACT_DIR."
105+
exit 1
106+
fi
107+
echo "Found latest JAR: $LATEST_JAR"
108+
FILE_NAME=$(basename "$LATEST_JAR")
109+
MANIFEST_VERSION=$(echo "$FILE_NAME" | sed -n 's/^diadocsdk-\([0-9.]\+\(-[a-zA-Z0-9.]\+\)*\)\.jar$/\1/p')
110+
111+
TAG="${{ github.ref }}"
112+
VERSION=$(echo "$TAG" | sed -n 's|.*/versions/\([0-9a-zA-Z.-]*\)|\1|p')
113+
echo "Extracted version: ${VERSION}"
114+
115+
if [ "$MANIFEST_VERSION" != "$VERSION" ]; then
116+
echo "Version mismatch! Jar version ($MANIFEST_VERSION) does not match tag version ($VERSION)"
117+
exit 1
118+
fi
119+
89120
- name: Create github release
90121
uses: softprops/action-gh-release@v1
91122
with:
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#!/bin/bash
2+
3+
VERSION_REGEX='^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)(-(0|[1-9][0-9]*|[a-zA-Z-][0-9a-zA-Z-]*)(\.(0|[1-9][0-9]*|[a-zA-Z-][0-9a-zA-Z-]*))*)?(\+[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)*)?$'
4+
5+
VERSION="$1"
6+
7+
if [[ -z "$VERSION" ]]; then
8+
echo "Error: No version provided."
9+
echo "Usage: $0 <version>"
10+
exit 1
11+
fi
12+
13+
if [[ "$VERSION" =~ $VERSION_REGEX ]]; then
14+
echo "Version $VERSION is valid."
15+
exit 0
16+
else
17+
echo "Error: Version $VERSION does not match the version regex."
18+
exit 1
19+
fi

README.md

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -46,19 +46,6 @@ mvn package
4646
mvn install
4747
```
4848

49-
## Окончательная сборка проекта (CI)
50-
51-
Для окончательной сборки проекта используется утилита [Cake](http://cakebuild.net/).
52-
53-
Запуск powershell-скрипта `build.ps1` скачает утилиту Cake, если ее у вас нет, и запустит сборку проекта.
54-
Из командной строки этот скрипт можно запустить с помощью `generate.bat`.
55-
56-
Выполняется:
57-
58-
- генерация версии на основе тега
59-
- компиляция proto-файлов
60-
- компиляция DiadocApi
61-
6249
## Добавление функциональности
6350

6451
- [Сделайте Fork](https://guides.github.com/activities/forking/)

0 commit comments

Comments
 (0)