Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F12554116
.gitlab-ci.yml
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
7 KB
Referenced Files
None
Subscribers
None
.gitlab-ci.yml
View Options
# This file is part of libkazv.
# SPDX-FileCopyrightText: 2022-2023 tusooa <tusooa@kazv.moe>
# SPDX-License-Identifier: AGPL-3.0-or-later
workflow
:
rules
:
-
if
:
'$CI_PIPELINE_SOURCE
==
"trigger"'
-
if
:
'$CI_PIPELINE_SOURCE
==
"merge_request_event"'
when
:
never
-
if
:
$CI_COMMIT_BRANCH
-
if
:
'$CI_COMMIT_TAG
!~
/^phabricator\//'
stages
:
-
prepare
-
lint
-
build
-
coverage-vis
-
coverage-upload
-
doc
-
pages
-
report
.report
:
image
:
name
:
'reg.lily.kazv.moe/infra/phorge-ci-tools:servant'
rules
:
-
if
:
$TARGET_PHID
when
:
always
-
when
:
never
before_script
:
-
pipelineUrl="$CI_PROJECT_URL"/-/pipelines/"$CI_PIPELINE_ID"
report-start
:
extends
:
.report
stage
:
prepare
script
:
-
'echo
"{\"receiver\":
\"$TARGET_PHID\",
\"type\":
\"work\",
\"unit\":
[{\"name\":
\"GitLab
CI
(information
only)\",
\"result\":
\"skip\",
\"details\":
\"$pipelineUrl\",
\"format\":
\"remarkup\"}]}"
|
/tools/arcanist/bin/arc
call-conduit
--conduit-uri
https://iron.lily-is.land/
--conduit-token
"$CONDUIT_TOKEN"
--
harbormaster.sendmessage'
lint
:
stage
:
lint
script
:
|
echo 'Verify that no source file contains tabs'
! egrep -R --exclude-dir=resources $'\t' src
rules
:
&build-rules
-
changes
:
&src-chg
-
.gitlab-ci.yml
-
Dockerfile
-
'**/*.cpp'
-
'**/*.hpp'
-
'**/CMakeLists.txt'
-
'**/*.in'
-
'src/tests/resources/**'
.build
:
stage
:
build
image
:
name
:
quay.io/podman/stable
tags
:
-
podman
script
:
# https://github.com/containers/podman/discussions/15612
-
export TMPDIR="$CI_PROJECT_DIR"/cache
-
mkdir -pv "$TMPDIR"
-
chown -R podman:podman "$TMPDIR"
-
sudo -u podman TMPDIR="$TMPDIR" podman login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY"
-
sudo -u podman TMPDIR="$TMPDIR" podman build -f "$CI_PROJECT_DIR"/Containerfile --build-arg JOBS=1 --build-arg BASE_IMG_TAG=$BASE_IMG_TAG --build-arg BUILD_TYPE=$BUILD_TYPE $BUILD_ARGS -t "$CANONICAL_TAG" "$CI_PROJECT_DIR"
-
|
if [ "$CI_PIPELINE_SOURCE" == "trigger" ]; then
echo 'Skipping pushing'
else
sudo -u podman TMPDIR="$TMPDIR" podman push "$CANONICAL_TAG"
if [ -n "$ADDITIONAL_TAGS" ]; then
for t in $ADDITIONAL_TAGS; do
sudo -u podman TMPDIR="$TMPDIR" podman push "$CANONICAL_TAG" "$t"
done
else
echo 'No additional tags to push'
fi
fi
rules
:
*build-rules
cache
:
-
key
:
$CI_JOB_NAME
paths
:
-
cache/buildah-cache-1000/
'build:debug:22.04'
:
extends
:
.build
before_script
:
-
BASE_IMG_TAG=servant-ubuntu22.04
-
BUILD_TYPE=Debug
-
CANONICAL_TAG="$CI_REGISTRY_IMAGE/libkazv:$CI_COMMIT_REF_SLUG-ubuntu22.04-debug"
-
ADDITIONAL_TAGS="$CI_REGISTRY_IMAGE/libkazv:$CI_COMMIT_REF_SLUG $CI_REGISTRY_IMAGE/libkazv:$CI_COMMIT_REF_SLUG-debug $CI_REGISTRY_IMAGE/libkazv:$CI_COMMIT_REF_SLUG-ubuntu22.04"
'build:production:22.04'
:
extends
:
.build
before_script
:
-
BASE_IMG_TAG=servant-ubuntu22.04
-
BUILD_TYPE=Release
-
CANONICAL_TAG="$CI_REGISTRY_IMAGE/libkazv:$CI_COMMIT_REF_SLUG-ubuntu22.04-prod"
-
ADDITIONAL_TAGS="$CI_REGISTRY_IMAGE/libkazv:$CI_COMMIT_REF_SLUG-prod"
'build:coverage'
:
stage
:
build
image
:
name
:
reg.lily.kazv.moe/kazv/libkazv-deps/deps:servant-ubuntu22.04
entrypoint
:
[
""
]
# Do not set CCACHE_BASEDIR when building for coverage
# https://gitlab.kitware.com/cmake/cmake/-/issues/21138
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105238
# The build directory is always /builds/kazv/libkazv/ anyway
script
:
|
export BUILD_TYPE=Debug
export JOBS=1
export DEPS_INSTALL_DIR=/opt/libkazv-deps
export LIBKAZV_INSTALL_DIR=/opt/libkazv
export CCACHE_COMPILERCHECK=content
export CCACHE_DIR="$CI_PROJECT_DIR"/ccache
export PATH="/usr/lib/ccache:$PATH"
export CC=/usr/lib/ccache/gcc CXX=/usr/lib/ccache/g++
ccache --zero-stats || true
ccache --show-stats || true
mkdir build && cd build && \
cmake .. -DCMAKE_INSTALL_PREFIX="$LIBKAZV_INSTALL_DIR" -DCMAKE_PREFIX_PATH="$DEPS_INSTALL_DIR" -DCMAKE_BUILD_TYPE=$BUILD_TYPE -Dlibkazv_BUILD_TESTS=ON \
-Dlibkazv_BUILD_EXAMPLES=ON -Dlibkazv_BUILD_KAZVJOB=ON -Dlibkazv_ENABLE_COVERAGE=ON -DCMAKE_CXX_FLAGS=-fsanitize=address && \
make -j$JOBS && \
make CTEST_OUTPUT_ON_FAILURE=1 test && \
gcovr --xml-pretty --exclude-unreachable-branches --print-summary -o coverage.xml -r "${CI_PROJECT_DIR}" --object-directory src -e '.*/api/.*' -e '.*/tests/.*' -e '.*/testfixtures/.*' -e '.*/examples/.*'
after_script
:
-
ccache --show-stats
coverage
:
/^\s*lines:\s*\d+.\d+\%/
artifacts
:
name
:
${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}
paths
:
-
build/coverage.xml
reports
:
junit
:
build/test-report.xml
coverage_report
:
coverage_format
:
cobertura
path
:
build/coverage.xml
rules
:
*build-rules
cache
:
-
key
:
$CI_JOB_NAME
paths
:
-
ccache/
'coverage-report'
:
rules
:
*build-rules
stage
:
coverage-vis
image
:
'reg.lily.kazv.moe/infra/phorge-ci-tools/pycobertura:servant'
script
:
-
pycobertura show ./build/coverage.xml --format html --output ./build/coverage.html --source .
-
pycobertura show ./build/coverage.xml --format markdown --source . | python -c 'import sys, json; print(json.dumps("".join(sys.stdin)))' > ./build/coverage-md.json
-
/tools/cobertura-to-phorge ./build/coverage.xml . > ./build/coverage.json
artifacts
:
name
:
${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}
paths
:
-
build/coverage.html
-
build/coverage-md.json
-
build/coverage.json
upload-coverage
:
extends
:
.report
stage
:
coverage-upload
rules
:
-
if
:
$TARGET_PHID
changes
:
*src-chg
when
:
always
-
when
:
never
script
:
-
'{
echo
"{\"receiver\":
\"$TARGET_PHID\",
\"type\":
\"work\",
\"unit\":
[{\"name\":
\"Test
coverage\",
\"result\":
\"pass\",
\"details\":
";
cat
build/coverage-md.json;
echo
",
\"format\":
\"remarkup\",
\"coverage\":";
cat
build/coverage.json;
echo
"}]}";
}
|
/tools/arcanist/bin/arc
call-conduit
--conduit-uri
https://iron.lily-is.land/
--conduit-token
"$CONDUIT_TOKEN"
--
harbormaster.sendmessage'
'doc:build'
:
stage
:
doc
image
:
reg.lily.kazv.moe/kazv/libkazv-deps/deps:servant
dependencies
:
[]
script
:
-
doxygen Doxyfile
artifacts
:
paths
:
-
doc/html/
rules
:
-
changes
:
*src-chg
-
changes
:
&doc-chg
-
'**/*.md'
-
.gitlab-ci.yml
-
public/**/*
pages
:
stage
:
pages
image
:
alpine
dependencies
:
-
'doc:build'
script
:
-
mv -v doc/html public/api
artifacts
:
paths
:
-
public
rules
:
-
if
:
$CI_COMMIT_BRANCH != "servant"
when
:
never
-
changes
:
*src-chg
-
changes
:
*doc-chg
report-success
:
extends
:
.report
rules
:
-
if
:
$TARGET_PHID
when
:
on_success
-
when
:
never
stage
:
report
script
:
-
'echo
"{\"receiver\":
\"$TARGET_PHID\",
\"type\":
\"pass\"}"
|
/tools/arcanist/bin/arc
call-conduit
--conduit-uri
https://iron.lily-is.land/
--conduit-token
"$CONDUIT_TOKEN"
--
harbormaster.sendmessage'
report-failure
:
extends
:
.report
rules
:
-
if
:
$TARGET_PHID
when
:
on_failure
-
when
:
never
stage
:
report
script
:
-
'echo
"{\"receiver\":
\"$TARGET_PHID\",
\"type\":
\"fail\"}"
|
/tools/arcanist/bin/arc
call-conduit
--conduit-uri
https://iron.lily-is.land/
--conduit-token
"$CONDUIT_TOKEN"
--
harbormaster.sendmessage'
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Nov 15, 3:07 AM (6 h, 14 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
633129
Default Alt Text
.gitlab-ci.yml (7 KB)
Attached To
Mode
rL libkazv
Attached
Detach File
Event Timeline
Log In to Comment