diff --git a/.github/workflows/mla_release.yml b/.github/workflows/mla_release.yml new file mode 100644 index 0000000..eb9f7a7 --- /dev/null +++ b/.github/workflows/mla_release.yml @@ -0,0 +1,209 @@ +name: mla release + +on: + push: + tags: + - "mla-v*" + +env: + GITHUB_REF: "${{ github.ref }}" + +jobs: + build: + strategy: + matrix: + build: [linux-x86_64, windows-i686, windows-x86_64, windows-i686-debug, windows-x86_64-debug] + include: + - build: linux-x86_64 + os: ubuntu-latest + target: x86_64-unknown-linux-musl + cargo_arg: --release + path: | + ./target/x86_64-unknown-linux-musl/release/libmla.a + - build: windows-i686 + os: windows-latest + target: i686-pc-windows-msvc + msvc_platform: Win32 + cargo_arg: --release + path: | + ./target/i686-pc-windows-msvc/release/mla.lib + ./target/i686-pc-windows-msvc/release/mla.dll + ./target/i686-pc-windows-msvc/release/mla.dll.lib + ./target/i686-pc-windows-msvc/release/mla.pdb + - build: windows-x86_64 + os: windows-latest + target: x86_64-pc-windows-msvc + msvc_platform: x64 + cargo_arg: --release + path: | + ./target/x86_64-pc-windows-msvc/release/mla.lib + ./target/x86_64-pc-windows-msvc/release/mla.dll + ./target/x86_64-pc-windows-msvc/release/mla.dll.lib + ./target/x86_64-pc-windows-msvc/release/mla.pdb + - build: windows-i686-debug + os: windows-latest + target: i686-pc-windows-msvc + msvc_platform: Win32 + cargo_arg: "" + path: | + ./target/i686-pc-windows-msvc/debug/mla.lib + ./target/i686-pc-windows-msvc/debug/mla.dll + ./target/i686-pc-windows-msvc/debug/mla.dll.lib + ./target/i686-pc-windows-msvc/debug/mla.pdb + - build: windows-x86_64-debug + os: windows-latest + target: x86_64-pc-windows-msvc + msvc_platform: x64 + cargo_arg: "" + path: | + ./target/x86_64-pc-windows-msvc/debug/mla.lib + ./target/x86_64-pc-windows-msvc/debug/mla.dll + ./target/x86_64-pc-windows-msvc/debug/mla.dll.lib + ./target/x86_64-pc-windows-msvc/debug/mla.pdb + + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v2 + - uses: actions-rs/toolchain@v1 + with: + toolchain: stable + target: ${{ matrix.target }} + - uses: microsoft/setup-msbuild@v1.0.2 + if: matrix.msvc_platform + - name: Build static library + uses: actions-rs/cargo@v1 + with: + command: build + args: ${{ matrix.cargo_arg }} --manifest-path=bindings/C/Cargo.toml --target=${{ matrix.target }} + - name: Upload resulting 'mla' + uses: actions/upload-artifact@v2 + with: + name: mla-${{ matrix.build }} + path: ${{ matrix.path }} + + release: + # From https://github.com/cloudflare/wrangler/blob/master/.github/workflows/release.yml + name: GitHub Release + needs: build + runs-on: ubuntu-latest + steps: + - name: Query version number + id: get_version + shell: bash + run: | + echo "using version tag ${GITHUB_REF:15}" + echo ::set-output name=version::"${GITHUB_REF:15}" + - name: Create Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: mla-${{ steps.get_version.outputs.VERSION }} + release_name: mla-${{ steps.get_version.outputs.VERSION }} + draft: true + + - name: Download linux-x86_64 artifact + uses: actions/download-artifact@v1 + with: + name: mla-linux-x86_64 + + - name: Download windows-i686 artifact + uses: actions/download-artifact@v1 + with: + name: mla-windows-i686 + + - name: Download windows-x86_64 artifact + uses: actions/download-artifact@v1 + with: + name: mla-windows-x86_64 + + - name: Download windows-i686-debug artifact + uses: actions/download-artifact@v1 + with: + name: mla-windows-i686-debug + + - name: Download windows-x86_64-debug artifact + uses: actions/download-artifact@v1 + with: + name: mla-windows-x86_64-debug + + - name: Release Linux artifact + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./mla-linux-x86_64/libmla.a + asset_content_type: application/octet-stream + asset_name: libmla-x86_64-static-${{ steps.get_version.outputs.VERSION }}.a + + - name: Zip Windows releases + run: | + zip --junk-paths windows-i686 mla-windows-i686/mla.dll mla-windows-i686/mla.lib mla-windows-i686/mla.dll.lib mla-windows-i686/mla.pdb + zip --junk-paths windows-x86_64 mla-windows-x86_64/mla.dll mla-windows-x86_64/mla.lib mla-windows-x86_64/mla.dll.lib mla-windows-x86_64/mla.pdb + zip --junk-paths windows-i686-debug mla-windows-i686-debug/mla.dll mla-windows-i686-debug/mla.lib mla-windows-i686-debug/mla.dll.lib mla-windows-i686-debug/mla.pdb + zip --junk-paths windows-x86_64-debug mla-windows-x86_64-debug/mla.dll mla-windows-x86_64-debug/mla.lib mla-windows-x86_64-debug/mla.dll.lib mla-windows-x86_64-debug/mla.pdb + + - name: Release windows-i686 + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./windows-i686.zip + asset_content_type: application/zip + asset_name: libmla-windows-i686-${{ steps.get_version.outputs.VERSION }}.zip + + - name: Release windows-x86_64 + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./windows-x86_64.zip + asset_content_type: application/zip + asset_name: libmla-windows-x86_64-${{ steps.get_version.outputs.VERSION }}.zip + + - name: Release windows-i686-debug + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./windows-i686-debug.zip + asset_content_type: application/zip + asset_name: libmla-windows-i686-debug-${{ steps.get_version.outputs.VERSION }}.zip + + - name: Release windows-x86_64-debug + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./windows-x86_64-debug.zip + asset_content_type: application/zip + asset_name: libmla-windows-x86_64-debug-${{ steps.get_version.outputs.VERSION }}.zip + + - uses: actions/checkout@v2 + - name: Release C Header file + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./bindings/C/mla.h + asset_content_type: application/octet-stream + asset_name: mla.h + + - name: Release CPP Header file + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./bindings/C/mla.hpp + asset_content_type: application/octet-stream + asset_name: mla.hpp + diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index 3a2b7af..0000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,190 +0,0 @@ -name: Build & test - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -env: - CARGO_TERM_COLOR: always - -jobs: - build: - strategy: - matrix: - build: [linux, macos, windows] - include: - - build: linux - os: ubuntu-latest - - build: macos - os: macos-latest - - build: windows - os: windows-latest - extension: .exe - - runs-on: ${{matrix.os}} - - steps: - - uses: actions/checkout@v2 - - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - - name: Build - env: - RUSTFLAGS: -D warnings - uses: actions-rs/cargo@v1 - with: - command: build - args: --release --all-features --all --exclude mla-fuzz-afl --verbose - - name: Run tests - run: cargo test --all --exclude mla-fuzz-afl --release --verbose - - name: Upload resulting 'mlar' - uses: actions/upload-artifact@v1 - with: - name: ${{ matrix.build }} - path: ./target/release/mlar${{ matrix.extension }} - - long-tests: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - - name: Run long tests - run: cd mla && cargo test --release -- --ignored - - test-bindings-c-cpp-linux: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - - name: Run C bindings tests on Linux - working-directory: bindings/C/tests/linux-gcc-g++/ - run: make CC=gcc - - name: Run C bindings tests on Linux - working-directory: bindings/C/tests/linux-gcc-g++/ - run: make CC=g++ - - test-bindings-c-cpp-windows: - strategy: - matrix: - version: [Debug-c, Release-c, Debug-cpp, Release-cpp] - target: [x86_64-pc-windows-msvc, i686-pc-windows-msvc] - include: - - version: Debug-c - cargo_arg: "" - - version: Release-c - cargo_arg: --release - - version: Debug-cpp - cargo_arg: "" - - version: Release-cpp - cargo_arg: --release - - target: i686-pc-windows-msvc - msvc_platform: Win32 - - target: x86_64-pc-windows-msvc - msvc_platform: x64 - runs-on: windows-latest - steps: - - uses: actions/checkout@v2 - - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - target: ${{ matrix.target }} - - uses: microsoft/setup-msbuild@v1.0.2 - - name: Build static library for Windows - uses: actions-rs/cargo@v1 - with: - command: build - args: ${{ matrix.cargo_arg }} --manifest-path=bindings/C/Cargo.toml --target=${{ matrix.target }} - - name: Compile C/CPP bindings test program for Windows - working-directory: bindings/C/tests/windows-msvc/ - run: msbuild mla-bindings-test.sln /p:Platform=${{ matrix.msvc_platform }} /p:Configuration=${{ matrix.version }} - - name: Run C/CPP bindings test program on Windows - working-directory: bindings/C/tests/windows-msvc/${{ matrix.msvc_platform }}/${{ matrix.version }}/ - run: ./mla-bindings-test.exe - - sanity-checks: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - - uses: actions-rs/cargo@v1 - with: - command: install - args: cbindgen - # Assert .h and .hpp bindings files are the ones generated - - name: Test C header - working-directory: bindings/C - run: cbindgen --config cbindgen_c.toml | diff - mla.h - - name: Test C++ header - working-directory: bindings/C - run: cbindgen --config cbindgen_cpp.toml | diff - mla.hpp - - afl-build: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - - name: Install dependencies - run: sudo apt-get install llvm - - name: Install cargo-afl binary crate - uses: actions-rs/install@v0.1 - with: - crate: afl - version: latest - use-tool-cache: true - - name: Test AFL build - env: - RUSTFLAGS: -D warnings - run: cargo afl build - - fmt: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - components: rustfmt - - name: Check format - run: cargo fmt --all -- --check - - audit: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Security audit - uses: actions-rs/audit-check@v1 - with: - token: ${{ secrets.GITHUB_TOKEN }} - - clippy: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - components: clippy - - name: Install dependencies - run: sudo apt-get install llvm - - name: Install cargo-afl binary crate - uses: actions-rs/install@v0.1 - with: - crate: afl - version: latest - use-tool-cache: true - - uses: actions-rs/cargo@v1 - with: - command: clippy - args: -- -D warnings