Package 8e028fb1b91fb92df0febc468d6069204b067480 by @badaix #110
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: Package | |
run-name: Package ${{ github.sha }} by @${{ github.actor }} | |
on: | |
workflow_dispatch: | |
permissions: | |
contents: write | |
env: | |
BOOST_VERSION: 1_86_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://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: | |
# 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 -DBUILD_TESTS=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 -DBUILD_TESTS=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 | |