Page MenuHomePhorge

No OneTemporary

Size
9 KB
Referenced Files
None
Subscribers
None
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

Mime Type
text/x-diff
Expires
Fri, Oct 9, 10:12 AM (1 d, 20 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1784366
Default Alt Text
(9 KB)

Event Timeline