diff options
| author | quapka | 2024-06-19 16:44:30 +0200 |
|---|---|---|
| committer | quapka | 2024-06-19 16:44:30 +0200 |
| commit | c051ef2ecfa92723d6dea675ac8c345be92cf165 (patch) | |
| tree | c88b20a3614ad9ad62ff5cd7652230ddcf226839 /.github/workflows | |
| parent | 84c71b38c0c74cbb5bbdc85c8864118722f257a4 (diff) | |
| parent | 56a5614fa6627873bb215ca8eba1fc68785c79f4 (diff) | |
| download | ECTester-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.yml | 206 |
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 |
