aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows
diff options
context:
space:
mode:
authorquapka2024-06-19 16:44:30 +0200
committerquapka2024-06-19 16:44:30 +0200
commitc051ef2ecfa92723d6dea675ac8c345be92cf165 (patch)
treec88b20a3614ad9ad62ff5cd7652230ddcf226839 /.github/workflows
parent84c71b38c0c74cbb5bbdc85c8864118722f257a4 (diff)
parent56a5614fa6627873bb215ca8eba1fc68785c79f4 (diff)
downloadECTester-c051ef2ecfa92723d6dea675ac8c345be92cf165.tar.gz
ECTester-c051ef2ecfa92723d6dea675ac8c345be92cf165.tar.zst
ECTester-c051ef2ecfa92723d6dea675ac8c345be92cf165.zip
Merge branch 'master' into build-with-nix
Diffstat (limited to '.github/workflows')
-rw-r--r--.github/workflows/build.yml206
1 files changed, 206 insertions, 0 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000..ab2a2ee
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,206 @@
+name: Build
+
+on:
+ push:
+ branches: [ "master" ]
+ pull_request:
+ branches: [ "master" ]
+
+jobs:
+ applet:
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+
+ strategy:
+ matrix:
+ java: [ "8", "11", "17"]
+ env:
+ JAVA_VERSION: ${{ matrix.java }}
+ name: Build applet with Java ${{ matrix.java }}
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ submodules: recursive
+
+ - name: Set up JDK
+ uses: actions/setup-java@v4
+ with:
+ java-version: ${{ matrix.java }}
+ distribution: "temurin"
+
+ - name: Setup Gradle
+ uses: gradle/actions/setup-gradle@v3
+
+ - name: Build applets
+ run: ./gradlew applet:buildJavaCard
+
+ - name: Test
+ run: ./gradlew applet:test
+
+ - name: Upload build artifacts
+ uses: actions/upload-artifact@v4
+ with:
+ name: built-applet-${{ matrix.java }}
+ path: |
+ applet/build/javacard/*.cap
+
+ reader:
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+
+ strategy:
+ matrix:
+ java: [ "11", "17", "21" ]
+ name: Build reader on Java ${{ matrix.java }}
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ submodules: recursive
+
+ - name: Set up JDK
+ uses: actions/setup-java@v4
+ with:
+ java-version: ${{ matrix.java }}
+ distribution: "temurin"
+
+ - name: Setup Gradle
+ uses: gradle/actions/setup-gradle@v3
+
+ - name: Build reader
+ run: ./gradlew reader:uberJar
+
+ - name: Test
+ run: ./gradlew reader:test
+
+ - name: Upload build artifacts
+ uses: actions/upload-artifact@v4
+ with:
+ name: built-reader-${{ matrix.java }}
+ path: |
+ reader/build/libs/ECTesterReader.jar
+
+ standalone:
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+
+ strategy:
+ matrix:
+ java: [ "11", "17", "21" ]
+ env:
+ # ffs: https://github.com/adoptium/adoptium-support/issues/485 !!!
+ # also, add the wolfcrypt JNI path
+ LD_LIBRARY_PATH: "/usr/lib/x86_64-linux-gnu/:${{github.workspace}}/ext/wolfcrypt-jni/lib/"
+ name: Build standalone on Java ${{ matrix.java }}
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ submodules: recursive
+ fetch-tags: true
+ fetch-depth: -1
+
+ - name: Set up JDK
+ uses: actions/setup-java@v4
+ with:
+ java-version: ${{ matrix.java }}
+ distribution: "temurin"
+
+ - name: Setup Gradle
+ uses: gradle/actions/setup-gradle@v3
+
+ - name: Setup libraries
+ run: |
+ sudo apt update
+ sudo apt install libtomcrypt-dev libtommath-dev libssl-dev libcrypto++-dev libgcrypt20-dev nettle-dev libbotan-2-dev libwolfssl-dev nasm
+ echo "BORINGSSL_VERSION=$(git submodule status ext/boringssl | cut -f2 -d' ' | cut -c1-10)" >> $GITHUB_ENV
+ echo "LIBRESSL_VERSION=$(git submodule status ext/libressl | cut -f2 -d' ' | cut -c1-10)" >> $GITHUB_ENV
+ echo "IPPCP_VERSION=$(git submodule status ext/ipp-crypto | cut -f2 -d' ' | cut -c1-10)" >> $GITHUB_ENV
+ echo "MBEDTLS_VERSION=$(git submodule status ext/mbedtls | cut -f2 -d' ' | cut -c1-10)" >> $GITHUB_ENV
+ echo "WOLFCRYPT_VERSION=$(git submodule status ext/wolfcrypt-jni | cut -f2 -d' ' | cut -c1-10)" >> $GITHUB_ENV
+ echo "WOLFSSL_VERSION=$(dpkg -s libwolfssl-dev | grep 'Version' | cut -f2 -d' ')" >> $GITHUB_ENV
+
+ - name: Cache libs
+ uses: actions/cache@v4
+ id: cache-libs
+ with:
+ key: libs-${{ env.BORINGSSL_VERSION }}-${{ env.LIBRESSL_VERSION }}-${{ env.LIBRESSL_VERSION }}-${{ env.IPPCP_VERSION }}-${{ env.WOLFCRYPT_VERSION }}-${{ env.WOLFSSL_VERSION }}-${{ hashFiles('.github/workflows/build.yml') }}-${{ matrix.java }}
+ path: |
+ ext/boringssl/build/
+ ext/libressl/build/
+ ext/ipp-crypto/build/
+ ext/mbedtls/build/
+ ext/wolfcrypt-jni/lib/wolfcrypt-jni.jar
+ ext/wolfcrypt-jni/lib/libwolfcryptjni.so
+
+ - name: Build libs
+ if: steps.cache-libs.outputs.cache-hit != 'true'
+ run: |
+ # ------------ Build BoringSSL ------------
+ cd ext/boringssl
+ cmake -DBUILD_SHARED_LIBS=1 -Bbuild -G "Unix Makefiles"
+ cd build
+ make -j4 crypto
+ cd ../../..
+ # ------------ Build LibreSSL ------------
+ cd ext/libressl
+ ./autogen.sh
+ cmake -DBUILD_SHARED_LIBS=ON -Bbuild -G "Unix Makefiles"
+ cd build
+ make -j4 crypto
+ cd ../../..
+ # ------------ Build IPP-crypto ------------
+ cd ext/ipp-crypto
+ CC=clang CXX=clang++ cmake CMakeLists.txt -Bbuild -DARCH=intel64 -G "Unix Makefiles"
+ cd build
+ make -j4
+ cd ../../..
+ # ------------ Build wolfcrypt-jni ------------
+ cd ext/wolfcrypt-jni
+ mkdir junit
+ wget -P junit/ https://repo1.maven.org/maven2/junit/junit/4.13.2/junit-4.13.2.jar
+ wget -P junit/ https://repo1.maven.org/maven2/org/hamcrest/hamcrest-all/1.3/hamcrest-all-1.3.jar
+ make -j4 -f makefile.linux
+ env JUNIT_HOME=junit/ ant build-jce-release
+ cd ../..
+ # ------------ Build mbedTLS ------------
+ cd ext/mbedtls
+ python -m venv virt
+ . virt/bin/activate
+ pip install -r scripts/basic.requirements.txt
+ cmake -DUSE_SHARED_MBEDTLS_LIBRARY=On -Bbuild -G "Unix Makefiles"
+ cd build
+ make -j4
+ cd ../../..
+
+ - name: Build standalone
+ run: |
+ ./gradlew standalone:libs || true
+ ./gradlew standalone:uberJar
+
+ - name: List libraries
+ run: ./gradlew standalone:run --args="list-libs"
+
+ - name: Test
+ run: ./gradlew standalone:test
+
+ - name: Upload build artifacts
+ uses: actions/upload-artifact@v4
+ with:
+ name: built-standalone-${{ matrix.java }}
+ path: |
+ standalone/build/libs/ECTesterStandalone.jar
+
+ - name: Upload results
+ uses: actions/upload-artifact@v4
+ with:
+ name: results-standalone-${{ matrix.java }}
+ path: |
+ standalone/build/results/
+
+ - name: Upload code coverage
+ uses: codecov/codecov-action@v4
+ with:
+ token: ${{ secrets.CODECOV_TOKEN }}
+ slug: crocs-muni/ECTester