TODO.md added. #24
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Rust CI/CD Pipeline | |
| on: | |
| push: | |
| branches: | |
| - main | |
| tags: | |
| - 'v*' | |
| pull_request: | |
| branches: | |
| - main | |
| env: | |
| CARGO_TERM_COLOR: always | |
| jobs: | |
| build_and_test: | |
| name: Build, Lint, and Test | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| - name: Install Rust Stable Toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: rustfmt, clippy | |
| - name: Cache Rust Dependencies | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Check Formatting (rustfmt) | |
| run: cargo fmt | |
| - name: Run Linter (cargo clippy) | |
| continue-on-error: true | |
| run: cargo clippy -- -D warnings | |
| - name: Build the Project | |
| run: cargo build --verbose | |
| - name: Run Tests | |
| continue-on-error: true | |
| run: cargo test --verbose | |
| - name: Security Audit (cargo audit) | |
| run: | | |
| cargo install cargo-audit | |
| cargo audit | |
| - name: Run Docker Image Build | |
| continue-on-error: true | |
| run: docker build -t entrors:latest . | |
| release: | |
| name: Release | |
| needs: build_and_test | |
| runs-on: ${{ matrix.os }} | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest, windows-latest] | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| - name: Install Rust Stable Toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Cache Rust Dependencies | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Build Release | |
| run: cargo build --release | |
| - name: Create Release | |
| uses: softprops/action-gh-release@v1 | |
| with: | |
| files: target/release/EntroRS${{ matrix.os == 'windows-latest' && '.exe' || '' }} | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |