Commit 64c6230d authored by Roman Lacko's avatar Roman Lacko
Browse files

Merge branch 'devel' into 'main'

Add Criterion 2.4.3

See merge request !1
parents 2ec19a0d b5dd1522
Loading
Loading
Loading
Loading
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