Skip to content

CI: update to Qt 6.9.2 and macOS 26 #303

CI: update to Qt 6.9.2 and macOS 26

CI: update to Qt 6.9.2 and macOS 26 #303

Workflow file for this run

name: Build DB48X
on:
push:
branches: [ stable, dev ]
tags:
- 'v[0-9]+.[0-9]+.[0-9]'
pull_request:
branches: [ stable, dev ]
workflow_dispatch:
release:
types: [ published ]
permissions:
contents: write
jobs:
build-simulator-macos:
name: Build Simulator (macOS)
runs-on: macos-latest
env:
APPLE_CERT_DATA: ${{ secrets.APPLE_CERT_DATA }}
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
submodules: recursive
- name: Install Qt
uses: jurplel/install-qt-action@v4
with:
version: '6.9.2'
host: 'mac'
target: 'desktop'
arch: 'clang_64'
modules: 'qtmultimedia'
- name: Build simulator
run: |
echo "${{ github.run_number }}" > .build_id
make sim
- name: Run test suite
run: ./db48x.app/Contents/MacOS/db48x -H -I -w 10000 -r 50 -Tall
- name: Deploy Qt dependencies
run: |
macdeployqt db48x.app
- name: Code sign macOS app (with Apple Developer certificate)
if: ${{ env.APPLE_CERT_DATA != '' }}
uses: lando/code-sign-action@v3
with:
file: db48x.app
certificate-data: ${{ secrets.APPLE_CERT_DATA }}
certificate-password: ${{ secrets.APPLE_CERT_PASSWORD }}
apple-team-id: ${{ secrets.APPLE_TEAM_ID }}
apple-notary-user: ${{ secrets.APPLE_NOTARY_USER }}
apple-notary-password: ${{ secrets.APPLE_NOTARY_PASSWORD }}
apple-product-id: org.db48x.simulator
- name: Code sign macOS app (ad-hoc fallback)
if: ${{ env.APPLE_CERT_DATA == '' }}
run: |
codesign --force --deep --sign - db48x.app
- name: Create macOS archive
run: |
chmod +x allow-db48x-macos.sh
zip -r db48x-macos.zip db48x.app allow-db48x-macos.sh
- name: Upload simulator artifact
uses: actions/upload-artifact@v7
with:
name: db48x-simulator-macos
path: db48x-macos.zip
build-simulator-linux:
name: Build Simulator (Linux, Ubuntu)
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
submodules: recursive
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y libxcb-cursor0 libgl1-mesa-dev libxkbcommon-x11-0 libfreetype6-dev pkg-config
- name: Install Qt
uses: jurplel/install-qt-action@v4
with:
version: '6.9.2'
host: 'linux'
target: 'desktop'
modules: 'qtmultimedia'
- name: Build simulator
run: |
echo "${{ github.run_number }}" > .build_id
make sim
- name: Run test suite
run: ./db48x -H -I -w 10000 -r 50 -Tall
- name: Upload simulator artifact
uses: actions/upload-artifact@v7
with:
name: db48x-simulator-linux
path: |
db48x
help/
build-simulator-linux-fedora:
name: Build Simulator (Linux, Fedora)
runs-on: ubuntu-latest
container: fedora:latest
env:
LANG: C.UTF-8
LC_ALL: C.UTF-8
QT_QPA_PLATFORM: offscreen
steps:
- name: Install git
run: dnf install -y git
- name: Checkout code
uses: actions/checkout@v6
with:
submodules: recursive
- name: Install dependencies
run: |
dnf install -y @development-tools gcc gcc-c++ git which python3 \
python3-pip glibc-langpack-en \
pulseaudio-libs-devel \
libxcb-devel mesa-libGL-devel libxkbcommon-x11-devel freetype-devel \
pkgconfig xcb-util-wm-devel xcb-util-image-devel \
xcb-util-keysyms-devel xcb-util-renderutil-devel
python3 -m pip install aqtinstall
python3 -m aqt install-qt linux desktop 6.9.2 --outputdir /opt/Qt \
--modules qtmultimedia
echo "/opt/Qt/6.9.2/gcc_64/bin" >> "$GITHUB_PATH"
- name: Build simulator
run: |
echo "${{ github.run_number }}" > .build_id
make sim
- name: Run test suite
run: ./db48x -H -I -w 10000 -r 50 -Tall
- name: Upload simulator artifact
uses: actions/upload-artifact@v7
with:
name: db48x-simulator-linux-fedora
path: |
db48x
help/
build-simulator-linux-arch:
name: Build Simulator (Linux, Arch)
runs-on: ubuntu-latest
container: archlinux:latest
env:
LANG: C.UTF-8
LC_ALL: C.UTF-8
QT_QPA_PLATFORM: offscreen
steps:
- name: Install git
run: pacman -Sy --noconfirm git
- name: Checkout code
uses: actions/checkout@v6
with:
submodules: recursive
- name: Install dependencies
run: |
pacman -Syu --noconfirm base-devel git which python python-pip \
libpulse fontconfig libxcb mesa libxkbcommon-x11 freetype2 pkgconf \
xcb-util-wm xcb-util-image xcb-util-keysyms xcb-util-renderutil
python -m pip install --break-system-packages aqtinstall
python -m aqt install-qt linux desktop 6.9.2 --outputdir /opt/Qt \
--modules qtmultimedia
echo "/opt/Qt/6.9.2/gcc_64/bin" >> "$GITHUB_PATH"
- name: Build simulator
run: |
echo "${{ github.run_number }}" > .build_id
make sim
- name: Run test suite
run: ./db48x -H -I -w 10000 -r 50 -Tall
- name: Upload simulator artifact
uses: actions/upload-artifact@v7
with:
name: db48x-simulator-linux-arch
path: |
db48x
help/
build-simulator-windows:
name: Build Simulator (Windows)
runs-on: windows-latest
env:
WINDOWS_CERT_DATA: ${{ secrets.WINDOWS_CERT_DATA }}
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
submodules: recursive
- name: Setup MSYS2 with Qt6
uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
update: true
cache: true
install: >-
git
mingw-w64-x86_64-gcc
mingw-w64-x86_64-make
mingw-w64-x86_64-freetype
mingw-w64-x86_64-pkg-config
mingw-w64-x86_64-libsystre
mingw-w64-x86_64-qt6-base
mingw-w64-x86_64-qt6-declarative
mingw-w64-x86_64-qt6-multimedia
mingw-w64-x86_64-qt6-translations
mingw-w64-x86_64-qt6-tools
- name: Build simulator
shell: msys2 {0}
run: |
echo "${{ github.run_number }}" > .build_id
mingw32-make sim
- name: Run test suite
shell: msys2 {0}
run: ./db48x.exe -H -I -w 10000 -r 50 -Tall
- name: Deploy Qt dependencies
shell: msys2 {0}
run: |
windeployqt6 db48x.exe
# Copy MinGW runtime and MSYS2 dependencies
cp /mingw64/bin/libgcc_s_seh-1.dll .
cp /mingw64/bin/libstdc++-6.dll .
cp /mingw64/bin/libwinpthread-1.dll .
cp /mingw64/bin/libsystre-0.dll .
cp /mingw64/bin/libtre-5.dll .
cp /mingw64/bin/libintl-8.dll .
cp /mingw64/bin/libiconv-2.dll .
# Copy all Qt dependency DLLs
cp /mingw64/bin/libb2-1.dll .
cp /mingw64/bin/libdouble-conversion.dll .
cp /mingw64/bin/libicuin*.dll .
cp /mingw64/bin/libicuuc*.dll .
cp /mingw64/bin/libicudt*.dll .
cp /mingw64/bin/libpcre2-16-0.dll .
cp /mingw64/bin/zlib1.dll .
cp /mingw64/bin/libzstd.dll .
cp /mingw64/bin/libfreetype-6.dll .
cp /mingw64/bin/libharfbuzz-0.dll .
cp /mingw64/bin/libmd4c.dll .
cp /mingw64/bin/libpng16-16.dll .
cp /mingw64/bin/libbrotlidec.dll .
cp /mingw64/bin/libbrotlicommon.dll .
cp /mingw64/bin/libbz2-1.dll .
cp /mingw64/bin/libglib-2.0-0.dll .
cp /mingw64/bin/libgraphite2.dll .
cp /mingw64/bin/libpcre2-8-0.dll .
- name: Code sign Windows executable
if: ${{ env.WINDOWS_CERT_DATA != '' }}
uses: lando/code-sign-action@v3
with:
file: db48x.exe
certificate-data: ${{ secrets.WINDOWS_CERT_DATA }}
certificate-password: ${{ secrets.WINDOWS_CERT_PASSWORD }}
- name: Upload simulator artifact
uses: actions/upload-artifact@v7
with:
name: db48x-simulator-windows
path: |
db48x.exe
*.dll
platforms/
imageformats/
tls/
translations/
help/
build-color-simulator-macos:
name: Build Color DM32 Simulator (macOS)
runs-on: macos-latest
env:
APPLE_CERT_DATA: ${{ secrets.APPLE_CERT_DATA }}
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
submodules: recursive
- name: Install Qt
uses: jurplel/install-qt-action@v4
with:
version: '6.9.2'
host: 'mac'
target: 'desktop'
arch: 'clang_64'
modules: 'qtmultimedia'
- name: Build color DM32 simulator
run: |
echo "${{ github.run_number }}" > .build_id
make color-dm32-sim
- name: Run test suite
run: ./db50x.app/Contents/MacOS/db50x -H -I -w 10000 -r 50 -Tall
- name: Deploy Qt dependencies
run: |
macdeployqt db50x.app
- name: Code sign macOS app (with Apple Developer certificate)
if: ${{ env.APPLE_CERT_DATA != '' }}
uses: lando/code-sign-action@v3
with:
file: db50x.app
certificate-data: ${{ secrets.APPLE_CERT_DATA }}
certificate-password: ${{ secrets.APPLE_CERT_PASSWORD }}
apple-team-id: ${{ secrets.APPLE_TEAM_ID }}
apple-notary-user: ${{ secrets.APPLE_NOTARY_USER }}
apple-notary-password: ${{ secrets.APPLE_NOTARY_PASSWORD }}
apple-product-id: org.db48x.color-simulator
- name: Code sign macOS app (ad-hoc fallback)
if: ${{ env.APPLE_CERT_DATA == '' }}
run: |
codesign --force --deep --sign - db50x.app
- name: Create macOS archive
run: |
chmod +x allow-db50x-macos.sh
zip -r db50x-macos.zip db50x.app allow-db50x-macos.sh
- name: Upload color simulator artifact
uses: actions/upload-artifact@v7
with:
name: db50x-color-simulator-macos
path: db50x-macos.zip
build-color-simulator-linux:
name: Build Color DM32 Simulator (Linux, Ubuntu)
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
submodules: recursive
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y libxcb-cursor0 libgl1-mesa-dev libxkbcommon-x11-0 libfreetype6-dev pkg-config
- name: Install Qt
uses: jurplel/install-qt-action@v4
with:
version: '6.9.2'
host: 'linux'
target: 'desktop'
modules: 'qtmultimedia'
- name: Build color DM32 simulator
run: |
echo "${{ github.run_number }}" > .build_id
make color-dm32-sim
- name: Run test suite
run: ./db50x -H -I -w 10000 -r 50 -Tall
- name: Upload color simulator artifact
uses: actions/upload-artifact@v7
with:
name: db50x-color-simulator-linux
path: |
db50x
help/
build-color-simulator-linux-fedora:
name: Build Color DM32 Simulator (Linux, Fedora)
runs-on: ubuntu-latest
container: fedora:latest
env:
LANG: C.UTF-8
LC_ALL: C.UTF-8
QT_QPA_PLATFORM: offscreen
steps:
- name: Install git
run: dnf install -y git
- name: Checkout code
uses: actions/checkout@v6
with:
submodules: recursive
- name: Install dependencies
run: |
dnf install -y @development-tools gcc gcc-c++ git which python3 \
python3-pip glibc-langpack-en \
pulseaudio-libs-devel \
libxcb-devel mesa-libGL-devel libxkbcommon-x11-devel freetype-devel \
pkgconfig xcb-util-wm-devel xcb-util-image-devel \
xcb-util-keysyms-devel xcb-util-renderutil-devel
python3 -m pip install aqtinstall
python3 -m aqt install-qt linux desktop 6.9.2 --outputdir /opt/Qt \
--modules qtmultimedia
echo "/opt/Qt/6.9.2/gcc_64/bin" >> "$GITHUB_PATH"
- name: Build color DM32 simulator
run: |
echo "${{ github.run_number }}" > .build_id
make color-dm32-sim
- name: Run test suite
run: ./db50x -H -I -w 10000 -r 50 -Tall
- name: Upload color simulator artifact
uses: actions/upload-artifact@v7
with:
name: db50x-color-simulator-linux-fedora
path: |
db50x
help/
build-color-simulator-linux-arch:
name: Build Color DM32 Simulator (Linux, Arch)
runs-on: ubuntu-latest
container: archlinux:latest
env:
LANG: C.UTF-8
LC_ALL: C.UTF-8
QT_QPA_PLATFORM: offscreen
steps:
- name: Install git
run: pacman -Sy --noconfirm git
- name: Checkout code
uses: actions/checkout@v6
with:
submodules: recursive
- name: Install dependencies
run: |
pacman -Syu --noconfirm base-devel git which python python-pip \
libpulse fontconfig libxcb mesa libxkbcommon-x11 freetype2 pkgconf \
xcb-util-wm xcb-util-image xcb-util-keysyms xcb-util-renderutil
python -m pip install --break-system-packages aqtinstall
python -m aqt install-qt linux desktop 6.9.2 --outputdir /opt/Qt \
--modules qtmultimedia
echo "/opt/Qt/6.9.2/gcc_64/bin" >> "$GITHUB_PATH"
- name: Build color DM32 simulator
run: |
echo "${{ github.run_number }}" > .build_id
make color-dm32-sim
- name: Run test suite
run: ./db50x -H -I -w 10000 -r 50 -Tall
- name: Upload color simulator artifact
uses: actions/upload-artifact@v7
with:
name: db50x-color-simulator-linux-arch
path: |
db50x
help/
build-color-simulator-windows:
name: Build Color DM32 Simulator (Windows)
runs-on: windows-latest
env:
WINDOWS_CERT_DATA: ${{ secrets.WINDOWS_CERT_DATA }}
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
submodules: recursive
- name: Setup MSYS2 with Qt6
uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
update: true
cache: true
install: >-
git
mingw-w64-x86_64-gcc
mingw-w64-x86_64-make
mingw-w64-x86_64-freetype
mingw-w64-x86_64-pkg-config
mingw-w64-x86_64-libsystre
mingw-w64-x86_64-qt6-base
mingw-w64-x86_64-qt6-declarative
mingw-w64-x86_64-qt6-multimedia
mingw-w64-x86_64-qt6-translations
mingw-w64-x86_64-qt6-tools
- name: Build color DM32 simulator
shell: msys2 {0}
run: |
echo "${{ github.run_number }}" > .build_id
mingw32-make color-dm32-sim
- name: Run test suite
shell: msys2 {0}
run: ./db50x.exe -H -I -w 10000 -r 50 -Tall
- name: Deploy Qt dependencies
shell: msys2 {0}
run: |
windeployqt6 db50x.exe
# Copy MinGW runtime and MSYS2 dependencies
cp /mingw64/bin/libgcc_s_seh-1.dll .
cp /mingw64/bin/libstdc++-6.dll .
cp /mingw64/bin/libwinpthread-1.dll .
cp /mingw64/bin/libsystre-0.dll .
cp /mingw64/bin/libtre-5.dll .
cp /mingw64/bin/libintl-8.dll .
cp /mingw64/bin/libiconv-2.dll .
# Copy all Qt dependency DLLs
cp /mingw64/bin/libb2-1.dll .
cp /mingw64/bin/libdouble-conversion.dll .
cp /mingw64/bin/libicuin*.dll .
cp /mingw64/bin/libicuuc*.dll .
cp /mingw64/bin/libicudt*.dll .
cp /mingw64/bin/libpcre2-16-0.dll .
cp /mingw64/bin/zlib1.dll .
cp /mingw64/bin/libzstd.dll .
cp /mingw64/bin/libfreetype-6.dll .
cp /mingw64/bin/libharfbuzz-0.dll .
cp /mingw64/bin/libmd4c.dll .
cp /mingw64/bin/libpng16-16.dll .
cp /mingw64/bin/libbrotlidec.dll .
cp /mingw64/bin/libbrotlicommon.dll .
cp /mingw64/bin/libbz2-1.dll .
cp /mingw64/bin/libglib-2.0-0.dll .
cp /mingw64/bin/libgraphite2.dll .
cp /mingw64/bin/libpcre2-8-0.dll .
- name: Code sign Windows executable
if: ${{ env.WINDOWS_CERT_DATA != '' }}
uses: lando/code-sign-action@v3
with:
file: db50x.exe
certificate-data: ${{ secrets.WINDOWS_CERT_DATA }}
certificate-password: ${{ secrets.WINDOWS_CERT_PASSWORD }}
- name: Upload color simulator artifact
uses: actions/upload-artifact@v7
with:
name: db50x-color-simulator-windows
path: |
db50x.exe
*.dll
platforms/
imageformats/
tls/
translations/
help/
build-wasm:
name: Build WebAssembly
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
submodules: recursive
- name: Install build dependencies
run: |
sudo apt-get update
sudo apt-get install -y libfreetype6-dev pkg-config
- name: Generate recorder config header
run: |
make -C recorder TARGET=opt BUILDENV=auto RECURSE=.config .config
cp recorder/.build/linux/opt/config.h recorder/config.h
- name: Setup Emscripten
uses: mymindstorm/setup-emsdk@v16
with:
version: 'latest'
- name: Verify Emscripten
run: |
emcc --version
- name: Build WASM
shell: bash
run: |
echo "${{ github.run_number }}" > .build_id
make SHELL=/bin/bash wasm
- name: Upload WASM artifacts
uses: actions/upload-artifact@v7
with:
name: db48x-wasm
path: |
wasm/db48x.js
wasm/db48x.wasm
wasm/*.html
help/
build-android:
name: Build Android App (db48x)
runs-on: ubuntu-latest
env:
ANDROID_KEYSTORE_DATA: ${{ secrets.ANDROID_KEYSTORE_DATA }}
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
submodules: recursive
- name: Set up JDK 17
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: '17'
- name: Install Qt for Android
uses: jurplel/install-qt-action@v4
with:
version: '6.9.2'
host: 'linux'
target: 'android'
arch: 'android_arm64_v8a'
modules: 'qtmultimedia'
- name: Setup Android SDK
uses: android-actions/setup-android@v4
- name: Install Android NDK
run: |
sdkmanager --install "ndk;26.1.10909125"
- name: Install build dependencies
run: |
sudo apt-get update
sudo apt-get install -y libfreetype6-dev pkg-config
- name: Build Android App Bundle
run: |
echo "${{ github.run_number }}" > .build_id
export ANDROID_SDK_ROOT=$ANDROID_HOME
export ANDROID_NDK_ROOT=$ANDROID_HOME/ndk/26.1.10909125
export ANDROID_QT_BASE="$(dirname "$QT_ROOT_DIR")"
if [ -n "$ANDROID_KEYSTORE_DATA" ]; then
mkdir -p "$HOME/.local"
echo "$ANDROID_KEYSTORE_DATA" | base64 -d > "$HOME/.local/android_release.keystore"
fi
make android
env:
ANDROID_KEYSTORE_PASS: ${{ secrets.ANDROID_KEYSTORE_PASS }}
- name: List generated AAB files
run: |
echo "Looking for AAB files in workspace:"
find . -name "*.aab" -type f 2>/dev/null || echo "No AAB files found"
- name: Verify generated AAB
run: test -f android/db48x.aab
- name: Upload Android artifacts
uses: actions/upload-artifact@v7
with:
name: db48x-android
if-no-files-found: error
path: |
android/*.aab
android/**/*.aab
help/
build-color-android:
name: Build Android App (db50x)
runs-on: ubuntu-latest
env:
ANDROID_KEYSTORE_DATA: ${{ secrets.ANDROID_KEYSTORE_DATA }}
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
submodules: recursive
- name: Set up JDK 17
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: '17'
- name: Install Qt for Android
uses: jurplel/install-qt-action@v4
with:
version: '6.9.2'
host: 'linux'
target: 'android'
arch: 'android_arm64_v8a'
modules: 'qtmultimedia'
- name: Setup Android SDK
uses: android-actions/setup-android@v4
- name: Install Android NDK
run: |
sdkmanager --install "ndk;26.1.10909125"
- name: Install build dependencies
run: |
sudo apt-get update
sudo apt-get install -y libfreetype6-dev pkg-config
- name: Build Android App Bundle
run: |
echo "${{ github.run_number }}" > .build_id
export ANDROID_SDK_ROOT=$ANDROID_HOME
export ANDROID_NDK_ROOT=$ANDROID_HOME/ndk/26.1.10909125
export ANDROID_QT_BASE="$(dirname "$QT_ROOT_DIR")"
if [ -n "$ANDROID_KEYSTORE_DATA" ]; then
mkdir -p "$HOME/.local"
echo "$ANDROID_KEYSTORE_DATA" | base64 -d > "$HOME/.local/android_release.keystore"
fi
make color-dm32-android
env:
ANDROID_KEYSTORE_PASS: ${{ secrets.ANDROID_KEYSTORE_PASS }}
- name: List generated AAB files
run: |
echo "Looking for AAB files in workspace:"
find . -name "*.aab" -type f 2>/dev/null || echo "No AAB files found"
- name: Verify generated AAB
run: test -f android/db50x.aab
- name: Upload Android artifacts
uses: actions/upload-artifact@v7
with:
name: db50x-android
if-no-files-found: error
path: |
android/*.aab
android/**/*.aab
help/
build-dm42-firmware:
name: Build DM42 Firmware
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
submodules: recursive
- name: Install build dependencies
run: |
sudo apt-get update
sudo apt-get install -y gcc-arm-none-eabi binutils-arm-none-eabi libfreetype6-dev pkg-config
- name: Build DM42 firmware
run: |
echo "${{ github.run_number }}" > .build_id
make dist || make dist
mv db48x-v*.tgz db48x-dm42-firmware.tgz
- name: Upload DM42 firmware artifacts
uses: actions/upload-artifact@v7
with:
name: db48x-dm42-firmware
path: db48x-dm42-firmware.tgz
build-dm32-firmware:
name: Build DM32 Firmware
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
submodules: recursive
- name: Install build dependencies
run: |
sudo apt-get update
sudo apt-get install -y gcc-arm-none-eabi binutils-arm-none-eabi libfreetype6-dev pkg-config
- name: Build DM32 firmware
run: |
echo "${{ github.run_number }}" > .build_id
make dm32-dist || make dm32-dist
mv db50x-v*.tgz db50x-dm32-firmware.tgz
- name: Upload DM32 firmware artifacts
uses: actions/upload-artifact@v7
with:
name: db50x-dm32-firmware
path: db50x-dm32-firmware.tgz
build-dm42n-firmware:
name: Build DM42n Firmware
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
submodules: recursive
- name: Install build dependencies
run: |
sudo apt-get update
sudo apt-get install -y gcc-arm-none-eabi binutils-arm-none-eabi libfreetype6-dev pkg-config
- name: Build DM42n firmware
run: |
echo "${{ github.run_number }}" > .build_id
make dm42n-dist || make dm42n-dist
mv db50x-v*.tgz db50x-dm42n-firmware.tgz
- name: Upload DM42n firmware artifacts
uses: actions/upload-artifact@v7
with:
name: db50x-dm42n-firmware
path: db50x-dm42n-firmware.tgz
build-release-package:
name: Create Release Package
runs-on: ubuntu-latest
needs: [
build-simulator-macos,
build-simulator-linux,
build-simulator-linux-fedora,
build-simulator-linux-arch,
build-simulator-windows,
build-color-simulator-macos,
build-color-simulator-linux,
build-color-simulator-linux-fedora,
build-color-simulator-linux-arch,
build-color-simulator-windows,
build-android,
build-color-android,
build-wasm,
build-dm42-firmware,
build-dm32-firmware,
build-dm42n-firmware
]
if: github.event_name == 'push' && (github.ref == 'refs/heads/stable' || github.ref == 'refs/heads/dev')
steps:
- name: Download all artifacts
uses: actions/download-artifact@v7
- name: Display structure of downloaded files
run: ls -R
- name: Create release archives
run: |
cd db48x-dm42-firmware
tar czf ../db48x-dm42-${GITHUB_SHA:0:8}.tar.gz *
cd ../db50x-dm32-firmware
tar czf ../db50x-dm32-${GITHUB_SHA:0:8}.tar.gz *
cd ../db50x-dm42n-firmware
tar czf ../db50x-dm42n-${GITHUB_SHA:0:8}.tar.gz *
cd ../db48x-android
tar czf ../db48x-android-${GITHUB_SHA:0:8}.tar.gz *
cd ../db50x-android
tar czf ../db50x-android-${GITHUB_SHA:0:8}.tar.gz *
cd ../db48x-wasm
tar czf ../db48x-wasm-${GITHUB_SHA:0:8}.tar.gz *
cd ..
# macOS simulators are already zipped, just rename them
cp db48x-simulator-macos/db48x-macos.zip db48x-simulator-macos-${GITHUB_SHA:0:8}.zip
cp db50x-color-simulator-macos/db50x-macos.zip db50x-color-simulator-macos-${GITHUB_SHA:0:8}.zip
- name: Upload release packages
uses: actions/upload-artifact@v7
with:
name: release-packages
path: |
db48x-dm42-*.tar.gz
db50x-dm32-*.tar.gz
db50x-dm42n-*.tar.gz
db48x-android-*.tar.gz
db50x-android-*.tar.gz
db48x-wasm-*.tar.gz
db48x-simulator-macos-*.zip
db50x-color-simulator-macos-*.zip
create-release:
name: Create Release and Upload Assets
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
needs: [
build-simulator-macos,
build-simulator-linux,
build-simulator-linux-fedora,
build-simulator-linux-arch,
build-simulator-windows,
build-color-simulator-macos,
build-color-simulator-linux,
build-color-simulator-linux-fedora,
build-color-simulator-linux-arch,
build-color-simulator-windows,
build-android,
build-color-android,
build-wasm,
build-dm42-firmware,
build-dm32-firmware,
build-dm42n-firmware
]
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
fetch-depth: 0 # Fetch full history for tag access
- name: Download all artifacts
uses: actions/download-artifact@v7
with:
path: artifacts/
- name: Zip Linux artifacts # Zip for consistency (macOS is already zipped)
run: |
mkdir -p releases
cd artifacts/db48x-simulator-linux
zip -r ../../releases/db48x-linux.zip *
cd ../db50x-color-simulator-linux
zip -r ../../releases/db50x-linux.zip *
- name: Zip Windows artifacts
run: |
cd artifacts/db48x-simulator-windows
zip -r ../../releases/db48x-windows.zip *
cd ../db50x-color-simulator-windows
zip -r ../../releases/db50x-windows.zip *
- name: Move macOS artifacts (already zipped)
run: |
mv artifacts/db48x-simulator-macos/db48x-macos.zip releases/
mv artifacts/db50x-color-simulator-macos/db50x-macos.zip releases/
- name: Move DM32, DM42 and DM42n firmware artifacts
run: |
mv artifacts/db48x-dm42-*.tar.gz releases/db48x-dm42.tar.gz
mv artifacts/db50x-dm32-*.tar.gz releases/db50x-dm32.tar.gz
mv artifacts/db50x-dm42n-*.tar.gz releases/db50x-dm42n.tar.gz
- name: Package Android artifacts
run: |
cd artifacts/db48x-android
tar czf ../../releases/db48x-android.tar.gz *
cd ../db50x-android
tar czf ../../releases/db50x-android.tar.gz *
- name: Extract tag message for release body
run: |
git fetch --tags
git tag -l --format='%(contents)' "${{ github.ref_name }}" > release_notes.md
- name: Create Release and Upload Assets
uses: softprops/action-gh-release@v3
with:
tag_name: ${{ github.ref_name }}
name: ${{ github.ref_name }}
body_path: release_notes.md
files: |
releases/db48x-macos.zip
releases/db48x-linux.zip
releases/db48x-windows.zip
releases/db50x-macos.zip
releases/db50x-linux.zip
releases/db50x-windows.zip
releases/db48x-dm32.tar.gz
releases/db48x-dm42.tar.gz
releases/db48x-dm42n.tar.gz
releases/db48x-android.tar.gz
releases/db50x-android.tar.gz