Build and create packages #256
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build and create packages | |
on: | |
push: | |
branches: | |
- main | |
- github-actions | |
tags: | |
- 'v*' | |
pull_request: | |
branches: | |
- main | |
jobs: | |
build-cmake: | |
name: Build ${{ matrix.config.name }} | |
runs-on: ${{ matrix.config.os }} | |
# see https://gist.github.com/NickNaso/0d478f1481686d5bcc868cac06620a60 | |
strategy: | |
fail-fast: false | |
matrix: | |
config: | |
- { | |
name: "Windows MSVC", | |
build_dir: "windows-msvc", | |
os: windows-2022, | |
build_type: "Release", | |
cc: "cl", | |
cxx: "cl", | |
generators: "Ninja", | |
} | |
# - { | |
# name: "Windows MinGW", | |
# build_dir: "windows-mingw", | |
# os: windows-latest, | |
# build_type: "Release", | |
# cc: "gcc", | |
# cxx: "g++", | |
# generators: "Ninja" | |
# } | |
- { | |
name: "Windows Clang 16", | |
build_dir: "windows-clang", | |
os: windows-2022, | |
build_type: "Release", | |
cc: "clang", | |
cxx: "clang++", | |
generators: "Ninja", | |
} | |
- { | |
name: "Ubuntu GCC", | |
build_dir: "ubuntu-gcc", | |
os: ubuntu-22.04, | |
build_type: "Release", | |
cc: "gcc", | |
cxx: "g++", | |
generators: "Ninja", | |
} | |
- { | |
name: "Ubuntu Clang", | |
build_dir: "ubuntu-clang", | |
os: ubuntu-22.04, | |
build_type: "Release", | |
cc: "clang", | |
cxx: "clang++", | |
generators: "Ninja", | |
} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: lukka/get-cmake@latest | |
- name: Install Qt | |
uses: jurplel/install-qt-action@v4 | |
with: | |
version: 6.7.1 | |
modules: "qt5compat" | |
cache: true | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
- name: Install cmake-format | |
run: pip3 install cmake-format | |
- name: Setup MSVC (optional) | |
if: ${{ matrix.config.cxx == 'cl' }} | |
uses: ilammy/msvc-dev-cmd@v1 | |
- name: Confiure | |
working-directory: ${{ github.workspace }} | |
id: runcmake | |
run: | | |
pwd | |
cmake -B "build/${{ matrix.config.build_dir }}" -G "${{ matrix.config.generators }}" -DCMAKE_BUILD_TYPE="${{ matrix.config.build_type }}" -DCMAKE_C_COMPILER=${{ matrix.config.cc }} -DCMAKE_CXX_COMPILER=${{ matrix.config.cxx }} | |
pwd | |
- name: Build | |
working-directory: ${{ github.workspace }} | |
id: runcmakebuild | |
run: | | |
cmake --build "build/${{ matrix.config.build_dir }}" --parallel --verbose | |
- name: Install | |
working-directory: ${{ github.workspace }} | |
id: runcmakeinstall | |
run: | | |
cmake --install "build/${{ matrix.config.build_dir }}" --prefix="dist/${{ matrix.config.build_dir }}/usr" | |
- name: Set version tag or commit SHA | |
id: version | |
run: | | |
if [[ "${GITHUB_REF}" == refs/tags/* ]]; then | |
echo "version=${GITHUB_REF##refs/tags/}" >> $GITHUB_ENV | |
else | |
echo "version=${GITHUB_SHA::7}" >> $GITHUB_ENV | |
fi | |
shell: bash | |
- name: Create AppImage (linux) | |
if: matrix.config.os == 'ubuntu-22.04' && matrix.config.cc == 'gcc' | |
run: | | |
# Qt plugin does not bundle the needed plugins, do this manually | |
mkdir -p "dist/${{ matrix.config.build_dir }}/usr/plugins/iconengines/" | |
mkdir -p "dist/${{ matrix.config.build_dir }}/usr/plugins/platforms/" | |
cp -arv ${QT_ROOT_DIR}/plugins/iconengines/* "dist/${{ matrix.config.build_dir }}/usr/plugins/iconengines/" | |
cp -arv ${QT_ROOT_DIR}/plugins/platforms/libqwayland-*.so "dist/${{ matrix.config.build_dir }}/usr/plugins/platforms/" | |
export LD_LIBRARY_PATH=dist/${{ matrix.config.build_dir }}/usr/lib:$LD_LIBRARY_PATH | |
export OUTPUT=build/qtedit4-qt671-x86_64.AppImage | |
sudo apt install fuse libxkbcommon-x11-0 libxcb-cursor-dev libxkbcommon-dev | |
wget --no-verbose "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage" | |
wget --no-verbose "https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage" | |
chmod +x linuxdeploy*.AppImage | |
./linuxdeploy-x86_64.AppImage --appdir "dist/${{ matrix.config.build_dir }}" --plugin qt --output appimage | |
- name: Upload AppImage (linux) | |
if: matrix.config.os == 'ubuntu-22.04' && matrix.config.cc == 'gcc' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: qtedit4-qt671-${{ env.version }}-x86_64.AppImage | |
path: build/qtedit4-qt671-x86_64.AppImage | |
- name: windeployqt (Windows) | |
if: matrix.config.os == 'windows-2022' && matrix.config.cc == 'cl' | |
run: | | |
windeployqt --release --no-translations --no-system-d3d-compiler --no-compiler-runtime --no-opengl-sw dist/${{ matrix.config.build_dir }}/usr/bin/qtedit4.exe | |
- name: Create setup (Windows) | |
if: matrix.config.os == 'windows-2022' && matrix.config.cc == 'cl' | |
uses: Minionguyjpro/[email protected] | |
with: | |
path: "setup_script.iss" | |
options: /O+ | |
# - name: Upload setup (Windows) | |
# if: matrix.config.os == 'windows-2022' && matrix.config.cc == 'cl' | |
# uses: actions/upload-artifact@v4 | |
# with: | |
# name: qtedit4-qt671-${{ env.version }}-x86_64.exe | |
# path: dist/qtedit4-win64.exe | |
- name: Rename and upload setup (Windows) | |
if: matrix.config.os == 'windows-2022' && matrix.config.cc == 'cl' | |
run: | | |
New-Item -ItemType Directory -Path temp | |
Copy-Item dist/qtedit4-win64.exe temp/qtedit4-qt671-${{ env.version }}-x86_64.exe | |
shell: pwsh | |
- name: Upload renamed setup (Windows) | |
if: matrix.config.os == 'windows-2022' && matrix.config.cc == 'cl' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: qtedit4-qt671-${{ env.version }}-x86_64.exe | |
path: temp/qtedit4-qt671-${{ env.version }}-x86_64.exe | |
create-release: | |
name: Draft GitHub Release | |
needs: build-cmake | |
runs-on: ubuntu-latest | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
- name: Download all artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
merge-multiple: true | |
- name: Set version tag or commit SHA | |
id: version | |
run: | | |
find ${GITHUB_WORKSPACE} | |
ls -lR ${GITHUB_WORKSPACE} | |
if [[ "${GITHUB_REF}" == refs/tags/* ]]; then | |
echo "version=${GITHUB_REF##refs/tags/}" >> $GITHUB_ENV | |
else | |
echo "version=${GITHUB_SHA::7}" >> $GITHUB_ENV | |
fi | |
shell: bash | |
- name: Create Draft Release | |
run: | | |
gh release create ${{ github.ref_name }} --title ${{ github.ref_name }} --generate-notes --draft | |
- name: Upload Windows Installer | |
run: | | |
gh release upload ${{ github.ref_name }} qtedit4-qt671-${{ env.version }}-x86_64.exe | |
- name: Upload Linux AppImage | |
run: | | |
gh release upload ${{ github.ref_name }} qtedit4-qt671-${{ env.version }}-x86_64.AppImage |