From 62a646e3266a1ff2087477d08cf2026d4c6fbdb1 Mon Sep 17 00:00:00 2001
From: Pavel Zhukov <pavel.zhukov@huawei.com>
Date: Mon, 27 Jun 2022 17:54:10 +0200
Subject: [PATCH] .oniro-ci: Add clang jobs

Fixes: https://gitlab.eclipse.org/eclipse/oniro-core/oniro/-/issues/621
Signed-off-by: Pavel Zhukov <pavel.zhukov@huawei.com>
---
 .gitlab-ci.yml               |  8 +++++++
 .oniro-ci/build-generic.yaml | 41 +++++++++++++++++++++++++++++++++++-
 2 files changed, 48 insertions(+), 1 deletion(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 10d41ac7..0cfdecda 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -96,6 +96,10 @@ aggregate-docs:
 
 .bitbake-workspace:
   extends: [.workspace, .workspace-rules]
+  rules:
+    - if: '$CI_ONIRO_BB_LOCAL_CONF_TOOLCHAIN == "clang"'
+      when: on_success
+      allow_failure: true
 
 .build-rauc-bundle:
   extends: [.build-image, .workspace-rules]
@@ -113,6 +117,10 @@ bundle-qemu-x86:
     MACHINE: qemux86
     CI_ONIRO_BUILD_FLAVOUR: linux
     CI_ONIRO_RECIPE_NAME: oniro-bundle-base
+  rules:
+    - if: '$CI_ONIRO_BB_LOCAL_CONF_TOOLCHAIN == "clang"'
+      when: on_success
+      allow_failure: true
 
 # Build a RAUC update bundle for qemu x86 64
 bundle-qemu-x86_64:
diff --git a/.oniro-ci/build-generic.yaml b/.oniro-ci/build-generic.yaml
index 67abc4ad..1e9ae38b 100644
--- a/.oniro-ci/build-generic.yaml
+++ b/.oniro-ci/build-generic.yaml
@@ -194,6 +194,9 @@
         # them).
         time devtool finish --remove-work --force "$CI_ONIRO_DEVTOOL_RECIPE_NAME" "$(basename "$CI_ONIRO_DEVTOOL_LAYER_PATH")";
       fi
+  rules:
+    - if: '$CI_ONIRO_BB_LOCAL_CONF_TOOLCHAIN == "clang"'
+      allow_failure: true
 
 # This job is documented in docs/ci/hidden-jobs/build-linux.rst
 .build-linux:
@@ -214,13 +217,25 @@
         time bitbake "$target"
         du -sh tmp
       done
+  parallel:
+    matrix:
+      - CI_ONIRO_BB_LOCAL_CONF_TOOLCHAIN: "clang" 
+        CI_ONIRO_BB_LOCAL_CONF_RUNTIME: "llvm"
+      - CI_ONIRO_BB_LOCAL_CONF_TOOLCHAIN: "gcc"
+        CI_ONIRO_BB_LOCAL_CONF_RUNTIME: "gnu"
 
 # This job is documented in docs/ci/hidden-jobs/build-linux-marix.rst
 .build-linux-matrix:
   extends: .build-linux
   parallel:
     matrix:
-      - CI_ONIRO_BITBAKE_TARGETS: ["oniro-image-base-tests", "oniro-image-extra-tests"]
+      - CI_ONIRO_BB_LOCAL_CONF_TOOLCHAIN: "clang" 
+        CI_ONIRO_BB_LOCAL_CONF_RUNTIME: "llvm"
+        CI_ONIRO_BITBAKE_TARGETS: ["oniro-image-base-tests", "oniro-image-extra-tests"]
+      - CI_ONIRO_BB_LOCAL_CONF_TOOLCHAIN: "gcc"
+        CI_ONIRO_BB_LOCAL_CONF_RUNTIME: "gnu"
+        CI_ONIRO_BITBAKE_TARGETS: ["oniro-image-base-tests", "oniro-image-extra-tests"]
+
 
 # This job is documented in docs/ci/hidden-jobs/build-zephyr.rst
 .build-zephyr:
@@ -238,6 +253,12 @@
       for target in $CI_ONIRO_BITBAKE_TARGETS; do
         time bitbake "$target"
       done
+  parallel:
+    matrix:
+      - CI_ONIRO_BB_LOCAL_CONF_TOOLCHAIN: "clang" 
+        CI_ONIRO_BB_LOCAL_CONF_RUNTIME: "llvm"
+      - CI_ONIRO_BB_LOCAL_CONF_TOOLCHAIN: "gcc"
+        CI_ONIRO_BB_LOCAL_CONF_RUNTIME: "gnu"
 
 # This job is documented in docs/ci/hidden-jobs/build-freertos.rst
 .build-freertos:
@@ -249,6 +270,12 @@
   script:
     - !reference [.bitbake-workspace, script]
     - time bitbake freertos-demo
+  parallel:
+    matrix:
+      - CI_ONIRO_BB_LOCAL_CONF_TOOLCHAIN: "clang" 
+        CI_ONIRO_BB_LOCAL_CONF_RUNTIME: "llvm"
+      - CI_ONIRO_BB_LOCAL_CONF_TOOLCHAIN: "gcc"
+        CI_ONIRO_BB_LOCAL_CONF_RUNTIME: "gnu"
 
 # This job is documented in docs/ci/hidden-jobs/build-recipe.rst
 .build-recipe:
@@ -295,6 +322,12 @@
   artifacts:
     paths:
       - artifacts/
+  parallel:
+    matrix:
+      - CI_ONIRO_BB_LOCAL_CONF_TOOLCHAIN: "clang" 
+        CI_ONIRO_BB_LOCAL_CONF_RUNTIME: "llvm"
+      - CI_ONIRO_BB_LOCAL_CONF_TOOLCHAIN: "gcc"
+        CI_ONIRO_BB_LOCAL_CONF_RUNTIME: "gnu"
 
 .build-wic-image:
   extends: .build-image
@@ -302,6 +335,12 @@
     CI_ONIRO_JOB_ARTIFACTS: "*.wic.* *.bmap"
   script:
     - !reference [.build-image, script]
+  parallel:
+    matrix:
+      - CI_ONIRO_BB_LOCAL_CONF_TOOLCHAIN: "clang" 
+        CI_ONIRO_BB_LOCAL_CONF_RUNTIME: "llvm"
+      - CI_ONIRO_BB_LOCAL_CONF_TOOLCHAIN: "gcc"
+        CI_ONIRO_BB_LOCAL_CONF_RUNTIME: "gnu"
 
 .build-rauc-bundle:
   extends: .build-image
-- 
GitLab