]> git.eshelyaron.com Git - emacs.git/commitdiff
Adapt emba jobs
authorMichael Albinus <michael.albinus@gmx.de>
Mon, 22 Nov 2021 15:33:16 +0000 (16:33 +0100)
committerMichael Albinus <michael.albinus@gmx.de>
Mon, 22 Nov 2021 15:33:16 +0000 (16:33 +0100)
* admin/notes/emba (Emacs jobset): Precise.

* test/infra/Makefile.in (tn): New variable.
(subdir_template): Use it.  Handle eieio-tests, faceup-tests and
so-long-tests.  Rearrange .PHONY entry.  Add needs and artifacts
to emba job.

* test/infra/gitlab-ci.yml (test-filenotify-gio): Move up.

* test/infra/test-jobs.yml: Regenerate.

admin/notes/emba
test/infra/Makefile.in
test/infra/gitlab-ci.yml
test/infra/test-jobs.yml

index 4e500bc92cfa9ca4d9b170d93d5e628cba831702..a30e570fd47fb7e2d548d083b8046f4556e3cb29 100644 (file)
@@ -28,7 +28,8 @@ The messages contain a URL to the log file of the failed job, like
 * Emacs jobset
 
 The Emacs jobset is defined in the Emacs source tree, file
-'.gitlab-ci.yml'.  It could be adapted for every Emacs branch, see
+'.gitlab-ci.yml'.  All related files are located in directory
+'test/infra'.  They could be adapted for every Emacs branch, see
 <https://emba.gnu.org/help/ci/yaml/README.md>.
 
 A jobset on Gitlab is called pipeline.  Emacs pipelines run through
@@ -37,6 +38,11 @@ the stages 'build-images', 'platform-images' and 'native-comp-images'
 configuration parameters) as well as 'normal', 'slow', 'platforms' and
 'native-comp' (run respective test jobs based on the produced images).
 
+The jobs for stage 'normal' are contained in the file
+'test/infra/test-jobs.yml'.  This file is generated by calling 'make
+-C test generate-test-jobs' in the Emacs source tree, and the
+resulting file shall be pushed to the Emacs git repository afterwards.
+
 Every job runs in a Debian docker container.  It uses the local clone
 of the Emacs git repository to perform a bootstrap and test of Emacs.
 This could happen for several jobs with changed configuration, compile
index e91aea404d44248b16814628eaba1cb5e7528863..36c27024afbf9c7dd3e272c3afa722b63d664e5f 100644 (file)
@@ -1,4 +1,4 @@
-### test/infra/Makefile.  Generated from Makefile.in by configure.
+### @configure_input@
 
 # Copyright (C) 2021 Free Software Foundation, Inc.
 
@@ -33,6 +33,7 @@ top_builddir = @top_builddir@
 SUBDIRS ?= $(shell make -s -C .. subdirs)
 SUBDIR_TARGETS =
 FILE = test-jobs.yml
+tn = $$$${test_name}
 
 define subdir_template
   $(eval target = check-$(subst /,-,$(1)))
@@ -41,41 +42,59 @@ define subdir_template
   $(eval
     ifeq ($(findstring src, $(1)), src)
     define changes
-       @echo "        - $(1)/*.{h,c}" >>$(FILE)
-       @echo "        - test/$(1)/*.el" >>$(FILE)
+       @echo '        - $(1)/*.{h,c}' >>$(FILE)
+    endef
+    else ifeq ($(findstring eieio, $(1)), eieio)
+    define changes
+       @echo '        - lisp/emacs-lisp/eieio*.el' >>$(FILE)
+    endef
+    else ifeq ($(findstring faceup, $(1)), faceup)
+    define changes
+       @echo '        - lisp/emacs-lisp/faceup*.el' >>$(FILE)
+    endef
+    else ifeq ($(findstring so-long, $(1)), so-long)
+    define changes
+       @echo '        - lisp/so-long*.el' >>$(FILE)
     endef
     else ifeq ($(findstring misc, $(1)), misc)
     define changes
-       @echo "        - admin/*.el" >>$(FILE)
-       @echo "        - test/$(1)/*.el" >>$(FILE)
+       @echo '        - admin/*.el' >>$(FILE)
     endef
     else
     define changes
-       @echo "        - $(1)/*.el" >>$(FILE)
-       @echo "        - test/$(1)/*.el" >>$(FILE)
+       @echo '        - $(1)/*.el' >>$(FILE)
     endef
     endif)
 
