mirror of
https://github.com/badaix/snapcast.git
synced 2025-04-28 09:47:09 +02:00
292 lines
12 KiB
YAML
292 lines
12 KiB
YAML
name: Package
|
|
run-name: Package ${{ github.sha }} by @${{ github.actor }}
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
env:
|
|
BOOST_VERSION: 1_87_0
|
|
SNAPWEB_VERSION: v0.8.0
|
|
|
|
jobs:
|
|
|
|
release:
|
|
runs-on: ubuntu-latest
|
|
name: Create release
|
|
outputs:
|
|
tag: ${{ steps.draft_release.outputs.tag }}
|
|
steps:
|
|
- name: Get dependencies
|
|
run: sudo apt-get update && sudo apt-get install -yq python3
|
|
env:
|
|
DEBIAN_FRONTEND: noninteractive
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
- name: Create release notes
|
|
run: $GITHUB_WORKSPACE/extras/changelog_current_version.py $GITHUB_WORKSPACE/changelog.md > $GITHUB_WORKSPACE/changelog_current.md
|
|
- name: Create draft release
|
|
id: draft_release
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
URL=$( \
|
|
gh release create v0.0.0 \
|
|
--draft \
|
|
--repo="$GITHUB_REPOSITORY" \
|
|
--title="Snapcast v${{ github.sha }}" \
|
|
--notes-file changelog_current.md \
|
|
)
|
|
echo "tag=$(basename $URL)" >> $GITHUB_OUTPUT
|
|
|
|
deb:
|
|
needs: release
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
debian:
|
|
- bullseye
|
|
- bookworm
|
|
arch:
|
|
- amd64
|
|
- armhf
|
|
- arm64
|
|
include:
|
|
- arch: "amd64"
|
|
os: ubuntu-latest
|
|
image_prefix: "debian:"
|
|
- arch: "armhf"
|
|
os: self-hosted-rpi4
|
|
image_prefix: "badaix/raspios-lite:"
|
|
- arch: "arm64"
|
|
os: self-hosted-rpi5
|
|
image_prefix: "badaix/raspios-lite:"
|
|
|
|
runs-on: ${{ matrix.os }}
|
|
name: deb (${{ matrix.arch }}, ${{ matrix.debian }})
|
|
timeout-minutes: 240
|
|
|
|
container:
|
|
image: ${{matrix.image_prefix}}${{matrix.debian}}
|
|
steps:
|
|
- name: Get dependencies
|
|
run: |
|
|
apt-get update && \
|
|
apt-get install -yq wget debhelper build-essential cmake git rename \
|
|
libatomic1 libasound2-dev libsoxr-dev libvorbisidec-dev libvorbis-dev libflac-dev \
|
|
libopus-dev alsa-utils libpulse-dev libavahi-client-dev avahi-daemon libexpat1-dev \
|
|
libssl-dev python3 ccache unzip
|
|
env:
|
|
DEBIAN_FRONTEND: noninteractive
|
|
- name: Get GitHub cli
|
|
run: |
|
|
(type -p wget >/dev/null || (apt update && apt-get install wget -y)) \
|
|
&& mkdir -p -m 755 /etc/apt/keyrings \
|
|
&& wget -qO- https://cli.github.com/packages/githubcli-archive-keyring.gpg | tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null \
|
|
&& chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \
|
|
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
|
|
&& apt update \
|
|
&& apt install gh -y
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
- name: Setup environment
|
|
run: |
|
|
echo "PARENT_DIR=$(dirname $GITHUB_WORKSPACE)" >> $GITHUB_ENV
|
|
BOOST_DOT_VERSION=$(echo ${BOOST_VERSION} | sed 's/_/./g')
|
|
echo "BOOST_DOT_VERSION=$BOOST_DOT_VERSION" >> $GITHUB_ENV
|
|
echo "BOOST=boost_${BOOST_VERSION}" >> $GITHUB_ENV
|
|
ln -s extras/package/debian debian
|
|
- name: Create changelog
|
|
run: |
|
|
$GITHUB_WORKSPACE/debian/changelog_md2deb.py $GITHUB_WORKSPACE/changelog.md > $GITHUB_WORKSPACE/debian/changelog
|
|
cat $GITHUB_WORKSPACE/debian/changelog
|
|
- name: Clean up
|
|
run: rm -rf ${{env.PARENT_DIR}}/snap*_*.deb
|
|
- name: Cache boost
|
|
id: cache-boost
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ${{env.BOOST}}
|
|
key: ${{env.BOOST}}
|
|
- name: Get boost
|
|
if: steps.cache-boost.outputs.cache-hit != 'true'
|
|
run: |
|
|
wget https://archives.boost.io/release/${{env.BOOST_DOT_VERSION}}/source/${{env.BOOST}}.tar.bz2
|
|
tar xjf ${{env.BOOST}}.tar.bz2
|
|
- name: cache ccache
|
|
id: cache-ccache
|
|
uses: actions/cache@v4
|
|
with:
|
|
# TODO: use environment variable $HOME/.ccache
|
|
path: /home/runner/.ccache
|
|
key: ${{ matrix.os }}-${{ matrix.debian }}-ccache-${{ github.sha }}
|
|
restore-keys: ${{ matrix.os }}-${{ matrix.debian }}-ccache-
|
|
- name: Get Snapweb
|
|
run: |
|
|
wget https://github.com/badaix/snapweb/releases/download/${SNAPWEB_VERSION}/snapweb.zip
|
|
unzip snapweb.zip -d snapweb
|
|
- name: Create deb package
|
|
env:
|
|
# TODO: use environment variable $HOME/.ccache
|
|
CCACHE_DIR: /home/runner/.ccache
|
|
run: |
|
|
fakeroot make -f debian/rules CMAKEFLAGS="-DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DBOOST_ROOT=$GITHUB_WORKSPACE/${{env.BOOST}} -DCMAKE_BUILD_TYPE:STRING=Release -DREVISION=${{ github.sha }} -DBUILD_WITH_JACK=OFF -DBUILD_WITH_PULSE=OFF -DSNAPWEB_DIR:STRING=$GITHUB_WORKSPACE/snapweb" binary
|
|
rename 's/_${{ matrix.arch }}/_${{ matrix.arch }}_${{ matrix.debian }}/g' ../snap*_${{ matrix.arch }}.deb
|
|
fakeroot make -f debian/rules clean
|
|
fakeroot make -f debian/rules CMAKEFLAGS="-DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DBOOST_ROOT=$GITHUB_WORKSPACE/${{env.BOOST}} -DCMAKE_BUILD_TYPE:STRING=Release -DREVISION=${{ github.sha }} -DBUILD_WITH_JACK=OFF -DSNAPWEB_DIR:STRING=$GITHUB_WORKSPACE/snapweb" binary
|
|
rm ../snapserver_*_${{ matrix.arch }}.deb
|
|
rename 's/_${{ matrix.arch }}/_${{ matrix.arch }}_${{ matrix.debian }}_with-pulse/g' ../snap*_${{ matrix.arch }}.deb
|
|
- name: Release artifacts
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
git config --global --add safe.directory $GITHUB_WORKSPACE
|
|
gh release upload ${{needs.release.outputs.tag}} ${{env.PARENT_DIR}}/snap*_*.deb
|
|
|
|
|
|
win:
|
|
needs: release
|
|
runs-on: windows-2019
|
|
name: win
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
- name: Checkout Snapcast
|
|
uses: actions/checkout@v4
|
|
with:
|
|
repository: badaix/snapcast
|
|
path: src/snapcast
|
|
ref: ${{ env.VERSION }}
|
|
- name: Cache dependencies
|
|
id: cache-dependencies
|
|
uses: actions/cache@v4
|
|
with:
|
|
#path: ${VCPKG_INSTALLATION_ROOT}\installed
|
|
path: c:\vcpkg\installed
|
|
key: ${{ runner.os }}-dependencies
|
|
- name: Get dependenciesenv
|
|
if: steps.cache-dependencies.outputs.cache-hit != 'true'
|
|
run: vcpkg.exe install libflac libvorbis soxr opus boost-asio --triplet x64-windows
|
|
- name: configure
|
|
run: |
|
|
echo vcpkg installation root: $env:VCPKG_INSTALLATION_ROOT
|
|
cmake -S . -B build -G "Visual Studio 16 2019" -DCMAKE_TOOLCHAIN_FILE="$env:VCPKG_INSTALLATION_ROOT/scripts/buildsystems/vcpkg.cmake" -DVCPKG_TARGET_TRIPLET="x64-windows" -DCMAKE_BUILD_TYPE="Release" -DREVISION="${{ github.sha }}" -DWERROR=ON
|
|
- name: build
|
|
run: cmake --build build --config Release --parallel 3 --verbose
|
|
- name: installer
|
|
run: |
|
|
mkdir bundle
|
|
copy ${env:VCPKG_INSTALLATION_ROOT}\installed\x64-windows\bin\FLAC.dll bundle\
|
|
copy ${env:VCPKG_INSTALLATION_ROOT}\installed\x64-windows\bin\ogg.dll bundle\
|
|
copy ${env:VCPKG_INSTALLATION_ROOT}\installed\x64-windows\bin\opus.dll bundle\
|
|
copy ${env:VCPKG_INSTALLATION_ROOT}\installed\x64-windows\bin\vorbis.dll bundle\
|
|
copy ${env:VCPKG_INSTALLATION_ROOT}\installed\x64-windows\bin\soxr.dll bundle\
|
|
copy "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Redist\MSVC\v142\vc_redist.x64.exe" bundle\
|
|
copy bin\Release\snapclient.exe bundle\
|
|
Compress-Archive -Path bundle\* -Destination snapclient_win64.zip
|
|
- name: Release artifacts
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
git config --global --add safe.directory .
|
|
gh release upload ${{needs.release.outputs.tag}} snapclient_win64.zip
|
|
|
|
# mac:
|
|
# strategy:
|
|
# fail-fast: false
|
|
# matrix:
|
|
# xcode: ['11']
|
|
|
|
# runs-on: macos-latest
|
|
# name: mac (xcode ${{ matrix.xcode }})
|
|
|
|
# steps:
|
|
# - name: Checkout
|
|
# uses: actions/checkout@v4
|
|
# - name: Checkout Snapcast
|
|
# uses: actions/checkout@v4
|
|
# with:
|
|
# repository: badaix/snapcast
|
|
# path: src/snapcast
|
|
# ref: ${{ env.VERSION }}
|
|
# - name: Setup environment
|
|
# run: |
|
|
# BOOST_DOT_VERSION=$(echo ${BOOST_VERSION} | sed 's/_/./g')
|
|
# echo "BOOST_DOT_VERSION=$BOOST_DOT_VERSION" >> $GITHUB_ENV
|
|
# echo "BOOST=boost_${BOOST_VERSION}" >> $GITHUB_ENV
|
|
# - name: Get dependencies
|
|
# run: brew install pkgconfig libsoxr ccache expat
|
|
# - name: Cache boost
|
|
# id: cache-boost
|
|
# uses: actions/cache@v4
|
|
# with:
|
|
# path: ${{env.BOOST}}
|
|
# key: ${{ runner.os }}-boost
|
|
# - name: Get boost
|
|
# if: steps.cache-boost.outputs.cache-hit != 'true'
|
|
# run: |
|
|
# wget https://boostorg.jfrog.io/artifactory/main/release/${{env.BOOST_DOT_VERSION}}/source/${{env.BOOST}}.tar.bz2
|
|
# tar xjf ${{env.BOOST}}.tar.bz2
|
|
# - name: Cache ccache
|
|
# id: cache-ccache
|
|
# uses: actions/cache@v4
|
|
# with:
|
|
# path: /Users/runner/.ccache
|
|
# key: ${{ runner.os }}-ccache-${{ github.sha }}
|
|
# restore-keys: ${{ runner.os }}-ccache-
|
|
# #- name: ccache dump config
|
|
# # run: ccache -p
|
|
# - name: configure
|
|
# run: cmake -S $GITHUB_WORKSPACE/src/snapcast -B build -DBOOST_ROOT=$GITHUB_WORKSPACE/${{env.BOOST}} -DCMAKE_BUILD_TYPE=Release -DREVISION=${{ github.sha }} -DWERROR=ON -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_FLAGS="-I/usr/local/include -Wno-deprecated-declarations"
|
|
# - name: build
|
|
# run: cmake --build build --parallel 3
|
|
|
|
# rpm:
|
|
# if: ${{ false }} # disable for now
|
|
# strategy:
|
|
# fail-fast: false
|
|
# matrix:
|
|
# image:
|
|
# - 34
|
|
# - 35
|
|
# os:
|
|
# - ubuntu-latest
|
|
# - self-hosted-rpi4
|
|
# include:
|
|
# - os: ubuntu-latest
|
|
# arch: "x86_64"
|
|
# - os: self-hosted-rpi4
|
|
# arch: "armv7hl"
|
|
|
|
# runs-on: ${{ matrix.os }}
|
|
# name: rpm (${{ matrix.arch }}, fedora ${{ matrix.image }})
|
|
|
|
# container:
|
|
# image: fedora:${{matrix.image}}
|
|
|
|
# steps:
|
|
# - name: Get dependencies
|
|
# run: dnf -y update && dnf -y install wget git rpm-build gcc-c++ cmake boost-devel alsa-lib-devel avahi-devel libatomic libvorbis-devel opus-devel pulseaudio-libs-devel flac-devel soxr-devel libstdc++-static expat-devel
|
|
# - name: Checkout
|
|
# uses: actions/checkout@v4
|
|
# - name: Checkout Snapcast
|
|
# uses: actions/checkout@v4
|
|
# with:
|
|
# repository: badaix/snapcast
|
|
# path: src/snapcast
|
|
# ref: ${{ env.VERSION }}
|
|
# - name: Create rpm package
|
|
# run: |
|
|
# mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
|
|
# cp rpm/* ~/rpmbuild/SOURCES/
|
|
# tar -C $GITHUB_WORKSPACE/src/ -czvf ~/rpmbuild/SOURCES/snapcast.tar.gz snapcast
|
|
# rpmbuild --nodebuginfo --define '_reversion ${{ github.sha }}' --define '_version ${{ env.VERSION }}' -bb ~/rpmbuild/SOURCES/snapcast.spec
|
|
# - name: Archive artifacts
|
|
# uses: actions/upload-artifact@v4
|
|
# with:
|
|
# name: snapcast_${{ matrix.arch }}-fedora-${{matrix.image}}-${{ github.sha }}
|
|
# path: ~/rpmbuild/RPMS/${{ matrix.arch }}/snap*.rpm
|
|
|