Skip to content

Commit d18e5bd

Browse files
committed
simplified release.yml action
1 parent 33aa38a commit d18e5bd

2 files changed

Lines changed: 176 additions & 263 deletions

File tree

.github/workflows/build.yml

Lines changed: 145 additions & 143 deletions
Original file line numberDiff line numberDiff line change
@@ -1,148 +1,150 @@
11
name: Build
22

33
on:
4-
push:
5-
branches: [main]
6-
pull_request:
4+
push:
5+
branches: [main]
6+
tags:
7+
- 'v*'
8+
pull_request:
79

810
jobs:
9-
build:
10-
name: Build (${{ matrix.goos }}/${{ matrix.goarch }})
11-
12-
strategy:
13-
fail-fast: false
14-
matrix:
15-
include:
16-
- goos: linux
17-
goarch: amd64
18-
runner: ubuntu-latest
19-
20-
- goos: linux
21-
goarch: arm64
22-
runner: ubuntu-24.04-arm
23-
24-
- goos: windows
25-
goarch: amd64
26-
runner: ubuntu-latest
27-
28-
- goos: windows
29-
goarch: arm64
30-
runner: ubuntu-latest
31-
32-
- goos: darwin
33-
goarch: amd64
34-
runner: ubuntu-latest
35-
36-
- goos: darwin
37-
goarch: arm64
38-
runner: ubuntu-latest
39-
40-
runs-on: ${{ matrix.runner }}
41-
42-
steps:
43-
- name: Checkout code
44-
uses: actions/checkout@v4
45-
46-
- name: Set up Go
47-
uses: actions/setup-go@v5
48-
with:
49-
go-version: "1.25"
50-
cache: true
51-
cache-dependency-path: go.sum
52-
53-
- name: Install CGO deps (Linux only)
54-
if: matrix.goos == 'linux'
55-
run: |
56-
sudo apt-get update
57-
sudo apt-get install -y build-essential libasound2-dev
58-
59-
- name: Set binary extension
60-
id: bin
61-
run: |
62-
if [ "${{ matrix.goos }}" = "windows" ]; then
63-
echo "ext=.exe" >> $GITHUB_OUTPUT
64-
else
65-
echo "ext=" >> $GITHUB_OUTPUT
66-
fi
67-
68-
- name: Set CGO flag
69-
id: cgo
70-
run: |
71-
if [ "${{ matrix.goos }}" = "linux" ]; then
72-
echo "enabled=1" >> $GITHUB_OUTPUT
73-
else
74-
echo "enabled=0" >> $GITHUB_OUTPUT
75-
fi
76-
77-
- name: Build Discord bot
78-
env:
79-
GOOS: ${{ matrix.goos }}
80-
GOARCH: ${{ matrix.goarch }}
81-
CGO_ENABLED: ${{ steps.cgo.outputs.enabled }}
82-
run: |
83-
set -e
84-
85-
BUILD_DATE=$(date -u +"%Y-%m-%dT%H-%M-%SZ")
86-
GIT_COMMIT=$(git rev-parse --short HEAD 2>/dev/null || echo "none")
87-
88-
mkdir -p dist
89-
90-
go build -trimpath \
91-
-ldflags="-s -w \
92-
-X github.com/keshon/buildinfo.Version=dev \
93-
-X github.com/keshon/buildinfo.Commit=${GIT_COMMIT} \
94-
-X github.com/keshon/buildinfo.BuildTime=${BUILD_DATE} \
95-
-X github.com/keshon/buildinfo.Project=Melodix \
96-
-X 'github.com/keshon/buildinfo.Description=Discord music bot that allows you to play music from YouTube, SoundCloud and internet radio streams.'" \
97-
-o dist/melodix-discord${{ steps.bin.outputs.ext }} \
98-
./cmd/discord/
99-
100-
- name: Build CLI player
101-
env:
102-
GOOS: ${{ matrix.goos }}
103-
GOARCH: ${{ matrix.goarch }}
104-
CGO_ENABLED: ${{ steps.cgo.outputs.enabled }}
105-
run: |
106-
set -e
107-
108-
BUILD_DATE=$(date -u +"%Y-%m-%dT%H-%M-%SZ")
109-
GIT_COMMIT=$(git rev-parse --short HEAD 2>/dev/null || echo "none")
110-
111-
go build -trimpath \
112-
-ldflags="-s -w \
113-
-X github.com/keshon/buildinfo.Version=dev \
114-
-X github.com/keshon/buildinfo.Commit=${GIT_COMMIT} \
115-
-X github.com/keshon/buildinfo.BuildTime=${BUILD_DATE} \
116-
-X github.com/keshon/buildinfo.Project=Melodix \
117-
-X 'github.com/keshon/buildinfo.Description=CLI music player - same playback engine as the Discord bot.'" \
118-
-o dist/melodix-cli${{ steps.bin.outputs.ext }} \
119-
./cmd/cli/
120-
121-
- name: Prepare build bundle
122-
run: |
123-
PKG_ROOT="melodix-${{ matrix.goos }}-${{ matrix.goarch }}"
124-
mkdir -p "${PKG_ROOT}"
125-
126-
cp "dist/melodix-discord${{ steps.bin.outputs.ext }}" "${PKG_ROOT}/"
127-
cp "dist/melodix-cli${{ steps.bin.outputs.ext }}" "${PKG_ROOT}/"
128-
129-
cp README.md LICENSE "${PKG_ROOT}/"
130-
131-
if [ -f .env.example ]; then
132-
cp .env.example "${PKG_ROOT}/.env"
133-
fi
134-
135-
mkdir -p "${PKG_ROOT}/data"
136-
137-
if [ -d assets ]; then
138-
cp -R assets "${PKG_ROOT}/"
139-
fi
140-
141-
zip -r "dist/${PKG_ROOT}.zip" "${PKG_ROOT}"
142-
143-
- name: Upload artifact
144-
uses: actions/upload-artifact@v4
145-
with:
146-
name: melodix-${{ matrix.goos }}-${{ matrix.goarch }}
147-
path: dist/melodix-${{ matrix.goos }}-${{ matrix.goarch }}.zip
148-
retention-days: 14
11+
build:
12+
name: Build (${{ matrix.goos }}/${{ matrix.goarch }})
13+
14+
strategy:
15+
fail-fast: false
16+
matrix:
17+
include:
18+
- goos: linux
19+
goarch: amd64
20+
runner: ubuntu-latest
21+
22+
- goos: linux
23+
goarch: arm64
24+
runner: ubuntu-24.04-arm
25+
26+
- goos: windows
27+
goarch: amd64
28+
runner: ubuntu-latest
29+
30+
- goos: windows
31+
goarch: arm64
32+
runner: ubuntu-latest
33+
34+
- goos: darwin
35+
goarch: amd64
36+
runner: ubuntu-latest
37+
38+
- goos: darwin
39+
goarch: arm64
40+
runner: ubuntu-latest
41+
42+
runs-on: ${{ matrix.runner }}
43+
44+
steps:
45+
- name: Checkout code
46+
uses: actions/checkout@v4
47+
48+
- name: Set up Go
49+
uses: actions/setup-go@v5
50+
with:
51+
go-version: '1.25'
52+
cache: true
53+
cache-dependency-path: go.sum
54+
55+
- name: Install CGO deps (Linux only)
56+
if: matrix.goos == 'linux'
57+
run: |
58+
sudo apt-get update
59+
sudo apt-get install -y build-essential libasound2-dev
60+
61+
- name: Set binary extension
62+
id: bin
63+
run: |
64+
if [ "${{ matrix.goos }}" = "windows" ]; then
65+
echo "ext=.exe" >> $GITHUB_OUTPUT
66+
else
67+
echo "ext=" >> $GITHUB_OUTPUT
68+
fi
69+
70+
- name: Set CGO flag
71+
id: cgo
72+
run: |
73+
if [ "${{ matrix.goos }}" = "linux" ]; then
74+
echo "enabled=1" >> $GITHUB_OUTPUT
75+
else
76+
echo "enabled=0" >> $GITHUB_OUTPUT
77+
fi
78+
79+
- name: Build Discord bot
80+
env:
81+
GOOS: ${{ matrix.goos }}
82+
GOARCH: ${{ matrix.goarch }}
83+
CGO_ENABLED: ${{ steps.cgo.outputs.enabled }}
84+
run: |
85+
set -e
86+
87+
BUILD_DATE=$(date -u +"%Y-%m-%dT%H-%M-%SZ")
88+
GIT_COMMIT=$(git rev-parse --short HEAD 2>/dev/null || echo "none")
89+
90+
mkdir -p dist
91+
92+
go build -trimpath \
93+
-ldflags="-s -w \
94+
-X github.com/keshon/buildinfo.Version=dev \
95+
-X github.com/keshon/buildinfo.Commit=${GIT_COMMIT} \
96+
-X github.com/keshon/buildinfo.BuildTime=${BUILD_DATE} \
97+
-X github.com/keshon/buildinfo.Project=Melodix \
98+
-X 'github.com/keshon/buildinfo.Description=Discord music bot that allows you to play music from YouTube, SoundCloud and internet radio streams.'" \
99+
-o dist/melodix-discord${{ steps.bin.outputs.ext }} \
100+
./cmd/discord/
101+
102+
- name: Build CLI player
103+
env:
104+
GOOS: ${{ matrix.goos }}
105+
GOARCH: ${{ matrix.goarch }}
106+
CGO_ENABLED: ${{ steps.cgo.outputs.enabled }}
107+
run: |
108+
set -e
109+
110+
BUILD_DATE=$(date -u +"%Y-%m-%dT%H-%M-%SZ")
111+
GIT_COMMIT=$(git rev-parse --short HEAD 2>/dev/null || echo "none")
112+
113+
go build -trimpath \
114+
-ldflags="-s -w \
115+
-X github.com/keshon/buildinfo.Version=dev \
116+
-X github.com/keshon/buildinfo.Commit=${GIT_COMMIT} \
117+
-X github.com/keshon/buildinfo.BuildTime=${BUILD_DATE} \
118+
-X github.com/keshon/buildinfo.Project=Melodix \
119+
-X 'github.com/keshon/buildinfo.Description=CLI music player - same playback engine as the Discord bot.'" \
120+
-o dist/melodix-cli${{ steps.bin.outputs.ext }} \
121+
./cmd/cli/
122+
123+
- name: Prepare build bundle
124+
run: |
125+
PKG_ROOT="melodix-${{ matrix.goos }}-${{ matrix.goarch }}"
126+
mkdir -p "${PKG_ROOT}"
127+
128+
cp "dist/melodix-discord${{ steps.bin.outputs.ext }}" "${PKG_ROOT}/"
129+
cp "dist/melodix-cli${{ steps.bin.outputs.ext }}" "${PKG_ROOT}/"
130+
131+
cp README.md LICENSE "${PKG_ROOT}/"
132+
133+
if [ -f .env.example ]; then
134+
cp .env.example "${PKG_ROOT}/.env"
135+
fi
136+
137+
mkdir -p "${PKG_ROOT}/data"
138+
139+
if [ -d assets ]; then
140+
cp -R assets "${PKG_ROOT}/"
141+
fi
142+
143+
zip -r "dist/${PKG_ROOT}.zip" "${PKG_ROOT}"
144+
145+
- name: Upload artifact
146+
uses: actions/upload-artifact@v4
147+
with:
148+
name: melodix-${{ matrix.goos }}-${{ matrix.goarch }}
149+
path: dist/melodix-${{ matrix.goos }}-${{ matrix.goarch }}.zip
150+
retention-days: 14

0 commit comments

Comments
 (0)