Skip to content

docs(readme): update for 0.5.3 #220

docs(readme): update for 0.5.3

docs(readme): update for 0.5.3 #220

Workflow file for this run

name: Build debug
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on:
push:
branches: [main]
pull_request:
types: [opened, synchronize, reopened]
jobs:
build:
name: Build on ${{ matrix.platform.host }}
runs-on: ${{ matrix.platform.name }}
env:
QT_VERSION: "6.8.3"
# Public Store values are repository Variables, not gh CLI credentials
# or publisher secrets. The public staging registry is the safe default
# when no profile variable is configured; production builds must opt in
# explicitly with a repository variable using the custom profile.
NEUROLINGSCE_STORE_PROFILE: ${{ vars.NEUROLINGSCE_STORE_PROFILE || 'staging' }}
NEUROLINGSCE_MASCOT_INDEX_URL: ${{ vars.NEUROLINGSCE_MASCOT_INDEX_URL || '' }}
NEUROLINGSCE_SUBMISSION_SERVICE_URL: ${{ vars.NEUROLINGSCE_SUBMISSION_SERVICE_URL || '' }}
NEUROLINGSCE_GITHUB_LOGIN_CLIENT_ID: ${{ vars.NEUROLINGSCE_GITHUB_LOGIN_CLIENT_ID || '' }}
strategy:
fail-fast: false
matrix:
platform:
- name: ubuntu-22.04
host: linux
qt_arch: linux_gcc_64
qt_install_name: gcc_64
artifact_suffix: x86_64
artifact_path: build/bin/
- name: windows-latest
host: windows
qt_tools: tools_mingw1310
qt_arch: win64_mingw
qt_install_name: mingw_64
artifact_suffix: x86_64
artifact_path: build/bin/
- name: macos-14
host: mac
qt_arch: clang_64
qt_install_name: macos
qt_modules: "qtmultimedia qtimageformats"
artifact_suffix: arm64
artifact_path: build/macos/
steps:
- uses: actions/checkout@v4
with:
submodules: "recursive"
- name: Install build dependencies
if: matrix.platform.host == 'linux'
run: |
sudo apt-get update
sudo apt-get install -y libxcb-cursor0 libarchive-dev libwayland-dev wayland-protocols ccache zip
- name: Install macOS build dependencies
if: matrix.platform.host == 'mac'
run: |
brew install ninja
- name: Setup Python for aqt
uses: actions/setup-python@v5
with:
python-version: "3.13"
- name: Remove WindowsApps Python shim from PATH
if: matrix.platform.host == 'windows'
shell: pwsh
run: |
$paths = $env:PATH -split ';' | Where-Object { $_ -and ($_ -notlike '*\Microsoft\WindowsApps*') }
"PATH=$($paths -join ';')" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
- name: Install Qt6
uses: jdpurcell/install-qt-action@v5
with:
version: ${{ env.QT_VERSION }}
host: ${{ matrix.platform.host }}
target: "desktop"
arch: ${{ matrix.platform.qt_arch }}
modules: ${{ matrix.platform.qt_modules || 'qtmultimedia' }}
tools: ${{ matrix.platform.qt_tools || '' }}
cache: false
- name: Setup ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: ${{ matrix.platform.host }}-qt6-debug
max-size: 500M
- name: Configure with CMake
shell: bash
run: |
cmake -S . -B build -G Ninja \
-D CMAKE_BUILD_TYPE=Debug \
-D CMAKE_PREFIX_PATH="${{ runner.workspace }}/Qt/${{ env.QT_VERSION }}/${{ matrix.platform.qt_install_name }}" \
-D NEUROLINGSCE_STORE_PROFILE="$NEUROLINGSCE_STORE_PROFILE" \
-D NEUROLINGSCE_MASCOT_INDEX_URL="$NEUROLINGSCE_MASCOT_INDEX_URL" \
-D NEUROLINGSCE_SUBMISSION_SERVICE_URL="$NEUROLINGSCE_SUBMISSION_SERVICE_URL" \
-D NEUROLINGSCE_GITHUB_LOGIN_CLIENT_ID="$NEUROLINGSCE_GITHUB_LOGIN_CLIENT_ID" \
-D CMAKE_C_COMPILER_LAUNCHER=ccache \
-D CMAKE_CXX_COMPILER_LAUNCHER=ccache
- name: Build with CMake
shell: bash
run: |
# Keep the Debug verification contract explicit: the GUI, dedicated
# CLI and app-server protocol tests must all be buildable on every
# matrix runner. macapp is a packaging wrapper and is built below.
cmake --build build --parallel --config Debug \
--target NeurolingsCE NeurolingsCECli NeurolingsCECodexTests
- name: Build macOS app bundle
if: matrix.platform.host == 'mac'
shell: bash
run: |
cmake --build build --parallel --config Debug --target macapp
- name: Run CTest
shell: bash
run: |
if [ "${{ matrix.platform.host }}" = "linux" ]; then
export QT_QPA_PLATFORM=offscreen
fi
ctest --test-dir build -C Debug --output-on-failure
- name: Package macOS .app
if: matrix.platform.host == 'mac'
shell: bash
run: |
cd build/macos
/usr/bin/ditto -c -k --keepParent --sequesterRsrc \
NeurolingsCE.app NeurolingsCE-debug-${{ matrix.platform.artifact_suffix }}.zip
- name: Archive ${{ matrix.platform.host }} ${{ matrix.platform.artifact_suffix }} debug build
if: matrix.platform.host != 'mac'
uses: actions/upload-artifact@v4
with:
name: debug-${{ matrix.platform.host }}-${{ matrix.platform.artifact_suffix }}
path: ${{ matrix.platform.artifact_path }}
retention-days: 1
- name: Archive ${{ matrix.platform.host }} ${{ matrix.platform.artifact_suffix }} debug build
if: matrix.platform.host == 'mac'
uses: actions/upload-artifact@v4
with:
name: debug-${{ matrix.platform.host }}-${{ matrix.platform.artifact_suffix }}
path: build/macos/NeurolingsCE-debug-${{ matrix.platform.artifact_suffix }}.zip
retention-days: 1