134 lines
4.3 KiB
YAML
Raw Normal View History

2024-09-03 21:21:09 +08:00
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<<EOF" >> $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 }}"
2024-09-03 21:24:05 +08:00
releases-matrix:
2024-09-03 21:29:00 +08:00
needs: [create-release]
2024-09-03 21:21:09 +08:00
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
if: ${{ matrix.os != 'windows-latest' }}
2024-09-03 21:21:09 +08:00
shell: bash
run: |
mkdir -p results
if [ "${{ matrix.os }}" == "ubuntu-latest" ]; then
OS="linux"
EXT="so"
else
2024-09-03 21:21:09 +08:00
OS="macOS"
EXT="dylib"
fi
cp target/release/libavante_templates.$EXT results/avante_templates.$EXT
cp target/release/libavante_tokenizers.$EXT results/avante_tokenizers.$EXT
2024-09-03 21:21:09 +08:00
2024-09-03 21:44:36 +08:00
cd results
2024-09-03 22:10:54 +08:00
tar zcvf avante_lib-${{ matrix.os }}-${{ matrix.feature }}.tar.gz *.${EXT}
- name: Handle binaries (Windows)
if: ${{ matrix.os == 'windows-latest' }}
shell: pwsh
run: |
New-Item -ItemType Directory -Force -Path results
Copy-Item -Path "target\release\avante_templates.dll" -Destination "results\avante_templates.dll"
Copy-Item -Path "target\release\avante_tokenizers.dll" -Destination "results\avante_tokenizers.dll"
Set-Location -Path results
$dllFiles = Get-ChildItem -Filter "*.dll" | Select-Object -ExpandProperty Name
Compress-Archive -Path $dllFiles -DestinationPath "avante_lib-${{ matrix.os }}-${{ matrix.feature }}.zip"
2024-09-03 21:44:36 +08:00
2024-09-03 21:21:09 +08:00
- name: Upload Release Asset
uses: shogo82148/actions-upload-release-asset@v1
if: ${{ matrix.os != 'windows-latest' }}
2024-09-03 21:21:09 +08:00
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2024-09-03 22:10:54 +08:00
ASSET_NAME: avante_lib-${{ matrix.os }}-${{ matrix.feature }}.tar.gz
2024-09-03 21:21:09 +08:00
with:
upload_url: ${{ needs.create-release.outputs.release_upload_url }}
2024-09-03 22:10:54 +08:00
asset_path: ./results/avante_lib-${{ matrix.os }}-${{ matrix.feature }}.tar.gz
- name: Upload Release Asset (Windows)
uses: shogo82148/actions-upload-release-asset@v1
if: ${{ matrix.os == 'windows-latest' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ASSET_NAME: avante_lib-${{ matrix.os }}-${{ matrix.feature }}.zip
with:
upload_url: ${{ needs.create-release.outputs.release_upload_url }}
asset_path: ./results/avante_lib-${{ matrix.os }}-${{ matrix.feature }}.zip
2024-09-03 21:21:09 +08:00
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
})