name: Continuous integration on: push: branches: - "**" tags-ignore: - "electron-injector-*" pull_request: env: CRATE_NAME: electron-injector RUST_BACKTRACE: 1 jobs: test: name: Test - ${{ matrix.platform.os_name }} with rust ${{ matrix.toolchain }} runs-on: ${{ matrix.platform.os }} strategy: fail-fast: false matrix: platform: - os_name: Linux os: ubuntu-latest target: x86_64-unknown-linux-gnu - os_name: macOS os: macOS-latest target: x86_64-apple-darwin - os_name: Windows os: windows-latest target: x86_64-pc-windows-msvc toolchain: - stable - beta - nightly steps: - uses: actions/checkout@v3 - name: Cache cargo & target directories uses: Swatinem/rust-cache@v2 - name: Install toolchain uses: dtolnay/rust-toolchain@stable with: toolchain: ${{ matrix.toolchain }} components: rustfmt - name: Configure Git run: | git config --global user.email "jdoe@example.com" git config --global user.name "J. Doe" - name: Run cargo check run: cargo check --workspace --locked --target=${{ matrix.platform.target }} - name: Run cargo test run: cargo test --workspace --locked --target=${{ matrix.platform.target }} release: name: Release - ${{ matrix.platform.release_for }} if: startsWith( github.ref, 'refs/tags/v' ) || github.ref == 'refs/tags/test-release' needs: [test] strategy: matrix: platform: - release_for: FreeBSD-x86_64 os: ubuntu-20.04 target: x86_64-unknown-freebsd bin: electron-injector name: electron-injector-FreeBSD-x86_64.tar.gz - release_for: Linux-x86_64 os: ubuntu-20.04 target: x86_64-unknown-linux-musl bin: electron-injector name: electron-injector-Linux-x86_64-musl.tar.gz - release_for: Linux-aarch64 os: ubuntu-20.04 target: aarch64-unknown-linux-musl bin: electron-injector name: electron-injector-Linux-aarch64-musl.tar.gz - release_for: Linux-arm os: ubuntu-20.04 target: arm-unknown-linux-musleabi bin: electron-injector name: electron-injector-Linux-arm-musl.tar.gz - release_for: Linux-i586 os: ubuntu-20.04 target: i586-unknown-linux-musl bin: electron-injector name: electron-injector-Linux-i586-musl.tar.gz - release_for: Linux-mips os: ubuntu-20.04 target: mips-unknown-linux-musl bin: electron-injector name: electron-injector-Linux-mips.tar.gz - release_for: Linux-mipsel os: ubuntu-20.04 target: mipsel-unknown-linux-musl bin: electron-injector name: electron-injector-Linux-mipsel.tar.gz - release_for: Linux-mips64 os: ubuntu-20.04 target: mips64-unknown-linux-muslabi64 bin: electron-injector name: electron-injector-Linux-mips64.tar.gz - release_for: Linux-mips64el os: ubuntu-20.04 target: mips64el-unknown-linux-muslabi64 bin: electron-injector name: electron-injector-Linux-mips64el.tar.gz - release_for: Linux-powerpc os: ubuntu-20.04 target: powerpc-unknown-linux-gnu bin: electron-injector name: electron-injector-Linux-powerpc-gnu.tar.gz - release_for: Linux-powerpc64 os: ubuntu-20.04 target: powerpc64-unknown-linux-gnu bin: electron-injector name: electron-injector-Linux-powerpc64-gnu.tar.gz - release_for: Linux-powerpc64le os: ubuntu-20.04 target: powerpc64le-unknown-linux-gnu bin: electron-injector name: electron-injector-Linux-powerpc64le.tar.gz - release_for: Linux-riscv64 os: ubuntu-20.04 target: riscv64gc-unknown-linux-gnu bin: electron-injector name: electron-injector-Linux-riscv64gc-gnu.tar.gz - release_for: Linux-s390x os: ubuntu-20.04 target: s390x-unknown-linux-gnu bin: electron-injector name: electron-injector-Linux-s390x-gnu.tar.gz - release_for: NetBSD-x86_64 os: ubuntu-20.04 target: x86_64-unknown-netbsd bin: electron-injector name: electron-injector-NetBSD-x86_64.tar.gz - release_for: Windows-aarch64 os: windows-latest target: aarch64-pc-windows-msvc bin: electron-injector.exe name: electron-injector-Windows-aarch64.zip - release_for: Windows-i686 os: windows-latest target: i686-pc-windows-msvc bin: electron-injector.exe name: electron-injector-Windows-i686.zip - release_for: Windows-x86_64 os: windows-latest target: x86_64-pc-windows-msvc bin: electron-injector.exe name: electron-injector-Windows-x86_64.zip - release_for: macOS-x86_64 os: macOS-latest target: x86_64-apple-darwin bin: electron-injector name: electron-injector-Darwin-x86_64.tar.gz - release_for: macOS-aarch64 os: macOS-latest target: aarch64-apple-darwin bin: electron-injector name: electron-injector-Darwin-aarch64.tar.gz runs-on: ${{ matrix.platform.os }} steps: - name: Checkout uses: actions/checkout@v3 - name: Build binary uses: houseabsolute/actions-rust-cross@v0 with: target: ${{ matrix.platform.target }} args: "--locked --release" strip: true - name: Package as archive shell: bash run: | cd target/${{ matrix.platform.target }}/release if [[ "${{ matrix.platform.os }}" == "windows-latest" ]]; then 7z a ../../../${{ matrix.platform.name }} ${{ matrix.platform.bin }} else tar czvf ../../../${{ matrix.platform.name }} ${{ matrix.platform.bin }} fi cd - - name: Generate SHA-256 if: matrix.platform.os == 'macOS-latest' run: shasum -a 256 ${{ matrix.platform.name }} - name: Publish GitHub release uses: softprops/action-gh-release@v1 with: draft: true files: "electron-injector-*" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} if: startsWith( github.ref, 'refs/tags/v' )