diff --git a/packaging-ci.yml b/packaging-ci.yml index f85535ef0f6d5ef8141148e4ec08666ad3603379..a2dd0ee1b24722a77465617a560e8b10826fb19a 100644 --- a/packaging-ci.yml +++ b/packaging-ci.yml @@ -1,5 +1,156 @@ -default: - before_script: - - apt-get update -qq && apt-get install -y -qq sqlite3 libsqlite3-dev nodejs - - gem install bundler --no-document - - bundle install --jobs $(nproc) "${FLAGS[@]}" + .build_package: &build_package + 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 + # Read dependencies from CMakeLists.txt + - DEP=( $(grep -P '[^#]\s+SET\(CPACK_DEBIAN_PACKAGE_DEPENDS\s+"' CMakeLists.txt) ) + - declare -a DEP + - |+ + for ((i=1;i<${#DEP[@]};i+=3)) + do + if [ ${i} -eq 1 ] + then + apt -y install ${DEP[${i}]:1}; + else + apt -y install ${DEP[${i}]}; + fi + done +- mkdir -pv build + - cd build + - cmake -DCMAKE_BUILD_TYPE=RELEASE -DCPACK_PACKAGE_VERSION=$TAG_VERSION .. + - make package -j $(nproc) + artifacts: + paths: + - build/*.deb + expire_in: 2 weeks + + .update_repo: &update_repo + script: + - cd build + - "scp -i /root/.ssh/iriLabKeyNopwd -r *$PACKAGE_NAME*.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 $PACKAGE_NAME $(lsb_release -cs)" + + .cleanup: &cleanup + # 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 || echo "Update_depends branch already deleted" + - git push origin --delete update_rdepends || echo "Update_depends branch already deleted" + + .build_package_tag: &build_package_tag + rules: + - if: $FROM_RDEPENDS_CI == "false" && $CI_COMMIT_TAG =~ /\d+\.[^a-zA-Z_\s]*\d+/ && $GITLAB_USER_NAME != "rdepends_token" + <<: *build_package + + .update_repo_tag: &update_repo_tag + rules: + - if: $FROM_RDEPENDS_CI == "false" && $CI_COMMIT_TAG =~ /\d+\.[^a-zA-Z_\s]*\d+/ && $GITLAB_USER_NAME != "rdepends_token" + <<: *update_repo + + .modify_rdepends_ci: &modify_rdepends_ci + rules: + - if: $FROM_RDEPENDS_CI == "false" && $CI_COMMIT_TAG =~ /\d+\.[^a-zA-Z_\s]*\d+/ && $GITLAB_USER_NAME != "rdepends_token" + 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 ." + - ./reverse_dependency.sh $PACKAGE_NAME + + # get path + - PROJ=( $(apt-cache show iri-$PACKAGE_NAME-dev | grep Homepage) ) + - declare -a PROJ + - if [ ${#PROJ[@]} -eq 2 ] + - then + - PROJECT_STRING=${PROJ[1]#https://gitlab.iri.upc.edu/} + - else + - echo "No homepage found for iri-$PACKAGE_NAME-dev" + - exit 1 + - fi + + # 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/${PROJECT_STRING}.git || echo "Origin already exists" + - git remote show origin + - git push --set-upstream origin update_rdepends + + .cleanup_branch_on_failure2: &cleanup_branch_on_failure2 + rules: + - if: $FROM_RDEPENDS_CI == "false" && $CI_COMMIT_TAG =~ /\d+\.[^a-zA-Z_\s]*\d+/ && $GITLAB_USER_NAME != "rdepends_token" + when: on_failure + script: + - *cleanup + needs: [modify-rdepends-ci] + + .trigger_rdepends_ci: &trigger_rdepends_ci + rules: + - if: $CI_COMMIT_BRANCH == "update_rdepends" + trigger: + include: .rdepends_ci/rdepends_ci.yml + strategy: depend + + .cleanup_branch: &cleanup_branch + rules: + - if: $CI_COMMIT_BRANCH == "update_rdepends" + script: + - *cleanup + needs: [trigger-rdepends-ci] + + .cleanup_branch_on_failure: &cleanup_branch_on_failure + rules: + - if: $CI_COMMIT_BRANCH == "update_rdepends" + when: on_failure + script: + - *cleanup + needs: [trigger-rdepends-ci] + + .generate_new_tag: &generate_new_tag + rules: + - if: $FROM_RDEPENDS_CI == "true" + script: + + # get path + - PROJ=( $(apt-cache show iri-$PACKAGE_NAME-dev | grep Homepage) ) + - declare -a PROJ + - if [ ${#PROJ[@]} -eq 2 ] + - then + - PROJECT_STRING=${PROJ[1]#https://gitlab.iri.upc.edu/} + - else + - echo "No homepage found for iri-$PACKAGE_NAME-dev" + - exit 1 + - fi + + # git configuration & tag + + - git config user.email labrobotica@iri.upc.edu + - git config user.name labrobotica + - git tag -a $TAG_VERSION -m "New tag by reverse dependency pipeline" + - git remote set-url --push origin https://rdepends_token:$ACCESS_TOKEN@gitlab.iri.upc.edu/${PROJECT_STRING}.git || echo "Origin already exists" + - git remote show origin + - git push origin $TAG_VERSION + + .build_package_rdep: &build_package_rdep + rules: + - if: $FROM_RDEPENDS_CI == "true" + needs: [generate-new-tag] + <<: *build_package + + .update_repo_rdep: &update_repo_rdep + rules: + - if: $FROM_RDEPENDS_CI == "true" + needs: [build-package-rdep] + <<: *update_repo +