-  .PHONY: $(target)
-
   $(target):
-       @echo "test-$(subst /,-,$(1))-inotify:" >>$(FILE)
-       @echo "  stage: normal" >>$(FILE)
-       @echo "  extends: [.job-template, .test-template]" >>$(FILE)
-       @echo "  rules:" >>$(FILE)
-       @echo "    - changes:" >>$(FILE)
-       $(changes)
-       @echo "  variables:" >>$(FILE)
-       @echo "    target: emacs-inotify" >>$(FILE)
-       @echo "    make_params: \"-C test $(target)\"" >>$(FILE)
        @echo >>$(FILE)
+       @echo 'test-$(subst /,-,$(1))-inotify:' >>$(FILE)
+       @echo '  stage: normal' >>$(FILE)
+       @echo '  needs: [build-image-inotify]' >>$(FILE)
+       @echo '  extends: [.job-template, .test-template]' >>$(FILE)
+       @echo '  rules:' >>$(FILE)
+       @echo '    - changes:' >>$(FILE)
+       $(changes)
+       @echo '        - test/$(1)/*.el' >>$(FILE)
+       @echo '        - test/$(1)/*resources/**' >>$(FILE)
+       @echo '  artifacts:' >>$(FILE)
+       @echo '    name: $(tn)' >>$(FILE)
+       @echo '    public: true' >>$(FILE)
+       @echo '    expire_in: 1 week' >>$(FILE)
+       @echo '    paths:' >>$(FILE)
+       @echo '      - test/$(1)/*.log' >>$(FILE)
+       @echo '      - **core' >>$(FILE)
+       @echo '    when: always' >>$(FILE)
+       @echo '  variables:' >>$(FILE)
+       @echo '    target: emacs-inotify' >>$(FILE)
+       @echo '    make_params: "-C test $(target)"' >>$(FILE)
 endef
 
 $(foreach subdir, $(SUBDIRS), $(eval $(call subdir_template,$(subdir))))
 
 all: generate-test-jobs
 
-.PHONY: generate-test-jobs $(FILE)
+.PHONY: generate-test-jobs $(FILE) $(SUBDIR_TARGETS)
 
 generate-test-jobs: clean $(FILE) $(SUBDIR_TARGETS)
 
index a0e2c283cde02cbb015e485bb1a281ed32761c95..47a8b5196489c30fadf4487d67a4a10af4b762ba 100644 (file)
@@ -236,32 +236,12 @@ build-image-inotify:
 
 include: '/test/infra/test-jobs.yml'
 
-# test-lisp-inotify:
-#   stage: normal
-#   extends: [.job-template, .test-template]
-#   variables:
-#     target: emacs-inotify
-#     make_params: "-C test check-lisp"
-
-# test-lisp-net-inotify:
-#   stage: normal
-#   extends: [.job-template, .test-template]
-#   variables:
-#     target: emacs-inotify
-#     make_params: "-C test check-lisp-net"
-
 build-image-filenotify-gio:
   stage: platform-images
   extends: [.job-template, .build-template, .filenotify-gio-template]
   variables:
     target: emacs-filenotify-gio
 
-build-image-gnustep:
-  stage: platform-images
-  extends: [.job-template, .build-template, .gnustep-template]
-  variables:
-    target: emacs-gnustep
-
 test-filenotify-gio:
   # This tests file monitor libraries gfilemonitor and gio.
   stage: platforms
