diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..946a001 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,129 @@ +on: [push, pull_request] + +name: build-and-test + +jobs: + ubuntu: + name: Ubuntu 18.04 + runs-on: ubuntu-18.04 + strategy: + matrix: + rust: + - stable + steps: + - name: Checkout sources + uses: actions/checkout@v2 + + - name: Install toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: ${{ matrix.rust }} + override: true + + - name: Run cargo build + uses: actions-rs/cargo@v1 + with: + command: build + args: --release + + - name: Run cargo test + uses: actions-rs/cargo@v1 + with: + command: test + + - name: Install dependencies for Python test script + run: | + sudo apt-get update + sudo apt-get install libmagic1 + python3 -m pip install python-magic + + - name: Run test script + run: python3 makeshift_testing.py + + - name: Strip binary + run: strip target/release/ouch + + - name: Upload binary + uses: actions/upload-artifact@v2 + with: + name: 'ouch-ubuntu-18.04-glibc' + path: target/release/ouch + + macos: + name: macOS + runs-on: macos-latest + strategy: + matrix: + rust: + - stable + steps: + - name: Checkout sources + uses: actions/checkout@v2 + + - name: Install toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: ${{ matrix.rust }} + override: true + + - name: Run cargo build + uses: actions-rs/cargo@v1 + with: + command: build + args: --release + + - name: Run cargo test + uses: actions-rs/cargo@v1 + with: + command: test + + - name: Install dependencies for Python test script + run: | + brew install libmagic + python3 -m pip install python-magic + + - name: Strip binary + run: strip target/release/ouch + + - name: Upload binary + uses: actions/upload-artifact@v2 + with: + name: 'ouch-macOS' + path: target/release/ouch + + - name: Run test script + run: python3 makeshift_testing.py + + windows: + name: Windows Server + runs-on: windows-2019 + strategy: + matrix: + rust: + - stable + steps: + - name: Checkout sources + uses: actions/checkout@v2 + + - name: Install toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: ${{ matrix.rust }} + override: true + + - name: Run cargo build + uses: actions-rs/cargo@v1 + with: + command: build + args: --release + + - name: Run cargo test + uses: actions-rs/cargo@v1 + with: + command: test + + - name: Upload binary + uses: actions/upload-artifact@v2 + with: + name: 'ouch-windows' + path: target/release/ouch \ No newline at end of file