Package a19cc304dea3d0d2e3ba4b4015b6e1318b088e20 by @badaix #88
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: Package | |
run-name: Package ${{ github.sha }} by @${{ github.actor }} | |
on: | |
workflow_dispatch: | |
permissions: | |
contents: write | |
env: | |
BOOST_VERSION: 1_85_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 v0.0.0" \ | |
--notes-file changelog_current.md \ | |
) | |
echo "tag=$(basename $URL)" >> $GITHUB_OUTPUT | |
# - name: Use the value | |
# id: step_two | |
# run: | | |
# echo ${{ jobs.release.outputs.TAG }} | |
# https://github.com/badaix/snapcast/releases/tag/untagged-e3aef68bf08c739796d1 | |
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: Use the value | |
run: | | |
echo ${{needs.release.outputs.tag}} | |
- 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 python3 ccache unzip | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
- 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*_${{ matrix.arch }}.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 }}/_without-pulse_${{ matrix.arch }}/g' ../snapclient*_${{ 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 | |
- name: Archive artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: snapcast_${{ matrix.arch }}-debian-${{matrix.debian}}-${{ github.sha }} | |
path: ${{env.PARENT_DIR}}/snap*_${{ matrix.arch }}.deb | |
# 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 | |
win: | |
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: | | |
copy ${env:VCPKG_INSTALLATION_ROOT}\installed\x64-windows\bin\FLAC.dll bin\Release\ | |
copy ${env:VCPKG_INSTALLATION_ROOT}\installed\x64-windows\bin\ogg.dll bin\Release\ | |
copy ${env:VCPKG_INSTALLATION_ROOT}\installed\x64-windows\bin\opus.dll bin\Release\ | |
copy ${env:VCPKG_INSTALLATION_ROOT}\installed\x64-windows\bin\vorbis.dll bin\Release\ | |
copy ${env:VCPKG_INSTALLATION_ROOT}\installed\x64-windows\bin\soxr.dll bin\Release\ | |
copy "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Redist\MSVC\v142\vc_redist.x64.exe" bin\Release\ | |
- name: Archive artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: snapcast_win64-${{ github.sha }} | |
path: | | |
bin\Release\snapclient.exe | |
bin\Release\FLAC.dll | |
bin\Release\ogg.dll | |
bin\Release\opus.dll | |
bin\Release\vorbis.dll | |
bin\Release\soxr.dll | |
bin\Release\vc_redist.x64.exe |