Skip to content

Release

Release #31

Workflow file for this run

name: Release
on:
push:
tags: ["*.*.*"]
env:
CARGO_TERM_COLOR: always
jobs:
build-binaries:
name: Build binaries
strategy:
fail-fast: false
matrix:
include:
- target: x86_64-unknown-linux-gnu
os: ubuntu-latest
name: gdscript-formatter-${{ github.ref_name }}-linux-x86_64
- target: aarch64-unknown-linux-gnu
os: ubuntu-latest
name: gdscript-formatter-${{ github.ref_name }}-linux-aarch64
- target: x86_64-apple-darwin
os: macos-latest
name: gdscript-formatter-${{ github.ref_name }}-macos-x86_64
- target: aarch64-apple-darwin
os: macos-latest
name: gdscript-formatter-${{ github.ref_name }}-macos-aarch64
- target: x86_64-pc-windows-msvc
os: windows-latest
name: gdscript-formatter-${{ github.ref_name }}-windows-x86_64.exe
- target: aarch64-pc-windows-msvc
os: windows-latest
name: gdscript-formatter-${{ github.ref_name }}-windows-aarch64.exe
runs-on: ${{ matrix.os }}
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
# This is a toolchain to build cross-platform binaries with rust. We use
# it for other architectures and OSes than the build runner's.
- name: Install cross
if: matrix.os == 'ubuntu-latest' && matrix.target != 'x86_64-unknown-linux-gnu'
run: cargo install cross --git https://github.com/cross-rs/cross
# Build either with cross or cargo, depending on the target.
- name: Build binary
run: |
if [[ "${{ matrix.os }}" == "ubuntu-latest" && "${{ matrix.target }}" != "x86_64-unknown-linux-gnu" ]]; then
cross build --verbose --locked --release --target ${{ matrix.target }}
else
cargo build --verbose --locked --release --target ${{ matrix.target }}
fi
shell: bash
- name: Move and rename binary
run: |
if [[ "${{ matrix.os }}" == "windows-latest" ]]; then
mv target/${{ matrix.target }}/release/gdscript-formatter.exe ${{ matrix.name }}
else
mv target/${{ matrix.target }}/release/gdscript-formatter ${{ matrix.name }}
fi
shell: bash
- name: Compress to ZIP (All platforms)
run: |
if [[ "${{ matrix.os }}" == "windows-latest" ]]; then
7z a ${{ matrix.name }}.zip ${{ matrix.name }}
else
zip ${{ matrix.name }}.zip ${{ matrix.name }}
fi
shell: bash
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.name }}
path: ${{ matrix.name }}.zip
if-no-files-found: error
package-godot-addon:
name: Package the Godot add-on
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Create godot-addon.zip
run: |
zip -r godot-addon.zip addons/
shell: bash
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: godot-addon
path: godot-addon.zip
if-no-files-found: error
publish-release:
name: Publish release
needs:
- build-binaries
- package-godot-addon
runs-on: ubuntu-latest
permissions:
contents: write
if: ${{ success() }}
steps:
- name: Download artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
- name: Create/Update Release
uses: softprops/action-gh-release@v2
with:
name: GDScript formatter ${{ github.ref_name }}
body: |
A fast code formatter for GDScript in Godot 4.
You can learn how to install, use, configure, and integrate the formatter into your workflow on this page:
https://www.gdquest.com/library/gdscript_formatter/
files: |
artifacts/**/*.zip
draft: false
prerelease: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}