CI: add custom changelog #29
Workflow file for this run
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
name: Release | |
on: | |
push: | |
tags: [ 'v*' ] | |
permissions: | |
contents: write | |
jobs: | |
build-deps: | |
runs-on: ubuntu-20.04 | |
strategy: | |
matrix: | |
include: | |
- target: x86-64-linux-gnu | |
cc: gcc | |
- target: arm-rpi-linux-gnueabihf | |
cc: arm-rpi-linux-gnueabihf-gcc | |
- target: arm-linux-gnueabihf | |
cc: arm-linux-gnueabihf-gcc | |
- target: aarch64-linux-gnu | |
cc: aarch64-linux-gnu-gcc | |
env: | |
CC: ${{ matrix.cc }} | |
steps: | |
- name: Install toolchain for ${{ matrix.target }} | |
if: ${{ matrix.target != 'arm-rpi-linux-gnueabihf' }} | |
run: sudo apt-get update && sudo apt-get install -y gcc-${{ matrix.target }} | |
- name: Install custom toolchain for ${{ matrix.target }} | |
if: ${{ matrix.target == 'arm-rpi-linux-gnueabihf' }} | |
run: | | |
wget https://github.com/devgianlu/rpi-toolchain/releases/download/v1/arm-rpi-linux-gnueabihf.tar.gz | |
sudo tar -C /usr --strip-components=1 -xzf arm-rpi-linux-gnueabihf.tar.gz | |
- name: Download alsa-lib sources | |
working-directory: /tmp | |
run: | | |
wget http://www.alsa-project.org/files/pub/lib/alsa-lib-1.2.10.tar.bz2 | |
tar -xvf alsa-lib-1.2.10.tar.bz2 | |
- name: Compile alsa-lib for ${{ matrix.target }} | |
working-directory: /tmp | |
run: | | |
cd alsa-lib-1.2.10 | |
./configure --enable-shared=yes --enable-static=no --with-pic \ | |
--host=${{ matrix.target }} --prefix=/tmp/deps/${{ matrix.target }} | |
make | |
sudo make install | |
- name: Download libogg sources | |
working-directory: /tmp | |
run: | | |
wget https://downloads.xiph.org/releases/ogg/libogg-1.3.5.tar.xz | |
tar -xvf libogg-1.3.5.tar.xz | |
- name: Compile libogg for ${{ matrix.target }} | |
working-directory: /tmp | |
run: | | |
cd libogg-1.3.5 | |
./configure --host=${{ matrix.target }} --prefix=/tmp/deps/${{ matrix.target }} | |
make | |
sudo make install | |
- name: Download libvorbis sources | |
working-directory: /tmp | |
run: | | |
wget https://downloads.xiph.org/releases/vorbis/libvorbis-1.3.7.tar.xz | |
tar -xvf libvorbis-1.3.7.tar.xz | |
- name: Compile libvorbis for ${{ matrix.target }} | |
working-directory: /tmp | |
run: | | |
cd libvorbis-1.3.7 | |
./configure --host=${{ matrix.target }} --prefix=/tmp/deps/${{ matrix.target }} | |
make | |
sudo make install | |
- name: Package dependencies | |
run: mkdir /tmp/out && tar -C /tmp/deps -cvf /tmp/out/${{ matrix.target }}.tar ${{ matrix.target }} | |
- name: Upload compiled dependencies | |
uses: actions/upload-artifact@v3 | |
with: | |
name: deps | |
path: /tmp/out | |
retention-days: 1 | |
build: | |
runs-on: ubuntu-20.04 | |
needs: | |
- build-deps | |
strategy: | |
matrix: | |
include: | |
- target: x86-64-linux-gnu | |
goarch: amd64 | |
goamd64: v1 | |
cc: gcc | |
tar: linux_x86_64 | |
- target: arm-rpi-linux-gnueabihf | |
goarch: arm | |
goarm: 6 | |
cc: arm-rpi-linux-gnueabihf-gcc | |
tar: linux_armv6_rpi | |
- target: arm-linux-gnueabihf | |
goarch: arm | |
goarm: 6 | |
cc: arm-linux-gnueabihf-gcc | |
tar: linux_armv6 | |
- target: aarch64-linux-gnu | |
goarch: arm64 | |
cc: aarch64-linux-gnu-gcc | |
tar: linux_arm64 | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- run: git fetch --force --tags | |
- name: Set up Golang | |
uses: actions/setup-go@v4 | |
with: | |
go-version: '1.20' | |
- name: Download compiled dependencies | |
uses: actions/download-artifact@v3 | |
with: | |
name: deps | |
path: /tmp/deps | |
- name: Unpack compiled dependencies | |
run: sudo mkdir /tmp/deps/${{ matrix.target }} && sudo tar -C /tmp/deps/${{ matrix.target }} --strip-components=1 -xvf /tmp/deps/${{ matrix.target }}.tar | |
- name: Install build dependencies | |
if: ${{ matrix.target != 'arm-rpi-linux-gnueabihf' }} | |
run: sudo apt-get update && sudo apt-get install -y gcc-${{ matrix.target }} | |
- name: Install build dependencies for arm-rpi-linux-gnueabihf | |
if: ${{ matrix.target == 'arm-rpi-linux-gnueabihf' }} | |
working-directory: /tmp | |
run: | | |
wget https://github.com/devgianlu/rpi-toolchain/releases/download/v1/arm-rpi-linux-gnueabihf.tar.gz | |
sudo tar -C /usr --strip-components=1 -xzf arm-rpi-linux-gnueabihf.tar.gz | |
- name: Build with Go | |
env: | |
CGO_ENABLED: 1 | |
GOOS: ${{ matrix.goos }} | |
GOARCH: ${{ matrix.goarch }} | |
GOARM: ${{ matrix.goarm }} | |
GOAMD64: ${{ matrix.goamd64 }} | |
CC: ${{ matrix.cc }} | |
PKG_CONFIG_PATH: /tmp/deps/${{ matrix.target }}/lib/pkgconfig/ | |
run: | | |
mkdir -p /tmp/out/${{ matrix.target }}/ | |
go build \ | |
-ldflags="-s -w -X go-librespot.commit={{.ShortCommit}} -X go-librespot.version={{.Version}}" \ | |
-o ./go-librespot ./cmd/daemon | |
tar -zcvf /tmp/out/go-librespot_${{ matrix.tar }}.tar.gz go-librespot README.md | |
- name: Upload compiled binary | |
uses: actions/upload-artifact@v3 | |
with: | |
name: binaries | |
path: /tmp/out | |
retention-days: 1 | |
publish: | |
runs-on: ubuntu-20.04 | |
needs: | |
- build | |
steps: | |
- name: Download compiled binaries | |
uses: actions/download-artifact@v3 | |
with: | |
name: binaries | |
path: /tmp/out | |
- name: Build changelog | |
uses: mikepenz/release-changelog-builder-action@v3 | |
id: changelog | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Release binaries | |
uses: softprops/action-gh-release@v1 | |
with: | |
body: ${{ steps.changelog.outputs.changelog }} | |
files: /tmp/out/* |