summaryrefslogtreecommitdiff
path: root/test/infra
diff options
context:
space:
mode:
Diffstat (limited to 'test/infra')
-rw-r--r--test/infra/Dockerfile.emba46
-rw-r--r--test/infra/gitlab-ci.yml136
2 files changed, 98 insertions, 84 deletions
diff --git a/test/infra/Dockerfile.emba b/test/infra/Dockerfile.emba
index 9f03482c3fd..aef68c6e81e 100644
--- a/test/infra/Dockerfile.emba
+++ b/test/infra/Dockerfile.emba
@@ -28,21 +28,23 @@ FROM debian:stretch as emacs-base
RUN apt-get update && \
apt-get install -y --no-install-recommends -o=Dpkg::Use-Pty=0 \
- libc-dev gcc g++ make autoconf automake libncurses-dev gnutls-dev git texinfo \
+ libc-dev gcc g++ make autoconf automake libncurses-dev gnutls-dev \
+ libdbus-1-dev libacl1-dev acl git texinfo gdb \
&& rm -rf /var/lib/apt/lists/*
FROM emacs-base as emacs-inotify
RUN apt-get update && \
- apt-get install -y --no-install-recommends -o=Dpkg::Use-Pty=0 inotify-tools \
+ apt-get install -y --no-install-recommends -o=Dpkg::Use-Pty=0 \
+ inotify-tools \
&& rm -rf /var/lib/apt/lists/*
COPY . /checkout
WORKDIR /checkout
RUN ./autogen.sh autoconf
RUN ./configure
-RUN make -j4 bootstrap
-RUN make -j4
+# 'make -j4 bootstrap' does not work reliably.
+RUN make bootstrap
FROM emacs-base as emacs-filenotify-gio
@@ -55,13 +57,13 @@ COPY . /checkout
WORKDIR /checkout
RUN ./autogen.sh autoconf
RUN ./configure --with-file-notification=gfile
-RUN make -j4 bootstrap
-RUN make -j4
+RUN make bootstrap
FROM emacs-base as emacs-gnustep
RUN apt-get update && \
- apt-get install -y --no-install-recommends -o=Dpkg::Use-Pty=0 gnustep-devel \
+ apt-get install -y --no-install-recommends -o=Dpkg::Use-Pty=0 \
+ gnustep-devel \
&& rm -rf /var/lib/apt/lists/*
COPY . /checkout
@@ -69,19 +71,35 @@ WORKDIR /checkout
RUN ./autogen.sh autoconf
RUN ./configure --with-ns
RUN make bootstrap
-RUN make -j4
-FROM emacs-base as emacs-native-comp-speed0
+FROM emacs-base as emacs-native-comp
RUN apt-get update && \
- apt-get install -y --no-install-recommends -o=Dpkg::Use-Pty=0 libgccjit-6-dev \
+ apt-get install -y --no-install-recommends -o=Dpkg::Use-Pty=0 \
+ libgccjit-6-dev \
&& rm -rf /var/lib/apt/lists/*
-ARG make_bootstrap_params=""
+FROM emacs-native-comp as emacs-native-comp-speed0
+
+COPY . /checkout
+WORKDIR /checkout
+RUN ./autogen.sh autoconf
+RUN ./configure --with-native-compilation
+RUN make bootstrap -j2 \
+ NATIVE_FULL_AOT=1 BYTE_COMPILE_EXTRA_FLAGS='--eval "(setq comp-speed 0)"'
+
+FROM emacs-native-comp as emacs-native-comp-speed1
+
+COPY . /checkout
+WORKDIR /checkout
+RUN ./autogen.sh autoconf
+RUN ./configure --with-native-compilation
+RUN make bootstrap -j2 BYTE_COMPILE_EXTRA_FLAGS='--eval "(setq comp-speed 1)"'
+
+FROM emacs-native-comp as emacs-native-comp-speed2
COPY . /checkout
WORKDIR /checkout
RUN ./autogen.sh autoconf
-RUN ./configure --with-nativecomp
-RUN make bootstrap -j2 NATIVE_FULL_AOT=1 BYTE_COMPILE_EXTRA_FLAGS='--eval "(setq comp-speed 0)"'
-RUN make -j4
+RUN ./configure --with-native-compilation
+RUN make bootstrap -j2
diff --git a/test/infra/gitlab-ci.yml b/test/infra/gitlab-ci.yml
index 6876a8b11d8..001c7795725 100644
--- a/test/infra/gitlab-ci.yml
+++ b/test/infra/gitlab-ci.yml
@@ -44,13 +44,18 @@ workflow:
variables:
GIT_STRATEGY: fetch
EMACS_EMBA_CI: 1
+ # Three hours, see below.
+ EMACS_TEST_TIMEOUT: 10800
EMACS_TEST_VERBOSE: 1
# # Use TLS https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#tls-enabled
# DOCKER_HOST: tcp://docker:2376
# DOCKER_TLS_CERTDIR: "/certs"
- # Put the configuration for each run in a separate directory to avoid conflicts
+ # Put the configuration for each run in a separate directory to
+ # avoid conflicts.
DOCKER_CONFIG: "/.docker-config-${CI_COMMIT_SHA}"
- # We don't use ${CI_COMMIT_SHA} to be able to do one bootstrap across multiple builds
+ DOCKER_BUILDKIT: 1
+ # We don't use ${CI_COMMIT_SHA} to be able to do one bootstrap
+ # across multiple builds.
BUILD_TAG: ${CI_COMMIT_REF_SLUG}
default:
@@ -66,57 +71,61 @@ default:
test_name: ${CI_JOB_NAME}-${CI_COMMIT_SHORT_SHA}
rules:
- changes:
- - "**/Makefile.in"
+ - "**Makefile.in"
- .gitlab-ci.yml
- aclocal.m4
- autogen.sh
- configure.ac
- lib/*.{h,c}
- - lisp/**/*.el
+ - lisp/**.el
- src/*.{h,c}
- test/infra/*
- test/lib-src/*.el
- - test/lisp/**/*.el
+ - test/lisp/**.el
+ - test/misc/*.el
- test/src/*.el
- changes:
# gfilemonitor, kqueue
- src/gfilenotify.c
- src/kqueue.c
# MS Windows
- - "**/w32*"
+ - "**w32*"
# GNUstep
- lisp/term/ns-win.el
- src/ns*.{h,m}
- src/macfont.{h,m}
when: never
- # these will be cached across builds
+ # These will be cached across builds.
cache:
key: ${CI_COMMIT_SHA}
paths: []
policy: pull-push
- # these will be saved for followup builds
+ # These will be saved for followup builds.
artifacts:
expire_in: 24 hrs
paths: []
- # using the variables for each job
+ # Using the variables for each job.
script:
- docker pull ${CI_REGISTRY_IMAGE}:${target}-${BUILD_TAG}
- # TODO: with make -j4 several of the tests were failing, for example shadowfile-tests, but passed without it
+ # TODO: with make -j4 several of the tests were failing, for
+ # example shadowfile-tests, but passed without it.
- 'export PWD=$(pwd)'
- - 'docker run -i -e EMACS_EMBA_CI=${EMACS_EMBA_CI} --volumes-from $(docker ps -q -f "label=com.gitlab.gitlab-runner.job.id=${CI_JOB_ID}"):ro --name ${test_name} ${CI_REGISTRY_IMAGE}:${target}-${BUILD_TAG} /bin/bash -c "git fetch ${PWD} HEAD && echo checking out these updated files && git diff --name-only FETCH_HEAD && ( git diff --name-only FETCH_HEAD | xargs git checkout -f FETCH_HEAD ) && make -j4 && make ${make_params}"'
+ - 'docker run -i -e EMACS_EMBA_CI=${EMACS_EMBA_CI} -e EMACS_TEST_TIMEOUT=${EMACS_TEST_TIMEOUT} -e EMACS_TEST_VERBOSE=${EMACS_TEST_VERBOSE} --volumes-from $(docker ps -q -f "label=com.gitlab.gitlab-runner.job.id=${CI_JOB_ID}"):ro --name ${test_name} ${CI_REGISTRY_IMAGE}:${target}-${BUILD_TAG} /bin/bash -c "git fetch ${PWD} HEAD && echo checking out these updated files && git diff --name-only FETCH_HEAD && ( git diff --name-only FETCH_HEAD | xargs git checkout -f FETCH_HEAD ) && make -j4 && make ${make_params}"'
after_script:
# - docker ps -a
# - printenv
# - test -n "$(docker ps -aq -f name=${test_name})" && ( docker export ${test_name} | tar -tvf - )
- test -n "$(docker ps -aq -f name=${test_name})" && docker cp ${test_name}:checkout/test ${test_name}
- test -n "$(docker ps -aq -f name=${test_name})" && docker rm ${test_name}
+ # - ls -alR ${test_name}
.build-template:
+ needs: []
rules:
- if: '$CI_PIPELINE_SOURCE == "web"'
when: always
- changes:
- - "**/Makefile.in"
+ - "**Makefile.in"
- .gitlab-ci.yml
- aclocal.m4
- autogen.sh
@@ -130,7 +139,7 @@ default:
- src/gfilenotify.c
- src/kqueue.c
# MS Windows
- - "**/w32*"
+ - "**w32*"
# GNUstep
- lisp/term/ns-win.el
- src/ns*.{h,m}
@@ -141,7 +150,7 @@ default:
- docker push ${CI_REGISTRY_IMAGE}:${target}-${BUILD_TAG}
.test-template:
- # Do not run fast and normal test jobs when scheduled
+ # Do not run fast and normal test jobs when scheduled.
rules:
- if: '$CI_JOB_STAGE =~ "fast|normal" && $CI_PIPELINE_SOURCE == "schedule"'
when: never
@@ -151,20 +160,23 @@ default:
public: true
expire_in: 1 week
paths:
- - "${test_name}/**/*.log"
+ - ${test_name}/**/*.log
+ - ${test_name}/**/core
+ - ${test_name}/core
+ when: always
.gnustep-template:
rules:
- if: '$CI_PIPELINE_SOURCE == "web"'
- if: '$CI_PIPELINE_SOURCE == "schedule"'
changes:
- - "**/Makefile.in"
+ - "**Makefile.in"
- .gitlab-ci.yml
- configure.ac
- src/ns*.{h,m}
- src/macfont.{h,m}
- lisp/term/ns-win.el
- - nextstep/**/*
+ - nextstep/**
- test/infra/*
.filenotify-gio-template:
@@ -172,7 +184,7 @@ default:
- if: '$CI_PIPELINE_SOURCE == "web"'
- if: '$CI_PIPELINE_SOURCE == "schedule"'
changes:
- - "**/Makefile.in"
+ - "**Makefile.in"
- .gitlab-ci.yml
- lisp/autorevert.el
- lisp/filenotify.el
@@ -187,7 +199,7 @@ default:
- if: '$CI_PIPELINE_SOURCE == "web"'
- if: '$CI_PIPELINE_SOURCE == "schedule"'
changes:
- - "**/Makefile.in"
+ - "**Makefile.in"
- .gitlab-ci.yml
- lisp/emacs-lisp/comp.el
- lisp/emacs-lisp/comp-cstr.el
@@ -198,9 +210,8 @@ default:
timeout: 8 hours
stages:
- - prep-images
- build-images
- - fast
+# - fast
- normal
- platform-images
- platforms
@@ -208,25 +219,20 @@ stages:
- native-comp
- slow
-prep-image-base:
- stage: prep-images
- extends: [.job-template, .build-template]
- variables:
- target: emacs-base
-
build-image-inotify:
stage: build-images
extends: [.job-template, .build-template]
- needs: [prep-image-base]
variables:
target: emacs-inotify
+# Temporarily.
+ timeout: 8 hours
-test-fast-inotify:
- stage: fast
- extends: [.job-template, .test-template]
- variables:
- target: emacs-inotify
- make_params: "-C test check"
+# test-fast-inotify:
+# stage: fast
+# extends: [.job-template, .test-template]
+# variables:
+# target: emacs-inotify
+# make_params: "-C test check"
test-lisp-inotify:
stage: normal
@@ -245,14 +251,12 @@ test-lisp-net-inotify:
build-image-filenotify-gio:
stage: platform-images
extends: [.job-template, .build-template, .filenotify-gio-template]
- needs: [prep-image-base]
variables:
target: emacs-filenotify-gio
build-image-gnustep:
stage: platform-images
extends: [.job-template, .build-template, .gnustep-template]
- needs: [prep-image-base]
variables:
target: emacs-gnustep
@@ -266,7 +270,7 @@ test-filenotify-gio:
make_params: "-k -C test autorevert-tests.log filenotify-tests.log"
test-gnustep:
- # This tests the GNUstep build process
+ # This tests the GNUstep build process.
stage: platforms
needs: [build-image-gnustep]
extends: [.job-template, .gnustep-template]
@@ -274,56 +278,48 @@ test-gnustep:
target: emacs-gnustep
make_params: install
-build-native-bootstrap-speed0:
+build-native-comp-speed0:
stage: native-comp-images
extends: [.job-template, .build-template, .native-comp-template]
- needs: [prep-image-base]
variables:
target: emacs-native-comp-speed0
-# build-native-bootstrap-speed0:
-# # Test a full native bootstrap
-# # Run for now only speed 0 to limit memory usage and compilation time.
-# stage: native-comp-images
-# # Uncomment the following to run it only when scheduled.
-# # only:
-# # - schedules
-# script:
-# - DEBIAN_FRONTEND=noninteractive apt install --no-install-recommends -y -qq -o=Dpkg::Use-Pty=0 libgccjit-6-dev
-# - ./autogen.sh autoconf
-# - ./configure --with-nativecomp
-# - make bootstrap NATIVE_FULL_AOT=1 BYTE_COMPILE_EXTRA_FLAGS='--eval "(setq comp-speed 0)"' -j2
-# timeout: 8 hours
+build-native-comp-speed1:
+ stage: native-comp-images
+ extends: [.job-template, .build-template, .native-comp-template]
+ variables:
+ target: emacs-native-comp-speed1
-# build-native-bootstrap-speed1:
-# stage: native-comp-images
-# script:
-# - DEBIAN_FRONTEND=noninteractive apt install --no-install-recommends -y -qq -o=Dpkg::Use-Pty=0 libgccjit-6-dev
-# - ./autogen.sh autoconf
-# - ./configure --with-nativecomp
-# - make bootstrap BYTE_COMPILE_EXTRA_FLAGS='--eval "(setq comp-speed 1)"'
-# timeout: 8 hours
+build-native-comp-speed2:
+ stage: native-comp-images
+ extends: [.job-template, .build-template, .native-comp-template]
+ variables:
+ target: emacs-native-comp-speed2
-# build-native-bootstrap-speed2:
-# stage: native-comp-images
-# script:
-# - DEBIAN_FRONTEND=noninteractive apt install --no-install-recommends -y -qq -o=Dpkg::Use-Pty=0 libgccjit-6-dev
-# - ./autogen.sh autoconf
-# - ./configure --with-nativecomp
-# - make bootstrap
-# timeout: 8 hours
+test-native-comp-speed0:
+ stage: native-comp
+ needs: [build-native-comp-speed0]
+ extends: [.job-template, .test-template, .native-comp-template]
+ variables:
+ target: emacs-native-comp-speed0
+ make_params: >-
+ -C test check EXCLUDE_TESTS=%emacs-module-tests.el
+ SELECTOR='(not (tag :unstable))'
test-all-inotify:
# This tests also file monitor libraries inotify and inotifywatch.
stage: slow
+ needs: [build-image-inotify]
extends: [.job-template, .test-template]
rules:
- # note there's no "changes" section, so this always runs on a schedule
+ # Note there's no "changes" section, so this always runs on a schedule.
- if: '$CI_PIPELINE_SOURCE == "web"'
- if: '$CI_PIPELINE_SOURCE == "schedule"'
variables:
target: emacs-inotify
- make_params: check-expensive
+ make_params: check-expensive EXCLUDE_TESTS=%emacs-module-tests.el
+ # Two hours.
+ EMACS_TEST_TIMEOUT: 7200
# Local Variables:
# add-log-current-defun-header-regexp: "^\\([-_.[:alnum:]]+\\)[ \t]*:"