diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml new file mode 100644 index 0000000..87fbe18 --- /dev/null +++ b/.github/workflows/rust.yml @@ -0,0 +1,65 @@ +name: Rust + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +permissions: + pages: write + id-token: write + +env: + CARGO_TERM_COLOR: always + RUSTFLAGS: "-Dwarnings" + +jobs: + build: + strategy: + matrix: + features: ["default"] + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - name: Build + run: cargo build --verbose --no-default-features --features "${{ matrix.features }}" + - name: Run clippy + run: cargo clippy --all-targets --no-default-features --features "${{ matrix.features }}" + - name: Run tests + run: cargo test --verbose --no-default-features --features "${{ matrix.features }}" + - name: Build release version + run: cargo build --release --verbose --no-default-features --features "${{ matrix.features }}" + - name: Upload Artifacts + uses: actions/upload-artifact@v4 + with: + name: zinn-${{ matrix.features }} + path: target/release/zinn + + docs: + runs-on: ubuntu-latest + needs: build + steps: + - uses: actions/checkout@v4 + - name: Build docs + run: cargo doc + - name: Fix file permissions + shell: sh + run: | + chmod -c -R +rX "target/doc" | + while read line; do + echo "::warning title=Invalid file permissions automatically fixed::$line" + done + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: './target/doc' + - name: Setup Pages + uses: actions/configure-pages@v5 + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 + +