]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Test "make install" in one of the build jobs
authorMichał Kępień <michal@isc.org>
Fri, 1 Feb 2019 12:35:53 +0000 (13:35 +0100)
committerMichał Kępień <michal@isc.org>
Fri, 1 Feb 2019 12:42:52 +0000 (13:42 +0100)
Running "make install" in a separate job in the "test" phase of a CI
pipeline causes a lot of object files to be rebuilt due to the way
artifacts are passed between GitLab CI jobs (object files extracted from
the artifacts archive have older modification times than their
respective source files checked out using Git by the worker running the
"install" job).  Test "make install" in one of the build jobs instead,
in order to prevent object rebuilding.

Using 'after_script' for this purpose was not an option because its
failures are ignored.

Duplicating the build script in two places would be error-prone in the
long run and thus was rejected as a solution.  YAML anchors would also
not help in this case.

A "positive" test (`test -n "${RUN_MAKE_INSTALL}" && make install`)
would not work because:

  - it would cause the build script to fail for any job not supposed to
    run "make install",

  - appending `|| :` to the shell pipeline would prevent "make install"
    errors from causing a job failure.

Due to the above, a "negative" test is performed, so that:

  - jobs not supposed to run "make install" succeed immediately,

  - jobs supposed to run "make install" only succeed when "make install"
    succeeds.

.gitlab-ci.yml

index 45f2d695abbf4e81637121622714ea3c462246f4..99f6382dceaccb7f9267639e35fdaf95ffd14f1d 100644 (file)
@@ -109,6 +109,7 @@ stages:
   script:
     - ./configure --enable-developer --with-libtool --disable-static --with-cmocka --prefix=$HOME/.local --without-make-clean $EXTRA_CONFIGURE || cat config.log
     - make -j${BUILD_PARALLEL_JOBS:-1} -k all V=1
+    - test -z "${RUN_MAKE_INSTALL}" || make install
   artifacts:
     untracked: true
     expire_in: "1 hour"
@@ -300,18 +301,10 @@ gcc:sid:amd64:
     CC: gcc
     CFLAGS: "-Wall -Wextra -O2 -g"
     EXTRA_CONFIGURE: "--with-libidn2"
+    RUN_MAKE_INSTALL: 1
   <<: *debian_sid_amd64_image
   <<: *build_job
 
-install:gcc:sid:amd64:
-  <<: *default_triggering_rules
-  <<: *debian_sid_amd64_image
-  stage: test
-  script:
-    - make install
-  dependencies:
-    - gcc:sid:amd64
-
 system:gcc:sid:amd64:
   <<: *debian_sid_amd64_image
   <<: *system_test_job