Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F85803676
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
9 KB
Referenced Files
None
Subscribers
None
View Options
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 3c164ef..2ae297d 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,222 +1,153 @@
# 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"
+ - sudo -u podman TMPDIR="$TMPDIR" podman login -u "$REGISTRY_USER" -p "$REGISTRY_PASSWORD" "$REGISTRY"
+ - sudo -u podman TMPDIR="$TMPDIR" podman build -f "$CI_PROJECT_DIR"/Containerfile --build-arg JOBS=3 --build-arg BASE_IMG_TAG=$BASE_IMG_TAG --build-arg BUILD_TYPE=$BUILD_TYPE $BUILD_ARGS -t "$CANONICAL_TAG" "$CI_PROJECT_DIR"
+ # Only branch and tag commits should trigger pushing
- |
- if [ "$CI_PIPELINE_SOURCE" == "trigger" ]; then
+ if [ -z "$CI_COMMIT_BRANCH" -a -z "$CI_COMMIT_TAG" ]; 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':
+'build:debug:24.04':
extends: .build
before_script:
- - BASE_IMG_TAG=servant-ubuntu22.04
+ - BASE_IMG_TAG=servant-ubuntu24.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"
+ - REGISTRY_IMAGE=$REGISTRY/the-kazv-project/libkazv
+ - BASE_TAG="$REGISTRY_IMAGE:${CI_COMMIT_REF_SLUG-none}"
+ - CANONICAL_TAG="$BASE_TAG-ubuntu24.04-debug"
+ - ADDITIONAL_TAGS="$BASE_TAG $BASE_TAG-debug $BASE_TAG-ubuntu24.04"
-'build:production:22.04':
+'build:production:24.04':
extends: .build
before_script:
- - BASE_IMG_TAG=servant-ubuntu22.04
+ - BASE_IMG_TAG=servant-ubuntu24.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"
+ - REGISTRY_IMAGE=$REGISTRY/the-kazv-project/libkazv
+ - BASE_TAG="$REGISTRY_IMAGE:${CI_COMMIT_REF_SLUG-none}"
+ - CANONICAL_TAG="$BASE_TAG-ubuntu24.04-prod"
+ - ADDITIONAL_TAGS="$BASE_TAG-prod"
'build:coverage':
stage: build
image:
- name: reg.lily.kazv.moe/kazv/libkazv-deps/deps:servant-ubuntu22.04
+ name: r.lily-is.land/the-kazv-project/libkazv-deps/deps:servant-ubuntu24.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 JOBS=3
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'
diff --git a/Containerfile b/Containerfile
index 4389dcb..2dc62ea 100644
--- a/Containerfile
+++ b/Containerfile
@@ -1,29 +1,29 @@
ARG BASE_IMG_TAG=servant
-FROM reg.lily.kazv.moe/kazv/libkazv-deps/deps:$BASE_IMG_TAG
+FROM r.lily-is.land/the-kazv-project/libkazv-deps/deps:$BASE_IMG_TAG
RUN mkdir -pv /build
COPY . /build/libkazv
WORKDIR /build/libkazv
ARG BUILD_TYPE=Debug
ARG JOBS=3
ARG DEPS_INSTALL_DIR=/opt/libkazv-deps
ARG LIBKAZV_INSTALL_DIR=/opt/libkazv
RUN --mount=type=cache,id=ccache,target=/ccache \
export CCACHE_COMPILERCHECK=content \
CCACHE_BASEDIR=/build/libkazv \
CCACHE_DIR=/ccache \
PATH="/usr/lib/ccache:$PATH" \
CC=/usr/lib/ccache/gcc CXX=/usr/lib/ccache/g++ && \
ccache --zero-stats; ccache --show-stats; \
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 && \
make -j$JOBS && \
make test && \
make -j$JOBS install && \
cd ../.. && \
rm -rf /build/libkazv && \
ccache --show-stats
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Fri, Oct 9, 10:12 AM (1 d, 19 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1784366
Default Alt Text
(9 KB)
Attached To
Mode
rL libkazv
Attached
Detach File
Event Timeline
Log In to Comment