@@ -271,6 +251,12 @@ test-filenotify-gio:
     target: emacs-filenotify-gio
     make_params: "-k -C test autorevert-tests.log filenotify-tests.log"
 
+build-image-gnustep:
+  stage: platform-images
+  extends: [.job-template, .build-template, .gnustep-template]
+  variables:
+    target: emacs-gnustep
+
 test-gnustep:
   # This tests the GNUstep build process.
   stage: platforms
index 9fb15081bd453cdcfc25680d75703056a8b74084..92eac04f5943bee2e1e3b323641302dfa6766634 100644 (file)
+
 test-lib-src-inotify:
   stage: normal
+  needs: [build-image-inotify]
   extends: [.job-template, .test-template]
   rules:
     - changes:
         - lib-src/*.{h,c}
         - test/lib-src/*.el
+        - test/lib-src/*resources/**
+  artifacts:
+    name: ${test_name}
+    public: true
+    expire_in: 1 week
+    paths:
+      - test/lib-src/*.log
+      - **core
+    when: always
   variables:
     target: emacs-inotify
     make_params: "-C test check-lib-src"
 
 test-lisp-inotify:
   stage: normal
+  needs: [build-image-inotify]
   extends: [.job-template, .test-template]
   rules:
     - changes:
         - lisp/*.el
         - test/lisp/*.el
+        - test/lisp/*resources/**
+  artifacts:
+    name: ${test_name}
+    public: true
+    expire_in: 1 week
+    paths:
+      - test/lisp/*.log
+      - **core
+    when: always
   variables:
     target: emacs-inotify
     make_params: "-C test check-lisp"
 
 test-lisp-calc-inotify:
   stage: normal
+  needs: [build-image-inotify]
   extends: [.job-template, .test-template]
   rules:
     - changes:
         - lisp/calc/*.el
         - test/lisp/calc/*.el
+        - test/lisp/calc/*resources/**
+  artifacts:
+    name: ${test_name}
+    public: true
+    expire_in: 1 week
+    paths:
+      - test/lisp/calc/*.log
+      - **core
+    when: always
   variables:
     target: emacs-inotify
     make_params: "-C test check-lisp-calc"
 
 test-lisp-calendar-inotify:
   stage: normal
+  needs: [build-image-inotify]
   extends: [.job-template, .test-template]
   rules:
     - changes:
         - lisp/calendar/*.el
         - test/lisp/calendar/*.el
+        - test/lisp/calendar/*resources/**
+  artifacts:
+    name: ${test_name}
+    public: true
+    expire_in: 1 week
+    paths:
+      - test/lisp/calendar/*.log
+      - **core
+    when: always
   variables:
     target: emacs-inotify
     make_params: "-C test check-lisp-calendar"
 
 test-lisp-cedet-inotify:
   stage: normal
+  needs: [build-image-inotify]
   extends: [.job-template, .test-template]
   rules:
     - changes:
         - lisp/cedet/*.el
         - test/lisp/cedet/*.el
+        - test/lisp/cedet/*resources/**
+  artifacts:
+    name: ${test_name}
+    public: true
+    expire_in: 1 week
+    paths:
+      - test/lisp/cedet/*.log
+      - **core
+    when: always
   variables:
     target: emacs-inotify
     make_params: "-C test check-lisp-cedet"
 
 test-lisp-cedet-semantic-inotify:
   stage: normal
+  needs: [build-image-inotify]
   extends: [.job-template, .test-template]
   rules:
     - changes:
         - lisp/cedet/semantic/*.el
         - test/lisp/cedet/semantic/*.el
+        - test/lisp/cedet/semantic/*resources/**
+  artifacts:
+    name: ${test_name}
+    public: true
+    expire_in: 1 week
+    paths:
+      - test/lisp/cedet/semantic/*.log
+      - **core
+    when: always
   variables:
     target: emacs-inotify
     make_params: "-C test check-lisp-cedet-semantic"
 
 test-lisp-cedet-semantic-bovine-inotify:
   stage: normal
+  needs: [build-image-inotify]
   extends: [.job-template, .test-template]
   rules:
     - changes:
         - lisp/cedet/semantic/bovine/*.el
         - test/lisp/cedet/semantic/bovine/*.el
+        - test/lisp/cedet/semantic/bovine/*resources/**
+  artifacts:
+    name: ${test_name}
+    public: true
+    expire_in: 1 week
+    paths:
+      - test/lisp/cedet/semantic/bovine/*.log
+      - **core
+    when: always
   variables:
     target: emacs-inotify
     make_params: "-C test check-lisp-cedet-semantic-bovine"
 
 test-lisp-cedet-srecode-inotify:
   stage: normal
+  needs: [build-image-inotify]
   extends: [.job-template, .test-template]
   rules:
     - changes:
         - lisp/cedet/srecode/*.el
         - test/lisp/cedet/srecode/*.el
+        - test/lisp/cedet/srecode/*resources/**
+  artifacts:
+    name: ${test_name}
+    public: true
+    expire_in: 1 week
+    paths:
+      - test/lisp/cedet/srecode/*.log
+      - **core
+    when: always
   variables:
     target: emacs-inotify
     make_params: "-C test check-lisp-cedet-srecode"
 
 test-lisp-emacs-lisp-inotify:
   stage: normal
+  needs: [build-image-inotify]
   extends: [.job-template, .test-template]
   rules:
     - changes:
         - lisp/emacs-lisp/*.el
         - test/lisp/emacs-lisp/*.el
+        - test/lisp/emacs-lisp/*resources/**
+  artifacts:
+    name: ${test_name}
+    public: true
+    expire_in: 1 week
+    paths:
+      - test/lisp/emacs-lisp/*.log
+      - **core
+    when: always
   variables:
     target: emacs-inotify
     make_params: "-C test check-lisp-emacs-lisp"
 
 test-lisp-emacs-lisp-eieio-tests-inotify:
   stage: normal
+  needs: [build-image-inotify]
   extends: [.job-template, .test-template]
   rules:
     - changes:
-        - lisp/emacs-lisp/eieio-tests/*.el
+        - lisp/emacs-lisp/eieio*.el
         - test/lisp/emacs-lisp/eieio-tests/*.el
+        - test/lisp/emacs-lisp/eieio-tests/*resources/**
+  artifacts:
+    name: ${test_name}
+    public: true
+    expire_in: 1 week
+    paths:
+      - test/lisp/emacs-lisp/eieio-tests/*.log
+      - **core
+    when: always
   variables:
     target: emacs-inotify
     make_params: "-C test check-lisp-emacs-lisp-eieio-tests"
 
 test-lisp-emacs-lisp-faceup-tests-inotify:
   stage: normal
+  needs: [build-image-inotify]
   extends: [.job-template, .test-template]
   rules:
     - changes:
-        - lisp/emacs-lisp/faceup-tests/*.el
+        - lisp/emacs-lisp/faceup*.el
         - test/lisp/emacs-lisp/faceup-tests/*.el
+        - test/lisp/emacs-lisp/faceup-tests/*resources/**
+  artifacts:
+    name: ${test_name}
+    public: true
+    expire_in: 1 week
+    paths:
+      - test/lisp/emacs-lisp/faceup-tests/*.log
+      - **core
+    when: always
   variables:
     target: emacs-inotify
     make_params: "-C test check-lisp-emacs-lisp-faceup-tests"
 
 test-lisp-emulation-inotify:
   stage: normal
+  needs: [build-image-inotify]
   extends: [.job-template, .test-template]
   rules:
     - changes:
         - lisp/emulation/*.el
         - test/lisp/emulation/*.el
+        - test/lisp/emulation/*resources/**
+  artifacts:
+    name: ${test_name}
+    public: true
+    expire_in: 1 week
+    paths:
+      - test/lisp/emulation/*.log
+      - **core
+    when: always
   variables:
     target: emacs-inotify
     make_params: "-C test check-lisp-emulation"
 
 test-lisp-erc-inotify:
   stage: normal
+  needs: [build-image-inotify]
   extends: [.job-template, .test-template]
   rules:
     - changes:
         - lisp/erc/*.el
         - test/lisp/erc/*.el
+        - test/lisp/erc/*resources/**
+  artifacts:
+    name: ${test_name}
+    public: true
+    expire_in: 1 week
+    paths:
+      - test/lisp/erc/*.log
+      - **core
+    when: always
   variables:
     target: emacs-inotify
     make_params: "-C test check-lisp-erc"
 
 test-lisp-eshell-inotify:
   stage: normal
+  needs: [build-image-inotify]
   extends: [.job-template, .test-template]
   rules:
     - changes:
         - lisp/eshell/*.el
         - test/lisp/eshell/*.el
+        - test/lisp/eshell/*resources/**
+  artifacts:
+    name: ${test_name}
+    public: true
+    expire_in: 1 week
+    paths:
+      - test/lisp/eshell/*.log
+      - **core
+    when: always
   variables:
     target: emacs-inotify
     make_params: "-C test check-lisp-eshell"
 
 test-lisp-gnus-inotify:
   stage: normal
+  needs: [build-image-inotify]
   extends: [.job-template, .test-template]
   rules:
     - changes:
         - lisp/gnus/*.el
         - test/lisp/gnus/*.el
+        - test/lisp/gnus/*resources/**
+  artifacts:
+    name: ${test_name}
+    public: true
+    expire_in: 1 week
+    paths:
+      - test/lisp/gnus/*.log
+      - **core
+    when: always
   variables:
     target: emacs-inotify
     make_params: "-C test check-lisp-gnus"
 
 test-lisp-image-inotify:
   stage: normal
+  needs: [build-image-inotify]
   extends: [.job-template, .test-template]
   rules:
     - changes:
         - lisp/image/*.el
         - test/lisp/image/*.el
+        - test/lisp/image/*resources/**
+  artifacts:
+    name: ${test_name}
+    public: true
+    expire_in: 1 week
+    paths:
+      - test/lisp/image/*.log
+      - **core
+    when: always
   variables:
     target: emacs-inotify
     make_params: "-C test check-lisp-image"
 
 test-lisp-international-inotify:
   stage: normal
+  needs: [build-image-inotify]
   extends: [.job-template, .test-template]
   rules:
     - changes:
         - lisp/international/*.el
         - test/lisp/international/*.el
+        - test/lisp/international/*resources/**
+  artifacts:
+    name: ${test_name}
+    public: true
+    expire_in: 1 week
+    paths:
+      - test/lisp/international/*.log
+      - **core
+    when: always
   variables:
     target: emacs-inotify
     make_params: "-C test check-lisp-international"
 
-test-lisp-legacy-inotify:
-  stage: normal
-  extends: [.job-template, .test-template]
-  rules:
-    - changes:
-        - lisp/legacy/*.el
-        - test/lisp/legacy/*.el
-  variables:
-    target: emacs-inotify
-    make_params: "-C test check-lisp-legacy"
-
 test-lisp-mail-inotify:
   stage: normal
+  needs: [build-image-inotify]
   extends: [.job-template, .test-template]
   rules:
     - changes:
         - lisp/mail/*.el
         - test/lisp/mail/*.el
+        - test/lisp/mail/*resources/**
+  artifacts:
+    name: ${test_name}
+    public: true
+    expire_in: 1 week
+    paths:
+      - test/lisp/mail/*.log
+      - **core
+    when: always
   variables:
     target: emacs-inotify
     make_params: "-C test check-lisp-mail"
 
 test-lisp-mh-e-inotify:
   stage: normal
+  needs: [build-image-inotify]
   extends: [.job-template, .test-template]
   rules:
     - changes:
         - lisp/mh-e/*.el
         - test/lisp/mh-e/*.el
+        - test/lisp/mh-e/*resources/**
+  artifacts:
+    name: ${test_name}
+    public: true
+    expire_in: 1 week
+    paths:
+      - test/lisp/mh-e/*.log
+      - **core
+    when: always
   variables:
     target: emacs-inotify
     make_params: "-C test check-lisp-mh-e"
 
 test-lisp-net-inotify:
   stage: normal
+  needs: [build-image-inotify]
   extends: [.job-template, .test-template]
   rules:
     - changes:
         - lisp/net/*.el
         - test/lisp/net/*.el
+        - test/lisp/net/*resources/**
+  artifacts:
+    name: ${test_name}
+    public: true
+    expire_in: 1 week
+    paths:
+      - test/lisp/net/*.log
+      - **core
+    when: always
   variables:
     target: emacs-inotify
     make_params: "-C test check-lisp-net"
 
 test-lisp-nxml-inotify:
   stage: normal
+  needs: [build-image-inotify]
   extends: [.job-template, .test-template]
   rules:
     - changes:
         - lisp/nxml/*.el
         - test/lisp/nxml/*.el
+        - test/lisp/nxml/*resources/**
+  artifacts:
+    name: ${test_name}
+    public: true
+    expire_in: 1 week
+    paths:
+      - test/lisp/nxml/*.log
+      - **core
+    when: always
   variables:
     target: emacs-inotify
     make_params: "-C test check-lisp-nxml"
 
 test-lisp-obsolete-inotify:
   stage: normal
+  needs: [build-image-inotify]
   extends: [.job-template, .test-template]
   rules:
     - changes:
         - lisp/obsolete/*.el
         - test/lisp/obsolete/*.el
+        - test/lisp/obsolete/*resources/**
+  artifacts:
+    name: ${test_name}
+    public: true
+    expire_in: 1 week
+    paths:
+      - test/lisp/obsolete/*.log
+      - **core
+    when: always
   variables:
     target: emacs-inotify
     make_params: "-C test check-lisp-obsolete"
 
 test-lisp-org-inotify:
   stage: normal
+  needs: [build-image-inotify]
   extends: [.job-template, .test-template]
   rules:
     - changes:
         - lisp/org/*.el
         - test/lisp/org/*.el
+        - test/lisp/org/*resources/**
+  artifacts:
+    name: ${test_name}
+    public: true
+    expire_in: 1 week
+    paths:
+      - test/lisp/org/*.log
+      - **core
+    when: always
   variables:
     target: emacs-inotify
     make_params: "-C test check-lisp-org"
 
 test-lisp-play-inotify:
   stage: normal
+  needs: [build-image-inotify]
   extends: [.job-template, .test-template]
   rules:
     - changes:
         - lisp/play/*.el
         - test/lisp/play/*.el
+        - test/lisp/play/*resources/**
+  artifacts:
+    name: ${test_name}
+    public: true
+    expire_in: 1 week
+    paths:
+      - test/lisp/play/*.log
+      - **core
+    when: always
   variables:
     target: emacs-inotify
     make_params: "-C test check-lisp-play"
 
 test-lisp-progmodes-inotify:
   stage: normal
+  needs: [build-image-inotify]
   extends: [.job-template, .test-template]
   rules:
     - changes:
         - lisp/progmodes/*.el
         - test/lisp/progmodes/*.el
+        - test/lisp/progmodes/*resources/**
+  artifacts:
+    name: ${test_name}
+    public: true
+    expire_in: 1 week
+    paths:
+      - test/lisp/progmodes/*.log
+      - **core
+    when: always
   variables:
     target: emacs-inotify
     make_params: "-C test check-lisp-progmodes"
 
 test-lisp-so-long-tests-inotify:
   stage: normal
+  needs: [build-image-inotify]
   extends: [.job-template, .test-template]
   rules:
     - changes:
-        - lisp/so-long-tests/*.el
+        - lisp/so-long*.el
         - test/lisp/so-long-tests/*.el
+        - test/lisp/so-long-tests/*resources/**
+  artifacts:
+    name: ${test_name}
+    public: true
+    expire_in: 1 week
+    paths:
+      - test/lisp/so-long-tests/*.log
+      - **core
+    when: always
   variables:
     target: emacs-inotify
     make_params: "-C test check-lisp-so-long-tests"
 
 test-lisp-term-inotify:
   stage: normal
+  needs: [build-image-inotify]
   extends: [.job-template, .test-template]
   rules:
     - changes:
         - lisp/term/*.el
         - test/lisp/term/*.el
+        - test/lisp/term/*resources/**
+  artifacts:
+    name: ${test_name}
+    public: true
+    expire_in: 1 week
+    paths:
+      - test/lisp/term/*.log
+      - **core
+    when: always
   variables:
     target: emacs-inotify
     make_params: "-C test check-lisp-term"
 
 test-lisp-textmodes-inotify:
   stage: normal
+  needs: [build-image-inotify]
   extends: [.job-template, .test-template]
   rules:
     - changes:
         - lisp/textmodes/*.el
         - test/lisp/textmodes/*.el
+        - test/lisp/textmodes/*resources/**
+  artifacts:
+    name: ${test_name}
+    public: true
+    expire_in: 1 week
+    paths:
+      - test/lisp/textmodes/*.log
+      - **core
+    when: always
   variables:
     target: emacs-inotify
     make_params: "-C test check-lisp-textmodes"
 
 test-lisp-url-inotify:
   stage: normal
+  needs: [build-image-inotify]
   extends: [.job-template, .test-template]
   rules:
     - changes:
         - lisp/url/*.el
         - test/lisp/url/*.el
+        - test/lisp/url/*resources/**
+  artifacts:
+    name: ${test_name}
+    public: true
+    expire_in: 1 week
+    paths:
+      - test/lisp/url/*.log
+      - **core
+    when: always
   variables:
     target: emacs-inotify
     make_params: "-C test check-lisp-url"
 
 test-lisp-vc-inotify:
   stage: normal
+  needs: [build-image-inotify]
   extends: [.job-template, .test-template]
   rules:
     - changes:
         - lisp/vc/*.el
         - test/lisp/vc/*.el
+        - test/lisp/vc/*resources/**
+  artifacts:
+    name: ${test_name}
+    public: true
+    expire_in: 1 week
+    paths:
+      - test/lisp/vc/*.log
+      - **core
+    when: always
   variables:
     target: emacs-inotify
     make_params: "-C test check-lisp-vc"
 
 test-misc-inotify:
   stage: normal
+  needs: [build-image-inotify]
   extends: [.job-template, .test-template]
   rules:
     - changes:
         - admin/*.el
         - test/misc/*.el
+        - test/misc/*resources/**
+  artifacts:
+    name: ${test_name}
+    public: true
+    expire_in: 1 week
+    paths:
+      - test/misc/*.log
+      - **core
+    when: always
   variables:
     target: emacs-inotify
     make_params: "-C test check-misc"
 
 test-src-inotify:
   stage: normal
+  needs: [build-image-inotify]
   extends: [.job-template, .test-template]
   rules:
     - changes:
         - src/*.{h,c}
         - test/src/*.el
+        - test/src/*resources/**
+  artifacts:
+    name: ${test_name}
+    public: true
+    expire_in: 1 week
+    paths:
+      - test/src/*.log
+      - **core
+    when: always
   variables:
     target: emacs-inotify
     make_params: "-C test check-src"