diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml deleted file mode 100644 index 180eeae..0000000 --- a/.github/workflows/build.yaml +++ /dev/null @@ -1,61 +0,0 @@ -name: Nightly Build - -on: - schedule: - - cron: '0 2 * * *' # Runs at 2 AM UTC every day - push: - branches: - - main - pull_request: - branches: - - main - paths: - - 'crates/**' - - '**/Cargo.toml' - workflow_dispatch: # Allows manual triggering - -env: - CARGO_TERM_COLOR: always - -jobs: - build: - 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 - - name: Upload binaries - uses: actions/upload-artifact@v4 - with: - name: avante_lib-${{ matrix.os }}-${{ matrix.feature }} - path: results/ diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..57f3924 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,113 @@ +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 }}" + + build: + 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 + + - name: Upload Release Asset + uses: shogo82148/actions-upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ needs.create-release.outputs.release_upload_url }} + asset_path: ./results/ + + 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 + })