Skip to content

Refactoring Terminal's internal state storage #6658

Refactoring Terminal's internal state storage

Refactoring Terminal's internal state storage #6658

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-22.04
steps:
- uses: actions/checkout@v3
- 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-20.04
steps:
- uses: actions/checkout@v3
- name: "Checking for open PR-related TODO items"
run: ./scripts/check-pr-todos.sh
check_clang_format:
name: "Check C++ style"
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- name: Install clang
run: |
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh 17
sudo apt-get install clang-format-17
- name: "Clang-format"
run: find ./src/ -name "*.cpp" -o -name "*.h" | xargs clang-format-17 --Werror --dry-run
- name: "Check includes"
run: ./scripts/check-includes.sh
check_clang_tidy:
name: "Check clang-tidy"
runs-on: ubuntu-22.04
if: github.ref != 'refs/heads/master'
steps:
- uses: actions/checkout@v3
- name: ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: "ccache-ubuntu2204-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: sudo apt install -y clang-15 clang-tidy-15
- name: "cmake"
run: |
cmake \
-DCMAKE_BUILD_TYPE="Debug" \
-DCMAKE_CXX_COMPILER="clang++-15" \
-DCONTOUR_INSTALL_TOOLS=ON \
-DCONTOUR_QT_VERSION=6 \
-DCONTOUR_TESTING=ON \
-DENABLE_TIDY=OFF \
-DLIBTERMINAL_BUILD_BENCH_HEADLESS=ON \
-DLIBUNICODE_UCD_BASE_DIR=$PWD/_ucd \
-DPEDANTIC_COMPILER=ON \
-DPEDANTIC_COMPILER_WERROR=OFF \
-S . -B build
- name: "build libunicode"
run: cmake --build build/ --target unicode -- -j3
- uses: ZedThree/clang-tidy-review@v0.17.0
id: review
with:
lgtm_comment_body: ""
annotations: true
build_dir: build
max_comments: 10
- uses: ZedThree/clang-tidy-review/upload@v0.17.0 # Uploads an artefact containing clang_fixes.json
id: upload-review
- if: steps.review.outputs.total_comments > 0 # If there are any comments, fail the check
run: exit 1
# - name: run clang-tidy
# run: |
# set -ex
# for dir in src/*; do
# FILES=$(find $dir -name '*.cpp' -print)
# for file in $FILES; do
# echo "Checking file $file ..."
# clang-tidy \
# -p build \
# -header-filter=$PWD/src \
# $file
# done
# done
check_links:
name: "Check links"
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- 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-20.04
steps:
- uses: actions/checkout@v2
- uses: editorconfig-checker/action-editorconfig-checker@main
- run: editorconfig-checker
# }}}
# {{{ ArchLinux
archlinux:
if: github.ref == 'refs/heads/master' || github.head_ref == 'release'
strategy:
matrix:
arch:
[
"linux/amd64 x86_64"
]
name: "Archlinux ${{ matrix.arch }}"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- 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: Read 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: Build ${{ matrix.arch }} release
shell: bash
run: |
docker buildx build --platform ${{ steps.tags.outputs.PLATFORM }} \
--tag contour:${{ steps.tags.outputs.ARCH }} \
-f .github/archlinux/Dockerfile \
--load \
.
docker create --name contour-${{ steps.tags.outputs.ARCH }} contour:${{ steps.tags.outputs.ARCH }}
docker cp contour-${{ steps.tags.outputs.ARCH }}:/app/contour.pkg.tar.zst contour-${{ steps.tags.outputs.ARCH }}.pkg.tar.zst
docker container rm contour-${{ steps.tags.outputs.ARCH }}
- name: "Uploading Archlinux .pkg.tar.zst package"
uses: actions/upload-artifact@v3
with:
name: "contour-${{ steps.tags.outputs.ARCH }}.pkg.tar.zst"
path: "contour-${{ steps.tags.outputs.ARCH }}.pkg.tar.zst"
if-no-files-found: error
retention-days: 1
# }}}
# {{{ Fedora
fedora:
strategy:
fail-fast: false
matrix:
os_version: [39]
arch:
[
"linux/amd64 x86_64"
]
name: "Fedora ${{ matrix.os_version }} ${{ matrix.arch }}"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- 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@v3
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@v3
- 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
QTVER=6 SYSDEP_ASSUME_YES=ON ./scripts/install-deps.sh
mkdir build
cmake -DCMAKE_BUILD_TYPE=Debug -DLIBTERMINAL_BUILD_BENCH_HEADLESS=ON -DCONTOUR_QT_VERSION=6 -S . -B build
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
osx:
name: "macOS"
runs-on: macos-13
steps:
- uses: actions/checkout@v3
- 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
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-osx_qt${{ steps.set_vars.outputs.QTVER }}-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
QTVER=${{ steps.set_vars.outputs.QTVER }}
QTVER=${QTVER} ./scripts/install-deps.sh
- name: "Create build directory"
run: mkdir build
- name: "Generate build files"
run: |
QTVER=${{ steps.set_vars.outputs.QTVER }}
cmake . \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCONTOUR_TESTING=ON \
-DCONTOUR_QT_VERSION=${QTVER} \
-DCMAKE_PREFIX_PATH$="$(brew --prefix qt@${QTVER})" \
-DMACDEPLOYQT_EXECUTABLE="$(brew --prefix qt${QTVER})/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 }}-osx"
mv -vf "build/Contour-${{ steps.set_vars.outputs.VERSION_STRING }}-Darwin.dmg" "${BASENAME}.dmg"
- name: upload to artifact store (DMG)
uses: actions/upload-artifact@v2
with:
name: "contour-${{ steps.set_vars.outputs.version }}-osx.dmg"
path: "contour-${{ steps.set_vars.outputs.version }}-osx.dmg"
retention-days: 7
# }}}
# {{{ Windows
windows:
name: "Windows"
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- 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@v3
with:
version: "6.6.1"
#version: "5.15.*"
modules: qtmultimedia qt5compat qtshadertools
- name: "vcpkg: Install dependencies"
uses: lukka/run-vcpkg@v11.1
id: runvcpkg
with:
vcpkgDirectory: ${{ runner.workspace }}/vcpkg/
vcpkgGitCommitId: 80403036a665cb8fcc1a1b3e17593d20b03b2489
- name: "Generate build files"
run: cmake --preset windows-cl-release
- 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@v3
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@v3
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 CC matrix
ubuntu_2204_cc_matrix:
strategy:
fail-fast: false
matrix:
cxx: [20]
build_type: ["RelWithDebInfo"]
compiler:
[
"GCC 10",
"Clang 15",
]
qt_version: [6]
name: "Ubuntu Linux 22.04 (${{ matrix.compiler }}, C++${{ matrix.cxx }}, Qt${{ matrix.qt_version }})"
runs-on: ubuntu-22.04
outputs:
id: "${{ matrix.compiler }} (C++${{ matrix.cxx }}, ${{ matrix.build_type }}, ${{ matrix.qt_version }})"
steps:
- uses: actions/checkout@v3
- name: ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: "ccache-ubuntu2204-${{ 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: sudo apt install -y clang-${{ steps.extract_matrix.outputs.CC_VERSION }} #libc++-dev libc++abi-dev
- name: Install Clang-Tidy
if: ${{ startsWith(matrix.compiler, 'Clang') }}
run: sudo apt install -y clang-tidy-${{ steps.extract_matrix.outputs.CC_VERSION }}
- name: Install CMake
uses: ssrobins/install-cmake@v1
- 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_QT_VERSION=${{ matrix.qt_version }} \
-DLIBUNICODE_UCD_BASE_DIR=$PWD/_ucd \
--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 10' && matrix.cxx == '20' && matrix.qt_version == '6' }}
uses: actions/upload-artifact@v3
with:
name: contour-ubuntu2204-tests
path: |
build/linux-debug/src/crispy/crispy_test
build/linux-debug/src/vtparser/vtparser_test
build/linux-debug/src/vtbackend/vtbackend_test
build/linux-debug/src/vtbackend/bench-headless
build/linux-debug/src/vtrasterizer/vtrasterizer_test
test/images
retention-days: 1
# }}}
# {{{ Linux AppImage (Using Ubuntu 22.04 as base).
package_for_AppImage:
name: "Packaging for AppImage"
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- name: ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: "ccache-ubuntu2004-AppImage"
max-size: 256M
- name: "Update apt database"
run: sudo apt-get update
- name: Installing xmllint for ci-set-vars
run: sudo apt-get -qy install libxml2-utils
- name: Install LinuxDeploy
uses: miurahr/install-linuxdeploy-action@v1
with:
plugins: qt appimage
- name: "set environment variables"
id: set_vars
run: ./scripts/ci-set-vars.sh
env:
REPOSITORY: ${{ github.event.repository.name }}
- name: set QTVER
id: set_qtver
run: echo "QTVER=6" >> "$GITHUB_OUTPUT"
- 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
uses: ssrobins/install-cmake@v1
- name: CMake version
run: cmake --version
- name: "cmake"
run: |
# TODO: turn on -Werror again, that requires some code changes.
CMAKE_CXX_STANDARD=20
EXTRA_CMAKE_FLAGS="$EXTRA_CMAKE_FLAGS -DCONTOUR_QT_VERSION=6"
BUILD_DIR="build" \
CMAKE_BUILD_TYPE=RelWithDebInfo \
EXTRA_CMAKE_FLAGS="$EXTRA_CMAKE_FLAGS \
-DCMAKE_CXX_STANDARD=$CMAKE_CXX_STANDARD \
-DCMAKE_INSTALL_PREFIX="$(pwd)/AppDir" \
-DCONTOUR_TESTING=ON \
" \
./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: "install libfuse2 (Dependency of AppImage programs)"
run: sudo apt -qy install libfuse2
- name: "linuxdeploy: Creating AppImage"
run: |
set -ex
cmake --build --preset linux-release --target install
# NB: The appdir path must be given absolute rather than relative, as otherwise the qt plugin won't work.
QML_SOURCES_PATHS=./src/contour/ui QMAKE=qmake6 DEBUG=1 QT_SELECT=6 linuxdeploy-x86_64.AppImage --output=appimage --appdir AppDir -e ./AppDir/bin/contour --plugin qt --icon-file=./AppDir/share/icons/hicolor/512x512/apps/org.contourterminal.Contour.png --desktop-file=./AppDir/share/applications/org.contourterminal.Contour.desktop
mv -v Contour-x86_64.AppImage contour-${{ steps.set_vars.outputs.VERSION_STRING }}.AppImage
- name: "Testing AppImage"
run: ./contour-${{ steps.set_vars.outputs.VERSION_STRING }}.AppImage version
- name: "Uploading AppImage"
uses: actions/upload-artifact@v3
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 20.04 / 22.04
package_for_Ubuntu:
name: "Packaging for Ubuntu ${{ matrix.os_version }}"
strategy:
fail-fast: false
matrix:
os_version: ['20.04', '22.04']
runs-on: ubuntu-${{ matrix.os_version }}
steps:
- name: Checkout code
uses: actions/checkout@v3
- 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: set QTVER
id: set_qtver
run: |
if [[ ${{ matrix.os_version }} = "20.04" ]]; then
echo "QTVER=5" >> "$GITHUB_OUTPUT"
fi
- name: "Install gcc-10 on 20.04"
if: matrix.os_version == '20.04'
run: sudo apt -y install gcc-10
- 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
uses: ssrobins/install-cmake@v1
- name: CMake version
run: cmake --version
- name: "cmake"
run: |
# TODO: turn on -Werror again, that requires some code changes.
CMAKE_CXX_STANDARD=20
if [[ "${{ matrix.os_version }}" = "20.04" ]]; then
EXTRA_CMAKE_FLAGS="$EXTRA_CMAKE_FLAGS -DCONTOUR_QT_VERSION=5 -DCMAKE_CXX_COMPILER=g++-10"
else
# use Qt6 for 22.04
EXTRA_CMAKE_FLAGS="$EXTRA_CMAKE_FLAGS -DCONTOUR_QT_VERSION=6"
fi
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 \
" \
./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 "./build/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 "./build/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@v3
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 22.04: test via valgrind
test_ubuntu2204_valgrind:
name: "Run tests via valgrind"
runs-on: ubuntu-22.04
needs: [ubuntu_2204_cc_matrix]
steps:
- name: "download artifact"
uses: actions/download-artifact@v3
with:
name: contour-ubuntu2204-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: |
set -ex
ls -hlR
sudo apt install -y \
libfontconfig1 \
libfreetype6 \
libharfbuzz0b \
libqt5gui5 \
libqt5opengl5 \
libyaml-cpp0.7 \
ncurses-bin \
valgrind
- name: "test: crispy (via valgrind)"
run: valgrind --error-exitcode=64 ./build/linux-debug/src/crispy/crispy_test
- name: "test: vtparser (via valgrind)"
run: valgrind --error-exitcode=64 ./build/linux-debug/src/vtparser/vtparser_test
- name: "test: vtbackend (via valgrind)"
run: valgrind --error-exitcode=64 ./build/linux-debug/src/vtbackend/vtbackend_test
- name: "test: vtrasterizer (via valgrind)"
run: valgrind --error-exitcode=64 ./build/linux-debug/src/vtrasterizer/vtrasterizer_test
# }}}
# {{{ Ubuntu 22.04: Test bench-headless
test_ubuntu2204_bench_headless:
strategy:
matrix:
test_case:
[
"grid cat",
"grid long"
]
name: "Run bench-headless"
runs-on: ubuntu-22.04
needs: [ubuntu_2204_cc_matrix]
steps:
- name: "download artifact"
uses: actions/download-artifact@v3
with:
name: contour-ubuntu2204-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: |
set -ex
ls -hlR
sudo apt install -y \
libfontconfig1 \
libfreetype6 \
libharfbuzz0b \
libqt5gui5 \
libqt5opengl5 \
libyaml-cpp0.7 \
ncurses-bin \
valgrind
- name: "bench-headless: ${{ matrix.test_case }}"
run: valgrind --error-exitcode=64 ./build/linux-debug/src/vtbackend/bench-headless ${{ matrix.test_case }} size 1
# }}}
# {{{ Ubuntu check matrix
check_ubuntu2204_matrix_test_matrix:
if: ${{ always() }}
runs-on: ubuntu-latest
name: "Ubuntu Linux 22.04 post-check"
needs:
- package_for_Ubuntu
- ubuntu_2204_cc_matrix
- test_ubuntu2204_valgrind
- test_ubuntu2204_bench_headless
steps:
- name: Print matrix status
run: |
echo "Result (CC matrix) : ${{ needs.ubuntu_2204_cc_matrix.result }}"
echo "Result (packaging matrix) : ${{ needs.package_for_Ubuntu.result }}"
- name: Check build matrix status
if: ${{ needs.ubuntu_2204_cc_matrix.result != 'success' && needs.ubuntu_2204_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-ubuntu2204-tests"
uses: geekyeggo/delete-artifact@v2
with:
name: contour-ubuntu2204-tests
# }}}
# {{{ Build notcurses
build_notcurses:
name: "Build notcurses"
strategy:
fail-fast: false
matrix:
os_version: ['20.04', '22.04']
runs-on: ubuntu-${{ matrix.os_version }}
steps:
- name: "update APT database"
run: sudo apt -q update
- name: "install dependencies"
run: |
set -ex
sudo apt install -y \
build-essential \
cmake \
doctest-dev \
ffmpeg \
libavcodec-dev \
libavdevice-dev \
libavformat-dev \
libavutil-dev \
libdeflate-dev \
libncurses-dev \
libqrcodegen-dev \
libswscale-dev \
libunistring-dev \
xvfb
- name: "git clone"
run: git clone https://github.com/dankamongmen/notcurses.git
- name: ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: ccache-ubuntu_2204-notcurses
max-size: 256M
- name: "configure cmake"
run: |
cmake -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=~/opt/notcurses \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-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 --build notcurses/build --config Release --target install/strip
- name: "Uploading artifact"
uses: actions/upload-artifact@v3
with:
name: "notcurses-install-${{ matrix.os_version }}"
path: ~/opt/notcurses
if-no-files-found: error
retention-days: 1
# }}}
# {{{ 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: ['20.04', '22.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@v3
- 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@v3
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@v3
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-22.04
needs: [package_for_Ubuntu, build_notcurses]
strategy:
fail-fast: false
matrix:
include: # {{{ (name, id) tuples
# ixetunchmdbkywjgarvlsfqzo
- name: 'aanimate'
id: 'a'
- name: 'box'
id: 'b'
- name: 'chunli'
id: 'c'
- name: 'dragon'
id: 'd'
- name: 'eagle'
id: 'e'
- name: 'fission'
id: 'f'
- name: 'grid'
id: 'g'
- name: 'highcon'
id: 'h'
- name: 'intro'
id: 'i'
- name: 'jungle'
id: 'j'
- name: 'keller'
id: 'k'
- name: 'luigi'
id: 'l'
- name: 'mojibake'
id: 'm'
- name: 'normal'
id: 'n'
- name: 'outro'
id: 'o'
- name: 'qrcode'
id: 'q'
- name: 'reel'
id: 'r'
- name: 'sliders'
id: 's'
- name: 'trans'
id: 't'
- name: 'uniblock'
id: 'u'
- name: 'view'
id: 'v'
- name: 'whiteout'
id: 'w'
- name: 'xray'
id: 'x'
- name: 'yield'
id: 'y'
- name: 'zoo'
id: 'z'
# }}}
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@v3
- 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@v3
with:
name: "contour-${{ steps.set_vars.outputs.VERSION_STRING }}-ubuntu22.04-amd64.deb"
- uses: actions/download-artifact@v3
with:
name: "notcurses-install-22.04"
path: ~/opt/notcurses
- name: "fix executable bits"
run: |
chmod 0755 ~/opt/notcurses/bin/*
chmod 0755 ~/opt/*/lib/*
ls -hlR ~/opt/
- name: "install dependencies"
run: ./scripts/ci/notcurses-install-deps.sh
- name: "Run notcurses-demo -h"
timeout-minutes: 1
run: ~/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 }}-ubuntu22.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: |
# export LD_LIBRARY_PATH="/home/runner/opt/notcurses/lib"
./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@v3
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: ['20.04', '22.04']
runs-on: ubuntu-${{ matrix.os_version}}
needs: [package_for_Ubuntu]
steps:
- uses: actions/checkout@v3
- 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@v3
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@v3
- 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
- archlinux
- check_notcurses_test_matrix
- fedora
- osx
- 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@v3
- 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 20.04"
uses: actions/download-artifact@v3
with:
name: contour-${{ steps.set_vars.outputs.VERSION_STRING }}-ubuntu20.04-amd64.deb
- name: "fetch artifact: Ubuntu 22.04"
uses: actions/download-artifact@v3
with:
name: contour-${{ steps.set_vars.outputs.VERSION_STRING }}-ubuntu22.04-amd64.deb
- name: "fetch artifact: Fedora 39"
uses: actions/download-artifact@v3
with:
name: "contour-${{ steps.set_vars.outputs.VERSION }}-1.fc39.x86_64.rpm"
- name: "fetch artifact: ArchLinux"
uses: actions/download-artifact@v3
with:
name: "contour-x86_64.pkg.tar.zst"
- name: "fetch artifact: MacOS"
uses: actions/download-artifact@v3
with:
name: "contour-${{ steps.set_vars.outputs.version }}-osx.dmg"
- name: "fetch artifact: Windows (MSI)"
uses: actions/download-artifact@v3
with:
name: "contour-${{ steps.set_vars.outputs.version }}-win64.msi"
- name: "fetch artifact: Windows (ZIP)"
uses: actions/download-artifact@v3
with:
name: "contour-${{ steps.set_vars.outputs.version }}-win64.zip"
# }}}
- 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
*.rpm
*.dmg
*.msi
*.zst
*.zip
*.AppImage
# }}}