Build and Release #7
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
name: Build and Release | |
on: workflow_dispatch | |
defaults: | |
run: | |
# necessary for windows | |
shell: bash | |
jobs: | |
test: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/[email protected] | |
- uses: actions-rust-lang/setup-rust-toolchain@v1 | |
- uses: arduino/setup-protoc@v3 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Running examples | |
run: | | |
cargo run | |
prepare-release: | |
needs: test | |
runs-on: ubuntu-latest | |
outputs: | |
sha: ${{ steps.commit.outputs.sha }} | |
steps: | |
- uses: actions/[email protected] | |
name: Fetch entire history (for conventional commits) | |
with: | |
fetch-depth: 0 | |
- name: Configure Git | |
run: | | |
git config --global user.name GitHub Actions | |
git config user.email [email protected] | |
- name: Install Knope | |
uses: knope-dev/[email protected] | |
with: | |
version: 0.18.0 | |
- run: knope prepare-release --verbose | |
name: Update versioned files and changelog | |
- name: Store commit | |
id: commit | |
run: echo "sha=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT | |
build-artifacts: | |
needs: prepare-release | |
strategy: | |
matrix: | |
include: | |
#- target: x86_64-unknown-linux-gnu # tested in a debian container on a mac | |
# os: ubuntu-latest | |
- target: aarch64-apple-darwin | |
os: macos-latest | |
#- target: x86_64-pc-windows-msvc | |
# os: windows-latest | |
runs-on: ${{ matrix.os }} | |
env: | |
archive_name: rhai-test | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: ${{ needs.prepare-release.outputs.sha }} | |
- uses: actions-rust-lang/setup-rust-toolchain@v1 | |
- uses: arduino/setup-protoc@v3 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Build | |
run: cargo build --release --target ${{ matrix.target }} | |
- name: Create Archive Folder | |
run: mkdir ${{ env.archive_name }} | |
- name: Copy Unix Artifact | |
if: ${{ matrix.os != 'windows-latest' }} | |
run: cp target/${{ matrix.target }}/release/${{ env.archive_name }} ${{ env.archive_name }} | |
- name: Copy Windows Artifact | |
if: ${{ matrix.os == 'windows-latest' }} | |
run: cp target/${{ matrix.target }}/release/${{ env.archive_name }}.exe ${{ env.archive_name }} | |
- name: Create Tar Archive | |
run: tar -czf ${{ env.archive_name }}.tgz ${{ env.archive_name }} | |
- name: Upload Artifact | |
uses: actions/[email protected] | |
with: | |
name: ${{ matrix.target }} | |
path: ${{ env.archive_name }}.tgz | |
if-no-files-found: error | |
release: | |
needs: [build-artifacts, prepare-release] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/[email protected] | |
with: | |
ref: ${{ needs.prepare-release.outputs.sha }} | |
- uses: actions/[email protected] | |
with: | |
path: artifacts | |
merge-multiple: true | |
- name: Install the latest Knope | |
uses: knope-dev/[email protected] | |
with: | |
version: 0.11.0 | |
- run: knope release --verbose | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |