name: Build on: [push, pull_request] jobs: windows: name: Windows MSYS2 strategy: fail-fast: false matrix: msystem: [MINGW32, MINGW64, UCRT64, CLANG64] include: - msystem: MINGW32 packagePrefix: mingw-w64-i686 - msystem: MINGW64 packagePrefix: mingw-w64-x86_64 - msystem: UCRT64 packagePrefix: mingw-w64-ucrt-x86_64 - msystem: CLANG64 packagePrefix: mingw-w64-clang-x86_64 runs-on: windows-latest defaults: run: shell: msys2 {0} steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: Setup uses: msys2/setup-msys2@v2 with: msystem: ${{ matrix.msystem }} update: true install: ${{ matrix.packagePrefix }}-toolchain ${{ matrix.packagePrefix }}-qt5-static - name: Build run: | mkdir build && pushd build $MSYSTEM_PREFIX/qt5-static/bin/qmake PREFIX=$GITHUB_WORKSPACE/pkg $GITHUB_WORKSPACE/Red_Panda_CPP.pro mingw32-make -j$(nproc) mingw32-make install popd - name: Upload uses: actions/upload-artifact@v2 with: name: Windows MSYS2 - msystem=${{ matrix.msystem }} path: pkg/ windows_legacy: name: Windows NT 5.x strategy: fail-fast: false matrix: profile: - 64-ucrt - 32-ucrt - 64-msvcrt - 32-msvcrt - 32-win2000 include: - isUcrt: 0 - profile: 64-ucrt isUcrt: 1 - profile: 32-ucrt isUcrt: 1 runs-on: windows-2019 defaults: run: shell: msys2 {0} env: _REDPANDA_QT_BUILD: "5.15.13+redpanda1" _QT_NAME: mingw141_${{ matrix.profile }} steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: Setup uses: msys2/setup-msys2@v2 with: msystem: UCRT64 update: true install: mingw-w64-x86_64-7zip mingw-w64-x86_64-cmake mingw-w64-i686-nsis curl git - name: Setup Qt run: | curl -LO https://github.com/redpanda-cpp/qtbase-xp/releases/download/$_REDPANDA_QT_BUILD/$_QT_NAME.7z /mingw64/bin/7z x $_QT_NAME.7z -oC:/Qt - name: Build run: | ./packages/msys/build-xp.sh -p ${{ matrix.profile }} $( [[ ${{ matrix.isUcrt }} -eq 1 ]] && echo --ucrt 22621 ) - name: Upload uses: actions/upload-artifact@v2 with: name: Windows NT 5.x - profile=${{ matrix.profile }} path: dist/* windows_msvc_x64: name: Windows MSVC x64 runs-on: windows-2019 steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: Setup uses: jurplel/install-qt-action@v3 with: version: '5.15.2' host: windows target: desktop arch: win64_msvc2019_64 archives: qtbase qtsvg qttools tools: tools_qtcreator,qt.tools.qtcreator - name: Build run: | $JOM = "${Env:RUNNER_WORKSPACE}/Qt/Tools/QtCreator/bin/jom/jom.exe" $VS_INSTALL_PATH = "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise" Import-Module "$VS_INSTALL_PATH\Common7\Tools\Microsoft.VisualStudio.DevShell.dll" Enter-VsDevShell -VsInstallPath "$VS_INSTALL_PATH" -SkipAutomaticLocation -DevCmdArguments -arch=amd64 mkdir build && pushd build qmake PREFIX=${Env:GITHUB_WORKSPACE}/pkg ${Env:GITHUB_WORKSPACE}/Red_Panda_CPP.pro & $JOM "-j${Env:NUMBER_OF_PROCESSORS}" & $JOM install windeployqt ${Env:GITHUB_WORKSPACE}/pkg/RedPandaIDE.exe rm ${Env:GITHUB_WORKSPACE}/pkg/vc_redist.x64.exe popd - name: Upload uses: actions/upload-artifact@v2 with: name: Windows MSVC x64 path: pkg/ windows_msvc_arm64ec: name: Windows MSVC ARM64EC runs-on: windows-2019 steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: Setup uses: jurplel/install-qt-action@v3 with: version: '5.15.2' host: windows target: desktop arch: win64_msvc2019_64 archives: qtbase qtsvg qttools tools: tools_qtcreator,qt.tools.qtcreator - name: Build run: | $JOM = "${Env:RUNNER_WORKSPACE}/Qt/Tools/QtCreator/bin/jom/jom.exe" $VS_INSTALL_PATH = "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise" Import-Module "$VS_INSTALL_PATH\Common7\Tools\Microsoft.VisualStudio.DevShell.dll" Enter-VsDevShell -VsInstallPath "$VS_INSTALL_PATH" -SkipAutomaticLocation -DevCmdArguments "-arch=arm64 -host_arch=amd64" mkdir build && pushd build qmake QMAKE_CFLAGS="/arm64EC" QMAKE_CXXFLAGS="/arm64EC" QMAKE_LFLAGS="/MACHINE:ARM64EC" QMAKE_LIBFLAGS="/MACHINE:ARM64X" PREFIX=${Env:GITHUB_WORKSPACE}/pkg ${Env:GITHUB_WORKSPACE}/Red_Panda_CPP.pro & $JOM "-j${Env:NUMBER_OF_PROCESSORS}" & $JOM install windeployqt ${Env:GITHUB_WORKSPACE}/pkg/RedPandaIDE.exe rm ${Env:GITHUB_WORKSPACE}/pkg/vc_redist.x64.exe popd - name: Upload uses: actions/upload-artifact@v2 with: name: Windows MSVC ARM64EC (do not use) path: pkg/ debian: name: Debian strategy: fail-fast: false matrix: arch: [amd64, i386] version: ["11", "12"] env: IMAGE: docker.io/${{ matrix.arch }}/debian:${{ matrix.version }} runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: Build run: | podman run --rm -v $PWD:/mnt -w /mnt $IMAGE ./packages/debian/01-in-docker.sh - name: Upload uses: actions/upload-artifact@v2 with: name: Debian ${{ matrix.version }} ${{ matrix.arch }} path: dist/*.deb ubuntu: name: Ubuntu strategy: fail-fast: false matrix: version: ["22.04", "23.10", "24.04", "devel"] env: IMAGE: docker.io/amd64/ubuntu:${{ matrix.version }} runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: Build run: | podman run --rm -v $PWD:/mnt -w /mnt $IMAGE ./packages/debian/01-in-docker.sh - name: Upload uses: actions/upload-artifact@v2 with: name: Ubuntu ${{ matrix.version }} amd64 path: dist/*.deb archlinux: name: Arch Linux runs-on: ubuntu-latest env: IMAGE: docker.io/amd64/archlinux:latest steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: Build run: | podman run --security-opt seccomp=unconfined --rm -v $PWD:/mnt -w /mnt $IMAGE ./packages/archlinux/01-in-docker.sh - name: Upload uses: actions/upload-artifact@v2 with: name: Arch Linux path: dist/*.pkg.tar.zst fedora: name: Fedora runs-on: ubuntu-latest strategy: fail-fast: false matrix: version: ["latest", "rawhide"] env: IMAGE: docker.io/amd64/fedora:${{ matrix.version }} steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: Build run: | podman run --security-opt seccomp=unconfined --rm -v $PWD:/mnt -w /mnt $IMAGE ./packages/fedora/01-in-docker.sh - name: Upload uses: actions/upload-artifact@v2 with: name: Fedora ${{ matrix.version }} x86_64 path: dist/*.rpm opensuse: name: openSUSE runs-on: ubuntu-latest strategy: fail-fast: false matrix: edition: ["leap", "tumbleweed"] env: IMAGE: docker.io/opensuse/${{ matrix.edition }}:latest steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: Build run: | podman run --security-opt seccomp=unconfined --rm -v $PWD:/mnt -w /mnt $IMAGE ./packages/opensuse/01-in-docker.sh - name: Upload uses: actions/upload-artifact@v2 with: name: openSUSE ${{ matrix.edition }} x86_64 path: dist/*.rpm musl: name: musl-based Linux (latest Alpine) runs-on: ubuntu-latest env: IMAGE: docker.io/amd64/alpine:latest steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: Build run: | podman run --security-opt seccomp=unconfined --rm -v $PWD:/mnt -w /mnt $IMAGE ./packages/alpine/01-in-docker.sh - name: Upload uses: actions/upload-artifact@v2 with: name: musl-based Linux (latest Alpine) path: dist/*.apk appimage: name: Linux AppImage runs-on: ubuntu-latest env: IMAGE: quay.io/redpanda-cpp/appimage-builder-x86_64:20240304.0 steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: Build run: | podman run --rm -v $PWD:/mnt -w /mnt $IMAGE ./packages/appimage/01-in-docker.sh - name: Upload uses: actions/upload-artifact@v2 with: name: Linux AppImage path: dist/*.AppImage static-deb: name: Static Deb runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: Build run: | packages/debian-static/builddeb.sh - name: Upload uses: actions/upload-artifact@v2 with: name: Static Deb path: dist/*.deb macos_x86_64: name: macOS x86_64 runs-on: macos-12 steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: Setup uses: jurplel/install-qt-action@v3 with: version: '5.15.2' host: mac target: desktop arch: clang_64 archives: qtbase qtsvg qttools tools: tools_qtcreator,qt.tools.qtcreator - name: Build run: | mkdir build && pushd build qmake PREFIX=$GITHUB_WORKSPACE/pkg $GITHUB_WORKSPACE/Red_Panda_CPP.pro make -j$(nproc) make install popd pushd $GITHUB_WORKSPACE/pkg/bin macdeployqt RedPandaIDE.app tar -cJf RedPandaIDE.tar.xz RedPandaIDE.app - name: Upload uses: actions/upload-artifact@v2 with: name: macOS x86_64 path: pkg/bin/RedPandaIDE.tar.xz