From 3c3fd6e0f28c699c963f98c832cac265b34deb5e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonas=20H=C3=B6ppner?= <jonas.hoeppner@garz-fricke.com>
Date: Fri, 6 Aug 2021 13:58:37 +0200
Subject: [PATCH] CI: Add manual job for deploy and sdk, pull gitlab-ci for
 local deployment

The deploy job creates the release folder and local copy of images and
docs.
The sdk job build the sdk per platform and uses the local deployment only.

BCS 746-000262

Change-Id: Icce94627aabd229a3777229b1e4c486f832ef6f8
---
 .gitlab-ci           |  2 +-
 .gitlab-ci-build.yml | 80 ++++++++++++++++++++++++++++----------------
 .gitlab-ci.yml       | 57 +++++++++++++++++++++++++++----
 3 files changed, 103 insertions(+), 36 deletions(-)

diff --git a/.gitlab-ci b/.gitlab-ci
index 09eb4bcf..de38c9f0 160000
--- a/.gitlab-ci
+++ b/.gitlab-ci
@@ -1 +1 @@
-Subproject commit 09eb4bcfa363e2674a6986cebaf5d6eba7c8fdd7
+Subproject commit de38c9f02270f276cdead60b4704d10482d38ebd
diff --git a/.gitlab-ci-build.yml b/.gitlab-ci-build.yml
index d37a7ec4..4a153d8a 100644
--- a/.gitlab-ci-build.yml
+++ b/.gitlab-ci-build.yml
@@ -1,6 +1,8 @@
 variables:
   BUILDPATH: "build-${CI_PARAM_DISTRO}-${CI_PARAM_MACHINE}"
-  IMAGEPATH: "tmp/deploy/images/${CI_PARAM_MACHINE}"
+  IMAGEBASEPATH: "tmp/deploy/images/"
+  IMAGEPATH: "${IMAGEBASEPATH}/${CI_PARAM_MACHINE}"
+  SDKPATH:   "tmp/deploy/sdk/"
   
 .setup_ssh: &setup_ssh
   # setup ssh key to access private repos
@@ -21,19 +23,12 @@ variables:
 
 .collect_srcrevs: &collect_srcrevs
   # write all package AUTOREVS to file
-  - SRCREVS_FILE="${CI_PROJECT_DIR}/${BUILDPATH}/${IMAGEPATH}/BUILD_SRCREVS.log"
-  - buildhistory-collect-srcrevs > ${SRCREVS_FILE}
-  - cat ${SRCREVS_FILE}
-
-.package: &package
-  # checkout .gitlab-ci folder of manifest (is not synced automatically by repo)
-  - cd ${CI_PROJECT_DIR}/.repo/manifests
-  - git submodule update --init
-  # package release
-  - cd ${CI_PROJECT_DIR}
-  - .repo/manifests/.gitlab-ci/package_release.py
-      --images-dir=${BUILDPATH}/${IMAGEPATH}
-      --release-dir=release
+  - |-
+    SRCREVS_FILE="${CI_PROJECT_DIR}/${BUILDPATH}/${IMAGEPATH}/BUILD_SRCREVS.log"
+    if [ -d "$( dirname "${SRCREVS_FILE}" )" ];then
+        buildhistory-collect-srcrevs > ${SRCREVS_FILE}
+        cat ${SRCREVS_FILE}
+    fi
 
 .dump_install_command: &dump_install_command
   # print install instructions
@@ -46,38 +41,65 @@ variables:
 
     export GITLAB_TOKEN=<your_access_token>
     FNG="${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/jobs/${CI_JOB_ID}/artifacts/${BUILDPATH}/${IMAGEPATH}/${i}"
-    export TFTP="\$(dirname "\$FNG")"
-    curl --location --header "PRIVATE-TOKEN: \$GITLAB_TOKEN" "\$FNG" | sh -s
+    curl --location --header "PRIVATE-TOKEN: \$GITLAB_TOKEN" "\$FNG" | sh -s -- --url="\$(dirname "\$FNG")"
     ==============================
 
     EOF
     fi
     done
 
+.build_script: &build_script
+  # setup build environment
+  - echo "Build configuration MACHINE=${CI_PARAM_MACHINE} DISTRO=${CI_PARAM_DISTRO} IMAGE=${CI_PARAM_IMAGE}"
+  - echo "Using build dir ${BUILDPATH}"
+  - export MACHINE="${CI_PARAM_MACHINE}"
+  - export DISTRO="${CI_PARAM_DISTRO}"
+  - export EULA="1"
+  - source ./"${SETUPSCRIPT}" "${BUILDPATH}"
+  # start build
+  - echo -e "section_start:`date +%s`:bitbake_run\r\e[0KBitbake Log"
+  - echo "bitbake ${CI_PARAM_IMAGE} -c ${BITBAKE_TASK}"
+  - bitbake "${CI_PARAM_IMAGE}" -c "${BITBAKE_TASK}"
+  - echo -e "section_end:`date +%s`:bitbake_run\r\e[0K"
+
 .build:
   variables:
     GIT_STRATEGY: none
     SETUPSCRIPT: "setup-environment"
     INSTALLSCRIPTS: "fng-install.sh fngsystem-self-update.sh"
+    BITBAKE_TASK: "build"
   before_script:
     - *setup_ssh
     - *repo_checkout
   script:
-    # setup build environment
-    - echo "Build configuration MACHINE=${CI_PARAM_MACHINE} DISTRO=${CI_PARAM_DISTRO} IMAGE=${CI_PARAM_IMAGE}"
-    - echo "Using build dir ${BUILDPATH}"
-    - export MACHINE="${CI_PARAM_MACHINE}"
-    - export DISTRO="${CI_PARAM_DISTRO}"
-    - export EULA="1"
-    - source ./"${SETUPSCRIPT}" "${BUILDPATH}"
-    # start build
-    - echo -e "section_start:`date +%s`:bitbake_run\r\e[0KBitbake Log"
-    - bitbake "${CI_PARAM_IMAGE}"
-    - echo -e "section_end:`date +%s`:bitbake_run\r\e[0K"
+    - *build_script
     - *collect_srcrevs
-    - *package
     - *dump_install_command
+
   artifacts:
     paths:
       - "${BUILDPATH}/${IMAGEPATH}/*"
-      - release/**/**/*
+
+.package:
+  after_script:
+    - |-
+      # in deploy job there is a changed directory structure
+      for p in build-guf-*;
+      do
+        machine="${p##*-}"
+        .gitlab-ci/package_release.py \
+            --images-dir="${p}/${IMAGEBASEPATH}/${machine}" \
+            --doc-dir=. \
+            --release-dir=release
+      done
+
+.package_sdk:
+  after_script:
+    - |-
+      ls -la
+      cd ${CI_PROJECT_DIR}/.repo/manifests
+      git submodule update --init
+      cd ${CI_PROJECT_DIR}
+      .repo/manifests/.gitlab-ci/package_release.py \
+          --sdk-dir=${BUILDPATH}/${SDKPATH} \
+          --release-dir=release
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8c4e388b..d8a7b74e 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -7,7 +7,9 @@ include:
 stages:
   - retrigger
   - documentation
-  - build
+  - image
+  - deploy
+  - sdk
 
 variables:
   CI_IMAGES_PATH: registry.gitlab.com/garz-fricke/yocto/infrastructure/ci-images
@@ -60,10 +62,7 @@ retrigger:
 #---------------------------------------------------------------------------------------
 # Stage: build
 #---------------------------------------------------------------------------------------
-build:
-  extends: .build
-  stage: build
-  needs: []
+.buildbase:
   tags:
     - builds
   timeout: 8h
@@ -78,6 +77,18 @@ build:
       - "--"
       - "/usr/bin/poky-entry.py"
       - "--id=118:998"
+  artifacts:
+    expire_in: 4 weeks
+
+#---------------------------------------------------------------------------------------
+# Stage: build
+#---------------------------------------------------------------------------------------
+buildimage:
+  extends: 
+    - .buildbase
+    - .build
+  needs: []
+  stage: image
   parallel:
     matrix:
       # Yocto OS
@@ -88,8 +99,42 @@ build:
       - CI_PARAM_MACHINE: [imx6guf, imx6ullguf, imx8mguf]
         CI_PARAM_DISTRO: [guf-fngsystem]
         CI_PARAM_IMAGE: [fngsystem-image]
+
+#---------------------------------------------------------------------------------------
+# Stage: deploy
+#---------------------------------------------------------------------------------------
+deployimage:
+  variables:
+    GIT_SUBMODULE_STRATEGY: normal
+  extends: 
+    - .buildbase
+    - .package
+  stage: deploy
+  when: manual
+  script:
+      - echo
   artifacts:
-    expire_in: 4 weeks
+    paths:
+      - release/**/**/*
+
+#---------------------------------------------------------------------------------------
+# Stage: build sdk
+#---------------------------------------------------------------------------------------
+buildsdk:
+  extends: 
+    - .buildbase
+    - .build
+    - .package_sdk
+  needs: []
+  stage: sdk
+  when: manual
+  variables:
+    BITBAKE_TASK: "populate_sdk"
+  parallel:
+    matrix:
+      - CI_PARAM_MACHINE: [imx6guf, imx6ullguf, imx8mguf]
+        CI_PARAM_DISTRO: [guf-wayland]
+        CI_PARAM_IMAGE: [guf-image-minimal]
 
 #---------------------------------------------------------------------------------------
 # Stage: documentation
-- 
GitLab