From b31d7c1b419314812a3f7e1b9879668a53405add Mon Sep 17 00:00:00 2001 From: Namilskyy Date: Sun, 30 Nov 2025 20:57:20 +0300 Subject: Fixed CI file --- .woodpecker.yaml | 156 ++++++++++++++++++++++--------------------------------- 1 file changed, 61 insertions(+), 95 deletions(-) (limited to '.woodpecker.yaml') diff --git a/.woodpecker.yaml b/.woodpecker.yaml index 3e4bb1a..343c5ce 100644 --- a/.woodpecker.yaml +++ b/.woodpecker.yaml @@ -1,96 +1,62 @@ - -when: - push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] - -jobs: - +# Define the sequence of steps for the CI pipeline +steps: + # Step 1: Run tests and checks (formatting, clippy, build, test) test-and-check: - runs-on: ubuntu-latest - strategy: - matrix: - rust: [ "stable", "beta" ] - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Install Rust (${{ matrix.rust }}) - uses: dtolnay/rust-toolchain@stable - with: - toolchain: ${{ matrix.rust }} - components: rustfmt, clippy - - - name: Cache Cargo registry and index - uses: actions/cache@v4 - with: - path: | - ~/.cargo/registry - ~/.cargo/git - target - key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - - - name: Check formatting - run: cargo fmt --all -- --check - - - name: Lint with clippy - run: cargo clippy --jobs 2 -- -D warnings - - - name: Build - run: cargo build --verbose --release --jobs 2 - - - name: Run tests - run: cargo test --verbose --jobs 2 - - build-cross: - runs-on: ubuntu-latest - strategy: - matrix: - target: [ x86_64-unknown-linux-gnu, aarch64-unknown-linux-gnu ] - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Install Rust stable - uses: dtolnay/rust-toolchain@stable - with: - toolchain: stable - targets: ${{ matrix.target }} - - - name: Cache Cargo registry and index - uses: actions/cache@v4 - with: - path: | - ~/.cargo/registry - ~/.cargo/git - target - key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}-target-${{ matrix.target }} - - - name: Install cross-compilation tools - if: matrix.target == 'aarch64-unknown-linux-gnu' - run: | - sudo apt update - sudo apt install -y gcc-aarch64-linux-gnu - - - name: Set up environment for cross-compilation - run: | - echo "CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc" >> $CODEBERG_ENV - if: matrix.target == 'aarch64-unknown-linux-gnu' - - - name: Build for ${{ matrix.target }} - run: cargo build --target ${{ matrix.target }} --release --verbose --jobs 2 - -# release: -# runs-on: ubuntu-latest -# needs: [test-and-check, build-cross] # Запускается только если предыдущие задания прошли успешно -# if: startsWith(github.ref, 'refs/tags/') # Запускается только при создании тега -# steps: -# - name: Checkout code -# uses: actions/checkout@v4 -# - name: Install Rust stable -# uses: dtolnay/rust-toolchain@stable -# with: -# toolchain: stable -# - name: Build release -# run: cargo build --release --verbose + image: ubuntu:latest + commands: + # Install dependencies + - apt-get update && apt-get install -y curl git + # Install Rust toolchain + - curl https://sh.rustup.rs -sSf | sh -s -- -y + # Source the cargo environment to make rustup/cargo available + - source "$HOME/.cargo/env" + # Run formatting check + - cargo fmt --all -- --check + # Run clippy linter with warnings as errors + - cargo clippy --jobs 2 -- -D warnings + # Build the project in release mode + - cargo build --verbose --release --jobs 2 + # Run tests + - cargo test --verbose --jobs 2 + when: + branch: main + event: [ push, pull_request ] + + # Step 2: Build for x86_64 architecture + build-x86_64: + image: ubuntu:latest + commands: + # Install dependencies + - apt-get update && apt-get install -y curl git + # Install Rust toolchain + - curl https://sh.rustup.rs -sSf | sh -s -- -y + # Source the cargo environment + - source "$HOME/.cargo/env" + # Add the x86_64 target + - rustup target add x86_64-unknown-linux-gnu + # Build for x86_64 target + - cargo build --target x86_64-unknown-linux-gnu --release --verbose --jobs 2 + when: + branch: main + event: [ push, pull_request ] + + # Step 3: Build for aarch64 architecture + build-aarch64: + image: ubuntu:latest + commands: + # Install dependencies including aarch64 cross-compiler + - apt-get update && apt-get install -y curl git gcc-aarch64-linux-gnu + # Install Rust toolchain + - curl https://sh.rustup.rs -sSf | sh -s -- -y + # Source the cargo environment + - source "$HOME/.cargo/env" + # Add the aarch64 target + - rustup target add aarch64-unknown-linux-gnu + # Configure the linker for aarch64 target in Cargo config + - echo '[target.aarch64-unknown-linux-gnu]' >> "$HOME/.cargo/config.toml" + - echo 'linker = "aarch64-linux-gnu-gcc"' >> "$HOME/.cargo/config.toml" + # Build for aarch64 target + - cargo build --target aarch64-unknown-linux-gnu --release --verbose --jobs 2 + when: + branch: main + event: [ push, pull_request ] \ No newline at end of file -- cgit v1.2.3