Skip to content

Create a new release #243

Create a new release

Create a new release #243

Workflow file for this run

name: Create a new release
on:
workflow_dispatch:
inputs:
releaseTag:
description: 'Release Tag'
required: true
productionRelease:
type: boolean
description: Mark release as production ready
jobs:
release-ubuntu:
name: Build for Linux
runs-on: ubuntu-latest
env:
CARGO_TERM_COLOR: always
steps:
- uses: actions/checkout@v4
- uses: DeterminateSystems/nix-installer-action@v9
- uses: DeterminateSystems/magic-nix-cache-action@v3
- name: build linux-musl
run: nix build -L .#fastn
- name: run fastn
run: ./result/bin/fastn --version
- uses: actions/upload-artifact@v4
with:
name: linux_musl_x86_64
path: result/bin/fastn
release-windows:
name: Build for Windows
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: DeterminateSystems/nix-installer-action@v9
- uses: DeterminateSystems/magic-nix-cache-action@v3
- name: build mingwW64
run: nix build -L .#fastn-win
- uses: actions/upload-artifact@v4
with:
name: windows_x64_latest
path: result/bin/fastn.exe
- name: Install NSIS & Plugins
run: |
sudo apt update && sudo apt install -y nsis nsis-pluginapi
sudo chown -R $(whoami) /usr/share/nsis/Plugins/
wget https://github.com/GsNSIS/EnVar/releases/download/v0.3.1/EnVar-Plugin.zip
unzip EnVar-Plugin.zip -d EnVar-Plugin
sudo mv EnVar-Plugin/Plugins/amd64-unicode/* /usr/share/nsis/Plugins/amd64-unicode/
sudo mv EnVar-Plugin/Plugins/x86-ansi/* /usr/share/nsis/Plugins/x86-ansi/
sudo mv EnVar-Plugin/Plugins/x86-unicode/* /usr/share/nsis/Plugins/x86-unicode/
- name: Create Installer
run: makensis -V3 -DCURRENT_WD=${{ github.workspace }} -DVERSION=${{ github.event.inputs.releaseTag }} install.nsi
- uses: actions/upload-artifact@v4
with:
name: windows_x64_installer.exe
path: windows_x64_installer.exe
release-macos:
name: Build for MacOS
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: actions-rs/toolchain@v1
- uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
ftd/target
fifthtry_content/target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Run Build
id: build-macos
continue-on-error: false
uses: actions-rs/cargo@v1
with:
command: build
args: --release --features=auth
- name: run fastn
run: ./target/release/fastn --version
- uses: actions/upload-artifact@v4
with:
name: macos_x64_latest
path: |
target/release/fastn
create-release:
name: Create github tag and release
runs-on: ubuntu-latest
needs: [release-ubuntu, release-macos, release-windows]
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: macos_x64_latest
path: ~/download/macos
- uses: actions/download-artifact@v4
with:
name: linux_musl_x86_64
path: ~/download/linux_musl
- uses: actions/download-artifact@v4
with:
name: windows_x64_latest
path: ~/download/windows
- uses: actions/download-artifact@v4
with:
name: windows_x64_installer.exe
path: ~/download/windows
- name: Rename assets
run: |
mv ~/download/windows/fastn.exe ~/download/windows/fastn_windows_x86_64.exe
mv ~/download/windows/windows_x64_installer.exe ~/download/windows/fastn_setup.exe
mv ~/download/macos/fastn ~/download/macos/fastn_macos_x86_64
mv ~/download/linux_musl/fastn ~/download/linux_musl/fastn_linux_musl_x86_64
- name: Update .github/RELEASE_TEMPLATE.md
run: |
sed -i "s/GITHUB_SHA/${GITHUB_SHA}/g" .github/RELEASE_TEMPLATE.md
sed -i "s/DATE/$(date)/g" .github/RELEASE_TEMPLATE.md
- uses: ncipollo/release-action@v1
with:
artifacts: "~/download/windows/fastn_windows_x86_64.exe,~/download/windows/fastn_setup.exe,~/download/macos/fastn_macos_x86_64,~/download/linux_musl/fastn_linux_musl_x86_64"
generateReleaseNotes: true
token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ github.event.inputs.releaseTag }}
prerelease: ${{ github.event.inputs.productionRelease && github.event.inputs.productionRelease == 'false' }}
bodyFile: .github/RELEASE_TEMPLATE.md