Files
MeowBox-Core/.github/workflows/test-and-build.yml

120 lines
6.7 KiB
YAML

name: Test and Build Project
on:
workflow_dispatch:
inputs:
build_type:
description: "Build type: version or pre"
required: true
type: choice
options:
- version
- pre
version_number:
description: "Version number"
required: true
type: string
jobs:
build:
runs-on: self-hosted
permissions:
contents: write
actions: write
pull-requests: write
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: v0.0.2-dev
fetch-depth: 0
- name: Test code
run: |
echo "Testing code"
- name: Clean build
run: |
echo "Cleaning build"
rm -rf MeowEmbeddedMusicServer-*
- name: Build version
if: ${{ github.event.inputs.build_type == 'version' }}
run: |
echo "Building version ${{ github.event.inputs.version_number }}"
go mod tidy
echo "Build linux i386 binary"
CGO_ENABLED=0 GOOS=linux GOARCH=386 go build -ldflags "-s -w" -trimpath -o MeowEmbeddedMusicServer-Linux-i386 . && upx -9 MeowEmbeddedMusicServer-Linux-i386
echo "Build linux amd64 binary"
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" -trimpath -o MeowEmbeddedMusicServer-Linux-amd64 . && upx -9 MeowEmbeddedMusicServer-Linux-amd64
echo "Build linux arm64 binary"
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags "-s -w" -trimpath -o MeowEmbeddedMusicServer-Linux-arm64 . && upx -9 MeowEmbeddedMusicServer-Linux-arm64
echo "Build windows i386 binary"
CGO_ENABLED=0 GOOS=windows GOARCH=386 go build -ldflags "-s -w" -trimpath -o MeowEmbeddedMusicServer-Windows-i386.exe . && upx -9 MeowEmbeddedMusicServer-Windows-i386.exe
echo "Build windows amd64 binary"
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags "-s -w" -trimpath -o MeowEmbeddedMusicServer-Windows-amd64.exe . && upx -9 MeowEmbeddedMusicServer-Windows-amd64.exe
echo "Build windows arm64 binary"
CGO_ENABLED=0 GOOS=windows GOARCH=arm64 go build -ldflags "-s -w" -trimpath -o MeowEmbeddedMusicServer-Windows-arm64.exe .
echo "Build darwin amd64 binary"
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -ldflags "-s -w" -trimpath -o MeowEmbeddedMusicServer-Darwin-amd64 .
echo "Build darwin arm64 binary"
CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -ldflags "-s -w" -trimpath -o MeowEmbeddedMusicServer-Darwin-arm64 .
- name: Build pre-release
if: ${{ github.event.inputs.build_type == 'pre' }}
run: |
echo "Building pre-release ${{ github.event.inputs.version_number }}"
go mod tidy
echo "Build linux i386 binary"
CGO_ENABLED=0 GOOS=linux GOARCH=386 go build -ldflags "-s -w" -trimpath -o MeowEmbeddedMusicServer-Linux-i386 . && upx -9 MeowEmbeddedMusicServer-Linux-i386
echo "Build linux amd64 binary"
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" -trimpath -o MeowEmbeddedMusicServer-Linux-amd64 . && upx -9 MeowEmbeddedMusicServer-Linux-amd64
echo "Build linux arm64 binary"
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags "-s -w" -trimpath -o MeowEmbeddedMusicServer-Linux-arm64 . && upx -9 MeowEmbeddedMusicServer-Linux-arm64
echo "Build windows i386 binary"
CGO_ENABLED=0 GOOS=windows GOARCH=386 go build -ldflags "-s -w" -trimpath -o MeowEmbeddedMusicServer-Windows-i386.exe . && upx -9 MeowEmbeddedMusicServer-Windows-i386.exe
echo "Build windows amd64 binary"
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags "-s -w" -trimpath -o MeowEmbeddedMusicServer-Windows-amd64.exe . && upx -9 MeowEmbeddedMusicServer-Windows-amd64.exe
echo "Build windows arm64 binary"
CGO_ENABLED=0 GOOS=windows GOARCH=arm64 go build -ldflags "-s -w" -trimpath -o MeowEmbeddedMusicServer-Windows-arm64.exe .
echo "Build darwin amd64 binary"
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -ldflags "-s -w" -trimpath -o MeowEmbeddedMusicServer-Darwin-amd64 .
echo "Build darwin arm64 binary"
CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -ldflags "-s -w" -trimpath -o MeowEmbeddedMusicServer-Darwin-arm64 .
- name: Get latest tag
id: get_latest_tag
run: |
git fetch --tags
LATEST_TAG=$(git tag --sort=-refname | head -n 1)
echo "Latest tag found: $LATEST_TAG"
echo "previous_tag=$LATEST_TAG" >> $GITHUB_OUTPUT
- name: Upload binaries
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ github.event.inputs.version_number }}
name: ${{ github.event.inputs.version_number }}
body: |
### Build Information
- Branch: v0.0.2-dev
- Commit: ${{ github.sha }}
### Binaries
- Linux i386
- Linux amd64
- Linux arm64
- Windows i386
- Windows amd64
- Windows arm64
- macOS amd64
- macOS arm64
**Full Changelog**: https://github.com/OmniX-Space/MeowBox-Core/compare/${{ steps.get_latest_tag.outputs.previous_tag }}...${{ github.sha }}
files: |
MeowEmbeddedMusicServer-Linux-i386
MeowEmbeddedMusicServer-Linux-amd64
MeowEmbeddedMusicServer-Linux-arm64
MeowEmbeddedMusicServer-Windows-i386.exe
MeowEmbeddedMusicServer-Windows-amd64.exe
MeowEmbeddedMusicServer-Windows-arm64.exe
MeowEmbeddedMusicServer-Darwin-amd64
MeowEmbeddedMusicServer-Darwin-arm64
prerelease: ${{ github.event.inputs.build_type == 'pre' }}
make_latest: ${{ github.event.inputs.build_type != 'pre' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# GITHUB_TOKEN: ${{ secrets.CUSTOM_GITHUB_TOKEN }}
continue-on-error: true