diff --git a/.github/workflows/develop_pr.yml b/.github/workflows/develop_pr.yml new file mode 100644 index 0000000..31a9655 --- /dev/null +++ b/.github/workflows/develop_pr.yml @@ -0,0 +1,137 @@ +name: Develop PR + +on: + pull_request: + branches: [ "main" ] + +env: + CARGO_TERM_COLOR: always + +jobs: + style: + name: Check Style + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v1 + - name: Install rust + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + components: rustfmt + profile: minimal + override: true + - name: cargo fmt -- --check + uses: actions-rs/cargo@v1 + with: + command: fmt + args: --all -- --check + + + test: + name: Test + if: always() + runs-on: ubuntu-latest + + strategy: + matrix: + build: [ stable, beta, nightly ] + include: + - build: beta + rust: beta + - build: nightly + rust: nightly + benches: true + + steps: + - name: Checkout + uses: actions/checkout@v1 + + - name: Install rust + uses: actions-rs/toolchain@v1 + with: + toolchain: ${{ matrix.rust || 'stable' }} + profile: minimal + override: true + + - name: Build debug + uses: actions-rs/cargo@v1 + with: + command: build + args: ${{ matrix.features }} + + - name: Test + uses: actions-rs/cargo@v1 + with: + command: test + args: ${{ matrix.features }} + + - name: Test all benches + if: matrix.benches + uses: actions-rs/cargo@v1 + with: + command: test + args: --benches ${{ matrix.features }} + deploy: + name: Deploy + needs: [ test ] + if: startsWith(github.ref, 'refs/tags/') + strategy: + matrix: + os: [ ubuntu-latest ] # Default os for build + target: [ aarch64-unknown-linux-gnu, + i686-pc-windows-gnu, x86_64-pc-windows-gnu, + i686-unknown-linux-gnu, x86_64-unknown-linux-gnu, + x86_64-apple-darwin ] + exclude: # Do not build for macOS on Linux + - target: x86_64-apple-darwin + os: ubuntu-latest + include: # List of all targets to build for and the name for common mortals + - target: aarch64-unknown-linux-gnu + name: linux-arm64 + - target: i686-pc-windows-gnu + name: windows-i686 + - target: x86_64-pc-windows-gnu + name: windows-x86_64 + - target: i686-unknown-linux-gnu + name: linux-i686 + - target: x86_64-unknown-linux-gnu + name: linux-x86_64 + - target: x86_64-apple-darwin + name: macos-x86_64 + os: macos-latest + + + # Runs on latest ubuntu by default except for windows targets + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout + uses: actions/checkout@v1 + + - name: Install rust + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + profile: minimal + override: true + target: ${{ matrix.target }} + + - name: Install OpenSSL (Linux & Windows) # Windows building is running on Linux + if: matrix.target != 'x86_64-apple-darwin' + run: | + sudo apt-get update + sudo apt-get install libssl-dev + + - name: Install OpenSSL (macOS) + if: matrix.target == 'x86_64-apple-darwin' + run: | + brew update + brew install openssl + + - name: Build release + uses: actions-rs/cargo@v1 + with: + use-cross: true + command: build + args: --release --target ${{ matrix.target }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d705803..36089f1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -110,6 +110,7 @@ jobs: steps: - name: Checkout uses: actions/checkout@v1 + - name: Install rust uses: actions-rs/toolchain@v1 with: @@ -118,6 +119,18 @@ jobs: override: true target: ${{ matrix.target }} + - name: Install OpenSSL (Linux & Windows) # Windows building is running on Linux + if: matrix.target != 'x86_64-apple-darwin' + run: | + sudo apt-get update + sudo apt-get install libssl-dev + + - name: Install OpenSSL (macOS) + if: matrix.target == 'x86_64-apple-darwin' + run: | + brew update + brew install openssl + - name: Build release uses: actions-rs/cargo@v1 with: @@ -133,7 +146,6 @@ jobs: if: matrix.target == 'x86_64-pc-windows-gnu' || matrix.target == 'i686-pc-windows-gnu' run: mv target/${{ matrix.target }}/release/fbf.exe target/${{ matrix.target }}/release/fbf-${{ matrix.name }}.exe - - name: Upload release uses: softprops/action-gh-release@v1 with: