aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Albinus2021-11-20 10:07:48 +0100
committerMichael Albinus2021-11-20 10:07:48 +0100
commit9f06977782ef58fa40bed69368ab92a080f035ec (patch)
treed36d888fc5ee668acf7f35a735bd2aa85f97ee22
parent88458f7354e904a50ed1389869266437ba084533 (diff)
downloademacs-9f06977782ef58fa40bed69368ab92a080f035ec.tar.gz
emacs-9f06977782ef58fa40bed69368ab92a080f035ec.zip
Continue adaptions of emba files
* test/infra/default-gitlab-ci.yml: New file, derived from gitlab-ci.yml. * test/infra/gitlab-ci.yml (top, test-jobs-pipeline): Include default-gitlab-ci.yml. (stages): Remove normal. * test/infra/test-jobs-generator.sh: Generate also stages entry.
-rw-r--r--.gitlab-ci.yml2
-rw-r--r--test/infra/default-gitlab-ci.yml216
-rw-r--r--test/infra/gitlab-ci.yml194
-rwxr-xr-xtest/infra/test-jobs-generator.sh10
4 files changed, 230 insertions, 192 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 3138f4184e6..402c17ddb85 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -15,7 +15,7 @@
15# You should have received a copy of the GNU General Public License 15# You should have received a copy of the GNU General Public License
16# along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. 16# along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
17 17
18# GNU Emacs support for the GitLab protocol for CI 18# GNU Emacs support for the GitLab protocol for CI.
19 19
20# The presence of this file does not imply any FSF/GNU endorsement of 20# The presence of this file does not imply any FSF/GNU endorsement of
21# any particular service that uses that protocol. Also, it is intended for 21# any particular service that uses that protocol. Also, it is intended for
diff --git a/test/infra/default-gitlab-ci.yml b/test/infra/default-gitlab-ci.yml
new file mode 100644
index 00000000000..f6fadee27f3
--- /dev/null
+++ b/test/infra/default-gitlab-ci.yml
@@ -0,0 +1,216 @@
1# Copyright (C) 2017-2021 Free Software Foundation, Inc.
2#
3# This file is part of GNU Emacs.
4#
5# GNU Emacs is free software: you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by
7# the Free Software Foundation, either version 3 of the License, or
8# (at your option) any later version.
9#
10# GNU Emacs is distributed in the hope that it will be useful,
11# but WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13# GNU General Public License for more details.
14#
15# You should have received a copy of the GNU General Public License
16# along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
17
18# GNU Emacs support for the GitLab protocol for CI.
19
20# The presence of this file does not imply any FSF/GNU endorsement of
21# any particular service that uses that protocol. Also, it is intended for
22# evaluation purposes, thus possibly temporary.
23
24# Maintainer: Ted Zlatanov <tzz@lifelogs.com>
25# URL: https://emba.gnu.org/emacs/emacs
26
27# Never run merge request pipelines, they usually duplicate push pipelines
28# see https://docs.gitlab.com/ee/ci/yaml/README.html#common-if-clauses-for-rules
29
30# Rules: always run tags and branches named master*, emacs*, feature*, fix*
31# Test that it triggers by pushing a tag: `git tag mytag; git push origin mytag`
32# Test that it triggers by pushing to: feature/emba, feature1, master, master-2, fix/emba, emacs-299, fix-2
33# Test that it doesn't trigger by pushing to: scratch-2, scratch/emba, oldbranch, dev
34workflow:
35 rules:
36 - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
37 when: never
38 - if: '$CI_COMMIT_TAG'
39 when: always
40 - if: '$CI_COMMIT_BRANCH !~ /^(master|emacs|feature|fix)/'
41 when: never
42 - when: always
43
44variables:
45 GIT_STRATEGY: fetch
46 EMACS_EMBA_CI: 1
47 # Three hours, see below.
48 EMACS_TEST_TIMEOUT: 10800
49 EMACS_TEST_VERBOSE: 1
50 # Use TLS https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#tls-enabled
51 # DOCKER_HOST: tcp://docker:2376
52 # DOCKER_TLS_CERTDIR: "/certs"
53 # Put the configuration for each run in a separate directory to
54 # avoid conflicts.
55 DOCKER_CONFIG: "/.docker-config-${CI_COMMIT_SHA}"
56 DOCKER_BUILDKIT: 1
57 # We don't use ${CI_COMMIT_SHA} to be able to do one bootstrap
58 # across multiple builds.
59 BUILD_TAG: ${CI_COMMIT_REF_SLUG}
60 # Disable if you don't need it, it can be a security risk.
61 CI_DEBUG_TRACE: "true"
62
63default:
64 image: docker:19.03.12
65 timeout: 3 hours
66 before_script:
67 - docker info
68 - echo "docker registry is ${CI_REGISTRY}"
69 - docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}
70
71.job-template:
72 variables:
73 test_name: ${CI_JOB_NAME}-${CI_COMMIT_SHORT_SHA}
74 rules:
75 - changes:
76 - "**Makefile.in"
77 - .gitlab-ci.yml
78 - aclocal.m4
79 - autogen.sh
80 - configure.ac
81 - lib/*.{h,c}
82 - lisp/**.el
83 - src/*.{h,c}
84 - test/infra/*
85 - test/lib-src/*.el
86 - test/lisp/**.el
87 - test/misc/*.el
88 - test/src/*.el
89 - changes:
90 # gfilemonitor, kqueue
91 - src/gfilenotify.c
92 - src/kqueue.c
93 # MS Windows
94 - "**w32*"
95 # GNUstep
96 - lisp/term/ns-win.el
97 - src/ns*.{h,m}
98 - src/macfont.{h,m}
99 when: never
100 # These will be cached across builds.
101 cache:
102 key: ${CI_COMMIT_SHA}
103 paths: []
104 policy: pull-push
105 # These will be saved for followup builds.
106 artifacts:
107 expire_in: 24 hrs
108 paths: []
109 # Using the variables for each job.
110 script:
111 - docker pull ${CI_REGISTRY_IMAGE}:${target}-${BUILD_TAG}
112 # TODO: with make -j4 several of the tests were failing, for
113 # example shadowfile-tests, but passed without it.
114 - 'export PWD=$(pwd)'
115 - '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}"'
116 after_script:
117 # - docker ps -a
118 # - printenv
119 # - test -n "$(docker ps -aq -f name=${test_name})" && ( docker export ${test_name} | tar -tvf - )
120 - test -n "$(docker ps -aq -f name=${test_name})" && docker cp ${test_name}:checkout/test ${test_name}
121 - test -n "$(docker ps -aq -f name=${test_name})" && docker rm ${test_name}
122 # - ls -alR ${test_name}
123
124.build-template:
125 needs: []
126 rules:
127 - if: '$CI_PIPELINE_SOURCE == "web"'
128 when: always
129 - changes:
130 - "**Makefile.in"
131 - .gitlab-ci.yml
132 - aclocal.m4
133 - autogen.sh
134 - configure.ac
135 - lib/*.{h,c}
136 - lisp/emacs-lisp/*.el
137 - src/*.{h,c}
138 - test/infra/*
139 - changes:
140 # gfilemonitor, kqueue
141 - src/gfilenotify.c
142 - src/kqueue.c
143 # MS Windows
144 - "**w32*"
145 # GNUstep
146 - lisp/term/ns-win.el
147 - src/ns*.{h,m}
148 - src/macfont.{h,m}
149 when: never
150 script:
151 - docker build --pull --target ${target} -t ${CI_REGISTRY_IMAGE}:${target}-${BUILD_TAG} -f test/infra/Dockerfile.emba .
152 - docker push ${CI_REGISTRY_IMAGE}:${target}-${BUILD_TAG}
153
154.test-template:
155 # Do not run fast and normal test jobs when scheduled.
156 rules:
157 - if: '$CI_JOB_STAGE =~ "fast|normal" && $CI_PIPELINE_SOURCE == "schedule"'
158 when: never
159 - when: always
160 artifacts:
161 name: ${test_name}
162 public: true
163 expire_in: 1 week
164 paths:
165 - ${test_name}/**/*.log
166 - ${test_name}/**/core
167 - ${test_name}/core
168 when: always
169
170.gnustep-template:
171 rules:
172 - if: '$CI_PIPELINE_SOURCE == "web"'
173 - if: '$CI_PIPELINE_SOURCE == "schedule"'
174 changes:
175 - "**Makefile.in"
176 - .gitlab-ci.yml
177 - configure.ac
178 - src/ns*.{h,m}
179 - src/macfont.{h,m}
180 - lisp/term/ns-win.el
181 - nextstep/**
182 - test/infra/*
183
184.filenotify-gio-template:
185 rules:
186 - if: '$CI_PIPELINE_SOURCE == "web"'
187 - if: '$CI_PIPELINE_SOURCE == "schedule"'
188 changes:
189 - "**Makefile.in"
190 - .gitlab-ci.yml
191 - lisp/autorevert.el
192 - lisp/filenotify.el
193 - lisp/net/tramp-sh.el
194 - src/gfilenotify.c
195 - test/infra/*
196 - test/lisp/autorevert-tests.el
197 - test/lisp/filenotify-tests.el
198
199.native-comp-template:
200 rules:
201 - if: '$CI_PIPELINE_SOURCE == "web"'
202 - if: '$CI_PIPELINE_SOURCE == "schedule"'
203 changes:
204 - "**Makefile.in"
205 - .gitlab-ci.yml
206 - lisp/emacs-lisp/comp.el
207 - lisp/emacs-lisp/comp-cstr.el
208 - src/comp.{h,m}
209 - test/infra/*
210 - test/src/comp-resources/*.el
211 - test/src/comp-tests.el
212 timeout: 8 hours
213
214# Local Variables:
215# add-log-current-defun-header-regexp: "^\\([-_.[:alnum:]]+\\)[ \t]*:"
216# End:
diff --git a/test/infra/gitlab-ci.yml b/test/infra/gitlab-ci.yml
index abc7bddbf73..738e709c6b3 100644
--- a/test/infra/gitlab-ci.yml
+++ b/test/infra/gitlab-ci.yml
@@ -15,7 +15,7 @@
15# You should have received a copy of the GNU General Public License 15# You should have received a copy of the GNU General Public License
16# along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. 16# along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
17 17
18# GNU Emacs support for the GitLab protocol for CI 18# GNU Emacs support for the GitLab protocol for CI.
19 19
20# The presence of this file does not imply any FSF/GNU endorsement of 20# The presence of this file does not imply any FSF/GNU endorsement of
21# any particular service that uses that protocol. Also, it is intended for 21# any particular service that uses that protocol. Also, it is intended for
@@ -24,199 +24,15 @@
24# Maintainer: Ted Zlatanov <tzz@lifelogs.com> 24# Maintainer: Ted Zlatanov <tzz@lifelogs.com>
25# URL: https://emba.gnu.org/emacs/emacs 25# URL: https://emba.gnu.org/emacs/emacs
26 26
27# Never run merge request pipelines, they usually duplicate push pipelines 27# Include defaults.
28# see https://docs.gitlab.com/ee/ci/yaml/README.html#common-if-clauses-for-rules 28include: '/test/infra/default-gitlab-ci.yml'
29
30# Rules: always run tags and branches named master*, emacs*, feature*, fix*
31# Test that it triggers by pushing a tag: `git tag mytag; git push origin mytag`
32# Test that it triggers by pushing to: feature/emba, feature1, master, master-2, fix/emba, emacs-299, fix-2
33# Test that it doesn't trigger by pushing to: scratch-2, scratch/emba, oldbranch, dev
34workflow:
35 rules:
36 - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
37 when: never
38 - if: '$CI_COMMIT_TAG'
39 when: always
40 - if: '$CI_COMMIT_BRANCH !~ /^(master|emacs|feature|fix)/'
41 when: never
42 - when: always
43
44variables:
45 GIT_STRATEGY: fetch
46 EMACS_EMBA_CI: 1
47 # Three hours, see below.
48 EMACS_TEST_TIMEOUT: 10800
49 EMACS_TEST_VERBOSE: 1
50 # Use TLS https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#tls-enabled
51 # DOCKER_HOST: tcp://docker:2376
52 # DOCKER_TLS_CERTDIR: "/certs"
53 # Put the configuration for each run in a separate directory to
54 # avoid conflicts.
55 DOCKER_CONFIG: "/.docker-config-${CI_COMMIT_SHA}"
56 DOCKER_BUILDKIT: 1
57 # We don't use ${CI_COMMIT_SHA} to be able to do one bootstrap
58 # across multiple builds.
59 BUILD_TAG: ${CI_COMMIT_REF_SLUG}
60 # Disable if you don't need it, it can be a security risk.
61 CI_DEBUG_TRACE: "true"
62
63default:
64 image: docker:19.03.12
65 timeout: 3 hours
66 before_script:
67 - docker info
68 - echo "docker registry is ${CI_REGISTRY}"
69 - docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}
70
71.job-template:
72 variables:
73 test_name: ${CI_JOB_NAME}-${CI_COMMIT_SHORT_SHA}
74 rules:
75 - changes:
76 - "**Makefile.in"
77 - .gitlab-ci.yml
78 - aclocal.m4
79 - autogen.sh
80 - configure.ac
81 - lib/*.{h,c}
82 - lisp/**.el
83 - src/*.{h,c}
84 - test/infra/*
85 - test/lib-src/*.el
86 - test/lisp/**.el
87 - test/misc/*.el
88 - test/src/*.el
89 - changes:
90 # gfilemonitor, kqueue
91 - src/gfilenotify.c
92 - src/kqueue.c
93 # MS Windows
94 - "**w32*"
95 # GNUstep
96 - lisp/term/ns-win.el
97 - src/ns*.{h,m}
98 - src/macfont.{h,m}
99 when: never
100 # These will be cached across builds.
101 cache:
102 key: ${CI_COMMIT_SHA}
103 paths: []
104 policy: pull-push
105 # These will be saved for followup builds.
106 artifacts:
107 expire_in: 24 hrs
108 paths: []
109 # Using the variables for each job.
110 script:
111 - docker pull ${CI_REGISTRY_IMAGE}:${target}-${BUILD_TAG}
112 # TODO: with make -j4 several of the tests were failing, for
113 # example shadowfile-tests, but passed without it.
114 - 'export PWD=$(pwd)'
115 - '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}"'
116 after_script:
117 # - docker ps -a
118 # - printenv
119 # - test -n "$(docker ps -aq -f name=${test_name})" && ( docker export ${test_name} | tar -tvf - )
120 - test -n "$(docker ps -aq -f name=${test_name})" && docker cp ${test_name}:checkout/test ${test_name}
121 - test -n "$(docker ps -aq -f name=${test_name})" && docker rm ${test_name}
122 # - ls -alR ${test_name}
123
124.build-template:
125 needs: []
126 rules:
127 - if: '$CI_PIPELINE_SOURCE == "web"'
128 when: always
129 - changes:
130 - "**Makefile.in"
131 - .gitlab-ci.yml
132 - aclocal.m4
133 - autogen.sh
134 - configure.ac
135 - lib/*.{h,c}
136 - lisp/emacs-lisp/*.el
137 - src/*.{h,c}
138 - test/infra/*
139 - changes:
140 # gfilemonitor, kqueue
141 - src/gfilenotify.c
142 - src/kqueue.c
143 # MS Windows
144 - "**w32*"
145 # GNUstep
146 - lisp/term/ns-win.el
147 - src/ns*.{h,m}
148 - src/macfont.{h,m}
149 when: never
150 script:
151 - docker build --pull --target ${target} -t ${CI_REGISTRY_IMAGE}:${target}-${BUILD_TAG} -f test/infra/Dockerfile.emba .
152 - docker push ${CI_REGISTRY_IMAGE}:${target}-${BUILD_TAG}
153
154.test-template:
155 # Do not run fast and normal test jobs when scheduled.
156 rules:
157 - if: '$CI_JOB_STAGE =~ "fast|normal" && $CI_PIPELINE_SOURCE == "schedule"'
158 when: never
159 - when: always
160 artifacts:
161 name: ${test_name}
162 public: true
163 expire_in: 1 week
164 paths:
165 - ${test_name}/**/*.log
166 - ${test_name}/**/core
167 - ${test_name}/core
168 when: always
169
170.gnustep-template:
171 rules:
172 - if: '$CI_PIPELINE_SOURCE == "web"'
173 - if: '$CI_PIPELINE_SOURCE == "schedule"'
174 changes:
175 - "**Makefile.in"
176 - .gitlab-ci.yml
177 - configure.ac
178 - src/ns*.{h,m}
179 - src/macfont.{h,m}
180 - lisp/term/ns-win.el
181 - nextstep/**
182 - test/infra/*
183
184.filenotify-gio-template:
185 rules:
186 - if: '$CI_PIPELINE_SOURCE == "web"'
187 - if: '$CI_PIPELINE_SOURCE == "schedule"'
188 changes:
189 - "**Makefile.in"
190 - .gitlab-ci.yml
191 - lisp/autorevert.el
192 - lisp/filenotify.el
193 - lisp/net/tramp-sh.el
194 - src/gfilenotify.c
195 - test/infra/*
196 - test/lisp/autorevert-tests.el
197 - test/lisp/filenotify-tests.el
198
199.native-comp-template:
200 rules:
201 - if: '$CI_PIPELINE_SOURCE == "web"'
202 - if: '$CI_PIPELINE_SOURCE == "schedule"'
203 changes:
204 - "**Makefile.in"
205 - .gitlab-ci.yml
206 - lisp/emacs-lisp/comp.el
207 - lisp/emacs-lisp/comp-cstr.el
208 - src/comp.{h,m}
209 - test/infra/*
210 - test/src/comp-resources/*.el
211 - test/src/comp-tests.el
212 timeout: 8 hours
213 29
214stages: 30stages:
215 - build-images 31 - build-images
216 - generator 32 - generator
217 - trigger 33 - trigger
218# - fast 34# - fast
219 - normal 35# - normal
220 - platform-images 36 - platform-images
221 - platforms 37 - platforms
222 - native-comp-images 38 - native-comp-images
@@ -239,7 +55,6 @@ build-image-inotify:
239test-jobs-generator: 55test-jobs-generator:
240 stage: generator 56 stage: generator
241 script: 57 script:
242 - pwd
243 - test/infra/test-jobs-generator.sh > test-jobs.yml 58 - test/infra/test-jobs-generator.sh > test-jobs.yml
244 artifacts: 59 artifacts:
245 paths: 60 paths:
@@ -249,6 +64,7 @@ test-jobs-pipeline:
249 stage: trigger 64 stage: trigger
250 trigger: 65 trigger:
251 include: 66 include:
67 - local: '/test/infra/default-gitlab-ci.yml'
252 - artifact: test-jobs.yml 68 - artifact: test-jobs.yml
253 job: test-jobs-generator 69 job: test-jobs-generator
254 strategy: depend 70 strategy: depend
diff --git a/test/infra/test-jobs-generator.sh b/test/infra/test-jobs-generator.sh
index 96b61be9662..49f491ea669 100755
--- a/test/infra/test-jobs-generator.sh
+++ b/test/infra/test-jobs-generator.sh
@@ -20,7 +20,7 @@
20# GNU Emacs support for the gitlab-ci.yml template generation. 20# GNU Emacs support for the gitlab-ci.yml template generation.
21 21
22# The presence of this file does not imply any FSF/GNU endorsement of 22# The presence of this file does not imply any FSF/GNU endorsement of
23# GitLab or any other particular tool. Also, it is intended for 23# any particular service that uses that protocol. Also, it is intended for
24# evaluation purposes, thus possibly temporary. 24# evaluation purposes, thus possibly temporary.
25 25
26# Maintainer: Michael Albinus <michael.albinus@gmx.de> 26# Maintainer: Michael Albinus <michael.albinus@gmx.de>
@@ -53,9 +53,15 @@ for subdir in $SUBDIRS; do
53 esac 53 esac
54 54
55 cat <<EOF 55 cat <<EOF
56stages:
57 - normal
58
59EOF
60
61 cat <<EOF
56test${target##check}-inotify: 62test${target##check}-inotify:
57 stage: normal 63 stage: normal
58 # extends: [.job-template, .test-template] 64 extends: [.job-template, .test-template]
59 rules: 65 rules:
60 - changes: $changes 66 - changes: $changes
61 variables: 67 variables: