name: Release on: push: tags: - 'v*' permissions: contents: write jobs: release: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - uses: actions/setup-go@v5 with: go-version: '1.24' - name: Get version id: version run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT - name: Build all platforms run: | mkdir -p dist # Linux amd64 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \ -ldflags="-s -w -X github.com/muyue/muyue/internal/version.Version=${{ steps.version.outputs.VERSION }}" \ -o dist/muyue-linux-amd64 ./cmd/muyue/ # Linux arm64 CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build \ -ldflags="-s -w -X github.com/muyue/muyue/internal/version.Version=${{ steps.version.outputs.VERSION }}" \ -o dist/muyue-linux-arm64 ./cmd/muyue/ # macOS amd64 CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build \ -ldflags="-s -w -X github.com/muyue/muyue/internal/version.Version=${{ steps.version.outputs.VERSION }}" \ -o dist/muyue-darwin-amd64 ./cmd/muyue/ # macOS arm64 (Apple Silicon) CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build \ -ldflags="-s -w -X github.com/muyue/muyue/internal/version.Version=${{ steps.version.outputs.VERSION }}" \ -o dist/muyue-darwin-arm64 ./cmd/muyue/ # Windows amd64 CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build \ -ldflags="-s -w -X github.com/muyue/muyue/internal/version.Version=${{ steps.version.outputs.VERSION }}" \ -o dist/muyue-windows-amd64.exe ./cmd/muyue/ # Windows arm64 CGO_ENABLED=0 GOOS=windows GOARCH=arm64 go build \ -ldflags="-s -w -X github.com/muyue/muyue/internal/version.Version=${{ steps.version.outputs.VERSION }}" \ -o dist/muyue-windows-arm64.exe ./cmd/muyue/ - name: Create checksums run: | cd dist sha256sum * > checksums.txt cat checksums.txt - name: Create archives run: | cd dist # Linux amd64 tar czf muyue-linux-amd64.tar.gz muyue-linux-amd64 # Linux arm64 tar czf muyue-linux-arm64.tar.gz muyue-linux-arm64 # macOS amd64 tar czf muyue-darwin-amd64.tar.gz muyue-darwin-amd64 # macOS arm64 tar czf muyue-darwin-arm64.tar.gz muyue-darwin-arm64 # Windows amd64 zip muyue-windows-amd64.zip muyue-windows-amd64.exe # Windows arm64 zip muyue-windows-arm64.zip muyue-windows-arm64.exe - name: Generate changelog id: changelog run: | PREVIOUS_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "") if [ -z "$PREVIOUS_TAG" ]; then echo "CHANGELOG=Initial release of muyue." >> $GITHUB_OUTPUT else CHANGELOG=$(git log ${PREVIOUS_TAG}..HEAD --pretty=format:"- %s" --no-merges) echo "CHANGELOG<> $GITHUB_OUTPUT echo "$CHANGELOG" >> $GITHUB_OUTPUT echo "EOF" >> $GITHUB_OUTPUT fi - name: Create Release uses: softprops/action-gh-release@v2 with: tag_name: ${{ steps.version.outputs.VERSION }} name: muyue ${{ steps.version.outputs.VERSION }} body: | ## Changes ${{ steps.changelog.outputs.CHANGELOG }} ## Installation ### Linux (amd64) ```bash curl -sL https://github.com/$(echo ${{ github.repository }} | tr -d ' ')/releases/download/${{ steps.version.outputs.VERSION }}/muyue-linux-amd64.tar.gz | tar xz chmod +x muyue-linux-amd64 sudo mv muyue-linux-amd64 /usr/local/bin/muyue ``` ### Linux (arm64) ```bash curl -sL https://github.com/$(echo ${{ github.repository }} | tr -d ' ')/releases/download/${{ steps.version.outputs.VERSION }}/muyue-linux-arm64.tar.gz | tar xz chmod +x muyue-linux-arm64 sudo mv muyue-linux-arm64 /usr/local/bin/muyue ``` ### macOS (Apple Silicon) ```bash curl -sL https://github.com/$(echo ${{ github.repository }} | tr -d ' ')/releases/download/${{ steps.version.outputs.VERSION }}/muyue-darwin-arm64.tar.gz | tar xz chmod +x muyue-darwin-arm64 sudo mv muyue-darwin-arm64 /usr/local/bin/muyue ``` ### macOS (Intel) ```bash curl -sL https://github.com/$(echo ${{ github.repository }} | tr -d ' ')/releases/download/${{ steps.version.outputs.VERSION }}/muyue-darwin-amd64.tar.gz | tar xz chmod +x muyue-darwin-amd64 sudo mv muyue-darwin-amd64 /usr/local/bin/muyue ``` ### Windows Download `muyue-windows-amd64.zip` from the assets below. ## Checksums See `checksums.txt` in the release assets. files: | dist/muyue-linux-amd64.tar.gz dist/muyue-linux-arm64.tar.gz dist/muyue-darwin-amd64.tar.gz dist/muyue-darwin-arm64.tar.gz dist/muyue-windows-amd64.zip dist/muyue-windows-arm64.zip dist/checksums.txt draft: false prerelease: false