From 6c8524d26f8e44ebec1a4bf87a0b5d912df560ef Mon Sep 17 00:00:00 2001
From: Thibault Martin <thi.martin.pro@pm.me>
Date: Thu, 3 Oct 2024 11:21:31 +0200
Subject: [PATCH] [ci] Update ci targets, add linting target and opam nightly

---
 .gitlab-ci.yml | 69 +++++++++++++++++++++++++++++++++++++-------------
 1 file changed, 52 insertions(+), 17 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index ef672cef..49e71fe8 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -3,6 +3,8 @@
 
 stages:
   - tests
+  - distrib
+  - compatibility
   - prepare-release
   - release
 
@@ -20,14 +22,26 @@ variables:
   OCAML: "4.14"
 
 ################################################################################
-### TESTS
+### ONLY/EXCEPT TEMPLATES
 
-check-headers:
-  stage: prepare-release
-  variables:
-    CI_MODE: "check-headers"
-  script:
-    - ./nix/ci.sh
+.build_template: &manual_template
+  except:
+    refs:
+      - schedules
+  when: manual
+
+.build_template: &when_schedules
+  only:
+    refs:
+      - schedules
+
+.build_template: &when_release
+  only:
+    variables:
+      - $RELEASE == "yes"
+
+################################################################################
+### TESTS
 
 .build_template: &tests_template
   stage: tests
@@ -42,26 +56,51 @@ tests-auto:
 
 tests-manual:
   <<: *tests_template
+  <<: *manual_template
   parallel:
     matrix:
       - LLVM_VERSION: [ "13", "14", "15", "16", "17" ]
-  when: manual
+
+################################################################################
+### DISTRIB
+
+check-headers:
+  stage: distrib
+  variables:
+    CI_MODE: "check-headers"
+  script:
+    - ./nix/ci.sh
 
 ################################################################################
 ### CHECK OPAM PACKAGE STATUS
 
-check-opam:
+.build_template: &opam_template
   tags: [docker]
   image: "ocaml/opam:ubuntu-lts-ocaml-$OCAML"
-  stage: prepare-release
+  stage: compatibility
   variables:
     CI_MODE: "check-opam"
     EXTRA_PACKAGES: "clang libclang-dev libclang-cpp-dev llvm-dev"
   script:
     - ./nix/ci.sh
-  when: manual
+
+check-opam:
+  <<: *opam_template
+  <<: *manual_template
+
+check-opam-nightly:
+  <<: *opam_template
+  <<: *when_schedules
+
+check-opam-release:
+  <<: *opam_template
+  <<: *when_release
+
+################################################################################
+### PRE-RELEASE
 
 make-manual:
+  <<: *when_release
   stage: prepare-release
   variables:
     OUT: "manual"
@@ -73,6 +112,7 @@ make-manual:
     - ./nix/ci.sh
 
 check-versions:
+  <<: *when_release
   stage: prepare-release
   variables:
     CI_MODE: "check-versions"
@@ -83,12 +123,8 @@ check-versions:
 ### RELEASE
 
 release:
+  <<: *when_release
   stage: release
-  needs:
-    - check-opam
-    - make-manual
-  dependencies:
-    - make-manual
   variables:
     CI_MODE: "release"
     PLUGIN_FULL_NAME: "Frama-Clang"
@@ -99,4 +135,3 @@ release:
     - ls -la
     - ls manual
     - ./nix/ci.sh
-  when: manual
-- 
GitLab