Skip to content
Snippets Groups Projects
Commit a6ded051 authored by Alejandro Lopez Gestoso's avatar Alejandro Lopez Gestoso
Browse files

Initial commit

parents
No related branches found
No related tags found
No related merge requests found
image: docker.io/labrobotica/labrobotica:latest
variables:
GIT_SUBMODULE_STRATEGY: recursive
FROM_RDEPENDS_CI: "false"
TAG_VERSION: $CI_COMMIT_TAG
PACKAGE_NAME: ""
stages:
- build
- update_package
- update_reverse_dependencies
##### definitions #####
.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:
stage: build
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:
stage: update_package
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:
stage: update_reverse_dependencies
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:
stage: update_reverse_dependencies
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:
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:
- *cleanup
needs: [trigger_rdepends_ci]
cleanup_branch_on_failure:
stage: update_reverse_dependencies
rules:
- if: $CI_COMMIT_BRANCH == "update_rdepends"
when: on_failure
script:
- *cleanup
needs: [trigger_rdepends_ci]
generate_new_tag:
stage: update_reverse_dependencies
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:
stage: update_reverse_dependencies
rules:
- if: $FROM_RDEPENDS_CI == "true"
needs: [generate_new_tag]
<<: *build_package
update_repo_rdep:
stage: update_reverse_dependencies
rules:
- if: $FROM_RDEPENDS_CI == "true"
needs: [build_package_rdep]
<<: *update_repo
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment