name: Release on: push: tags: [ v\d+\.\d+\.\d+ ] permissions: contents: write packages: write env: CARGO_TERM_COLOR: always jobs: create-release: permissions: contents: write runs-on: ubuntu-20.04 outputs: release_id: ${{ steps.create-release.outputs.id }} release_upload_url: ${{ steps.create-release.outputs.upload_url }} release_body: "${{ steps.tag.outputs.message }}" steps: - uses: actions/checkout@v4 - name: Get version id: get_version uses: battila7/get-version-action@v2 - name: Get tag message id: tag run: | git fetch --depth=1 origin +refs/tags/*:refs/tags/* echo "message<> $GITHUB_OUTPUT echo "$(git tag -l --format='%(contents)' ${{ steps.get_version.outputs.version }})" >> $GITHUB_OUTPUT echo "EOF" >> $GITHUB_OUTPUT - name: Create Release id: create-release uses: ncipollo/release-action@v1 with: draft: true name: ${{ steps.get_version.outputs.version }} tag: ${{ steps.get_version.outputs.version }} body: "${{ steps.tag.outputs.message }}" releases-matrix: needs: [create-release] strategy: matrix: os: [ubuntu-latest, macos-latest, windows-latest] feature: [lua51, luajit] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - uses: Swatinem/rust-cache@v2 - uses: dtolnay/rust-toolchain@master with: toolchain: 1.80.0 - name: Build all crates run: cargo build --release --features ${{ matrix.feature }} - name: Handle binaries shell: bash run: | mkdir -p results if [ "${{ matrix.os }}" == "ubuntu-latest" ]; then OS="linux" EXT="so" elif [ "${{ matrix.os }}" == "macos-latest" ]; then OS="macOS" EXT="dylib" else OS="windows" EXT="dll" fi if [ "${{ matrix.os }}" == "windows-latest" ]; then cp target/release/avante_templates.$EXT results/avante_templates.$EXT cp target/release/avante_tokenizers.$EXT results/avante_tokenizers.$EXT else cp target/release/libavante_templates.$EXT results/avante_templates.$EXT cp target/release/libavante_tokenizers.$EXT results/avante_tokenizers.$EXT fi cd results tar zcvf avante_lib-${{ matrix.os }}-${{ matrix.feature }}.tar.gz *.${EXT} - name: Upload Release Asset uses: shogo82148/actions-upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} ASSET_NAME: avante_lib-${{ matrix.os }}-${{ matrix.feature }}.tar.gz with: upload_url: ${{ needs.create-release.outputs.release_upload_url }} asset_path: ./results/avante_lib-${{ matrix.os }}-${{ matrix.feature }}.tar.gz publish-release: permissions: contents: write runs-on: ubuntu-20.04 needs: [create-release, releases-matrix] steps: - name: publish release id: publish-release uses: actions/github-script@v6 env: release_id: ${{ needs.create-release.outputs.release_id }} with: script: | github.rest.repos.updateRelease({ owner: context.repo.owner, repo: context.repo.repo, release_id: process.env.release_id, draft: false, prerelease: false })