summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNamilskyy <alive6863@gmail.com>2025-11-30 20:57:20 +0300
committerNamilskyy <alive6863@gmail.com>2025-11-30 20:57:20 +0300
commitb31d7c1b419314812a3f7e1b9879668a53405add (patch)
tree2f260110b78e46396ddeadbf9542b4a16179c3d7
parent40f6c7b8bd9806c3dec85c03f8de98acdf3da649 (diff)
Fixed CI file
-rw-r--r--.woodpecker.yaml156
1 files changed, 61 insertions, 95 deletions
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