ci: make static lib and headers available in releases #192
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build and test | ||
on: | ||
push: | ||
# branches: [main] | ||
tags: 'REL-*' | ||
pull_request: | ||
env: | ||
CARGO_TERM_COLOR: always | ||
jobs: | ||
check-style: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout repo | ||
uses: actions/checkout@v3 | ||
- name: Install Rust formatter | ||
run: rustup component add rustfmt | ||
- name: Check if code is well formatted | ||
run: cargo fmt --check | ||
# unit-tests: # run before build because it is faster | ||
# needs: check-style | ||
# runs-on: ubuntu-latest | ||
# strategy: | ||
# fail-fast: false | ||
# matrix: | ||
# edhoc_lib: [hacspec, rust] | ||
# crypto: [hacspec, psa] | ||
# ead: [ead-none, ead-zeroconf] | ||
# exclude: | ||
# - edhoc_lib: rust | ||
# crypto: hacspec | ||
# steps: | ||
# - name: Checkout repo | ||
# uses: actions/checkout@v3 | ||
# - name: Run unit tests # note that we only add `--package edhoc-hacspec` when testing the hacspec version of the lib | ||
# run: cargo test --package edhoc-rs --package edhoc-crypto --package edhoc-ead ${{ matrix.edhoc_lib == 'hacspec' && '--package edhoc-hacspec' || '' }} --no-default-features --features="${{ matrix.edhoc_lib }}-${{ matrix.crypto }}, ${{ matrix.ead }}" --no-fail-fast | ||
# build-edhoc-package: | ||
# needs: unit-tests | ||
# runs-on: ubuntu-latest | ||
# strategy: | ||
# fail-fast: false | ||
# matrix: | ||
# edhoc_lib: [hacspec, rust] | ||
# crypto: [hacspec, psa, psa-baremetal, cryptocell310] | ||
# ead: [ead-none, ead-zeroconf] | ||
# exclude: | ||
# - edhoc_lib: rust | ||
# crypto: hacspec | ||
# steps: | ||
# - name: Checkout repo | ||
# uses: actions/checkout@v3 | ||
# - name: Install arm targets for Rust | ||
# run: rustup target add thumbv7m-none-eabi && rustup target add thumbv7em-none-eabihf | ||
# - name: Install arm gcc | ||
# run: sudo apt-get -y update && sudo apt-get -y install gcc-arm-none-eabi | ||
# - name: Build | ||
# run: cargo build --package edhoc-rs --package edhoc-crypto --package edhoc-ead --no-default-features --features="${{ matrix.edhoc_lib }}-${{ matrix.crypto }}, ${{ matrix.ead }}" --release | ||
hacspec-to-fstar: | ||
needs: unit-tests | ||
Check failure on line 73 in .github/workflows/build-and-test.yml GitHub Actions / Build and testInvalid workflow file
|
||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout edhoc-rs | ||
uses: actions/checkout@v3 | ||
- name: Patch edhoc-rs features | ||
run: git apply ./hacspec/adjust_features_for_hax.patch | ||
- name: Checkout hacspec-v2 | ||
uses: actions/checkout@v3 | ||
with: | ||
repository: 'hacspec/hacspec-v2' | ||
path: hacspec-v2-repo | ||
- name: Build hacspec-v2 docker image | ||
run: docker build -f .docker/Dockerfile . -t hacspec-v2 | ||
working-directory: hacspec-v2-repo | ||
- name: Generate fstar | ||
run: docker run --rm -v ${{ github.workspace }}:/edhoc-rs hacspec-v2 bash -c "cd edhoc-rs/hacspec && cargo-hax into fstar" | ||
- name: Zip fstar files | ||
run: zip -r edhoc-rs-fstar.zip hacspec/out/ | ||
- name: Upload artifact | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: fstar-code | ||
path: edhoc-rs-fstar.zip | ||
build-static-lib-and-headers: | ||
needs: unit-tests | ||
runs-on: ubuntu-latest | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
edhoc_lib: [rust] | ||
crypto: [psa-baremetal, cryptocell310] | ||
steps: | ||
- name: Checkout repo | ||
uses: actions/checkout@v3 | ||
- name: Install arm targets for Rust | ||
run: rustup target add thumbv7em-none-eabihf | ||
- name: Install arm gcc | ||
run: sudo apt-get -y update && sudo apt-get -y install gcc-arm-none-eabi | ||
- name: Build static library and generate headers | ||
# NOTE: build_for_c.sh uses the fixed target of thumbv7em-none-eabihf | ||
run: ./build_for_c.sh "${{ matrix.edhoc_lib }}-${{ matrix.crypto }}" | ||
- name: Zip static lib and headers | ||
run: | | ||
cd target | ||
zip -r staticlib-thumbv7em-none-eabihf.zip include/ | ||
zip -u -j staticlib-thumbv7em-none-eabihf.zip thumbv7em-none-eabihf/release/libedhoc_rs.a | ||
- name: Upload artifact | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: static-lib-and-headers | ||
path: target/staticlib-thumbv7em-none-eabihf.zip | ||
# run-example-on-qemu: | ||
# needs: unit-tests | ||
# runs-on: ubuntu-latest | ||
# strategy: | ||
# fail-fast: false | ||
# matrix: | ||
# config: [hacspec-psa, rust-psa] | ||
# ead: [ead-none, ead-zeroconf] | ||
# steps: | ||
# - name: Checkout repo | ||
# uses: actions/checkout@v3 | ||
# - name: Install arm targets for Rust | ||
# run: rustup target add thumbv7m-none-eabi | ||
# - name: Install arm gcc | ||
# run: sudo apt-get -y update && sudo apt-get -y install gcc-arm-none-eabi | ||
# - name: Install QEMU ARM emulator | ||
# run: sudo apt-get -y install qemu-system-arm | ||
# - name: Run tests in QEMU | ||
# # FIXME: still failing | ||
# run: cd examples/edhoc-rs-no_std && cargo run --target="thumbv7m-none-eabi" --no-default-features --features="${{ matrix.config }}, ${{ matrix.ead }}" --release | ||
# build-example-for-cortex-m4: | ||
# needs: unit-tests | ||
# runs-on: ubuntu-latest | ||
# strategy: | ||
# fail-fast: false | ||
# matrix: | ||
# edhoc_lib: [hacspec, rust] | ||
# crypto: [psa, cryptocell310] | ||
# ead: [ead-none, ead-zeroconf] | ||
# steps: | ||
# - name: Checkout repo | ||
# uses: actions/checkout@v3 | ||
# - name: Install arm targets for Rust | ||
# run: rustup target add thumbv7em-none-eabihf | ||
# - name: Install arm gcc | ||
# run: sudo apt-get -y update && sudo apt-get -y install gcc-arm-none-eabi | ||
# - name: Build example | ||
# run: cd examples/edhoc-rs-no_std && cargo build --target="thumbv7em-none-eabihf" --no-default-features --features="${{ matrix.edhoc_lib }}-${{ matrix.crypto }}, ${{ matrix.ead }}, rtt" --release | ||
# build-coap-example: | ||
# needs: unit-tests | ||
# runs-on: ubuntu-latest | ||
# steps: | ||
# - name: Checkout repo | ||
# uses: actions/checkout@v3 | ||
# - name: Build server | ||
# run: cargo build --bin coapserver | ||
# - name: Build client | ||
# run: cargo build --bin coapclient | ||
# release: | ||
# runs-on: ubuntu-latest | ||
# needs: [build-edhoc-package, hacspec-to-fstar, run-example-on-qemu, build-example-for-cortex-m4, build-coap-example] | ||
# if: >- | ||
# github.event_name == 'push' && | ||
# startsWith(github.event.ref, 'refs/tags') | ||
release-test: | ||
runs-on: ubuntu-latest | ||
needs: [hacspec-to-fstar, build-static-lib-and-headers] | ||
if: >- | ||
github.event_name == 'push' && | ||
startsWith(github.event.ref, 'refs/tags') | ||
steps: | ||
- name: Checkout repo | ||
uses: actions/checkout@v3 | ||
- name: Download artifacts | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: fstar-code | ||
path: ./release-artifacts | ||
- name: Download artifacts | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: static-lib-and-headers | ||
path: ./release-artifacts | ||
- name: Release | ||
uses: ncipollo/release-action@v1 | ||
with: | ||
generateReleaseNotes: true | ||
artifacts: "release-artifacts/*" | ||
token: ${{ secrets.RELEASE_TOKEN }} |