From 16478adb35502bb022dc00b3d2f330207d4cecd2 Mon Sep 17 00:00:00 2001 From: Viktor <35001580+bzglve@users.noreply.github.com> Date: Mon, 2 Sep 2024 09:41:19 +0600 Subject: [PATCH] ci/cd (#1) * Create rust.yml * ci(workflow): add Rust formatting and enhance build steps - Introduced a new job `fmt` to check code formatting with `rustfmt` in the GitHub Actions workflow. - Updated the `build` job to depend on the `fmt` job, ensuring code is properly formatted before building. - Added steps to install Clippy and run it with `--deny warnings`. - Set up installation and build steps for `gtk4-layer-shell` dependencies using Meson and Ninja. - Changed build command to `cargo build --release` for optimized builds. * Update rust.yml --- .github/workflows/rust.yml | 97 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 .github/workflows/rust.yml diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml new file mode 100644 index 0000000..e9e3f4b --- /dev/null +++ b/.github/workflows/rust.yml @@ -0,0 +1,97 @@ +name: Rust + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + +env: + CARGO_TERM_COLOR: always + +jobs: + fmt: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Rust + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + + - name: Install Rustfmt + run: rustup component add rustfmt + + - name: Check Rustfmt + run: cargo fmt -- --check + + build: + runs-on: ubuntu-latest + + needs: fmt + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Rust + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + + - uses: Swatinem/rust-cache@v2 + name: Add caching + + - name: Install Clippy + run: rustup component add clippy + + - name: Setup gtk4-layer-shell + run: | + echo "Updating packages" + sudo apt update + + echo "Installing dependencies" + sudo apt install -y \ + meson \ + ninja-build \ + libwayland-dev \ + libgtk-4-dev \ + gobject-introspection \ + libgirepository1.0-dev \ + gtk-doc-tools \ + python3 \ + valac + + echo "Downloading sources" + wget https://github.com/wmww/gtk4-layer-shell/archive/refs/tags/v1.0.2.zip + + echo "Extracting..." + unzip v1.0.2.zip && cd gtk4-layer-shell-1.0.2 + + echo "Setting up the build environment with Meson, enabling examples, docs, and tests" + meson setup -Dexamples=true -Ddocs=true -Dtests=true build + + echo "Building the project using Ninja" + ninja -C build + + echo "Installing the built project" + sudo ninja -C build install + + echo "Updating the shared library cache" + sudo ldconfig + + - name: Install dependencies + run: cargo fetch + + - name: Run Clippy + run: cargo clippy --all-targets -- --deny warnings + + - name: Build + run: cargo build --release + + - name: Run tests + run: cargo test --verbose