name: CI on: push: branches: [ "main" ] pull_request: branches: [ "main" ] env: CARGO_TERM_COLOR: always RUST_BACKTRACE: "full" jobs: ci: runs-on: ${{ matrix.os }} strategy: matrix: os: [windows-2019, macos-11, ubuntu-20.04] steps: - name: Checkout uses: actions/checkout@v3 with: submodules: recursive - name: Cache uses: actions/cache@v3 with: path: | ~/.cargo target key: ${{ matrix.os }} - name: Install dependencies run: | if [ "$RUNNER_OS" == "Linux" ]; then sudo apt update sudo apt install -y libgtk-3-dev elif [ "$RUNNER_OS" == "macOS" ]; then cargo install cargo-bundle rustup target install aarch64-apple-darwin fi shell: bash - name: Test run: cargo test --release - name: Build run: | if [ "$RUNNER_OS" == "macOS" ]; then cargo bundle --release cargo bundle --release --target aarch64-apple-darwin mv target/release/bundle/osx/Gupax.app Gupax-macos-x64.app mv target/aarch64-apple-darwin/release/bundle/osx/Gupax.app Gupax-macos-arm64.app tar -cf macos.tar Gupax-macos-arm64.app Gupax-macos-x64.app elif [ "$RUNNER_OS" == "Linux" ]; then cargo build --release --target x86_64-unknown-linux-gnu mv target/x86_64-unknown-linux-gnu/release/gupax . tar -cf linux.tar gupax else cargo build --release fi shell: bash - name: Archive (Windows) if: ${{ runner.os == 'Windows' }} uses: actions/upload-artifact@v3 with: name: windows path: target/release/gupax.exe - name: Archive if: ${{ runner.os == 'macOS' }} uses: actions/upload-artifact@v3 with: name: macos path: macos.tar - name: Archive (Linux) if: ${{ runner.os == 'Linux' }} uses: actions/upload-artifact@v3 with: name: linux path: linux.tar