migrated to qt6 #1860
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
# https://docs.github.com/en/actions/learn-github-actions/contexts | |
--- | |
name: Gittyup | |
on: | |
push: | |
branches: | |
- master | |
tags: | |
- 'gittyup_v*' | |
pull_request: | |
page_build: | |
workflow_dispatch: | |
env: | |
IS_RELEASE: ${{ github.event_name == 'push' && github.ref_type == 'tag' && startswith(github.ref_name, 'gittyup_v') }} | |
jobs: | |
formatting-check: | |
name: Formatting Check | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Run clang-format style check for C/C++/Protobuf programs. | |
uses: jidicula/[email protected] | |
with: | |
clang-format-version: '13' | |
exclude-regex: 'dep' | |
- name: Check CMake code style | |
run: | | |
pip install cmake-format==0.6.13 && \ | |
find \( -type d -path './dep/*/*' -prune \) -o \( -name CMakeLists.txt -exec cmake-format --check {} + \) | |
flatpak: | |
name: "Flatpak" | |
runs-on: ubuntu-latest | |
container: | |
# image: bilelmoussaoui/flatpak-github-actions:kde-5.15-21.08 | |
image: archlinux:latest | |
options: --privileged | |
steps: | |
- name: Update | |
run: | | |
pacman --noconfirm -Suy | |
pacman --noconfirm -S flatpak flatpak-builder xorg-server-xvfb | |
flatpak install --assumeyes org.kde.Sdk//5.15-21.08 | |
flatpak install --assumeyes org.freedesktop.Sdk.Extension.golang//21.08 | |
flatpak install --assumeyes org.kde.Platform//5.15-21.08 | |
- name: Show environment variables | |
run: > | |
echo IS_RELEASE: ${{ env.IS_RELEASE }} | |
# https://stackoverflow.com/questions/60916931/github-action-does-the-if-have-an-else | |
- name: Determine flatpak release branch | |
uses: haya14busa/action-cond@v1 | |
id: flatpak_release_branch | |
with: | |
cond: ${{ env.IS_RELEASE }} | |
if_true: 'stable' | |
if_false: 'development' | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Clone flatpak manifest from Flathub | |
uses: GuillaumeFalourd/clone-github-repo-action@v2 | |
with: | |
owner: 'flathub' | |
repository: 'com.github.Murmele.Gittyup' | |
# just until the new release is out | |
- name: Checkout restructureCMake | |
run: | | |
cd com.github.Murmele.Gittyup | |
git checkout Qt6 | |
- name: Replace git tag by the commit id on which it runs | |
if: github.ref_type != 'tag' | |
run: > | |
sed -i 's@tag: .*@commit: "${{ (github.event.pull_request && github.event.pull_request.head.sha) || github.sha }}"@' com.github.Murmele.Gittyup/com.github.Murmele.Gittyup.yml | |
- name: Use correct git tag | |
if: github.ref_type == 'tag' | |
run: > | |
sed -i 's@tag: .*$@tag: "${{ github.ref_name }}"@' com.github.Murmele.Gittyup/com.github.Murmele.Gittyup.yml | |
- name: Replace source url | |
run: > | |
sed -i "s@url: .*Gittyup.git@url: $GITHUB_SERVER_URL/$GITHUB_REPOSITORY@" com.github.Murmele.Gittyup/com.github.Murmele.Gittyup.yml | |
- name: Add dev build marker to cmake options | |
if: github.ref_type != 'tag' | |
run: > | |
sed -i 's@config-opts: \["\(.*\)"\]@config-opts: ["\1", "-DDEV_BUILD=${{ github.ref_name }}"]@' com.github.Murmele.Gittyup/com.github.Murmele.Gittyup.yml | |
- name: Replace desktop file name suffix | |
if: github.ref_type != 'tag' | |
run: > | |
sed -i 's@desktop-file-name-suffix: ""@desktop-file-name-suffix: " (Development)"@' com.github.Murmele.Gittyup/com.github.Murmele.Gittyup.yml | |
- name: Enable automatic update | |
if: github.ref_type != 'tag' | |
run: > | |
sed -i 's@-DENABLE_UPDATE_OVER_GUI=OFF@-DENABLE_UPDATE_OVER_GUI=ON@' com.github.Murmele.Gittyup/com.github.Murmele.Gittyup.yml | |
- name: Show Flatpak manifest | |
run: cat com.github.Murmele.Gittyup/com.github.Murmele.Gittyup.yml | |
- name: Build package | |
uses: bilelmoussaoui/flatpak-github-actions/flatpak-builder@v4 | |
with: | |
bundle: Gittyup.flatpak | |
manifest-path: com.github.Murmele.Gittyup/com.github.Murmele.Gittyup.yml | |
cache: false | |
branch: ${{ steps.flatpak_release_branch.outputs.value }} | |
- name: Publish build artifacts | |
uses: actions/upload-artifact@v2 | |
with: | |
path: com.github.Murmele.Gittyup/* | |
name: Gittyup Flatpak | |
build: | |
runs-on: ${{ matrix.env.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
qt: | |
- version: 6.5.* | |
env: | |
- name: linux | |
os: ubuntu-latest | |
ninja_platform: linux | |
qt_platform: linux | |
qt_arch: gcc_64 | |
openssl_arch: linux-x86_64 | |
ld_library_arch: linux-x86-64 | |
cmake_flags: "-DGENERATE_APPDATA=ON -DCMAKE_INSTALL_PREFIX=/usr -DUSE_SYSTEM_QT=ON -DENABLE_UPDATE_OVER_GUI=OFF" | |
pack: 0 | |
cmake_env: {} | |
- name: macos | |
os: macos-latest | |
ninja_platform: mac | |
qt_platform: mac | |
openssl_arch: darwin64-x86_64-cc | |
cmake_env: {} | |
pack: 1 | |
- name: win64 | |
os: windows-latest | |
ninja_platform: win | |
qt_platform: windows | |
qt_arch: win64_msvc2019_64 | |
qt_arch_check_only: win64_msvc2017_64 | |
openssl_arch: VC-WIN64A | |
msvc_arch: x64 | |
cmake_flags: "-DUSE_BUNDLED_ZLIB=1" | |
cmake_env: | |
CMAKE_RC_FLAGS: "/C 1252" | |
CC: clang | |
CXX: clang++ | |
pack: 1 | |
steps: | |
# otherwise the testcases will fail, because signature is invalid | |
- name: Set git name and email | |
run: | | |
git config --global user.name "Your Name" | |
git config --global user.email "[email protected]" | |
git config --list | |
- name: Configure development build | |
if: github.ref_type != 'tag' | |
uses: allenevans/set-env@c4f231179ef63887be707202a295d9cb1c687eb9 | |
with: | |
CMAKE_FLAGS: '-DDEV_BUILD="${{ github.ref_name }}"' | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Initialize Submodules | |
uses: snickerbockers/submodules-init@v4 | |
- name: Install Perl | |
if: matrix.env.ninja_platform == 'win' | |
uses: shogo82148/actions-setup-perl@v1 | |
with: | |
perl-version: '5.30' | |
- name: Install Qt | |
uses: jurplel/[email protected] | |
timeout-minutes: 10 | |
with: | |
version: ${{ matrix.qt.version }} | |
target: desktop | |
host: ${{ matrix.env.qt_platform }} | |
arch: ${{ matrix.env.qt_arch }} | |
install-deps: true | |
modules: qtwebengine | |
- name: Install Ninja | |
uses: seanmiddleditch/gha-setup-ninja@v3 | |
with: | |
version: 1.9.0 | |
platform: ${{ matrix.env.ninja_platform }} | |
destination: ninja | |
- name: Setup MSVC environment | |
if: matrix.env.ninja_platform == 'win' | |
uses: seanmiddleditch/gha-setup-vsdevenv@v3 | |
with: | |
arch: ${{ matrix.env.msvc_arch }} | |
- name: Install NASM | |
if: matrix.env.ninja_platform == 'win' | |
uses: ilammy/[email protected] | |
- name: Build OpenSSL (Linux) | |
if: matrix.env.ninja_platform == 'linux' | |
run: | | |
cd dep/openssl/openssl | |
./config -fPIC | |
make | |
- name: Build OpenSSL (macOS) | |
if: matrix.env.ninja_platform == 'mac' | |
run: | | |
cd dep/openssl/openssl | |
./Configure ${{ matrix.env.openssl_arch }} no-shared | |
make | |
- name: Build OpenSSL (Windows) | |
if: matrix.env.ninja_platform == 'win' | |
run: | | |
cd dep/openssl/openssl | |
perl Configure ${{ matrix.env.openssl_arch }} | |
nmake | |
- name: Configure Release | |
env: ${{ matrix.env.cmake_env }} | |
run: | | |
mkdir -p build/release | |
cd build/release | |
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DUPDATE_TRANSLATIONS=ON -DGITTYUP_CI_TESTS=ON ${{ env.CMAKE_FLAGS }} ${{ matrix.env.cmake_flags }} ../.. | |
- name: Build Information | |
run: | | |
echo "ninja version: $(ninja --version)" | |
git --version | |
qmake --version | |
cmake --version | |
- name: Build | |
run: | | |
cd build/release | |
ninja package | |
# Command copied from flathub build process | |
- name: Validate appdata file | |
if: matrix.env.ninja_platform == 'linux' | |
run: | | |
echo "Show generated appdata file" | |
cat ./build/release/rsrc/linux/com.github.Murmele.Gittyup.appdata.xml | |
echo "Start validating appdata file" | |
sudo apt install flatpak | |
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo | |
sudo flatpak install -y org.freedesktop.appstream-glib | |
flatpak run --env=G_DEBUG=fatal-criticals org.freedesktop.appstream-glib validate ./build/release/rsrc/linux/com.github.Murmele.Gittyup.appdata.xml | |
- name: Publish build artifacts | |
if: matrix.env.pack | |
uses: actions/upload-artifact@v3 | |
with: | |
path: build/release/pack/Gittyup-* | |
name: Gittyup ${{ matrix.env.name }} | |
- name: Publish version file | |
if: matrix.env.pack | |
uses: actions/upload-artifact@v3 | |
with: | |
path: build/release/Version.txt | |
name: Gittyup-VERSION | |
- name: Check Version file | |
run: | | |
cd build/release | |
cat ./Version.txt | |
- name: Test | |
if: matrix.env.ninja_platform != 'win' && matrix.env.ninja_platform != 'mac' | |
uses: GabrielBB/xvfb-action@v1 | |
with: | |
working-directory: build/release | |
run: ninja check --verbose | |
- name: Test (Windows) | |
if: matrix.env.ninja_platform == 'win' | |
run: | | |
cd build/release | |
ninja check_no_win32_offscreen | |
- name: Build Appimage | |
if: matrix.env.ninja_platform == 'linux' && !matrix.qt.check_only | |
run: | | |
cd build/release | |
sudo apt -y install appstream | |
sudo apt -y install libfuse2 | |
sudo apt -y install libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-shape0 | |
sudo apt -y install libxcb-shm0 libxcb-sync1 libxcb-util1 libxcb-xinerama0 libxcb-xinput0 libxcb-xkb1 libxcb-xrm0 libxcb-xv0 libxcb-xvmc0 libxcb1 | |
mkdir -p AppDir | |
DESTDIR=AppDir ninja install | |
export QTDIR=$RUNNER_WORKSPACE/Qt/${{ matrix.qt.version }}/${{ matrix.env.qt_arch }} | |
rm -rf ./AppDir/usr/include/ | |
strip ./AppDir/usr/bin/cmark ./AppDir/usr/bin/gittyup ./AppDir/usr/bin/indexer ./AppDir/usr/bin/relauncher | |
wget -c https://github.com/$(wget -q https://github.com/probonopd/go-appimage/releases/expanded_assets/continuous -O - | grep "appimagetool-.*-x86_64.AppImage" | head -n 1 | cut -d '"' -f 2) | |
chmod +x appimagetool-*.AppImage | |
QTDIR=$QTDIR ./appimagetool-*.AppImage -s deploy ./AppDir/usr/share/applications/*.desktop --appimage-extract-and-run # Bundle EVERYTHING | |
# Modify the AppDir: move ld-linux into the same directory as the payload application | |
# and change AppRun accordingly; so that, e.g., Qt qApp->applicationDirPath() works | |
mv ./AppDir/lib64/ld-${{ matrix.env.ld_library_arch }}.so.2 ./AppDir/usr/bin/ | |
sed -i -e 's@^LD_LINUX.*@LD_LINUX=$(find "$HERE/usr/bin" -name "ld-*.so.*" | head -n 1)@g' ./AppDir/AppRun | |
rm ./AppDir/usr/share/metainfo/gittyup.appdata.xml | |
VERSION=$(cat ./Version.txt) | |
VERSION="$VERSION" ./appimagetool-*.AppImage ./AppDir # turn AppDir into AppImage | |
#ls -lh Gittyup-* | |
- name: Publish Appimage | |
if: matrix.env.ninja_platform == 'linux' && !matrix.qt.check_only | |
uses: actions/upload-artifact@v3 | |
with: | |
path: build/release/*.AppImage | |
name: GittyupAppImage | |
publish: | |
# https://github.com/marvinpinto/actions/issues/177 | |
needs: [flatpak, build] | |
runs-on: ubuntu-latest # does not matter which | |
# a prerelase is created when pushing to master | |
# a release is created when a tag will be set | |
# last condition is the same as IS_RELEASE, | |
# but environment variables cannot be used outside of steps | |
# so it was copied to here too | |
if: ${{ github.ref == 'refs/heads/master' || (github.event_name == 'push' && github.ref_type == 'tag' && startswith(github.ref_name, 'gittyup_v')) }} | |
steps: | |
- name: Download artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
path: artifacts | |
- name: list artifacts folder | |
run: | | |
echo "Show artifacts folder:" | |
ls artifacts | |
echo "Show artifacts/Gittyup Flatpak folder:" | |
ls "artifacts/Gittyup Flatpak" | |
echo "Show artifacts/Gittyup-x86_64:" | |
ls "artifacts/Gittyup-x86_64" | |
echo "Show artifacts/Gittyup VERSION" | |
ls "artifacts/Gittyup-VERSION" | |
# version is exported from cmake to file | |
- name: Retrieve version | |
run: | | |
echo "::set-output name=VERSION::$(cat artifacts/Gittyup-VERSION/Version.txt)" | |
id: version | |
- name: Update GitHub release (latest tag) | |
uses: marvinpinto/action-automatic-releases@latest | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
prerelease: true | |
title: 'Latest Build (Development)' | |
automatic_release_tag: 'development' | |
files: | | |
**/artifacts/Gittyup win64/Gittyup*.exe | |
**/artifacts/Gittyup macos/Gittyup*.dmg | |
**/artifacts/Gittyup Flatpak/com.github.Murmele.Gittyup.yml | |
**/Gittyup-x86_64/*.flatpak | |
**/artifacts/GittyupAppImage/* | |
- name: Update GitHub release (version tag) | |
uses: marvinpinto/action-automatic-releases@latest | |
if: ${{ env.IS_RELEASE == 'true'}} | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
prerelease: false | |
title: Gittyup Release ${{ steps.version.outputs.VERSION }} | |
automatic_release_tag: ${{ github.ref_name }} | |
files: | | |
**/artifacts/Gittyup win64/Gittyup*.exe | |
**/artifacts/Gittyup macos/Gittyup*.dmg | |
**/artifacts/Gittyup Flatpak/com.github.Murmele.Gittyup.yml | |
**/Gittyup-x86_64/*.flatpak | |
**/artifacts/GittyupAppImage/* | |
# needed otherwise the docs folder is not available | |
- name: Checkout repository | |
if: ${{ env.IS_RELEASE == 'true'}} | |
uses: actions/checkout@v3 | |
# update github pages only if it is a release | |
- name: Deploy Github pages | |
if: ${{ env.IS_RELEASE == 'true'}} | |
uses: JamesIves/[email protected] | |
with: | |
branch: gh-pages # The branch the action should deploy to. | |
folder: docs # The folder the action should deploy. | |
... |