diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c9d6a7cb..97382b9e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,6 +1,7 @@ name: Continuous Integration on: + merge_group: pull_request: branches: - main @@ -15,7 +16,40 @@ env: CN_APP_SLUG: verso-nightly jobs: + pr-fast-check: + if: ${{ github.event_name == 'pull_request' }} + name: Pull Request Fast Check + runs-on: ubuntu-latest + steps: + - name: Checkout the repository + uses: actions/checkout@v4 + + - name: Install Rust + uses: dsherret/rust-toolchain-file@v1 + + - name: Set env + run: echo "LIBCLANG_PATH=/usr/lib/llvm-14/lib" >> $GITHUB_ENV + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt install build-essential python3-pip ccache clang cmake curl \ + g++ git gperf libdbus-1-dev libfreetype6-dev libgl1-mesa-dri \ + libgles2-mesa-dev libglib2.0-dev libgstreamer-plugins-base1.0-dev \ + gstreamer1.0-plugins-good libgstreamer-plugins-good1.0-dev \ + gstreamer1.0-plugins-bad libgstreamer-plugins-bad1.0-dev \ + gstreamer1.0-plugins-ugly gstreamer1.0-plugins-base \ + libgstreamer-plugins-base1.0-dev gstreamer1.0-libav \ + libgstrtspserver-1.0-dev gstreamer1.0-tools libges-1.0-dev \ + libharfbuzz-dev liblzma-dev libunwind-dev libunwind-dev libvulkan1 \ + libx11-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev \ + libxmu-dev libxmu6 libegl1-mesa-dev llvm-dev m4 xorg-dev sway + + - name: Check + run: cargo check + build-linux: + if: ${{ github.event_name != 'pull_request' }} name: Build [Linux] runs-on: ubuntu-latest env: @@ -53,17 +87,17 @@ jobs: libxmu-dev libxmu6 libegl1-mesa-dev llvm-dev m4 xorg-dev sway - name: Run sccache-cache - uses: mozilla-actions/sccache-action@v0.0.3 + uses: Mozilla-Actions/sccache-action@v0.0.4 - name: Build run: | cargo build --release - - name: Test - # Run sway(wayland compositor) in the background, winit will use it - run: | - sway > /dev/null 2>&1 & - cargo test --release + # - name: Test + # # Run sway(wayland compositor) in the background, winit will use it + # run: | + # sway > /dev/null 2>&1 & + # cargo test --release - name: Tar Binary if: ${{ github.event_name == 'schedule' }} @@ -77,6 +111,7 @@ jobs: path: verso-x86_64-unknown-linux-gnu.tar.gz build-windows: + if: ${{ github.event_name != 'pull_request' }} name: Build [Windows] runs-on: windows-latest env: @@ -96,12 +131,15 @@ jobs: run: scoop install git python llvm cmake curl - name: Run sccache-cache - uses: mozilla-actions/sccache-action@v0.0.3 + uses: Mozilla-Actions/sccache-action@v0.0.4 - name: Build run: | cargo build --release - cargo test --release + + # - name: Test + # run: | + # cargo test --release - name: Tar Binary if: ${{ github.event_name == 'schedule' }} @@ -115,6 +153,7 @@ jobs: path: verso-x86_64-pc-windows-msvc.tar.gz build-macos: + if: ${{ github.event_name != 'pull_request' }} name: Build [macOS] strategy: fail-fast: false @@ -138,12 +177,15 @@ jobs: run: brew install cmake pkg-config - name: Run sccache-cache - uses: mozilla-actions/sccache-action@v0.0.3 + uses: Mozilla-Actions/sccache-action@v0.0.4 - name: Build run: | cargo build --release - cargo test --release + + # - name: Test + # run: | + # cargo test --release - name: Tar Binary if: ${{ github.event_name == 'schedule' }} @@ -156,6 +198,19 @@ jobs: name: verso-${{ matrix.platform.target }} path: verso-${{ matrix.platform.target }}.tar.gz + build-result: + name: Build Result + runs-on: ubuntu-latest + if: always() + needs: ['build-macos', 'build-windows', 'build-linux'] + steps: + - name: Success + if: ${{ !contains(needs.*.result, 'failure') && !contains(needs.*.result, 'cancelled') }} + run: exit 0 + - name: Failure + if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') + run: exit 1 + release-nightly: if: ${{ github.event_name == 'schedule' }} runs-on: ubuntu-latest