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

406 lines
11 KiB
YAML
Raw Normal View History

2023-10-23 16:47:32 +08:00
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
2023-10-23 16:47:32 +08:00
runs-on: windows-latest
defaults:
run:
shell: msys2 {0}
steps:
- uses: actions/checkout@v2
2024-03-04 18:38:09 +08:00
with:
fetch-depth: 0
2023-10-23 16:47:32 +08:00
- name: Setup
uses: msys2/setup-msys2@v2
with:
msystem: ${{ matrix.msystem }}
2023-10-23 16:47:32 +08:00
update: true
install: ${{ matrix.packagePrefix }}-toolchain ${{ matrix.packagePrefix }}-qt5-static
2023-10-23 16:47:32 +08:00
- 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 }}
2023-10-23 16:47:32 +08:00
path: pkg/
windows_legacy:
name: Windows NT 5.16.0 MinGW
strategy:
fail-fast: false
matrix:
arch: [32, 64]
2024-04-28 16:46:59 +08:00
include:
- arch: 32
vcArch: x86
- arch: 64
vcArch: x64
runs-on: windows-2019
2023-10-23 16:47:32 +08:00
defaults:
run:
shell: bash
env:
2024-04-28 16:46:59 +08:00
_QT_VERSION: "5.15.13"
_QT_NAME: mingw132_${{ matrix.arch }}-redpanda
_REDPANDA_QT_BUILD: "20240428.0"
_MINGW_LITE_RELEASE: "13.2.0-r4"
2023-10-23 16:47:32 +08:00
steps:
- uses: actions/checkout@v2
2024-03-04 18:38:09 +08:00
with:
fetch-depth: 0
2023-10-23 16:47:32 +08:00
- name: Setup toolchain
2024-04-28 16:46:59 +08:00
run: |
curl -LO https://github.com/redpanda-cpp/mingw-lite/releases/download/$_MINGW_LITE_RELEASE/mingw${{ matrix.arch }}-ucrt-$_MINGW_LITE_RELEASE.7z
7z x mingw${{ matrix.arch }}-ucrt-$_MINGW_LITE_RELEASE.7z
2023-10-23 16:47:32 +08:00
- name: Setup Qt
2023-10-23 16:47:32 +08:00
run: |
2024-04-28 16:46:59 +08:00
curl -LO https://github.com/redpanda-cpp/qtbase-xp/releases/download/$_REDPANDA_QT_BUILD/$_QT_NAME.7z
7z x $_QT_NAME.7z -oC:/Qt
2023-10-23 16:47:32 +08:00
- name: Build
run: |
2024-04-28 16:46:59 +08:00
export PATH="/c/Qt/$_QT_VERSION/$_QT_NAME/bin:$PWD/mingw${{ matrix.arch }}/bin:$PATH"
2023-10-23 16:47:32 +08:00
mkdir build && pushd build
{
qmake PREFIX=$GITHUB_WORKSPACE/pkg $GITHUB_WORKSPACE/Red_Panda_CPP.pro
mingw32-make -j$(nproc)
mingw32-make install
2024-04-28 16:46:59 +08:00
cp "/c/Program Files (x86)/Windows Kits/10/Redist/10.0.22621.0/ucrt/DLLs/${{ matrix.vcArch }}"/*.dll $GITHUB_WORKSPACE/pkg/
}
2023-10-23 16:47:32 +08:00
popd
- name: Upload
uses: actions/upload-artifact@v2
with:
name: Windows NT 5.16.0 MinGW - arch=${{ matrix.arch }}
2023-10-23 16:47:32 +08:00
path: pkg/
windows_msvc_x64:
name: Windows MSVC x64
runs-on: windows-2019
steps:
- uses: actions/checkout@v2
2024-03-04 18:38:09 +08:00
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
2024-03-04 18:38:09 +08:00
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
2024-01-18 10:41:40 +08:00
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 }}
2023-10-23 16:47:32 +08:00
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
2024-03-04 18:38:09 +08:00
with:
fetch-depth: 0
2023-10-23 16:47:32 +08:00
- name: Build
run: |
podman run --rm -v $PWD:/mnt -w /mnt $IMAGE ./packages/debian/01-in-docker.sh
2023-10-23 16:47:32 +08:00
- 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
2024-03-04 18:38:09 +08:00
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
2023-10-23 16:47:32 +08:00
path: dist/*.deb
archlinux:
name: Arch Linux
runs-on: ubuntu-latest
env:
IMAGE: docker.io/amd64/archlinux:latest
2023-10-23 16:47:32 +08:00
steps:
- uses: actions/checkout@v2
2024-03-04 18:38:09 +08:00
with:
fetch-depth: 0
2023-10-23 16:47:32 +08:00
- name: Build
run: |
podman run --security-opt seccomp=unconfined --rm -v $PWD:/mnt -w /mnt $IMAGE ./packages/archlinux/01-in-docker.sh
2023-10-23 16:47:32 +08:00
- name: Upload
uses: actions/upload-artifact@v2
with:
name: Arch Linux
path: dist/*.pkg.tar.zst
fedora:
name: Fedora
2023-10-24 12:20:32 +08:00
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
version: ["latest", "rawhide"]
env:
IMAGE: docker.io/amd64/fedora:${{ matrix.version }}
2023-10-24 12:20:32 +08:00
steps:
- uses: actions/checkout@v2
2024-03-04 18:38:09 +08:00
with:
fetch-depth: 0
2023-10-24 12:20:32 +08:00
- name: Build
run: |
podman run --security-opt seccomp=unconfined --rm -v $PWD:/mnt -w /mnt $IMAGE ./packages/fedora/01-in-docker.sh
2023-10-24 12:20:32 +08:00
- name: Upload
uses: actions/upload-artifact@v2
with:
name: Fedora ${{ matrix.version }} x86_64
2023-10-24 12:20:32 +08:00
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
2024-03-08 07:01:42 +08:00
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
2024-03-08 07:01:42 +08:00
- name: Build
run: |
podman run --security-opt seccomp=unconfined --rm -v $PWD:/mnt -w /mnt $IMAGE ./packages/opensuse/01-in-docker.sh
2024-03-08 07:01:42 +08:00
- name: Upload
uses: actions/upload-artifact@v2
with:
name: openSUSE ${{ matrix.edition }} x86_64
path: dist/*.rpm
2023-10-24 12:20:32 +08:00
musl:
name: musl-based Linux (latest Alpine)
runs-on: ubuntu-latest
env:
IMAGE: docker.io/amd64/alpine:latest
steps:
- uses: actions/checkout@v2
2024-03-04 18:38:09 +08:00
with:
fetch-depth: 0
- name: Build
run: |
podman run --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
2023-10-23 16:47:32 +08:00
macos_x86_64:
name: macOS x86_64
runs-on: macos-12
2023-10-23 16:47:32 +08:00
steps:
- uses: actions/checkout@v2
2024-03-04 18:38:09 +08:00
with:
fetch-depth: 0
2023-10-23 16:47:32 +08:00
- 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
2023-10-23 16:47:32 +08:00
- 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