RedPanda-CPP/.github/workflows/build.yml

354 lines
10 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
- 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.16.0 MinGW
strategy:
fail-fast: false
matrix:
arch: [32, 64]
runs-on: windows-2019
defaults:
run:
shell: bash
env:
_MINGW_TOOLCHAIN: /c/Qt/Tools/mingw810_${{ matrix.arch }}
_QT_INSTALL_PREFIX: /c/Qt/5.6.4/mingw81_${{ matrix.arch }}-redpanda
_REDPANDA_QT_BUILD: "20240301.0"
_REDPANDA_QT_ARCHIVE: qt5.6.4-mingw81_${{ matrix.arch }}-redpanda.7z
steps:
- uses: actions/checkout@v2
- name: Setup toolchain
uses: jurplel/install-qt-action@v3
with:
version: '5.15.2'
host: windows
target: desktop
arch: win${{ matrix.arch }}_mingw81
archives: qtbase
tools: tools_mingw,qt.tools.win${{ matrix.arch }}_mingw810
dir: C:/
- name: Setup Qt
run: |
curl -LO https://github.com/redpanda-cpp/qtbase-5.6/releases/download/$_REDPANDA_QT_BUILD/$_REDPANDA_QT_ARCHIVE
7z x $_REDPANDA_QT_ARCHIVE -oC:/Qt
- name: Build
run: |
export PATH="$_QT_INSTALL_PREFIX/bin:$_MINGW_TOOLCHAIN/bin:$PATH"
mkdir build && pushd build
{
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 NT 5.16.0 MinGW - arch=${{ matrix.arch }}
path: pkg/
windows_msvc_x64:
name: Windows MSVC x64
runs-on: windows-2019
steps:
- uses: actions/checkout@v2
- 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
- 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"]
include:
- arch: amd64
platform: linux/amd64
- arch: i386
platform: linux/386
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Fetch container image
run: |
podman pull --platform ${{ matrix.platform }} docker.io/${{ matrix.arch }}/debian:${{ matrix.version }}
- name: Build
run: |
podman run --rm -e SOURCE_DIR=/src -v $GITHUB_WORKSPACE:/src --platform linux/amd64 debian:${{ matrix.version }} /src/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", "devel"]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Fetch container image
run: |
podman pull --platform linux/amd64 docker.io/amd64/ubuntu:${{ matrix.version }}
- name: Build
run: |
podman run --rm -e SOURCE_DIR=/src -v $GITHUB_WORKSPACE:/src --platform linux/amd64 ubuntu:${{ matrix.version }} /src/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
steps:
- uses: actions/checkout@v2
- name: Fetch container image
run: |
podman pull --platform linux/amd64 docker.io/amd64/archlinux:latest
- name: Build
run: |
podman run --rm -e SOURCE_DIR=/src -v $GITHUB_WORKSPACE:/src --platform linux/amd64 docker.io/amd64/archlinux:latest /src/packages/archlinux/01-in-docker.sh
- name: Upload
uses: actions/upload-artifact@v2
with:
name: Arch Linux
path: dist/*.pkg.tar.zst
rpm_fedora:
name: RPM on latest Fedora
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Fetch container image
run: |
podman pull --platform linux/amd64 docker.io/amd64/fedora:latest
- name: Build
run: |
podman run --rm -e SOURCE_DIR=/src -v $GITHUB_WORKSPACE:/src --platform linux/amd64 docker.io/amd64/fedora:latest /src/packages/fedora/01-in-docker.sh
- name: Upload
uses: actions/upload-artifact@v2
with:
name: RPM on latest Fedora
path: dist/*.rpm
rpm_opensuse:
name: RPM on openSUSE Tumbleweed
runs-on: ubuntu-latest
if: false
steps:
- uses: actions/checkout@v2
- name: Fetch container image
run: |
podman pull --platform linux/amd64 docker.io/opensuse/tumbleweed:latest
- name: Build
run: |
podman run --rm -e SOURCE_DIR=/src -v $GITHUB_WORKSPACE:/src --platform linux/amd64 docker.io/opensuse/tumbleweed:latest /src/packages/opensuse/01-in-docker.sh
- name: Upload
uses: actions/upload-artifact@v2
with:
name: RPM on openSUSE Tumbleweed
path: dist/*.rpm
musl:
name: musl-based Linux (latest Alpine)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Fetch container image
run: |
podman pull --platform linux/amd64 docker.io/amd64/alpine:latest
- name: Build
run: |
podman run --rm -e SOURCE_DIR=/src -v $GITHUB_WORKSPACE:/src --platform linux/amd64 docker.io/amd64/alpine:latest /src/packages/alpine/01-in-docker.sh
- name: Upload
uses: actions/upload-artifact@v2
with:
name: musl-based Linux (latest Alpine)
path: dist/*.apk
macos_x86_64:
name: macOS x86_64
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- 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