diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml new file mode 100644 index 0000000..2d35f67 --- /dev/null +++ b/.github/workflows/CI.yml @@ -0,0 +1,104 @@ +name: CI + +on: + pull_request: + paths: + - 'src/**' + - 'Cargo.*' + - '.github/workflows/**' + push: + branches: + - master + tags: + - 'v*.*.*' + +jobs: + style: + name: Check Style + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup rust + uses: dtolnay/rust-toolchain@stable + with: + components: rustfmt + + - name: cargo fmt -- --check + run: cargo fmt --all -- --check + + test: + name: Test + needs: [style] + runs-on: ubuntu-latest + + strategy: + matrix: + build: [stable, beta, nightly] + include: + - build: nightly + benches: true + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup rust + uses: dtolnay/rust-toolchain@master + with: + toolchain: ${{ matrix.build || 'stable' }} + + - name: install whisper.cpp deps + run: sudo apt-get update && sudo apt-get install libclang-dev -y + + - name: Build debug + run: cargo build --locked + + - name: Test + run: cargo test --all-features + + - name: Test all benches + if: matrix.benches + run: cargo test --benches --all-features + + deploy-linux: + name: deploy-${{ matrix.target }} + permissions: + contents: write + needs: [test] + if: startsWith(github.ref, 'refs/tags/') + runs-on: ubuntu-latest + strategy: + matrix: + target: [x86_64-unknown-linux-gnu] + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup rust + uses: dtolnay/rust-toolchain@stable + with: + targets: ${{ matrix.target }} + + - name: Install Cross + run: cargo install cross + + - name: install whisper.cpp deps + run: sudo apt-get update && sudo apt-get install libclang-dev -y + + - name: Build target + run: cross build --release --locked --target ${{ matrix.target }} + + - name: Package + shell: bash + run: | + #strip target/${{ matrix.target }}/release/yt-cli-live + cd target/${{ matrix.target }}/release + tar czvf ../../../yt-cli-live-${{ matrix.target }}.tar.gz yt-cli-live + cd - + + - name: Publish + uses: softprops/action-gh-release@v1 + with: + files: 'yt-cli-live*'