Page Menu
Home
ClusterLabs Projects
Search
Configure Global Search
Log In
Files
F5465527
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
10 KB
Referenced Files
None
Subscribers
None
View Options
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000..c337b18711
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,270 @@
+# Copyright 2018 Red Hat, Inc.
+# Author: Jan Pokorny <jpokorny@redhat.com>
+# Part of pacemaker project
+# SPDX-License-Identifier: FSFAP
+
+# Conventions:
+# 0/ subject to change: compatibility with GitLab (CE) as old as 10.8
+# 1/ heavy reuse (compatible map merges for now, see fedora-rawhide example)
+# 2/ consolidated prefixes for custom variable names: GLOBAL_* and LOCAL_*
+
+variables:
+ GIT_DEPTH: "16" # nice-to-have automatic "bisect" for even more convenience
+
+stages:
+ - buildenv
+ - build
+ - test
+
+# currently, 1:1 with the eponymous stage
+.buildenv: &buildenv-anchor
+ stage: buildenv
+
+# currently, subset of all jobs pertaining "build" stage
+.compilation: &compilation-anchor
+ variables:
+ GLOBAL_COMPILATION: "1" # bogus content so that this anchor is not empty
+ # only since GitLab 11.4
+ # changes:
+ # - "configure.ac"
+ # - "**/*.[ch]"
+ # - "**/*.xml"
+ # - "**/*.xsl"
+ # - "**/Makefile.am"
+ # - ".gitlab-ci.yml"
+
+
+#
+# Fedora Rawhide
+#
+#
+.fedora-rawhide: &fedora-rawhide-anchor
+ tags:
+ - docker
+ image: fedora:rawhide
+
+.fedora-rawhide-variables-rpm: &fedora-rawhide-variables-rpm-anchor
+ # below are captured major sets of packages that need to be installed on top
+ # of what the base image contains; some packages named individually later;
+ # transitive dependencies preferably kept at minimum, i.e., w/o proliferation
+ GLOBAL_RPM_BR_BASIC: autoconf
+ automake
+ pkgconf-pkg-config
+ libtool
+ libtool-ltdl-devel
+ make
+ # with these two, first word denotes also the derived value of CC variable
+ GLOBAL_RPM_BR_GCC: gcc
+ GLOBAL_RPM_BR_CLANG: clang # compiler-rt # for when with coverage
+ GLOBAL_RPM_BR_LIBS_PLAIN: libuuid-devel
+ libxslt-devel
+ bzip2-devel
+ # note a special trick using \v escaped character, since it's not in IFS
+ # (word separators) in Bash, while fulfilling the requirements in libdnf
+ # (cf. https://github.com/rpm-software-management/libdnf/pull/476)
+ GLOBAL_RPM_BR_LIBS_PKGCONFIG: "pkgconfig(glib-2.0)\v>=2.16.0
+ pkgconfig(libxml-2.0)
+ pkgconfig(libqb)\v>=0.13
+ pkgconfig(libcpg)"
+ GLOBAL_RPM_REQ_LIBS: bzip2-libs glib2 # not dragged transitively
+
+.fedora-rawhide-gcc: &fedora-rawhide-gcc-anchor
+ <<: *fedora-rawhide-anchor #extends: .fedora-rawhide
+ variables:
+ <<: *fedora-rawhide-variables-rpm-anchor
+ LOCAL_RPM_COMPILER: $GLOBAL_RPM_BR_GCC
+ LOCAL_WITH_COVERAGE: --with-coverage
+
+.fedora-rawhide-clang: &fedora-rawhide-clang-anchor
+ <<: *fedora-rawhide-anchor #extends: .fedora-rawhide
+ variables:
+ <<: *fedora-rawhide-variables-rpm-anchor
+ LOCAL_RPM_COMPILER: $GLOBAL_RPM_BR_CLANG
+ LOCAL_WITH_COVERAGE: "" # override from enabling in GCC case for now
+
+# buildenv
+
+buildenv:fedora-rawhide:info:
+ # to gather some info about the image itself/container settings
+ <<: *buildenv-anchor #extends: .buildenv
+ <<: *fedora-rawhide-anchor #extends: .fedora-rawhide
+ variables:
+ GIT_STRATEGY: "none" # invariant stage, not project dependence at all
+ script:
+ - cat /proc/meminfo | grep Free
+ - df -H
+ - lsblk
+ - nproc
+ - ulimit -a
+ - uname -r
+ - dnf --version
+
+buildenv:fedora-rawhide:rpms:
+ # primarily to download RPMs, but alas, "download" plugin not baked into image
+ <<: *buildenv-anchor #extends: .buildenv
+ <<: *fedora-rawhide-anchor #extends: .fedora-rawhide
+ variables:
+ <<: *fedora-rawhide-variables-rpm-anchor
+ GIT_STRATEGY: "none" # invariant stage, not project dependence at all
+ cache:
+ key: "fedora-rawhide-dnf"
+ paths:
+ - ".cache/fedora-rawhide/dnf/rawhide-*"
+ - "xml/.relaxng.org/relaxng.rng"
+ script:
+ - mkdir -p .cache/fedora-rawhide/dnf xml/.relaxng.org
+ - pushd .cache/fedora-rawhide
+ - mv dnf/rawhide-* /var/cache/dnf 2>/dev/null || true
+ - dnf-custom() { timeout 192 dnf -y --noplugins --nodocs
+ --setopt=tsflags=test
+ --setopt=install_weak_deps=0
+ --setopt=keepcache=1
+ --setopt=autocheck_running_kernel=0
+ --disablerepo='*' --enablerepo=rawhide "$@"; };
+ dnf-custom install $GLOBAL_RPM_BR_BASIC
+ $GLOBAL_RPM_BR_GCC
+ $GLOBAL_RPM_BR_CLANG
+ $GLOBAL_RPM_BR_LIBS_PLAIN
+ $GLOBAL_RPM_BR_LIBS_PKGCONFIG
+ $GLOBAL_RPM_REQ_LIBS
+ findutils
+ libxml libxslt
+ psmisc which
+ gcovr
+ - mv /var/cache/dnf/rawhide-* dnf
+ - popd
+ # we don't have any other warm-up-cache job around, so piggyback it here
+ - test -s xml/.relaxng.org/relaxng.rng 2>/dev/null
+ || curl -SsLo xml/.relaxng.org/relaxng.rng
+ 'http://relaxng.org/relaxng.rng'
+
+# build
+
+maint:fedora-rawhide:
+ # to run some compilation-less checks
+ <<: *fedora-rawhide-anchor #extends: .fedora-rawhide
+ stage: build
+ cache:
+ key: "fedora-rawhide-dnf"
+ policy: pull
+ paths:
+ - ".cache/fedora-rawhide/dnf/rawhide-*"
+ - "xml/.relaxng.org/relaxng.rng"
+ before_script:
+ - mkdir -p .cache/fedora-rawhide/dnf
+ - pushd .cache/fedora-rawhide
+ - mv dnf/rawhide-* /var/cache/dnf 2>/dev/null || true
+ - dnf-custom() { timeout 96 dnf -y --cacheonly --noplugins --nodocs
+ --setopt=install_weak_deps=0
+ --setopt=autocheck_running_kernel=0
+ --disablerepo='*' --enablerepo=rawhide "$@"; };
+ dnf-custom install findutils
+ make
+ libxml
+ libxslt
+ - popd
+ - ( cd xml;
+ { cat Makefile.am; printf 'hack_rng\x3a %s' '${RNG_generated}'; }
+ | make -f- top_srcdir=$(pwd)/.. top_builddir=$(pwd)/.. hack_rng )
+
+ script:
+ - echo 'looking for presence of control characters...';
+ { git ls-files
+ | xargs grep -Ensv "^([^[:cntrl:]]*|$(printf '\t'))*$"||:; } 2>/dev/null
+ | { ! grep -Ev '^Binary file' && echo 'ALL OK'; };
+
+ # ./regression.sh && ./regression.sh -B && ./regression.sh -S && {
+ - cd xml;
+ ./regression.sh && ./regression.sh -B && {
+ schemas=; for schema in *.rng; do
+ case ${schema} in *cibtr*);; *)schemas="${schemas} ${schema}";; esac;
+ done;
+ test -s .relaxng.org/relaxng.rng 2>/dev/null
+ || curl --create-dirs -Lo .relaxng.org/relaxng.rng
+ 'http://relaxng.org/relaxng.rng';
+ xmllint --noout --relaxng .relaxng.org/relaxng.rng ${schemas};
+ }
+
+build:fedora-rawhide:gcc: &build-fedora-rawhide-gcc-anchor
+ # to build using GCC
+ <<: *compilation-anchor #extends: .compilation
+ <<: *fedora-rawhide-gcc-anchor #extends: .fedora-rawhide-gcc
+ stage: build
+ cache:
+ key: "fedora-rawhide-dnf"
+ policy: pull
+ paths:
+ - ".cache/fedora-rawhide/dnf/rawhide-*"
+ artifacts:
+ name: "fedora-rawhide-gcc-$CI_COMMIT_REF_SLUG"
+ untracked: true
+ expire_in: "10h"
+ before_script:
+ - mkdir -p .cache/fedora-rawhide/dnf
+ - pushd .cache/fedora-rawhide
+ - mv dnf/rawhide-* /var/cache/dnf 2>/dev/null || true
+ - dnf-custom() { timeout 96 dnf -y --cacheonly --noplugins --nodocs
+ --setopt=install_weak_deps=0
+ --setopt=autocheck_running_kernel=0
+ --disablerepo='*' --enablerepo=rawhide "$@"; };
+ dnf-custom install $GLOBAL_RPM_BR_BASIC
+ $LOCAL_RPM_COMPILER
+ $GLOBAL_RPM_BR_LIBS_PLAIN
+ $GLOBAL_RPM_BR_LIBS_PKGCONFIG
+ - popd
+ script:
+ - ./autogen.sh
+ - CC=$(echo $LOCAL_RPM_COMPILER | cut -d ' ' -f1)
+ ./configure --enable-silent-rules $LOCAL_WITH_COVERAGE
+ || { cat config.log; false; }
+ - timeout 480 make -j$(nproc) # -j$(($(nproc) + 1)) all
+ - find \( -name '*.l[ao]' -o -name 'config.*' -o -name configure -o -name
+ Makefile.in -o -name Makefile \) -delete # *.o need to remain for test
+
+build:fedora-rawhide:clang:
+ # to build using Clang
+ <<: *build-fedora-rawhide-gcc-anchor #extends build:fedora-rawhide:gcc
+ <<: *fedora-rawhide-clang-anchor #extends: .fedora-rawhide-clang
+
+# test
+
+test:fedora-rawhide:gcc: &test-fedora-rawhide-gcc-anchor
+ # to test the result of GCC build + measure coverage for that
+ <<: *compilation-anchor #extends: .compilation
+ <<: *fedora-rawhide-gcc-anchor #extends: .fedora-rawhide-gcc
+ stage: test
+ cache:
+ key: "fedora-rawhide-dnf"
+ policy: pull
+ paths:
+ - ".cache/fedora-rawhide/dnf/rawhide-*"
+ dependencies:
+ - build:fedora-rawhide:gcc
+ before_script:
+ - mkdir -p .cache/fedora-rawhide/dnf
+ - pushd .cache/fedora-rawhide
+ - mv dnf/rawhide-* /var/cache/dnf 2>/dev/null || true
+ - dnf-custom() { timeout 96 dnf -y --cacheonly --noplugins --nodocs
+ --setopt=install_weak_deps=0
+ --setopt=autocheck_running_kernel=0
+ --disablerepo='*' --enablerepo=rawhide "$@"; };
+ dnf-custom install $LOCAL_RPM_COMPILER
+ $GLOBAL_RPM_BR_LIBS_PLAIN
+ $GLOBAL_RPM_BR_LIBS_PKGCONFIG
+ psmisc which
+ $(test -z "$LOCAL_WITH_COVERAGE" || echo gcovr)
+ findutils
+ - popd
+ script:
+ - timeout 600 ./cts/cts-regression -V cli scheduler
+ after_script:
+ - gcovr -r .
+ - find -name 'core*' || true
+ coverage: '/^TOTAL.*\s+(\d+\%)$/'
+
+test:fedora-rawhide:clang:
+ # to test the result of Clang build (+ possibly measure coverage for that)
+ <<: *test-fedora-rawhide-gcc-anchor #extends: test:fedora-rawhide:gcc
+ <<: *fedora-rawhide-clang-anchor #extends: .fedora-rawhide-clang
+ dependencies:
+ - build:fedora-rawhide:clang
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Mon, Sep 1, 7:06 PM (1 d, 1 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2278562
Default Alt Text
(10 KB)
Attached To
Mode
rP Pacemaker
Attached
Detach File
Event Timeline
Log In to Comment