Skip to content

Minor fix to cursor key mapping when NumLock is on and added tiny API documentation improvements #7852

Minor fix to cursor key mapping when NumLock is on and added tiny API documentation improvements

Minor fix to cursor key mapping when NumLock is on and added tiny API documentation improvements #7852

Workflow file for this run

name: Build
on:
merge_group:
push:
paths-ignore:
- 'docs/**'
- '.github/ISSUE_TEMPLATE/**'
- '.github/*.yml'
- 'LICENSE.txt'
- 'mkdocs.yml'
- '*.md'
- '*.sh'
branches:
- master
pull_request:
paths-ignore:
- 'docs/**'
- '.github/ISSUE_TEMPLATE/**'
- '.github/*.yml'
- 'LICENSE.txt'
- 'mkdocs.yml'
- '*.md'
- '*.sh'
branches:
- master
concurrency:
group: build-${{ github.ref }}
cancel-in-progress: true
env:
CTEST_OUTPUT_ON_FAILURE: 1
SCCACHE_GHA_ENABLED: "true"
jobs:
# {{{ Common checks
check_common:
name: "Check CI scripts"
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: "Checking for common errors in build, deployment, and CI."
run: ./scripts/check-common.sh
check_PR_TODOs:
name: "Check PR-TODOs"
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: "Checking for open PR-related TODO items"
run: ./scripts/check-pr-todos.sh
check_spelling:
name: Check spelling
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: read
actions: read
security-events: write
outputs:
followup: ${{ steps.spelling.outputs.followup }}
steps:
- uses: check-spelling/check-spelling@v0.0.25
name: Check spelling
id: spellcheck
with:
suppress_push_for_open_pull_request: ${{ github.actor != 'dependabot[bot]' && 1 }}
checkout: true
check_file_names: 1
spell_check_this: contour-terminal/contour@master
post_comment: 0
use_magic_file: 1
report-timing: 1
warnings: bad-regex,binary-file,deprecated-feature,ignored-expect-variant,large-file,limited-references,no-newline-at-eof,noisy-file,non-alpha-in-dictionary,token-is-substring,unexpected-line-ending,whitespace-in-dictionary,minified-file,unsupported-configuration,no-files-to-check,unclosed-block-ignore-begin,unclosed-block-ignore-end
check_extra_dictionaries: ""
dictionary_source_prefixes: >
{
"cspell": "https://raw.githubusercontent.com/check-spelling/cspell-dicts/v20241114/dictionaries/"
}
extra_dictionaries: |
cspell:aws/aws.txt
cspell:cpp/compiler-clang-attributes.txt
cspell:cpp/compiler-msvc.txt
cspell:cpp/ecosystem.txt
cspell:cpp/lang-keywords.txt
cspell:cpp/stdlib-c.txt
cspell:cpp/stdlib-cmath.txt
cspell:cpp/stdlib-cpp.txt
cspell:csharp/csharp.txt
cspell:css/css.txt
cspell:dart/dart.txt
cspell:django/django.txt
cspell:dotnet/dotnet.txt
cspell:filetypes/filetypes.txt
cspell:fullstack/fullstack.txt
cspell:golang/go.txt
cspell:html/html.txt
cspell:java/java-terms.txt
cspell:java/java.txt
cspell:lorem-ipsum/dictionary.txt
cspell:mnemonics/mnemonics.txt
cspell:node/node.txt
cspell:npm/npm.txt
cspell:php/php.txt
cspell:powershell/powershell.txt
cspell:python/common/extra.txt
cspell:python/python/python-lib.txt
cspell:python/python/python.txt
cspell:r/r.txt
cspell:software-terms/softwareTerms.txt
cspell:typescript/typescript.txt
check_clang_format:
name: "Check C++ style"
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Install clang
run: |
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh 21
sudo apt-get install clang-format-21
- name: "Clang-format"
run: find ./src/ -name "*.cpp" -o -name "*.h" | xargs clang-format-21 --Werror --dry-run
- name: "Check includes"
run: ./scripts/check-includes.sh
check_clang_tidy:
name: "Check clang-tidy"
runs-on: ubuntu-24.04
if: github.ref != 'refs/heads/master'
env:
CLANG_VERSION: 20
steps:
- uses: actions/checkout@v4
- name: ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: "ccache-ubuntu2404-clang-tidy"
max-size: 256M
- name: "update APT database"
run: sudo apt -q update
- name: Installing xmllint for ci-set-vars
run: sudo apt -qy install libxml2-utils
- name: set environment variables
id: set_vars
run: ./scripts/ci-set-vars.sh
env:
REPOSITORY: ${{ github.event.repository.name }}
- name: "install dependencies"
run: sudo env QTVER=6 ./scripts/install-deps.sh
- name: "Post-fix embedded dependency permissions."
run: sudo find _deps/sources -exec chown $UID {} \;
- name: Install clang
run: |
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh ${CLANG_VERSION}
sudo apt-get install clang-tidy-${CLANG_VERSION}
- name: "cmake"
run: |
cmake \
--preset linux-debug \
-B build \
-G Ninja \
-D CONTOUR_WAYLAND=OFF \
-D CMAKE_CXX_COMPILER="clang++-${CLANG_VERSION}" \
-D ENABLE_TIDY=ON \
-D CLANG_TIDY_EXE=/usr/bin/clang-tidy-${CLANG_VERSION}
- name: "build"
run: cmake --build build
check_links:
name: "Check links"
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Run linksafe
uses: Yaraslaut/linksafe@main
with: # comma seperated lists
# use relative paths, if no dirs specified root dir is scanned
ignored_dirs: "_deps"
ignored_files: "./scripts/install-deps.sh,
./scripts/install-deps.ps1"
ignored_links: "https://www.contributor-covenant.org/faq,
https://www.contributor-covenant.org,
https://flatpak.org/getting.html,
https://codeberg.org/dnkl/foot,
https://codecov.io/gh/contour-terminal/contour,
https://msdn.microsoft.com/zh-cn/library/f4k12ae8,
https://msdn.microsoft.com/en-us/library/fzt08www,
"
editorconfig:
name: "Check editorconfig"
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- uses: editorconfig-checker/action-editorconfig-checker@main
- run: editorconfig-checker
# }}}
# {{{ StaticBuild
staticBuild:
if: github.ref == 'refs/heads/master' || github.head_ref == 'release'
name: "Static build"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
with:
platforms: all
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v2
with:
version: latest
- name: "update APT database"
run: sudo apt -q update
- name: Installing xmllint for ci-set-vars
run: sudo apt -qy install libxml2-utils
- name: Build release
shell: bash
run: |
docker buildx build \
--tag static_contour \
--progress=plain \
-f .github/static/DockerUbuntu \
--load \
.
docker create --name contour_static static_contour
docker cp contour_static:/contour/build/src/contour/contour contour
docker container rm contour_static
- name: "Uploading static executable"
uses: actions/upload-artifact@v4
with:
name: "contour"
path: "contour"
if-no-files-found: error
retention-days: 1
# }}}
# {{{ Fedora
# fedora:
# strategy:
# fail-fast: false
# matrix:
# os_version: [40]
# arch:
# [
# "linux/amd64 x86_64"
# ]
# name: "Fedora ${{ matrix.os_version }} ${{ matrix.arch }}"
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v4
# - name: Set up Docker Buildx
# id: buildx
# uses: docker/setup-buildx-action@v2
# with:
# version: latest
# - name: Read matrix info
# id: tags
# shell: bash
# run: |
# arch="${{ matrix.arch }}"
# echo "PLATFORM=${arch%% *}" >> "$GITHUB_OUTPUT"
# echo "ARCH=${arch##* }" >> "$GITHUB_OUTPUT"
# - name: "update APT database"
# run: sudo apt -q update
# - name: Installing xmllint for ci-set-vars
# run: sudo apt -qy install libxml2-utils
# - name: set environment variables
# id: set_vars
# run: ./scripts/ci-set-vars.sh
# env:
# REPOSITORY: ${{ github.event.repository.name }}
# - name: Fetch and unpack embeds
# run: ./scripts/install-deps.sh
# env:
# PREPARE_ONLY_EMBEDS: 'ON'
# SYSDEP_ASSUME_YES: 'ON'
# OS_OVERRIDE: 'fedora'
# - name: "Post-fix embedded dependency permissions."
# run: sudo find _deps/sources -exec chown $UID {} \;
# - name: prepare distfile
# run: |
# set -x
# PKGNAME="contour-${{ steps.set_vars.outputs.VERSION }}"
# DISTDIR="/tmp/dist/${PKGNAME}"
# mkdir -p ${DISTDIR}
# cp -rvp . ${DISTDIR}
# tar czpf ${PKGNAME}.tar.gz -C "/tmp/dist" .
# - name: disable pedantic compiler on certain OS versions
# # Generally disable -Werror.
# #if: ${{ matrix.os_version == 38 || matrix.os_version == 39 }}
# run: |
# set -ex
# #sed -i -e "s/PEDANTIC_COMPILER=ON/PEDANTIC_COMPILER=OFF/" .github/fedora/contour.spec
# sed -i -e "s/PEDANTIC_COMPILER_WERROR=ON/PEDANTIC_COMPILER_WERROR=OFF/" .github/fedora/contour.spec
# - name: Build ${{ matrix.arch }} release
# shell: bash
# run: |
# set -x
# ARCH="${{ steps.tags.outputs.ARCH }}"
# VERSION="${{ steps.set_vars.outputs.VERSION }}"
# OS_VERSION="${{ matrix.os_version }}"
# sed -i -e "s/fedora:35/fedora:${{ matrix.os_version }}/" .github/fedora/Dockerfile
# docker buildx build --platform ${{ steps.tags.outputs.PLATFORM }} \
# --tag contour:${ARCH} \
# --build-arg VERSION=${VERSION} \
# --build-arg VERSION_STRING=${VERSION} \
# -f .github/fedora/Dockerfile \
# --load \
# .
# docker create --name contour-${ARCH} contour:${ARCH}
# docker cp contour-${ARCH}:/app/rpmbuild/RPMS/${ARCH}/contour-${VERSION}-1.fc${OS_VERSION}.${ARCH}.rpm \
# contour-${VERSION}-1.fc${OS_VERSION}.${ARCH}.rpm
# docker cp contour-${ARCH}:/app/rpmbuild/RPMS/${ARCH}/contour-debuginfo-${VERSION}-1.fc${OS_VERSION}.${ARCH}.rpm \
# contour-debuginfo-${VERSION}-1.fc${OS_VERSION}.${ARCH}.rpm
# docker cp contour-${ARCH}:/app/rpmbuild/RPMS/${ARCH}/contour-debugsource-${VERSION}-1.fc${OS_VERSION}.${ARCH}.rpm \
# contour-debugsource-${VERSION}-1.fc${OS_VERSION}.${ARCH}.rpm
# docker container rm contour-${{ steps.tags.outputs.ARCH }}
# echo "pwd: `pwd`" && ls -hla
# - name: "Uploading Fedora RPM package"
# uses: actions/upload-artifact@v4
# with:
# name: "contour-${{ steps.set_vars.outputs.VERSION }}-1.fc${{ matrix.os_version }}.${{ steps.tags.outputs.ARCH }}.rpm"
# path: |
# contour-${{ steps.set_vars.outputs.VERSION }}-1.fc${{ matrix.os_version }}.${{ steps.tags.outputs.ARCH }}.rpm
# contour-debuginfo-${{ steps.set_vars.outputs.VERSION }}-1.fc${{ matrix.os_version }}.${{ steps.tags.outputs.ARCH }}.rpm
# contour-debugsource-${{ steps.set_vars.outputs.VERSION }}-1.fc${{ matrix.os_version }}.${{ steps.tags.outputs.ARCH }}.rpm
# if-no-files-found: error
# retention-days: 7
# }}}
# {{{ FreeBSD
freebsd:
if: github.ref == 'refs/heads/master'
runs-on: ubuntu-latest
name: FreeBSD 13
# env:
# MYTOKEN: "value1"
# MYTOKEN2: "value2"
steps:
- uses: actions/checkout@v4
- name: Test in FreeBSD
id: test
uses: vmactions/freebsd-vm@v1
timeout-minutes: 60
with:
envs: 'MYTOKEN MYTOKEN2'
usesh: true
copyback: false
prepare: pkg install -y wget
run: |
set -ex
pwd
ls -lah
whoami
env
freebsd-version
SYSDEP_ASSUME_YES=ON ./scripts/install-deps.sh
cmake -S . -B build -DCONTOUR_TESTING=ON -DLIBUNICODE_USE_STD_SIMD=OFF
cmake --build build/ -j2
./build/src/crispy/crispy_test
./build/src/vtparser/vtparser_test
./build/src/vtbackend/vtbackend_test
./build/src/vtrasterizer/vtrasterizer_test
rm -rf _deps build
# }}}
# {{{ OpenBSD
openbsd:
if: false #github.ref == 'refs/heads/master' || github.head_ref == 'release'
runs-on: ubuntu-latest
name: OpenBSD 7.5
# env:
# MYTOKEN: "value1"
# MYTOKEN2: "value2"
steps:
- uses: actions/checkout@v4
- name: Test in OpenBSD
id: test
uses: vmactions/openbsd-vm@v1
timeout-minutes: 60
with:
envs: 'MYTOKEN MYTOKEN2'
usesh: true
copyback: false
prepare: pkg_add -DI wget
run: |
set -ex
pwd
ls -lah
whoami
env
./scripts/install-deps.sh
mkdir build
cmake -S . -B build -DCMAKE_CXX_COMPILER=clang++ -D CMAKE_CXX_FLAGS=-I/home/runner/work/contour/contour/_deps/sources/yaml-cpp-0.8.0/include -DCONTOUR_TESTING=ON -DLIBUNICODE_USE_STD_SIMD=OFF
cmake --build build/ -j2
./build/src/crispy/crispy_test
./build/src/vtparser/vtparser_test
./build/src/vtbackend/vtbackend_test
./build/src/vtrasterizer/vtrasterizer_test
rm -rf _deps build
# }}}
# {{{ macOS
macOSArm:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: set variables
id: set_vars
run: |
./scripts/ci-set-vars.sh
# Please read the following link on how to use MacOS code signing on Github CI:
# https://docs.github.com/en/actions/deployment/deploying-xcode-applications/installing-an-apple-certificate-on-macos-runners-for-xcode-development
echo "CODE_SIGN_CERTIFICATE_ID=Developer ID Application: Christian Parpart (6T525MU9UR)" >> "$GITHUB_OUTPUT"
env:
REPOSITORY: ${{ github.event.repository.name }}
- name: Install the Apple certificate and provisioning profile
if: github.ref == 'refs/heads/master' || github.head_ref == 'release'
env:
BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
P12_PASSWORD: ${{ secrets.P12_PASSWORD }}
BUILD_PROVISION_PROFILE_BASE64: ${{ secrets.BUILD_PROVISION_PROFILE_BASE64 }}
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
run: |
# create variables
CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12
PP_PATH=$RUNNER_TEMP/build_pp.mobileprovision
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
# import certificate and provisioning profile from secrets
echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode -o $CERTIFICATE_PATH
echo -n "$BUILD_PROVISION_PROFILE_BASE64" | base64 --decode -o $PP_PATH
# create temporary keychain
security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
# import certificate to keychain
security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH
security list-keychain -d user -s $KEYCHAIN_PATH
# apply provisioning profile
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
cp $PP_PATH ~/Library/MobileDevice/Provisioning\ Profiles
- name: ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: ccache-macosArm-r1
max-size: 256M
- name: "Install dependencies"
# Sometimes, brew thinks it needs to install from source rather than binary.
# For Qt this may take ages (many many hours). Let's not waste our CPU credits here,
# and limit the run time.
timeout-minutes: 15
run: |
set -ex
#brew update
# Trying to work around some Github CI issues causing `brew install` to fail
brew uninstall aws-sam-cli azure-cli
./scripts/install-deps.sh
- name: "Create build directory"
run: mkdir build
- name: "Generate build files"
run: |
cmake . \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCONTOUR_TESTING=ON \
-DCMAKE_PREFIX_PATH$="$(brew --prefix qt@6)" \
-DMACDEPLOYQT_EXECUTABLE="$(brew --prefix qt6)/bin/macdeployqt" \
-DMACDEPLOYQT_QML_WORKAROUND=ON \
-DCODE_SIGN_CERTIFICATE_ID="${{ steps.set_vars.outputs.CODE_SIGN_CERTIFICATE_ID }}" \
-B build/
- name: "Build"
run: cmake --build build/
- name: "test: crispy"
run: ./build/src/crispy/crispy_test
- name: "test: vtparser"
run: ./build/src/vtparser/vtparser_test
- name: "test: vtbackend"
run: ./build/src/vtbackend/vtbackend_test
- name: "test: vtrasterizer"
run: ./build/src/vtrasterizer/vtrasterizer_test
- name: "Create Package(s)"
run: |
set -ex
echo killing...; sudo pkill -9 XProtect >/dev/null || true; # see https://github.com/actions/runner-images/issues/7522
echo waiting...; while pgrep XProtect; do sleep 3; done;
cd build; cpack -G DragNDrop --verbose; cd -
# cmake --build build --target package-verbose
# ls -hl build/
# find build/src/contour/contour.app -print
BASENAME="contour-${{ steps.set_vars.outputs.version }}-macOS-arm"
mv -vf "build/Contour-${{ steps.set_vars.outputs.VERSION_STRING }}-Darwin.dmg" "${BASENAME}.dmg"
- name: upload to artifact store (DMG)
uses: actions/upload-artifact@v4
with:
name: "contour-${{ steps.set_vars.outputs.version }}-macOS-arm.dmg"
path: "contour-${{ steps.set_vars.outputs.version }}-macOS-arm.dmg"
retention-days: 7
macOSx86:
runs-on: macos-latest-large
if: github.head_ref == 'release'
steps:
- uses: actions/checkout@v4
- name: set variables
id: set_vars
run: |
./scripts/ci-set-vars.sh
echo QTVER=6 >> "$GITHUB_OUTPUT"
# Please read the following link on how to use MacOS code signing on Github CI:
# https://docs.github.com/en/actions/deployment/deploying-xcode-applications/installing-an-apple-certificate-on-macos-runners-for-xcode-development
echo "CODE_SIGN_CERTIFICATE_ID=Developer ID Application: Christian Parpart (6T525MU9UR)" >> "$GITHUB_OUTPUT"
env:
REPOSITORY: ${{ github.event.repository.name }}
- name: Install the Apple certificate and provisioning profile
if: github.ref == 'refs/heads/master' || github.head_ref == 'release'
env:
BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
P12_PASSWORD: ${{ secrets.P12_PASSWORD }}
BUILD_PROVISION_PROFILE_BASE64: ${{ secrets.BUILD_PROVISION_PROFILE_BASE64 }}
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
run: |
# create variables
CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12
PP_PATH=$RUNNER_TEMP/build_pp.mobileprovision
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
# import certificate and provisioning profile from secrets
echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode -o $CERTIFICATE_PATH
echo -n "$BUILD_PROVISION_PROFILE_BASE64" | base64 --decode -o $PP_PATH
# create temporary keychain
security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
# import certificate to keychain
security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH
security list-keychain -d user -s $KEYCHAIN_PATH
# apply provisioning profile
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
cp $PP_PATH ~/Library/MobileDevice/Provisioning\ Profiles
- name: ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: ccache-macOSx86-r1
max-size: 256M
- name: "Install dependencies"
# Sometimes, brew thinks it needs to install from source rather than binary.
# For Qt this may take ages (many many hours). Let's not waste our CPU credits here,
# and limit the run time.
timeout-minutes: 15
run: |
set -ex
#brew update
# Trying to work around some Github CI issues causing `brew install` to fail
brew uninstall aws-sam-cli azure-cli
./scripts/install-deps.sh
- name: "Create build directory"
run: mkdir build
- name: "Generate build files"
run: |
cmake . \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCONTOUR_TESTING=ON \
-DCMAKE_PREFIX_PATH$="$(brew --prefix qt@6)" \
-DMACDEPLOYQT_EXECUTABLE="$(brew --prefix qt6)/bin/macdeployqt" \
-DMACDEPLOYQT_QML_WORKAROUND=ON \
-DCODE_SIGN_CERTIFICATE_ID="${{ steps.set_vars.outputs.CODE_SIGN_CERTIFICATE_ID }}" \
-B build/
- name: "Build"
run: cmake --build build/
- name: "test: crispy"
run: ./build/src/crispy/crispy_test
- name: "test: vtparser"
run: ./build/src/vtparser/vtparser_test
- name: "test: vtbackend"
run: ./build/src/vtbackend/vtbackend_test
- name: "test: vtrasterizer"
run: ./build/src/vtrasterizer/vtrasterizer_test
- name: "Create Package(s)"
run: |
set -ex
echo killing...; sudo pkill -9 XProtect >/dev/null || true; # see https://github.com/actions/runner-images/issues/7522
echo waiting...; while pgrep XProtect; do sleep 3; done;
cd build; cpack -G DragNDrop --verbose; cd -
# cmake --build build --target package-verbose
# ls -hl build/
# find build/src/contour/contour.app -print
BASENAME="contour-${{ steps.set_vars.outputs.version }}-macOS-x86"
mv -vf "build/Contour-${{ steps.set_vars.outputs.VERSION_STRING }}-Darwin.dmg" "${BASENAME}.dmg"
- name: upload to artifact store (DMG)
uses: actions/upload-artifact@v4
with:
name: "contour-${{ steps.set_vars.outputs.version }}-macOS-x86.dmg"
path: "contour-${{ steps.set_vars.outputs.version }}-macOS-x86.dmg"
retention-days: 7
# }}}
# {{{ Windows
windows:
name: "Windows"
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Run sccache-cache
uses: mozilla-actions/sccache-action@v0.0.3
- name: setup environment
shell: powershell
id: set_vars
run: .\scripts\ci-set-vars.ps1
env:
REPOSITORY: ${{ github.event.repository.name }}
- name: "Fetch embedded dependencies"
shell: powershell
run: |
./scripts/install-deps.ps1 --skip-vcpkg
type ./_deps/sources/CMakeLists.txt
- name: Install Qt
uses: jurplel/install-qt-action@v4
with:
version: "6.9.*"
#version: "5.15.*"
modules: qtmultimedia qt5compat qtshadertools
- name: "vcpkg: Install dependencies"
run: |
git clone https://github.com/microsoft/vcpkg.git ${{ runner.workspace }}\vcpkg
${{ runner.workspace }}\vcpkg\bootstrap-vcpkg.bat
- name: "Install cmake"
uses: lukka/get-cmake@v3.29.0
- name: "Check cmake version"
run: cmake --version
- name: "Generate build files"
run: cmake --preset windows-cl-release
env:
VCPKG_ROOT: "${{ runner.workspace }}/vcpkg"
- name: "Build"
run: cmake --build --preset windows-cl-release
- name: "Test"
run: ctest --preset windows-cl-release
- name: "Create Package(s)"
shell: powershell
run: |
cpack --preset windows-cl-release -V
#type "_CPack_Packages/win64/WIX/wix.log"
- name: inspect
run: Get-ChildItem -Recurse
- name: "Rename package(s)"
run: |
mv "out\build\windows-cl-release\Contour-${{ steps.set_vars.outputs.version }}-win64.msi" "contour-${{ steps.set_vars.outputs.version }}-win64.msi"
mv "out\build\windows-cl-release\Contour-${{ steps.set_vars.outputs.version }}-win64.zip" "contour-${{ steps.set_vars.outputs.version }}-win64.zip"
- name: "Inspect again"
run: Get-ChildItem
- name: "Uploading MSI to artifact store"
uses: actions/upload-artifact@v4
with:
name: "contour-${{ steps.set_vars.outputs.version }}-win64.msi"
path: "contour-${{ steps.set_vars.outputs.version }}-win64.msi"
if-no-files-found: error
retention-days: 7
- name: "Uploading ZIP to artifact store"
uses: actions/upload-artifact@v4
with:
name: "contour-${{ steps.set_vars.outputs.version }}-win64.zip"
path: "contour-${{ steps.set_vars.outputs.version }}-win64.zip"
if-no-files-found: error
retention-days: 7
# }}}
# {{{ Ubuntu 24.04 CC matrix
ubuntu_2404_cc_matrix:
strategy:
fail-fast: false
matrix:
cxx: [23]
build_type: ["RelWithDebInfo"]
compiler:
[
"GCC 14",
"Clang 20",
]
qt_version: [6]
runner:
[
"ubuntu-24.04",
"ubuntu-24.04-arm",
]
name: "${{ matrix.runner }} (${{ matrix.compiler }}, C++${{ matrix.cxx }}, Qt${{ matrix.qt_version }})"
runs-on: ${{ matrix.runner }}
outputs:
id: "${{ matrix.runner }} ${{ matrix.compiler }} (C++${{ matrix.cxx }}, ${{ matrix.build_type }}, ${{ matrix.qt_version }})"
steps:
- uses: actions/checkout@v4
- name: ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: "ccache-{{ matrix.runner }}-${{ matrix.compiler }}-${{ matrix.cxx }}-${{ matrix.build_type }}-${{ matrix.qt_version }}"
max-size: 256M
- name: "update APT database"
run: sudo apt -q update
- name: Installing xmllint for ci-set-vars
run: sudo apt -qy install libxml2-utils
- name: set environment variables
id: set_vars
run: ./scripts/ci-set-vars.sh
env:
REPOSITORY: ${{ github.event.repository.name }}
- name: "Set up output var: CC_VERSION"
id: extract_matrix
run: |
CC_VERSION=$( echo "${{ matrix.compiler }}" | awk '{ print $2; }')
echo "CC_VERSION=${CC_VERSION}" >> "$GITHUB_OUTPUT"
- name: "Set up QTVER var"
id: set_qtver
run: |
if [[ ${{ matrix.qt_version }} = "5" ]]; then
echo "QTVER=5" >> "$GITHUB_OUTPUT"
else
echo "QTVER=6" >> "$GITHUB_OUTPUT"
fi
- name: "install dependencies"
run: sudo env QTVER="${{ matrix.qt_version }}" SYSDEP_ASSUME_YES=ON ./scripts/install-deps.sh
- name: "Post-fix embedded dependency permissions."
run: sudo find _deps/sources -exec chown $UID {} \;
- name: Install GCC
if: ${{ startsWith(matrix.compiler, 'GCC') }}
run: sudo apt install -y g++-${{ steps.extract_matrix.outputs.CC_VERSION }}
- name: Install Clang
if: ${{ startsWith(matrix.compiler, 'Clang') }}
run: |
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh 20
sudo apt install -y clang-20
sudo apt install -y clang-tidy-20
- name: "create build directory"
run: mkdir build
- name: CMake version
run: cmake --version
- name: "cmake"
run: |
CC_NAME=$(echo "${{ matrix.compiler }}" | awk '{ print tolower($1); }')
CC_VER=$( echo "${{ matrix.compiler }}" | awk '{ print $2; }')
test "${{ matrix.compiler }}" = "GCC 8" && EXTRA_CMAKE_FLAGS="$EXTRA_CMAKE_FLAGS -DPEDANTIC_COMPILER_WERROR=ON"
test "${CC_NAME}" = "gcc" && CC_EXE="g++"
if [[ "${CC_NAME}" = "clang" ]]; then
CC_EXE="clang++"
# CMAKE_CXX_FLAGS="-stdlib=libc++"
# CMAKE_EXE_LINKER_FLAGS="-stdlib=libc++ -lc++abi"
# EXTRA_CMAKE_FLAGS="$EXTRA_CMAKE_FLAGS -DENABLE_TIDY=ON"
# EXTRA_CMAKE_FLAGS="$EXTRA_CMAKE_FLAGS -DPEDANTIC_COMPILER_WERROR=OFF"
fi
cmake \
$EXTRA_CMAKE_FLAGS \
-DCMAKE_BUILD_TYPE="${{ matrix.build_type }}" \
-DCMAKE_CXX_STANDARD=${{ matrix.cxx }} \
-DCMAKE_CXX_COMPILER="${CC_EXE}-${CC_VER}" \
-DCMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS}" \
-DCMAKE_EXE_LINKER_FLAGS="${CMAKE_EXE_LINKER_FLAGS}" \
-DCMAKE_INSTALL_PREFIX="/usr" \
-DCONTOUR_WAYLAND=OFF \
-DLIBUNICODE_UCD_BASE_DIR=$PWD/_ucd \
-DPEDANTIC_COMPILER_WERROR=OFF \
--preset linux-debug
- name: "build"
run: cmake --build --preset linux-debug -- -j3
- name: "tests"
run: cmake --build --preset linux-debug --target test
- name: "Upload unit tests"
if: ${{ matrix.compiler == 'GCC 14' && matrix.cxx == '23' && matrix.runner == 'ubuntu-24.04'}}
uses: actions/upload-artifact@v4
with:
name: contour-ubuntu2404-tests
path: |
out/linux-debug/src/crispy/crispy_test
out/linux-debug/src/vtparser/vtparser_test
out/linux-debug/src/vtbackend/vtbackend_test
out/linux-debug/src/vtbackend/bench-headless
out/linux-debug/src/vtrasterizer/vtrasterizer_test
test/images
retention-days: 1
# }}}
# {{{ Linux AppImage (Using Ubuntu 24.04 as base).
package_for_AppImage:
if: github.ref == 'disabled'
name: "Packaging for AppImage"
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
with:
platforms: all
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v2
with:
version: latest
- name: update APT database
run: sudo apt -q update
- name: Installing xmllint for ci-set-vars
run: sudo apt-get -qy install libxml2-utils
- name: set environment variables
id: set_vars
run: ./scripts/ci-set-vars.sh
env:
REPOSITORY: ${{ github.event.repository.name }}
- name: build inside docker
run: |
docker buildx build --tag contour-appimage \
-f .github/appimage/Dockerfile --load .
docker create --name contour-appimage contour-appimage
docker cp contour-appimage:/contour/Contour-latest-x86_64.AppImage contour-${{ steps.set_vars.outputs.VERSION_STRING }}.AppImage
docker container rm contour-appimage
- name: "set mode"
run: sudo chmod +x contour-${{ steps.set_vars.outputs.VERSION_STRING }}.AppImage
- name: "libfuse"
run: sudo apt-get -qy install libfuse2
- name: "Testing AppImage"
run: ./contour-${{ steps.set_vars.outputs.VERSION_STRING }}.AppImage version
- name: "Uploading AppImage"
uses: actions/upload-artifact@v4
with:
name: "contour-${{ steps.set_vars.outputs.VERSION_STRING }}.AppImage"
path: "contour-${{ steps.set_vars.outputs.VERSION_STRING }}.AppImage"
if-no-files-found: error
retention-days: 7
# }}}
# {{{ Ubuntu 24.04
package_for_Ubuntu:
name: "Packaging for Ubuntu ${{ matrix.os_version }}"
strategy:
fail-fast: false
matrix:
os_version: ['24.04']
runs-on: ubuntu-${{ matrix.os_version }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: "update APT database"
run: sudo apt -q update
- name: Installing xmllint for ci-set-vars
run: sudo apt -qy install libxml2-utils
- name: set variables
id: set_vars
run: ./scripts/ci-set-vars.sh
env:
REPOSITORY: ${{ github.event.repository.name }}
- name: ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: "ccache-ubuntu-${{ matrix.os_version }}"
max-size: 256M
- name: "install dependencies"
run: sudo env QTVER="${{ steps.set_qtver.outputs.QTVER }}" ./scripts/install-deps.sh
- name: "Post-fix embedded dependency permissions."
run: sudo find _deps/sources -exec chown $UID {} \;
- name: "create build directory"
run: mkdir build
- name: Install CMake
if: matrix.os_version != '24.04'
uses: ssrobins/install-cmake@v1
- name: CMake version
run: cmake --version
- name: "cmake"
run: |
# TODO: turn on -Werror again, that requires some code changes.
EXTRA_CMAKE_FLAGS="$EXTRA_CMAKE_FLAGS"
EXTRA_CMAKE_FLAGS="$EXTRA_CMAKE_FLAGS -DCONTOUR_PACKAGE_TERMINFO=OFF"
BUILD_DIR="build" \
CMAKE_BUILD_TYPE=RelWithDebInfo \
EXTRA_CMAKE_FLAGS="$EXTRA_CMAKE_FLAGS \
-DCMAKE_CXX_STANDARD=$CMAKE_CXX_STANDARD \
-DCMAKE_INSTALL_PREFIX="/usr" \
-DCONTOUR_TESTING=ON \
-DCONTOUR_WAYLAND=OFF \
-DPEDANTIC_COMPILER_WERROR=OFF \
" \
./scripts/ci-prepare-contour.sh
- name: "build"
run: cmake --build --preset linux-release / -- -j3
- name: "tests"
run: cmake --build --preset linux-release --target test
- name: "CPack: Creating DEB package"
run: |
set -ex
cpack --preset linux-release
OS_VERSION=${{ matrix.os_version }}
OS_VERSION=${OS_OVERRIDE/./_}
mv -v "./out/linux-release/Contour-${{ steps.set_vars.outputs.VERSION_STRING }}-Linux-contour.deb" \
"contour-${{ steps.set_vars.outputs.VERSION_STRING }}-ubuntu${{ matrix.os_version }}-amd64.deb"
mv -v "./out/linux-release/Contour-${{ steps.set_vars.outputs.VERSION_STRING }}-Linux-contour-dbgsym.ddeb" \
"contour-dbgsym-${{ steps.set_vars.outputs.VERSION_STRING }}-ubuntu${{ matrix.os_version }}-amd64.ddeb"
- name: "Uploading artifact .deb package"
uses: actions/upload-artifact@v4
with:
name: "contour-${{ steps.set_vars.outputs.VERSION_STRING }}-ubuntu${{ matrix.os_version }}-amd64.deb"
path: |
contour-${{ steps.set_vars.outputs.VERSION_STRING }}-ubuntu${{ matrix.os_version }}-amd64.deb
contour-dbgsym-${{ steps.set_vars.outputs.VERSION_STRING }}-ubuntu${{ matrix.os_version }}-amd64.ddeb
if-no-files-found: error
retention-days: 7
- name: "Attempt installing the created .deb"
run: |
sudo dpkg --install "contour-${{ steps.set_vars.outputs.VERSION_STRING }}-ubuntu${{ matrix.os_version }}-amd64.deb"
sudo dpkg --install "contour-dbgsym-${{ steps.set_vars.outputs.VERSION_STRING }}-ubuntu${{ matrix.os_version }}-amd64.ddeb"
# }}}
# {{{ Ubuntu 24.04: test via valgrind
test_ubuntu2404_valgrind:
name: "Run tests via valgrind"
runs-on: ubuntu-24.04
needs: [ubuntu_2404_cc_matrix]
steps:
- uses: actions/checkout@v4
with:
sparse-checkout: |
scripts
- name: "download artifact"
uses: actions/download-artifact@v4
with:
name: contour-ubuntu2404-tests
- name: "update APT database"
run: sudo apt -q update
- name: "fix unit test permissions"
run: |
find . -name '*_test' -exec chmod 0755 {} \;
find . -name 'bench-headless' -exec chmod 0755 {} \;
- name: "install dependencies"
run: ./scripts/ci-install-run-deps.sh valgrind
- name: "test: crispy (via valgrind)"
run: valgrind --error-exitcode=64 ./out/linux-debug/src/crispy/crispy_test
- name: "test: vtparser (via valgrind)"
run: valgrind --error-exitcode=64 ./out/linux-debug/src/vtparser/vtparser_test
- name: "test: vtbackend (via valgrind)"
run: valgrind --error-exitcode=64 ./out/linux-debug/src/vtbackend/vtbackend_test
- name: "test: vtrasterizer (via valgrind)"
run: valgrind --error-exitcode=64 ./out/linux-debug/src/vtrasterizer/vtrasterizer_test
# }}}
# {{{ Ubuntu 24.04: Test bench-headless
test_ubuntu2404_bench_headless:
strategy:
matrix:
test_case:
[
"grid cat",
"grid long"
]
name: "Run bench-headless"
runs-on: ubuntu-24.04
needs: [ubuntu_2404_cc_matrix]
steps:
- uses: actions/checkout@v4
with:
sparse-checkout: |
scripts
- name: "download artifact"
uses: actions/download-artifact@v4
with:
name: contour-ubuntu2404-tests
- name: "update APT database"
run: sudo apt -q update
- name: "fix unit test permissions"
run: |
find . -name '*_test' -exec chmod 0755 {} \;
find . -name 'bench-headless' -exec chmod 0755 {} \;
- name: "install dependencies"
run: ./scripts/ci-install-run-deps.sh valgrind
- name: "bench-headless: ${{ matrix.test_case }}"
run: valgrind --error-exitcode=64 ./out/linux-debug/src/vtbackend/bench-headless ${{ matrix.test_case }} size 1
# }}}
# {{{ Ubuntu check matrix
check_ubuntu2404_matrix_test_matrix:
if: ${{ always() }}
runs-on: ubuntu-latest
name: "Ubuntu Linux 24.04 post-check"
needs:
- package_for_Ubuntu
- ubuntu_2404_cc_matrix
- test_ubuntu2404_valgrind
- test_ubuntu2404_bench_headless
steps:
- name: Print matrix status
run: |
echo "Result (CC matrix) : ${{ needs.ubuntu_2404_cc_matrix.result }}"
echo "Result (packaging matrix) : ${{ needs.package_for_Ubuntu.result }}"
- name: Check build matrix status
if: ${{ needs.ubuntu_2404_cc_matrix.result != 'success' && needs.ubuntu_2404_cc_matrix.result != 'skipped' }}
run: exit 1
- name: Check package_for_Ubuntu matrix status
if: ${{ needs.package_for_Ubuntu.result != 'success' && needs.package_for_Ubuntu.result != 'skipped' }}
run: exit 1
- name: "Delete artifact: contour-ubuntu2404-tests"
uses: geekyeggo/delete-artifact@v5
with:
name: contour-ubuntu2404-tests
# }}}
# {{{ GUI: test: contour quick shell exit
test_quick_exit:
name: "GUI: Quick Shell Exit"
needs: [package_for_Ubuntu]
strategy:
fail-fast: false
matrix:
os_version: ['24.04']
runs-on: ubuntu-${{ matrix.os_version }}
env:
# I'm giving up on eliminating all leaks for now.
# There are still some deep inside Qt I can't explain myself if it's because of me.
ASAN_OPTIONS: detect_leaks=0
# Can be used to execute contour within a certain environment, such as valgrind:
# Valgrind is much more precise, but 10x slower.
CONTOUR_PREFIX: "" # valgrind --leak-check=full --num-callers=64 --error-exitcode=112"
steps:
- uses: actions/checkout@v4
- name: "update APT database"
run: sudo apt -q update
- name: Installing xmllint for ci-set-vars
run: sudo apt -qy install libxml2-utils
- name: set environment variables
id: set_vars
run: ./scripts/ci-set-vars.sh
env:
REPOSITORY: ${{ github.event.repository.name }}
- uses: actions/download-artifact@v4
with:
name: "contour-${{ steps.set_vars.outputs.VERSION_STRING }}-ubuntu${{ matrix.os_version }}-amd64.deb"
- name: "install dependencies"
run: ./scripts/ci/notcurses-install-deps.sh
- name: "install contour"
run: sudo dpkg -i "contour-${{ steps.set_vars.outputs.VERSION_STRING }}-ubuntu${{ matrix.os_version }}-amd64.deb"
- name: "contour executable test"
run: |
contour version
contour help
- name: "create and patch contour.yml config file"
run: |
set -ex
mkdir -p ~/.config/contour/
contour generate config to ~/.config/contour/contour.yml
sed -i -e 's/locator: native/locator: mock/' ~/.config/contour/contour.yml
sed -i -e 's/strict_spacing: true/strict_spacing: false/' ~/.config/contour/contour.yml
cat .github/mock-font-locator.yml >> ~/.config/contour/contour.yml
cat ~/.config/contour/contour.yml
- name: "Run Contour: quick exit"
timeout-minutes: 5
id: Xvfb-contour
run: |
./scripts/ci/Xvfb-contour-run.sh \
"quick-exit-dumps/${{ matrix.name }}" \
true
- name: "Save dump"
uses: actions/upload-artifact@v4
with:
name: quick-exit-contour-dump
path: quick-exit-dumps
if-no-files-found: ignore
retention-days: 1
- name: "Check result success"
run: |
exit ${{ steps.Xvfb-contour.outputs.exitCode }}
# }}}
# {{{ GUI: external test: notcurses
test_notcurses:
name: "GUI: notcurses-demo ${{ matrix.name }}"
runs-on: ubuntu-24.04
needs: [package_for_Ubuntu]
strategy:
fail-fast: false
matrix:
include: # {{{ (name, id) tuples
# ixetunchmdbkywjgarvlsfqzo
- name: 'aanimate-box-chunli-dragon-eagle-fission-grid-highcon'
id: 'abcdefgh'
- name: 'intro-junle-keller-luigi-mojibake-normal-outro-qrcode'
id: 'ijklmnoq'
- name: 'reel-sliders-trans-uniblock-view-whiteout-xray-yield-zoo'
id: 'rstuvwxyz'
# }}}
env:
LD_LIBRARY_PATH: /home/runner/opt/notcurses/lib
# I'm giving up on eliminating all leaks for now.
# There are still some deep inside Qt I can't explain myself if it's because of me.
ASAN_OPTIONS: detect_leaks=0
# Can be used to execute contour within a certain environment, such as valgrind:
# Valgrind is much more precise, but 10x slower.
CONTOUR_PREFIX: "" # valgrind --leak-check=full --num-callers=64 --error-exitcode=112"
steps:
- uses: actions/checkout@v4
- name: "update APT database"
run: sudo apt -q update
- name: Installing xmllint for ci-set-vars
run: sudo apt -qy install libxml2-utils
- name: set environment variables
id: set_vars
run: ./scripts/ci-set-vars.sh
env:
REPOSITORY: ${{ github.event.repository.name }}
- uses: actions/download-artifact@v4
with:
name: "contour-${{ steps.set_vars.outputs.VERSION_STRING }}-ubuntu24.04-amd64.deb"
- name: "install dependencies"
run: ./scripts/ci/notcurses-install-deps.sh
- name: "git clone"
run: git clone https://github.com/dankamongmen/notcurses.git
- name: "configure cmake"
run: |
cmake -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/home/runner/opt/notcurses \
-DUSE_CPP=OFF \
-DUSE_DEFLATE=OFF \
-DUSE_MULTIMEDIA=ffmpeg \
-DUSE_PANDOC=OFF \
-DUSE_STATIC=ON \
-S notcurses \
-B notcurses/build
- name: "Build notcurses"
run: cmake --build notcurses/build/ -- -j3
- name: "Install notcurses"
run: cmake --install notcurses/build
- name: "Run notcurses-demo -h"
timeout-minutes: 1
run: LD_LIBRARY_PATH="/home/runner/opt/notcurses/lib" ~/opt/notcurses/bin/notcurses-demo -p ~/opt/notcurses/share/notcurses -h
- name: "install contour"
run: sudo dpkg -i "contour-${{ steps.set_vars.outputs.VERSION_STRING }}-ubuntu24.04-amd64.deb"
- name: "contour executable test"
run: |
contour version
contour help
ls -hl ~/opt/notcurses/
- name: "create and patch contour.yml config file"
run: |
set -ex
mkdir -p ~/.config/contour/
contour generate config to ~/.config/contour/contour.yml
sed -i -e 's/locator: native/locator: mock/' ~/.config/contour/contour.yml
sed -i -e 's/strict_spacing: true/strict_spacing: false/' ~/.config/contour/contour.yml
cat .github/mock-font-locator.yml >> ~/.config/contour/contour.yml
cat ~/.config/contour/contour.yml
- name: "Run Contour: notcurses-demo ${{ matrix.name }}"
timeout-minutes: 5
id: Xvfb-contour-notcurses
run: |
./scripts/ci/Xvfb-contour-run.sh \
"notcurses-demo-dumps/${{ matrix.name }}" \
~/opt/notcurses/bin/notcurses-demo \
-p ~/opt/notcurses/share/notcurses ${{ matrix.id }}
- name: "Save dump"
uses: actions/upload-artifact@v4
with:
name: notcurses-contour-dump
path: notcurses-demo-dumps
if-no-files-found: ignore
retention-days: 1
- name: "Check result success"
run: |
exit ${{ steps.Xvfb-contour-notcurses.outputs.exitCode }}
check_notcurses_test_matrix:
if: ${{ always() }}
runs-on: ubuntu-latest
name: tests matrix
needs: test_notcurses
steps:
- name: Check build matrix status
if: ${{ needs.test_notcurses.result != 'success' }}
run: exit 1
# }}}
# {{{ Check Ubuntu package
check_package_ubuntu:
name: "Check packages for Ubuntu "
strategy:
fail-fast: false
matrix:
os_version: ['24.04']
runs-on: ubuntu-${{ matrix.os_version}}
needs: [package_for_Ubuntu]
steps:
- uses: actions/checkout@v4
- name: "update APT database"
run: sudo apt -q update
- name: Installing xmllint for ci-set-vars
run: sudo apt -qy install libxml2-utils
- name: set environment variables
id: set_vars
run: ./scripts/ci-set-vars.sh
env:
REPOSITORY: ${{ github.event.repository.name }}
- uses: actions/download-artifact@v4
with:
name: "contour-${{ steps.set_vars.outputs.VERSION_STRING }}-ubuntu${{ matrix.os_version }}-amd64.deb"
- name: "Check install package"
run: |
sudo apt install "./contour-${{ steps.set_vars.outputs.VERSION_STRING }}-ubuntu${{ matrix.os_version}}-amd64.deb"
# }}}
# {{{ Release
check_release:
if: github.head_ref == 'release'
name: Check Release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: "update APT database"
run: sudo apt -q update
- name: Installing xmllint for ci-set-vars.sh and check-release.sh
run: sudo apt -qy install libxml2-utils
- name: set variables
id: set_vars
run: ./scripts/ci-set-vars.sh
env:
REPOSITORY: ${{ github.event.repository.name }}
- name: run release checks
run: ./scripts/check-release.sh
do_release:
if: github.head_ref == 'release'
name: Create Github release
runs-on: ubuntu-latest
needs:
- check_links
- check_release
- check_notcurses_test_matrix
- macOSx86
- macOSArm
- package_for_Ubuntu
- windows
permissions:
# We need write permissions on contents to create GitHub releases and on
# discussions to create the release announcement in the discussion forums
contents: write
discussions: write
steps:
- uses: actions/checkout@v4
- name: "update APT database"
run: sudo apt -q update
- name: Installing xmllint for ci-set-vars
run: sudo apt -qy install libxml2-utils
- name: set variables
id: set_vars
run: ./scripts/ci-set-vars.sh
env:
REPOSITORY: ${{ github.event.repository.name }}
# {{{ fetch release artifacts
- name: "fetch artifact: Ubuntu 24.04"
uses: actions/download-artifact@v4
with:
name: contour-${{ steps.set_vars.outputs.VERSION_STRING }}-ubuntu24.04-amd64.deb
- name: "fetch artifact: MacOS (ARM)"
uses: actions/download-artifact@v4
with:
name: "contour-${{ steps.set_vars.outputs.version }}-macOS-arm.dmg"
- name: "fetch artifact: MacOS (x86)"
uses: actions/download-artifact@v4
with:
name: "contour-${{ steps.set_vars.outputs.version }}-macOS-x86.dmg"
- name: "fetch artifact: Windows (MSI)"
uses: actions/download-artifact@v4
with:
name: "contour-${{ steps.set_vars.outputs.version }}-win64.msi"
- name: "fetch artifact: Windows (ZIP)"
uses: actions/download-artifact@v4
with:
name: "contour-${{ steps.set_vars.outputs.version }}-win64.zip"
- name: "fetch artifact: AppImage"
uses: actions/download-artifact@v4
with:
name: "contour-${{ steps.set_vars.outputs.version }}.AppImage"
- name: "fetch artifact: Static build"
uses: actions/download-artifact@v4
with:
name: "contour"
# }}}
- name: "inspect"
run: ls -lisahF
- name: inspect recurse
run: pwd; ls -hlaR
# -------------------------------------------------------------
- name: Create Github release page
id: create_release
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # token provided by Actions
with:
tag_name: v${{ steps.set_vars.outputs.version }}${{ steps.set_vars.outputs.tag_suffix}}
name: Contour ${{ steps.set_vars.outputs.version }} ${{ steps.set_vars.outputs.RELEASENAME_SUFFIX}}
body_path: ${{ github.workspace }}/release-body.md
draft: true
prerelease: ${{ steps.set_vars.outputs.IS_PRERELEASE }}
fail_on_unmatched_files: true
files: |
*.deb
*.ddeb
*.dmg
*.msi
*.zip
*.AppImage
# }}}