name: Release on: push: tags: - "v*" jobs: build: name: Build ${{ matrix.target }} runs-on: ${{ matrix.os }} permissions: contents: read strategy: matrix: include: ## Linux builds # Glibc 2.31 - os: ubuntu-20.04 target: x86_64-unknown-linux-gnu artifact_name: target/x86_64-unknown-linux-gnu/release/libblink_cmp_fuzzy.so - os: ubuntu-20.04 target: aarch64-unknown-linux-gnu artifact_name: target/aarch64-unknown-linux-gnu/release/libblink_cmp_fuzzy.so # Musl 1.2.3 - os: ubuntu-latest target: x86_64-unknown-linux-musl artifact_name: target/x86_64-unknown-linux-musl/release/libblink_cmp_fuzzy.so - os: ubuntu-latest target: aarch64-unknown-linux-musl artifact_name: target/aarch64-unknown-linux-musl/release/libblink_cmp_fuzzy.so # Android(Termux) - os: ubuntu-latest target: aarch64-linux-android artifact_name: target/aarch64-linux-android/release/libblink_cmp_fuzzy.so ## macOS builds - os: macos-latest target: x86_64-apple-darwin artifact_name: target/x86_64-apple-darwin/release/libblink_cmp_fuzzy.dylib - os: macos-latest target: aarch64-apple-darwin artifact_name: target/aarch64-apple-darwin/release/libblink_cmp_fuzzy.dylib ## Windows builds - os: windows-latest target: x86_64-pc-windows-msvc artifact_name: target/x86_64-pc-windows-msvc/release/blink_cmp_fuzzy.dll steps: - uses: actions/checkout@v4 - name: Install Rust run: | rustup toolchain install nightly rustup default nightly rustup target add ${{ matrix.target }} - name: Build for Linux if: contains(matrix.os, 'ubuntu') run: | cargo install cross --git https://github.com/cross-rs/cross cross build --release --target ${{ matrix.target }} mv "${{ matrix.artifact_name }}" "${{ matrix.target }}.so" - name: Build for macOS if: contains(matrix.os, 'macos') run: | # Ventura (https://en.wikipedia.org/wiki/MacOS_version_history#Releases) MACOSX_DEPLOYMENT_TARGET="13" cargo build --release --target ${{ matrix.target }} mv "${{ matrix.artifact_name }}" "${{ matrix.target }}.dylib" - name: Build for Windows if: contains(matrix.os, 'windows') run: | cargo build --release --target ${{ matrix.target }} mv "${{ matrix.artifact_name }}" "${{ matrix.target }}.dll" - name: Upload artifacts uses: actions/upload-artifact@v4 with: name: ${{ matrix.target }} path: ${{ matrix.target }}.* release: name: Release needs: build runs-on: ubuntu-latest permissions: contents: write steps: - name: Download artifacts uses: actions/download-artifact@v4 - name: Generate checksums run: | for file in ./**/*; do sha256sum "$file" > "${file}.sha256" done - name: Upload Release Assets uses: softprops/action-gh-release@v2 with: name: ${{ github.ref_name }} tag_name: ${{ github.ref_name }} token: ${{ github.token }} files: ./**/* draft: false prerelease: false generate_release_notes: true deploy-docs: name: Deploy docs runs-on: ubuntu-latest permissions: contents: read steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 - name: Build run: npm ci && npm run build:release working-directory: docs - name: Deploy uses: cloudflare/wrangler-action@v3 with: apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} command: pages deploy docs/.vitepress/dist --project-name=blink-cmp