Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |