1-
2- on :
1+ on :
32 push :
43 paths-ignore :
54 - " **/*.md"
65env :
76 JCP_VERSION : 2.0.40450-A
87 JCP_FILENAME_PREFIX : jcp-
9-
8+ DIADOC_SIGNING_SECRET : ${{ secrets.DIADOC_SIGNING_SECRET }}
9+
1010jobs :
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
24192520 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 :
0 commit comments