diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c9d6a7c..abc8ea3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,11 +1,12 @@ name: Continuous Integration on: + merge_group: pull_request: branches: - - main - schedule: - - cron: '0 0 * * *' + - mq-test + # schedule: + # - cron: '0 0 * * *' concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -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: @@ -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: @@ -115,6 +150,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 @@ -156,6 +192,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 diff --git a/.github/workflows/merge-queue.yml b/.github/workflows/merge-queue.yml deleted file mode 100644 index 56c617e..0000000 --- a/.github/workflows/merge-queue.yml +++ /dev/null @@ -1,203 +0,0 @@ -name: Merge Queue CI -on: - merge_group: - # schedule: - # - cron: '0 0 * * *' - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -env: - CN_APP_SLUG: verso-nightly - -jobs: - build-linux: - name: Build [Linux] - runs-on: ubuntu-latest - env: - RUSTC_WRAPPER: sccache - CCACHE: sccache - SCCACHE_GHA_ENABLED: 'true' - WAYLAND_DISPLAY: wayland-1 - WLR_BACKENDS: headless - WLR_LIBINPUT_NO_DEVICES: 1 - XDG_RUNTIME_DIR: /tmp - XDG_SESSION_TYPE: wayland - 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: Run sccache-cache - uses: mozilla-actions/sccache-action@v0.0.3 - - - 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: Tar Binary - if: ${{ github.event_name == 'schedule' }} - run: tar -czvf verso-x86_64-unknown-linux-gnu.tar.gz -C ./target/release/ verso - - - name: Upload artifact - if: ${{ github.event_name == 'schedule' }} - uses: actions/upload-artifact@v4 - with: - name: verso-x86_64-unknown-linux-gnu - path: verso-x86_64-unknown-linux-gnu.tar.gz - - build-windows: - name: Build [Windows] - runs-on: windows-latest - env: - CCACHE: sccache - SCCACHE_GHA_ENABLED: 'true' - steps: - - name: Checkout the repository - uses: actions/checkout@v4 - - - name: Install Rust - uses: dsherret/rust-toolchain-file@v1 - - - name: Install scroop - uses: MinoruSekine/setup-scoop@v3 - - - name: Install dependencies - run: scoop install git python llvm cmake curl - - - name: Run sccache-cache - uses: mozilla-actions/sccache-action@v0.0.3 - - - name: Build - run: | - cargo build --release - cargo test --release - - - name: Tar Binary - if: ${{ github.event_name == 'schedule' }} - run: tar -czvf verso-x86_64-pc-windows-msvc.tar.gz -C ./target/release/ verso.exe - - - name: Upload artifact - if: ${{ github.event_name == 'schedule' }} - uses: actions/upload-artifact@v4 - with: - name: verso-x86_64-pc-windows-msvc - path: verso-x86_64-pc-windows-msvc.tar.gz - - build-macos: - name: Build [macOS] - strategy: - fail-fast: false - matrix: - platform: - - { target: aarch64-apple-darwin, os: macos-14 } - - { target: x86_64-apple-darwin, os: macos-13 } - runs-on: ${{ matrix.platform.os }} - env: - RUSTC_WRAPPER: sccache - CCACHE: sccache - SCCACHE_GHA_ENABLED: 'true' - steps: - - name: Checkout the repository - uses: actions/checkout@v4 - - - name: Install Rust - uses: dsherret/rust-toolchain-file@v1 - - - name: Install dependencies - run: brew install cmake pkg-config - - - name: Run sccache-cache - uses: mozilla-actions/sccache-action@v0.0.3 - - - name: Build - run: | - cargo build --release - cargo test --release - - - name: Tar Binary - if: ${{ github.event_name == 'schedule' }} - run: tar -czvf verso-${{ matrix.platform.target }}.tar.gz -C ./target/release/ verso - - - name: Upload artifact - if: ${{ github.event_name == 'schedule' }} - uses: actions/upload-artifact@v4 - with: - name: verso-${{ matrix.platform.target }} - path: verso-${{ matrix.platform.target }}.tar.gz - - release-nightly: - if: ${{ github.event_name == 'schedule' }} - runs-on: ubuntu-latest - needs: ['build-macos', 'build-windows', 'build-linux'] - steps: - - uses: actions/checkout@v4 - - uses: actions/download-artifact@v4 - - - name: Fetch Verso version - run: | - echo "VERSO_VERSION=$(cargo metadata --format-version=1 --no-deps | jq -r '.packages[] | select(.name == "verso") | .version')-$(date '+%Y%m%d')-nightly" >> $GITHUB_ENV - - - name: Draft release - uses: crabnebula-dev/cloud-release@v0.1.0 - id: draft - with: - command: release draft ${{ env.CN_APP_SLUG }} $VERSO_VERSION - api-key: ${{ secrets.CN_API_KEY }} - - - name: Upload macOS binary (ARM) - uses: crabnebula-dev/cloud-release@v0.1.0 - with: - command: release upload --file "verso-aarch64-apple-darwin/verso-aarch64-apple-darwin.tar.gz" ${{ env.CN_APP_SLUG }} $VERSO_VERSION - api-key: ${{ secrets.CN_API_KEY }} - - - name: Upload macOS binary (Intel) - uses: crabnebula-dev/cloud-release@v0.1.0 - with: - command: release upload --file "verso-x86_64-apple-darwin/verso-x86_64-apple-darwin.tar.gz" ${{ env.CN_APP_SLUG }} $VERSO_VERSION - api-key: ${{ secrets.CN_API_KEY }} - - - name: Upload Windows binary - uses: crabnebula-dev/cloud-release@v0.1.0 - with: - command: release upload --file "verso-x86_64-pc-windows-msvc/verso-x86_64-pc-windows-msvc.tar.gz" ${{ env.CN_APP_SLUG }} $VERSO_VERSION - api-key: ${{ secrets.CN_API_KEY }} - - - name: Upload Linux binary - uses: crabnebula-dev/cloud-release@v0.1.0 - with: - command: release upload --file "verso-x86_64-unknown-linux-gnu/verso-x86_64-unknown-linux-gnu.tar.gz" ${{ env.CN_APP_SLUG }} $VERSO_VERSION - api-key: ${{ secrets.CN_API_KEY }} - - - name: Publish release - uses: crabnebula-dev/cloud-release@v0.1.0 - with: - command: release publish ${{ env.CN_APP_SLUG }} $VERSO_VERSION - api-key: ${{ secrets.CN_API_KEY }} diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml deleted file mode 100644 index ca22d10..0000000 --- a/.github/workflows/pull-request.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: Pull Request CI - -on: - pull_request: - branches: - - mq-test - -jobs: - check-linux: - name: Check [Linux] - 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