Skip to content

Release

Release #14

Workflow file for this run

name: Release
on:
push:
tags:
- v*
workflow_dispatch:
env:
FORCE_COLOR: true
jobs:
build-linux:
runs-on: ubuntu-latest
steps:
- name: Install Go
uses: actions/setup-go@v4
with:
go-version: "1.23"
- name: Checkout code
uses: actions/checkout@v3
- name: Install Linux dependencies
run: |
sudo apt update
sudo apt install -y build-essential libgtk-3-dev xorg-dev
- name: Install Go dependencies
run: go get -v
- name: Build
run: CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -v -tags static -ldflags "-s -w"
- name: Update executable
run: |
chmod +x shelter-installer
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: installer-linux
path: shelter-installer
build-mac:
runs-on: macos-latest
steps:
- name: Install Go
uses: actions/setup-go@v4
with:
go-version: "1.23"
- name: Checkout code
uses: actions/checkout@v3
- name: Install dependencies
run: brew install create-dmg
- name: Install Go dependencies
run: go get -v
- name: Build
run: CGO_ENABLED=1 GOOS=darwin GOARCH=amd64 go build -o installer-x86 -v -tags static -ldflags "-s -w"
- name: Build ARM
run: CGO_ENABLED=1 GOOS=darwin GOARCH=arm64 go build -o installer-arm64 -v -tags static -ldflags "-s -w"
- name: Lipo (create universal binary)
run: lipo -create installer-arm64 installer-x86 -output shelter-installer
- name: Create .app folder
run: |
go run fyne.io/fyne/v2/cmd/fyne@latest -- package -os darwin -use-raw-icon -icon assets/mac-icon.icns -name "Install shelter"
- name: Replace binary in .app folder with a universal bin
run: |
rm Install\ shelter.app/Contents/MacOS/shelter-installer
mv ./shelter-installer Install\ shelter.app/Contents/MacOS/shelter-installer
- name: Create DMG folder
run: |
mkdir -p shelter-installer-dir
mv Install\ shelter.app shelter-installer-dir
- name: Create DMG
run: create-dmg --background assets/shelter-bg.png --volname shelter --window-size 500 350 --icon "Install shelter.app" 250 135 "Install shelter.dmg" shelter-installer-dir
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: installer-macos
path: Install shelter.dmg
build-windows:
runs-on: windows-latest
steps:
- name: Install Go
uses: actions/setup-go@v4
with:
go-version: "1.23"
- name: Checkout code
uses: actions/checkout@v3
- name: Setup MSYS2
uses: msys2/setup-msys2@v2
- name: Install Windows dependencies
shell: msys2 {0}
run: |
pacman -S --noconfirm git mingw-w64-x86_64-gcc mingw-w64-x86_64-SDL2 mingw-w64-x86_64-go
export GOROOT=/mingw64/lib/go
export GOPATH=/mingw64
- name: Install Go dependencies
shell: msys2 {0}
run: |
export GOROOT=/mingw64/lib/go
export GOPATH=/mingw64
go get -v
- name: Build
shell: msys2 {0}
run: |
export GOROOT=/mingw64/lib/go
export GOPATH=/mingw64
CGO_ENABLED=1 GOOS=windows GOARCH=amd64 go build -o install-shelter.exe -v -tags static -ldflags "-s -w -H=windowsgui"
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: installer-windows
path: install-shelter.exe
release:
runs-on: ubuntu-latest
needs: [build-linux, build-mac, build-windows]
steps:
- name: Checkout code
uses: actions/checkout@v3
- uses: actions/download-artifact@v4
with:
name: installer-linux
path: linux
- uses: actions/download-artifact@v4
with:
name: installer-macos
path: macos
- uses: actions/download-artifact@v4
with:
name: installer-windows
path: windows
- name: Get some values needed for the release
id: release_values
run: |
echo "date=$(date '+%Y-%m-%d')" >> $GITHUB_OUTPUT
echo "tag=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
- name: Create the release
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.LINK_TOKEN }}
with:
name: ${{ steps.release_values.outputs.tag }}, ${{ steps.release_values.outputs.date }}
draft: true
prerelease: false
body_path: .github/release_body_template.md
files: |
linux/install-shelter
macos/Install shelter.dmg
windows/install-shelter.exe