restructured publishing configuration to prepare for home_assistant p… #32
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
# This workflow will build a golang project | |
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-go | |
name: midi2mqtt-build | |
permissions: | |
contents: write | |
on: | |
push: | |
branches: [ "main" ] | |
pull_request: | |
branches: [ "main" ] | |
jobs: | |
build-windows-amd64: | |
runs-on: midi2mqtt-builder-win64 | |
env: | |
SHORT_SHA: ${{ github.sha }} | |
steps: | |
- uses: actions/checkout@v4 | |
env: | |
PATH: C:\Users\github-runner\AppData\Local\Programs\Git\cmd;${{ env.PATH }} | |
# - name: Setup MSYS2 | |
# uses: msys2/setup-msys2@v2 | |
# with: | |
# msystem: UCRT64 | |
# update: true | |
# cache: true | |
# install: >- | |
# mingw-w64-x86_64-gcc | |
# mingw-w64-x86_64-pkg-config | |
- name: Set up Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version: '1.23.4' | |
- name: Build for windows-amd64 | |
env: | |
GO111MODULE: on | |
GOOS: windows | |
GOARCH: amd64 | |
CGO_ENABLED: 1 | |
PATH: C:\msys64\ucrt64\bin;${{ env.PATH }} | |
run: go build -o target/windows-amd64/midi2mqtt.exe -ldflags "-extldflags '-static'" ./cmd/main.go | |
# - name: Upload artifacts | |
# uses: actions/upload-artifact@v4 | |
# with: | |
# name: binaries-${{ github.run_id }} | |
# path: target/ | |
- name: Package Windows Binary | |
run: | | |
mkdir -Force release\midi2mqtt-windows-amd64 | |
copy target\windows-amd64\midi2mqtt.exe release\midi2mqtt-windows-amd64\ | |
copy midi2mqtt.yaml.template release\midi2mqtt-windows-amd64\midi2mqtt.yaml | |
Compress-Archive -Path release\midi2mqtt-windows-amd64 -DestinationPath release\midi2mqtt-windows-amd64-latest.zip -Force | |
- name: Create Prerelease | |
uses: softprops/action-gh-release@v1 | |
with: | |
files: release/midi2mqtt-windows-amd64-latest.zip | |
prerelease: true | |
draft: false | |
name: "Development Build Windows" | |
tag_name: prerelease-windows | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Clean up old prerelease | |
if: success() | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
PATH: C:\Users\github-runner\AppData\Local\Programs\Git\cmd;${{ runner.temp }}\msys64\mingw64\bin;${{ env.PATH }} | |
run: | | |
git.exe tag -f prerelease-windows | |
git.exe push origin prerelease-windows --force | |
build-linux-amd64: | |
runs-on: midi2mqtt-builder-linux | |
env: | |
SHORT_SHA: ${{ github.sha }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version: '1.23.4' | |
- name: Build for linux-amd64 | |
run: GO111MODULE=on CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -o target/linux-amd64/midi2mqtt ./cmd/main.go | |
# - name: Upload artifacts | |
# uses: actions/upload-artifact@v4 | |
# with: | |
# name: binaries-${{ github.run_id }} | |
# path: target/ | |
- name: Package Linux Binary | |
run: | | |
mkdir -p release/midi2mqtt-linux-amd64 | |
cp target/linux-amd64/midi2mqtt release/midi2mqtt-linux-amd64/ | |
cp midi2mqtt.yaml.template release/midi2mqtt-linux-amd64/midi2mqtt.yaml | |
cd release | |
tar czf "midi2mqtt-linux-amd64-latest.tar.gz" midi2mqtt-linux-amd64/ | |
- name: Create Prerelease | |
uses: softprops/action-gh-release@v1 | |
with: | |
files: release/midi2mqtt-linux-amd64-latest.tar.gz | |
prerelease: true | |
draft: false | |
name: "Development Build Linux" | |
tag_name: prerelease-linux | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Clean up old prerelease | |
if: success() | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
# Create and push new tag directly | |
git tag -f prerelease-linux | |
git push origin prerelease-linux --force | |
build-macos-universal: | |
runs-on: midi2mqtt-builder-macos | |
env: | |
SHORT_SHA: ${{ github.sha }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version: '1.23.4' | |
- name: Build for macOS Intel (amd64) | |
env: | |
MACOSX_DEPLOYMENT_TARGET: "11.0" | |
run: | | |
GO111MODULE=on CGO_ENABLED=1 GOOS=darwin GOARCH=amd64 go build -o target/darwin-amd64/midi2mqtt -ldflags "-s -w" ./cmd/main.go | |
- name: Build for macOS Apple Silicon (arm64) | |
env: | |
MACOSX_DEPLOYMENT_TARGET: "11.0" | |
run: | | |
GO111MODULE=on CGO_ENABLED=1 GOOS=darwin GOARCH=arm64 go build -o target/darwin-arm64/midi2mqtt -ldflags "-s -w" ./cmd/main.go | |
- name: Create Universal Binary | |
run: | | |
mkdir -p target/darwin-universal | |
lipo -create -output target/darwin-universal/midi2mqtt target/darwin-amd64/midi2mqtt target/darwin-arm64/midi2mqtt | |
- name: Package macOS Binary | |
run: | | |
mkdir -p release/midi2mqtt-macos | |
cp target/darwin-universal/midi2mqtt release/midi2mqtt-macos/ | |
cp midi2mqtt.yaml.template release/midi2mqtt-macos/midi2mqtt.yaml | |
cd release | |
zip -r "midi2mqtt-macos-universal-latest.zip" midi2mqtt-macos/ | |
- name: Create Prerelease | |
uses: softprops/action-gh-release@v1 | |
with: | |
files: release/midi2mqtt-macos-universal-latest.zip | |
prerelease: true | |
draft: false | |
name: "Development Build macOS (Universal)" | |
tag_name: prerelease-macos | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Clean up old prerelease | |
if: success() | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
git tag -f prerelease-macos | |
git push origin prerelease-macos --force |