[glibmm/kjellahl/testci] CI: Build libsigc++ only once



commit 24d95ed72982fd8d9b917ee49c3041650ef6fd97
Author: Kjell Ahlstedt <kjellahlstedt gmail com>
Date:   Sun Aug 22 10:17:46 2021 +0200

    CI: Build libsigc++ only once

 .gitlab-ci.yml | 191 +++++++++++++++++++++++++++++++++++----------------------
 1 file changed, 117 insertions(+), 74 deletions(-)
---
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 24635b94..dfa8a24a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,4 +1,4 @@
-# Currently we have to track two versions of gcc: gcc-9 and gcc-10.
+# Currently we track two versions of gcc: gcc-9 and gcc-10.
 
 image: ubuntu:devel
 
@@ -7,122 +7,165 @@ stages:
   - deploy
 
 variables:
-  DEPENDENCIES: g++
-                g++-9
-                g++-10
-                gettext
-                git
-                yelp-tools
-                gtk-doc-tools
-                make
-                autoconf
-                python3-pygments
-                python3-setuptools
-                libglib2.0-dev
-                mm-common
-                libxml-libxml-perl
-                meson
-                ninja-build
-                glib-networking
-                clang
+  MESON_DEPS: g++
+              gettext
+              git
+              yelp-tools
+              gtk-doc-tools
+              python3-pygments
+              python3-setuptools
+              libglib2.0-dev
+              mm-common
+              libxml-libxml-perl
+              meson
+              ninja-build
+              glib-networking
   GIO_EXTRA_MODULES: "/usr/lib/x86_64-linux-gnu/gio/modules"
   GIT_SUBMODULE_STRATEGY: normal
 
-before_script:
-  - export DEBIAN_FRONTEND=noninteractive
-  - apt update && apt -y upgrade && apt -y install $DEPENDENCIES
-  - git clone --branch 3.0.6 https://github.com/libsigcplusplus/libsigcplusplus libsigc
-  - cd libsigc
-  - mkdir _build && cd _build
-  - meson --prefix=/usr --libdir=lib -Dwarnings=fatal -Dbuildtype=release
-  - meson compile
-  - meson install
-  - cd ../..
+.build_default:
+  before_script:
+    - export DEBIAN_FRONTEND=noninteractive
+    - apt update && apt -y upgrade && apt -y install $DEPENDENCIES
+
+build_sigc:
+  extends: .build_default
+  stage: build
+  variables:
+    DEPENDENCIES: $MESON_DEPS
+  script:
+    - git clone --branch 3.0.7 --depth 1 https://github.com/libsigcplusplus/libsigcplusplus libsigc
+    - cd libsigc
+    - mkdir _build && cd _build
+    - meson --prefix=/usr --libdir=lib -Dwarnings=fatal -Dbuildtype=release
+    - meson compile
+  cache:
+    key: build-sigc
+    paths:
+      - libsigc/
 
 autotools_build:
+  extends: .build_default
   stage: build
+  variables:
+    DEPENDENCIES: $MESON_DEPS make autoconf
   script:
-  - ./autogen.sh --enable-warnings=fatal --prefix=/usr
-  - make
-  - make check
-  - make install
+    - ninja -C libsigc/_build install
+    - ./autogen.sh --enable-warnings=fatal --prefix=/usr
+    - make
+    - make check
+    - make install
+  cache:
+    key: build-sigc
+    paths:
+      - libsigc/
   allow_failure: true
 
 debug_build:
+  extends: .build_default
   stage: build
+  variables:
+    DEPENDENCIES: $MESON_DEPS
   script:
-  - mkdir _build && cd _build
-# -Ddebug=true + -Doptimization=0 correspond to -Dbuildtype=debug
-  - meson --prefix=/usr --libdir=lib -Ddebug=true -Doptimization=0 -Dwarnings=fatal
-  - meson compile
-  - meson test
-  - meson install
+    - ninja -C libsigc/_build install
+    - mkdir _build && cd _build
+    # -Ddebug=true + -Doptimization=0 correspond to -Dbuildtype=debug
+    - meson --prefix=/usr --libdir=lib -Ddebug=true -Doptimization=0 -Dwarnings=fatal
+    - meson compile
+    - meson test
+    - meson install
+  cache:
+    key: build-sigc
+    paths:
+      - libsigc/
   artifacts:
     when: on_failure
     paths:
-    - _build/meson-logs/testlog.txt
-    - _build/meson-logs/meson-log.txt
+      - _build/meson-logs/testlog.txt
+      - _build/meson-logs/meson-log.txt
     expire_in: 1 week
 
 release_gcc_9_build:
+  extends: .build_default
   stage: build
+  variables:
+    DEPENDENCIES: $MESON_DEPS g++-9
   script:
-  - mkdir _build && cd _build
-# -Ddebug=false + -Doptimization=3 correspond to -Dbuildtype=release
-  - CC=gcc-9 CXX=g++-9 meson --prefix=/usr --libdir=lib -Ddebug=false -Doptimization=3 -Dwarnings=fatal
-  - meson compile
-  - meson test
-  - meson install
+    - ninja -C libsigc/_build install
+    - mkdir _build && cd _build
+    # -Ddebug=false + -Doptimization=3 correspond to -Dbuildtype=release
+    - CC=gcc-9 CXX=g++-9 meson --prefix=/usr --libdir=lib -Ddebug=false -Doptimization=3 -Dwarnings=fatal
+    - meson compile
+    - meson test
+    - meson install
+  cache:
+    key: build-sigc
+    paths:
+      - libsigc/
   artifacts:
-    when: on_failure
+    when: always
     paths:
-    - _build/meson-logs/testlog.txt
-    - _build/meson-logs/meson-log.txt
-    expire_in: 1 week
+      - _build/docs/reference
 
 release_gcc_10_build:
+  extends: .build_default
   stage: build
+  variables:
+    DEPENDENCIES: $MESON_DEPS g++-10
   script:
-  - mkdir _build && cd _build
-# -Ddebug=false + -Doptimization=3 correspond to -Dbuildtype=release
-  - CC=gcc-10 CXX=g++-10 meson --prefix=/usr --libdir=lib -Ddebug=false -Doptimization=3 -Dwarnings=fatal
-  - meson compile
-  - meson test
-  - meson install
+    - ninja -C libsigc/_build install
+    - mkdir _build && cd _build
+    # -Ddebug=false + -Doptimization=3 correspond to -Dbuildtype=release
+    - CC=gcc-10 CXX=g++-10 meson --prefix=/usr --libdir=lib -Ddebug=false -Doptimization=3 -Dwarnings=fatal
+    - meson compile
+    - meson test
+    - meson install
   allow_failure: true
+  cache:
+    key: build-sigc
+    paths:
+      - libsigc/
   artifacts:
     when: on_failure
     paths:
-    - _build/meson-logs/testlog.txt
-    - _build/meson-logs/meson-log.txt
+      - _build/meson-logs/testlog.txt
+      - _build/meson-logs/meson-log.txt
     expire_in: 1 week
 
 release_clang_build:
+  extends: .build_default
   stage: build
+  variables:
+    DEPENDENCIES: $MESON_DEPS clang
   script:
-  - mkdir _build && cd _build
-# -Ddebug=false + -Doptimization=3 correspond to -Dbuildtype=release
-  - CC=clang CXX=clang++ meson --prefix=/usr --libdir=lib -Ddebug=false -Doptimization=3 -Dwarnings=fatal
-  - meson compile
-  - meson test
-  - meson install
+    - ninja -C libsigc/_build install
+    - mkdir _build && cd _build
+    # -Ddebug=false + -Doptimization=3 correspond to -Dbuildtype=release
+    - CC=clang CXX=clang++ meson --prefix=/usr --libdir=lib -Ddebug=false -Doptimization=3 -Dwarnings=fatal
+    - meson compile
+    - meson test
+    - meson install
   allow_failure: true
+  cache:
+    key: build-sigc
+    paths:
+      - libsigc/
   artifacts:
     when: on_failure
     paths:
-    - _build/meson-logs/testlog.txt
-    - _build/meson-logs/meson-log.txt
+      - _build/meson-logs/testlog.txt
+      - _build/meson-logs/meson-log.txt
     expire_in: 1 week
 
 pages:
   stage: deploy
+  needs: [release_gcc_9_build]
   script:
-  - CC=gcc-9 CXX=g++-9 meson _build --prefix=/usr --libdir=lib -Ddebug=false -Doptimization=3 
-Dwarnings=fatal -Dmaintainer-mode=true
-  - cd _build
-  - ninja
-  - CC=gcc-9 CXX=g++-9 meson dist
-  - mkdir -p ../public/glibmm
-  - cp docs/reference/html/* ../public/glibmm
+    - mkdir public
+    - mv _build/docs/reference/html/* public
   artifacts:
     paths:
-    - public
+      - public
+  only:
+    refs:
+      - kjellahl/testci


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]