421 lines
12 KiB
YAML
421 lines
12 KiB
YAML
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.1–6.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
|
||
with:
|
||
fetch-depth: 0
|
||
|
||
- 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.1–6.0 MinGW - arch=${{ matrix.arch }}
|
||
path: pkg/
|
||
|
||
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"]
|
||
include:
|
||
- arch: amd64
|
||
platform: linux/amd64
|
||
- arch: i386
|
||
platform: linux/386
|
||
|
||
runs-on: ubuntu-latest
|
||
|
||
steps:
|
||
- uses: actions/checkout@v2
|
||
with:
|
||
fetch-depth: 0
|
||
|
||
- 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
|
||
with:
|
||
fetch-depth: 0
|
||
|
||
- 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
|
||
with:
|
||
fetch-depth: 0
|
||
|
||
- name: Fetch container image
|
||
run: |
|
||
podman pull --platform linux/amd64 docker.io/amd64/archlinux:latest
|
||
|
||
- name: Build
|
||
run: |
|
||
podman run --security-opt seccomp=unconfined --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
|
||
with:
|
||
fetch-depth: 0
|
||
|
||
- name: Fetch container image
|
||
run: |
|
||
podman pull --platform linux/amd64 docker.io/amd64/fedora:latest
|
||
|
||
- name: Build
|
||
run: |
|
||
podman run --security-opt seccomp=unconfined --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
|
||
|
||
steps:
|
||
- uses: actions/checkout@v2
|
||
with:
|
||
fetch-depth: 0
|
||
|
||
- name: Fetch container image
|
||
run: |
|
||
podman pull --platform linux/amd64 docker.io/opensuse/tumbleweed:latest
|
||
|
||
- name: Build
|
||
run: |
|
||
podman run --security-opt seccomp=unconfined --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
|
||
with:
|
||
fetch-depth: 0
|
||
|
||
- 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
|
||
|
||
appimage:
|
||
name: Linux AppImage
|
||
runs-on: ubuntu-latest
|
||
|
||
steps:
|
||
- uses: actions/checkout@v2
|
||
with:
|
||
fetch-depth: 0
|
||
|
||
- name: Fetch container image
|
||
run: |
|
||
podman pull --platform linux/amd64 quay.io/redpanda-cpp/appimage-builder-x86_64:20240304.0
|
||
|
||
- name: Build
|
||
run: |
|
||
podman run --rm -v $PWD:/mnt -w /mnt -e CARCH=x86_64 quay.io/redpanda-cpp/appimage-builder-x86_64:20240304.0 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: Fetch container image
|
||
run: |
|
||
podman pull --platform linux/amd64 quay.io/redpanda-cpp/appimage-builder-x86_64:20240304.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-latest
|
||
|
||
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
|