Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

build: support merge queue #43

Merged
merged 1 commit into from
May 7, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 65 additions & 10 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
name: Continuous Integration

on:
merge_group:
pull_request:
branches:
- main
Expand All @@ -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:
Expand Down Expand Up @@ -53,17 +87,17 @@ jobs:
libxmu-dev libxmu6 libegl1-mesa-dev llvm-dev m4 xorg-dev sway

- name: Run sccache-cache
uses: mozilla-actions/[email protected].3
uses: Mozilla-Actions/[email protected].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' }}
Expand All @@ -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:
Expand All @@ -96,12 +131,15 @@ jobs:
run: scoop install git python llvm cmake curl

- name: Run sccache-cache
uses: mozilla-actions/[email protected].3
uses: Mozilla-Actions/[email protected].4

- name: Build
run: |
cargo build --release
cargo test --release

# - name: Test
# run: |
# cargo test --release

- name: Tar Binary
if: ${{ github.event_name == 'schedule' }}
Expand All @@ -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
Expand All @@ -138,12 +177,15 @@ jobs:
run: brew install cmake pkg-config

- name: Run sccache-cache
uses: mozilla-actions/[email protected].3
uses: Mozilla-Actions/[email protected].4

- name: Build
run: |
cargo build --release
cargo test --release

# - name: Test
# run: |
# cargo test --release

- name: Tar Binary
if: ${{ github.event_name == 'schedule' }}
Expand All @@ -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
Expand Down