Skip to content

restructured publishing configuration to prepare for home_assistant p… #32

restructured publishing configuration to prepare for home_assistant p…

restructured publishing configuration to prepare for home_assistant p… #32

# 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