Web - fix CI: live check knows rand_buf, the tree check waits only on… #124
This file contains hidden or 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
| # Builds Sonic Pi as a real Debian-Policy package, the way a Debian | |
| # maintainer would: assemble a source package (.dsc + orig + component | |
| # tarballs, supersonic submodule spliced in), build it with dpkg-buildpackage | |
| # in a container whose NETWORK IS DISCONNECTED (proving the build needs | |
| # none) against Debian-archive dependency versions (system Qt, QScintilla, | |
| # JUCE, libsndfile, Boost), then lintian (failing on errors AND warnings), | |
| # autopkgtest (the layout gate + engine boot), and an install smoke test in | |
| # a pristine container. | |
| # | |
| # This package exists to remove the friction between upstream and the Debian | |
| # maintainers — packaging/debian is meant to be adoptable by the archive | |
| # with no patch stack. Keeping it green here is what keeps that true. | |
| # | |
| # Builds trixie (current stable) only: what today's users install on. sid | |
| # (where maintainer uploads land) is rolling and regularly breaks itself | |
| # mid-transition, so it doesn't gate pushes — build it on demand when | |
| # preparing a Debian upload. | |
| # | |
| # Same long-lived-container pattern as the supersonic repo's debian.yml: one | |
| # `docker run -d`, one `docker exec` per phase so failures point at the | |
| # stage that broke. See app/linux-debian-ci.sh for the phases. | |
| name: Debian Package | |
| on: | |
| push: | |
| branches: [dev, stable] | |
| tags: ['v*'] | |
| # PRs are path-filtered (each dist leg is expensive); pushes to dev and | |
| # tags always run so coverage stays complete where it counts. Tag pushes | |
| # are deliberately unfiltered — path filters behave unpredictably on tag | |
| # events and a silently skipped release build would lose the release deb. | |
| pull_request: | |
| branches: [dev] | |
| paths: | |
| - 'app/**' | |
| - 'etc/synthdefs/**' | |
| - 'packaging/**' | |
| - 'VERSION' | |
| - '.github/workflows/debian.yml' | |
| workflow_dispatch: | |
| jobs: | |
| deb: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| dist: [trixie] | |
| name: debian-${{ matrix.dist }} | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 150 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| # recursive, not true: the engine (app/external/supersonic) carries | |
| # clockwork as a submodule of its own, and the source assembly | |
| # archives both trees and vendors the Rust crates across both. | |
| submodules: recursive | |
| - name: Start ${{ matrix.dist }} container | |
| run: | | |
| docker run -d --name deb \ | |
| -v "${GITHUB_WORKSPACE}:/src" \ | |
| -w /src \ | |
| debian:${{ matrix.dist }} sleep infinity | |
| - name: Packaging toolchain | |
| run: docker exec deb app/linux-debian-ci.sh deps | |
| - name: Install Build-Depends | |
| run: docker exec deb app/linux-debian-ci.sh builddeps | |
| - name: Assemble source package | |
| run: docker exec deb app/linux-debian-ci.sh source | |
| # From here the container has no network: the package build fetching | |
| # anything is a bug, and this is what catches it. | |
| - name: Disconnect network | |
| run: docker network disconnect bridge deb | |
| - name: Build package (offline, server test suite) | |
| run: docker exec deb app/linux-debian-ci.sh build | |
| - name: Reconnect network | |
| run: docker network connect bridge deb | |
| - name: lintian | |
| run: docker exec deb app/linux-debian-ci.sh lintian | |
| - name: autopkgtest | |
| run: docker exec deb app/linux-debian-ci.sh autopkgtest | |
| - name: Stop container | |
| if: ${{ always() }} | |
| run: docker rm -f deb || true | |
| - name: Install smoke test (pristine container) | |
| run: | | |
| docker run --rm \ | |
| -v "${GITHUB_WORKSPACE}:/src" \ | |
| -w /src \ | |
| debian:${{ matrix.dist }} \ | |
| bash app/linux-debian-ci.sh smoke | |
| - name: Upload package artifacts | |
| if: ${{ always() }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: debian-${{ matrix.dist }} | |
| # warn, not error: this step also runs on early-phase failures | |
| # (if: always()), where zero artifacts is expected and an error | |
| # here would bury the real failure. | |
| if-no-files-found: warn | |
| path: | | |
| app/build/debian/*.dsc | |
| app/build/debian/*.tar.xz | |
| app/build/debian/build-area/*.deb | |
| app/build/debian/build-area/*.changes | |
| app/build/debian/build-area/*.buildinfo |