From 831cb379a92f21a8ab332d5cdb28edf7f7deef17 Mon Sep 17 00:00:00 2001
From: Alejandro Lopez Gestoso <alopez@iri.upc.edu>
Date: Tue, 30 Aug 2022 12:40:28 +0200
Subject: [PATCH] Update .gitlab-ci.yml file

---
 .gitlab-ci.yml | 134 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 134 insertions(+)
 create mode 100644 .gitlab-ci.yml

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..75ee046
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,134 @@
+  image: docker.io/labrobotica/labrobotica:latest
+
+  variables:
+    GIT_SUBMODULE_STRATEGY: recursive
+    FROM_RDEPENDS_CI: "false"
+
+  stages:
+    - build
+    - update_package
+    - update_reverse_dependencies
+
+  .build-package:
+    stage: build
+    rules:
+      - if: $CI_COMMIT_TAG =~ /\d+\.[^a-zA-Z_\s]*\d+/
+    script:
+      #- git submodule sync --recursive
+      #- git submodule update --init --recursive
+      - apt update || apt -y install ca-certificates && apt update
+      ##Install dependencies
+      #- apt -y install iri-dep1-dev iri-dep2-dev
+      - mkdir -pv build
+      - cd build
+      - cmake -DCMAKE_BUILD_TYPE=RELEASE -DCPACK_PACKAGE_VERSION=$CI_COMMIT_TAG ..
+      - make package -j $(nproc)
+    artifacts:
+      paths:
+        - build/*.deb
+      expire_in: 2 weeks
+
+
+  .update_repo:
+    stage: update_package
+    rules:
+      - if: $CI_COMMIT_TAG =~ /\d+\.[^a-zA-Z_\s]*\d+/
+    script:
+      - cd build
+      - "scp -i /root/.ssh/iriLabKeyNopwd -r *dummyutils*.deb irilabo@labrepo.iri.upc.edu:packages/"
+      - "ssh irilabo@labrepo.iri.upc.edu -i /root/.ssh/iriLabKeyNopwd -tt /home/irilabo/repo_scripts/update_repo.sh dummyutils $(lsb_release -cs)"
+
+
+  modify_rdepends_ci:
+    stage: update_reverse_dependencies
+    rules:
+      - if: $FROM_RDEPENDS_CI == "false" && $CI_COMMIT_TAG =~ /\d+\.[^a-zA-Z_\s]*\d+/
+    script:
+      # Modify child pipeline
+      - apt update || apt -y install ca-certificates && apt update
+      - "scp -i /root/.ssh/iriLabKeyNopwd irilabo@labrepo.iri.upc.edu:repo_scripts/reverse_dependency.sh ."
+      - "scp -i /root/.ssh/iriLabKeyNopwd irilabo@labrepo.iri.upc.edu:repo_scripts/generate_rdepends_ci.sh ."
+      - ./reverse_dependency.sh dummyutils
+
+      # git configuration & push
+
+      - git config user.email labrobotica@iri.upc.edu
+      - git config user.name labrobotica
+      - if git checkout -b update_rdepends ; then
+      -   echo "Branch update_rdepends ok."
+      - else
+      -   git branch -D update_rdepends
+      -   git checkout -b update_rdepends
+      -   echo "Re-created branch update_rdepends ok."
+      - fi
+      - git add .rdepends_ci/rdepends_ci.yml
+      - git commit -m "Updated rdepends_ci.yml"
+      - git remote set-url --push origin https://rdepends_token:$ACCESS_TOKEN@gitlab.iri.upc.edu/alopez/test_ci.git || echo "Origin already exists"
+      - git remote show origin
+      - git push --set-upstream origin update_rdepends
+
+
+  .trigger_rdepends_ci:
+    stage: update_reverse_dependencies
+    rules:
+      - if: $CI_COMMIT_BRANCH == "update_rdepends"
+    trigger:
+      include: .rdepends_ci/rdepends_ci.yml
+      strategy: depend
+
+
+  cleanup_branch:
+    stage: update_reverse_dependencies
+    rules:
+      - if: $CI_COMMIT_BRANCH == "update_rdepends"
+    script:
+      # delete .rdepends_ci/rdepends_ci.yml, merge to master and delete branch
+      - git config user.email labrobotica@iri.upc.edu
+      - git config user.name labrobotica
+      - git branch -D update_rdepends
+      #- git branch -D update_rdepends_tag
+      - git push origin --delete update_rdepends || echo "Update_depends branch already deleted"
+      #- git push origin --delete update_rdepends_tag || echo "Update_depends_tag branch already deleted"
+    needs: [generate_new_tag]
+
+
+  generate_new_tag:
+    stage: update_reverse_dependencies
+    rules:
+      - if: $CI_COMMIT_BRANCH == "update_rdepends"
+    script:
+      # Read package version and increment patch version
+      - apt update || apt -y install ca-certificates && apt update
+      - VER=( $(apt-cache show iri-dummyutils-dev | grep Version) )
+      - declare -a VER
+      - if [ ${#VER[@]} -eq 2 ]
+      - then
+      -   echo "${VER[1]}"
+      -   tmp=${VER[1]%.*}
+      -   MAJOR=${tmp%.*}
+      -   tmp=${VER[1]#*.}
+      -   MINOR=${tmp%.*}
+      -   REV=${tmp#*.}
+      -   NEW_REV=$((${REV}+1))
+      -   NEW_VER="${MAJOR}.${MINOR}.${NEW_REV}"
+      -   echo "${NEW_VER}"
+      - else
+      -   echo "No version found for iri-dummyutils-dev"
+      -   exit 1
+      - fi
+      # git configuration & tag
+
+      - git config user.email labrobotica@iri.upc.edu
+      - git config user.name labrobotica
+      #- if git checkout -b update_rdepends_tag ; then
+      #-   echo "Branch update_rdepends_tag ok."
+      #- else
+      #-   git branch -D update_rdepends_tag
+      #-   git checkout -b update_rdepends_tag
+      #-   echo "Re-created branch update_rdepends_tag ok."
+      #- fi
+      - git tag -a 1.4.8 -m "New tag by reverse dependency pipeline"
+      - git remote set-url --push origin https://rdepends_token:$ACCESS_TOKEN@gitlab.iri.upc.edu/alopez/test_ci.git || echo "Origin already exists"
+      - git remote show origin
+      #- git push --set-upstream origin update_rdepends_tag
+      - git push origin 1.4.8
-- 
GitLab