Loading .gitlab-ci.yml 0 → 100644 +64 −0 Original line number Diff line number Diff line default: image: docker:28-cli tags: - shared-fi services: - docker:28-dind-rootless before_script: - echo "$CI_REGISTRY_PASSWORD" | docker login $CI_REGISTRY -u $CI_REGISTRY_USER --password-stdin stages: - build - test - release .default-rules: rules: changes: - Dockerfile - test/** # NOTE: The repository must have Container Registry feature enabled in # order to use ‹$CI_REGISTRY_IMAGE› variable. variables: CR_VERSION: 2.4.3 CONTAINER_TEST_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA CONTAINER_RELEASE_IMAGE: $CI_REGISTRY_IMAGE:$CR_VERSION DOCKER_HOST: "unix:///runner/services/docker/docker.sock" build: stage: build rules: - !reference [.default-rules, rules] script: - docker build --pull --build-arg cr_version=$CR_VERSION -t $CONTAINER_TEST_IMAGE . - docker push $CONTAINER_TEST_IMAGE test: stage: test image: $CONTAINER_TEST_IMAGE rules: - !reference [.default-rules, rules] services: [] before_script: [] script: - cd test - meson setup build - ninja -C build - build/criterion-test -Oxml:report.xml artifacts: when: always paths: - test/report.xml reports: junit: test/report.xml release: stage: release rules: - !reference [.default-rules, rules] - if: $CI_COMMIT_BRANCH == "main" script: - docker pull $CONTAINER_TEST_IMAGE - docker tag $CONTAINER_TEST_IMAGE $CONTAINER_RELEASE_IMAGE - docker push $CONTAINER_RELEASE_IMAGE Dockerfile 0 → 100644 +25 −0 Original line number Diff line number Diff line from almalinux:10 arg cr_version="2.4.3" run dnf update -y run dnf install -y gcc g++ clang run dnf install -y meson cmake run dnf install -y libffi libffi-devel run dnf install -y git valgrind wget run dnf install -y python3-pip run pip install gcovr run <<EOF mkdir -p /tmp/build cd /tmp/build wget https://github.com/Snaipe/Criterion/archive/refs/tags/v${cr_version}.tar.gz tar -xf v${cr_version}.tar.gz cd Criterion-${cr_version} meson setup build ninja -C build ninja -C build install EOF run rm -rf /tmp/build hw.yml 0 → 100644 +110 −0 Original line number Diff line number Diff line default: image: docker:28-cli tags: - shared-fi services: - docker:28-dind-rootless before_script: - echo "$CI_REGISTRY_PASSWORD" | docker login $CI_REGISTRY -u $CI_REGISTRY_USER --password-stdin .code-rules: rules: - if: $CI_PIPELINE_SOURCE =~ /(web|trigger|api|merge_request_event)/ changes: - eval/** - solution/** - if: $CI_COMMIT_BRANCH =~ /^main\/[ab]$/ .image-rules: rules: - if: $CI_COMMIT_BRANCH =~ /^(main|devel)\/[ab]$/ stages: - build - test - package - release # NOTE: The repository must have Container Registry feature enabled in # order to use ‹$CI_REGISTRY_IMAGE› variable. variables: TERM: 2026 REGISTRY_IMAGE: gitlab.fi.muni.cz:5050/pb160/$TERM/common CONTAINER_TEST_IMAGE: $REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA CONTAINER_RELEASE_IMAGE: $REGISTRY_IMAGE:latest DOCKER_HOST: "unix:///runner/services/docker/docker.sock" solution_build: stage: build image: $REGISTRY_IMAGE rules: - !reference [.code-rules, rules] script: - meson setup build - meson compile -C build artifacts: paths: - build solution_build: stage: test image: $REGISTRY_IMAGE rules: - !reference [.code-rules, rules] script: - build/solution/solution-eval pkg_prepare: image: almalinux:10 stage: package rules: - !reference [.image-rules, rules] script: - mkdir image - find eval -type f \( -name 'meson.build' -prune -o -print0 \) | tar -cf "image/eval.tar" --null --files-from=- - find . -type f -name 'meson.build' ! -path './solution/meson.build' -print0 | tar -cf "image/meson.tar" --null --files-from=- - | target=$(echo $CI_COMMIT_REF_NAME | sed -e "s/\(main\|devel\)/$CI_PROJECT_NAME/g") echo target=$target cat <<EOF >image/setup #!/bin/sh rm -rf eval solution tar -xf /pb160/$target/meson.tar tar -xf /pb160/$target/eval.tar EOF chmod a+x image/setup cat <<EOF >image/Dockerfile from $REGISTRY_IMAGE:latest copy setup /pb160/$target/setup copy meson.tar /pb160/$target/meson.tar copy eval.tar /pb160/$target/eval.tar EOF artifacts: paths: - image pkg_build: stage: package rules: - !reference [.image-rules, rules] script: - cd image - docker build --pull -t $CONTAINER_TEST_IMAGE . - docker push $CONTAINER_TEST_IMAGE image_release: stage: release rules: - !reference [.image-rules, rules] script: - docker pull $CONTAINER_TEST_IMAGE - docker tag $CONTAINER_TEST_IMAGE $CONTAINER_RELEASE_IMAGE - docker push $CONTAINER_RELEASE_IMAGE rules: - if: $CI_COMMIT_BRANCH =~ /^main\/[ab]$/ test/lib.c 0 → 100644 +5 −0 Original line number Diff line number Diff line #include "lib.h" int inc(int a) { return a + 1; } test/lib.h 0 → 100644 +7 −0 Original line number Diff line number Diff line #pragma once #ifndef lib_h #define lib_h int inc(int a); #endif // lib_h Loading
.gitlab-ci.yml 0 → 100644 +64 −0 Original line number Diff line number Diff line default: image: docker:28-cli tags: - shared-fi services: - docker:28-dind-rootless before_script: - echo "$CI_REGISTRY_PASSWORD" | docker login $CI_REGISTRY -u $CI_REGISTRY_USER --password-stdin stages: - build - test - release .default-rules: rules: changes: - Dockerfile - test/** # NOTE: The repository must have Container Registry feature enabled in # order to use ‹$CI_REGISTRY_IMAGE› variable. variables: CR_VERSION: 2.4.3 CONTAINER_TEST_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA CONTAINER_RELEASE_IMAGE: $CI_REGISTRY_IMAGE:$CR_VERSION DOCKER_HOST: "unix:///runner/services/docker/docker.sock" build: stage: build rules: - !reference [.default-rules, rules] script: - docker build --pull --build-arg cr_version=$CR_VERSION -t $CONTAINER_TEST_IMAGE . - docker push $CONTAINER_TEST_IMAGE test: stage: test image: $CONTAINER_TEST_IMAGE rules: - !reference [.default-rules, rules] services: [] before_script: [] script: - cd test - meson setup build - ninja -C build - build/criterion-test -Oxml:report.xml artifacts: when: always paths: - test/report.xml reports: junit: test/report.xml release: stage: release rules: - !reference [.default-rules, rules] - if: $CI_COMMIT_BRANCH == "main" script: - docker pull $CONTAINER_TEST_IMAGE - docker tag $CONTAINER_TEST_IMAGE $CONTAINER_RELEASE_IMAGE - docker push $CONTAINER_RELEASE_IMAGE
Dockerfile 0 → 100644 +25 −0 Original line number Diff line number Diff line from almalinux:10 arg cr_version="2.4.3" run dnf update -y run dnf install -y gcc g++ clang run dnf install -y meson cmake run dnf install -y libffi libffi-devel run dnf install -y git valgrind wget run dnf install -y python3-pip run pip install gcovr run <<EOF mkdir -p /tmp/build cd /tmp/build wget https://github.com/Snaipe/Criterion/archive/refs/tags/v${cr_version}.tar.gz tar -xf v${cr_version}.tar.gz cd Criterion-${cr_version} meson setup build ninja -C build ninja -C build install EOF run rm -rf /tmp/build
hw.yml 0 → 100644 +110 −0 Original line number Diff line number Diff line default: image: docker:28-cli tags: - shared-fi services: - docker:28-dind-rootless before_script: - echo "$CI_REGISTRY_PASSWORD" | docker login $CI_REGISTRY -u $CI_REGISTRY_USER --password-stdin .code-rules: rules: - if: $CI_PIPELINE_SOURCE =~ /(web|trigger|api|merge_request_event)/ changes: - eval/** - solution/** - if: $CI_COMMIT_BRANCH =~ /^main\/[ab]$/ .image-rules: rules: - if: $CI_COMMIT_BRANCH =~ /^(main|devel)\/[ab]$/ stages: - build - test - package - release # NOTE: The repository must have Container Registry feature enabled in # order to use ‹$CI_REGISTRY_IMAGE› variable. variables: TERM: 2026 REGISTRY_IMAGE: gitlab.fi.muni.cz:5050/pb160/$TERM/common CONTAINER_TEST_IMAGE: $REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA CONTAINER_RELEASE_IMAGE: $REGISTRY_IMAGE:latest DOCKER_HOST: "unix:///runner/services/docker/docker.sock" solution_build: stage: build image: $REGISTRY_IMAGE rules: - !reference [.code-rules, rules] script: - meson setup build - meson compile -C build artifacts: paths: - build solution_build: stage: test image: $REGISTRY_IMAGE rules: - !reference [.code-rules, rules] script: - build/solution/solution-eval pkg_prepare: image: almalinux:10 stage: package rules: - !reference [.image-rules, rules] script: - mkdir image - find eval -type f \( -name 'meson.build' -prune -o -print0 \) | tar -cf "image/eval.tar" --null --files-from=- - find . -type f -name 'meson.build' ! -path './solution/meson.build' -print0 | tar -cf "image/meson.tar" --null --files-from=- - | target=$(echo $CI_COMMIT_REF_NAME | sed -e "s/\(main\|devel\)/$CI_PROJECT_NAME/g") echo target=$target cat <<EOF >image/setup #!/bin/sh rm -rf eval solution tar -xf /pb160/$target/meson.tar tar -xf /pb160/$target/eval.tar EOF chmod a+x image/setup cat <<EOF >image/Dockerfile from $REGISTRY_IMAGE:latest copy setup /pb160/$target/setup copy meson.tar /pb160/$target/meson.tar copy eval.tar /pb160/$target/eval.tar EOF artifacts: paths: - image pkg_build: stage: package rules: - !reference [.image-rules, rules] script: - cd image - docker build --pull -t $CONTAINER_TEST_IMAGE . - docker push $CONTAINER_TEST_IMAGE image_release: stage: release rules: - !reference [.image-rules, rules] script: - docker pull $CONTAINER_TEST_IMAGE - docker tag $CONTAINER_TEST_IMAGE $CONTAINER_RELEASE_IMAGE - docker push $CONTAINER_RELEASE_IMAGE rules: - if: $CI_COMMIT_BRANCH =~ /^main\/[ab]$/
test/lib.c 0 → 100644 +5 −0 Original line number Diff line number Diff line #include "lib.h" int inc(int a) { return a + 1; }
test/lib.h 0 → 100644 +7 −0 Original line number Diff line number Diff line #pragma once #ifndef lib_h #define lib_h int inc(int a); #endif // lib_h