Skip to content

Workflow file for this run

on:
release:
types: [created]
permissions:
contents: write
jobs:
update-version:
runs-on: ubuntu-latest
steps:
- name: ⬇️ Checkout
uses: actions/checkout@v4
- name: ⚙️ Setup environment
id: env
run: |
export REMOTE=$(git remote show | cut -d' ' -f1)
export DEFAULT_BRANCH=$(git remote show $REMOTE | sed -n '/HEAD branch/s/.*: //p')
echo "remote=$REMOTE" >> $GITHUB_OUTPUT
echo "default-branch=$DEFAULT_BRANCH" >> $GITHUB_OUTPUT
echo "Branch $DEFAULT_BRANCH on remote $REMOTE"
- name: 📝 Update version from git tag
run: |
git config --global user.name 'GitHub Action'
git config --global user.email '[email protected]'
git fetch --tags
git checkout ${{ steps.env.outputs.default-branch }}
git pull ${{ steps.env.outputs.remote }} ${{ steps.env.outputs.default-branch }}
sed -i --regexp-extended --expression="s/^version = \"[0-9\.]+\"/version = \"${{ github.event.release.tag_name }}\"/g" Cargo.toml
git add Cargo.toml
git commit -m "bump version to ${{ github.event.release.tag_name }}"
git push ${{ steps.env.outputs.remote }} ${{ steps.env.outputs.default-branch }}
build:
needs: update-version
strategy:
matrix:
os:
- windows-latest
- ubuntu-latest
- macos-latest
runs-on: ${{ matrix.os }}
steps:
- name: ⬇️ Checkout
uses: actions/checkout@v4
- name: ⚙️ Install UPX on windows
if: matrix.os == 'windows-latest'
uses: crazy-max/ghaction-upx@v3
with:
install-only: true
- name: ⬇️ Get Current Release
id: get-release
uses: joutvhu/get-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: ⬇️ Setup rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
- name: 📦 Build library
run: cargo build --release
- name: 📦 Compress DLL with UPX on windows
if: matrix.os == 'windows-latest'
run: upx --best --lzma target/release/balalib.dll
- name: 🚀 Push library to release assets
uses: actions/upload-release-asset@v1
if: matrix.os == 'windows-latest'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.get-release.outputs.upload-url }}
asset_path: 'target/release/balalib.dll'
asset_name: 'libbalalib.dll'
asset_content_type: application/octet-stream
- name: 🚀 Push library to release assets
uses: actions/upload-release-asset@v1
if: matrix.os == 'ubuntu-latest'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.get-release.outputs.upload-url }}
asset_path: 'target/release/libbalalib.so'
asset_name: 'libbalalib.so'
asset_content_type: application/octet-stream
- name: 🚀 Push library to release assets
uses: actions/upload-release-asset@v1
if: matrix.os == 'macos-latest'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.get-release.outputs.upload-url }}
asset_path: 'target/release/libbalalib.dylib'
asset_name: 'libbalalib.dylib'
asset_content_type: application/octet-stream