Skip to content

Merge branch 'Murmele:master' into multi-file-tool-support #10

Merge branch 'Murmele:master' into multi-file-tool-support

Merge branch 'Murmele:master' into multi-file-tool-support #10

Workflow file for this run

# https://docs.github.com/en/actions/learn-github-actions/contexts
---
name: Gittyup
on:
push:
branches:
- latest
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'
- 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: 5.15.2
check_only: false
- version: 5.12.0
check_only: true
env:
- name: linux
os: ubuntu-latest
ninja_platform: linux
qt_platform: linux
openssl_arch: linux-x86_64
cmake_flags: "-DGENERATE_APPDATA=ON"
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
- name: win32
os: windows-latest
ninja_platform: win
qt_platform: windows
qt_arch: win32_msvc2019
qt_arch_check_only: win32_msvc2017
openssl_arch: VC-WIN32
msvc_arch: x86
cmake_flags: "-DUSE_BUNDLED_ZLIB=1"
cmake_env:
CMAKE_RC_FLAGS: "/C 1252"
CC: clang
CXX: clang++
CMAKE_C_FLAGS: -m32
CMAKE_CXX_FLAGS: -m32
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
if: "!matrix.qt.check_only"
with:
version: ${{ matrix.qt.version }}
target: desktop
host: ${{ matrix.env.qt_platform }}
arch: ${{ matrix.env.qt_arch }}
install-deps: true
modules: qtwebengine
- name: Install Qt
uses: jurplel/[email protected]
timeout-minutes: 10
if: matrix.qt.check_only
with:
version: ${{ matrix.qt.version }}
target: desktop
host: ${{ matrix.env.qt_platform }}
arch: ${{ matrix.env.qt_arch_check_only }}
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
# this is necessary until https://github.com/openssl/openssl/issues/18720
# is fixed in OpenSSL 1.1.1r
export CFLAGS=-Wno-error=implicit-function-declaration
./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 -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' && !matrix.qt.check_only
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 && !matrix.qt.check_only
uses: actions/upload-artifact@v3
with:
path: build/release/pack/Gittyup-*
name: Gittyup ${{ matrix.env.name }}
- name: Publish version file
if: matrix.env.pack && !matrix.qt.check_only
uses: actions/upload-artifact@v3
with:
path: build/release/VERSION.txt
name: Gittyup-VERSION
- 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
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 latest
# 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/latest' || (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 win32/Gittyup*.exe
**/artifacts/Gittyup macos/Gittyup*.dmg
**/artifacts/Gittyup Flatpak/com.github.Murmele.Gittyup.yml
**/Gittyup-x86_64/*.flatpak
- 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 win32/Gittyup*.exe
**/artifacts/Gittyup macos/Gittyup*.dmg
**/artifacts/Gittyup Flatpak/com.github.Murmele.Gittyup.yml
**/Gittyup-x86_64/*.flatpak
# 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.
...