mirror of
https://github.com/QB64-Phoenix-Edition/QB64pe.git
synced 2024-09-20 09:04:43 +00:00
2deac87b60
It's still not entirely clear what the underlying issue is, but the ALSA device provided by pulseaudio stops working after so many tests use it. I've tried various approaches, but simply restarting pulseaudio after every test is a bruteforce but successful solution. In practice it also doesn't have any noticeable performance penalty, so it seems like a file solution. The `CI_TESTING` environment variable is used to avoid restarting pulseaudio if the tests aren't being run in the CI environment (we don't want to restart your pulseaudio instance if you're running them locally!)
129 lines
3.9 KiB
YAML
129 lines
3.9 KiB
YAML
name: QB64-PE Build Process
|
|
|
|
on:
|
|
workflow_call:
|
|
|
|
jobs:
|
|
build:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- os: ubuntu-latest
|
|
platform: x64
|
|
prefix: lnx
|
|
- os: macos-latest
|
|
platform: x64
|
|
prefix: osx
|
|
- os: windows-latest
|
|
platform: x64
|
|
prefix: win
|
|
- os: windows-latest
|
|
platform: x86
|
|
prefix: win
|
|
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
env:
|
|
PLATFORM: ${{ matrix.platform }}
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
# A deploy key is setup so that the potential push of ./internal/source can
|
|
# trigger a new build. Care is taken to make sure loops cannot happen.
|
|
- uses: webfactory/ssh-agent@v0.5.4
|
|
if: ${{ github.event_name == 'push' && matrix.os == 'ubuntu-latest' }}
|
|
with:
|
|
ssh-private-key: ${{ secrets.ACTION_DEPLOY_KEY }}
|
|
|
|
- name: Install dependencies
|
|
if: ${{ matrix.os == 'ubuntu-latest' }}
|
|
run: sudo apt update && sudo apt install build-essential x11-utils mesa-common-dev libglu1-mesa-dev libasound2-dev zlib1g-dev pulseaudio dbus-x11 libportaudio2
|
|
|
|
# Pulseaudio puts a dummy ALSA device in place, which allows us to do
|
|
# audio testing on Linux
|
|
- name: Start Pulseaudio
|
|
if: ${{ matrix.os == 'ubuntu-latest' }}
|
|
run: dbus-launch pulseaudio --start
|
|
|
|
- name: Calculate Version
|
|
shell: bash
|
|
run: .ci/calculate_version.sh
|
|
|
|
- name: Read version for artifacts
|
|
shell: bash
|
|
run: echo "version=$(.ci/read-version.sh)" >> $GITHUB_ENV
|
|
|
|
- name: Bootstrap compiler Linux/OSX
|
|
if: ${{ matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest' }}
|
|
run: .ci/bootstrap.sh ${{ matrix.prefix }}
|
|
|
|
- name: Bootstrap compiler Windows
|
|
if: ${{ matrix.os == 'windows-latest' }}
|
|
run: .ci/bootstrap.bat
|
|
|
|
- name: Compile Linux/OSX
|
|
if: ${{ matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest' }}
|
|
run: .ci/compile.sh ${{ matrix.prefix }}
|
|
|
|
- name: Compile Windows
|
|
if: ${{ matrix.os == 'windows-latest' }}
|
|
run: .ci/compile.bat
|
|
|
|
- name: Test libqb
|
|
shell: bash
|
|
run: tests/run_c_tests.sh
|
|
|
|
- name: Print QB64-PE Version
|
|
run: ./qb64pe -?
|
|
|
|
- name: Test
|
|
shell: bash
|
|
env:
|
|
CI_TESTING: y
|
|
run: tests/run_tests.sh
|
|
|
|
- name: Create QB64-PE Artifact
|
|
shell: bash
|
|
run: .ci/make-dist.sh ${{ matrix.os }} "${{ env.version }}"
|
|
|
|
# Note that compiling programs in dist does modify the ./dist and make it
|
|
# dirty, but that's ok because we've already create the .7z or .tar.gz
|
|
# artifacts in the previous step
|
|
- name: Test QB64-PE Artifact
|
|
shell: bash
|
|
run: tests/run_dist_tests.sh ./dist/qb64pe ${{ matrix.prefix }}
|
|
|
|
# Only update ./internal/source if we're building on Linux, building on
|
|
# the main branch, and building a Pull request merge. Otherwise the repo
|
|
# is left alone.
|
|
- name: Update ./internal/source
|
|
if: ${{ github.event_name == 'push' && matrix.os == 'ubuntu-latest' && github.ref == 'refs/heads/main' && contains(github.event.head_commit.message, 'Merge pull request') }}
|
|
run: .ci/push-internal-source.sh
|
|
|
|
- uses: actions/upload-artifact@v3
|
|
if: always()
|
|
with:
|
|
name: qb64pe-${{ matrix.prefix }}${{ matrix.prefix == 'win' && format('-{0}', matrix.platform) || '' }}-${{ env.version }}
|
|
path: |
|
|
tests/results/
|
|
qb64pe_win-x86*.7z
|
|
qb64pe_win-x64*.7z
|
|
qb64pe_lnx*.tar.gz
|
|
qb64pe_osx*.tar.gz
|
|
|
|
- name: Create release
|
|
if: startsWith(github.ref, 'refs/tags/v')
|
|
uses: softprops/action-gh-release@v1
|
|
with:
|
|
draft: true
|
|
files: |
|
|
qb64pe_win-x86*.7z
|
|
qb64pe_win-x64*.7z
|
|
qb64pe_lnx*.tar.gz
|
|
qb64pe_osx*.tar.gz
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|