Skip to content
Snippets Groups Projects
Commit de85c643 authored by Iñigo Moreno i Caireta's avatar Iñigo Moreno i Caireta
Browse files

First implementation of ddeploy job

parent a60c7c08
No related branches found
No related tags found
1 merge request!70Resolve "Update deprecated deploy job"
Pipeline #57611 failed
......@@ -61,25 +61,25 @@ industrial_ci_noetic:
industrial_kinetic_deploy:
extends:
- industrial_ci_kinetic
- .industrial_ci_deploy
extends: .ddeploy
variables:
ROS_DISTRO: kinetic
rules:
- if: $DEPLOY && $DEFAULT_DISTRO == "kinetic"
- if: $DEPLOY && $BUILD_KINETIC
industrial_melodic_deploy:
extends:
- industrial_ci_melodic
- .industrial_ci_deploy
extends: .ddeploy
variables:
ROS_DISTRO: melodic
rules:
- if: $DEPLOY && $DEFAULT_DISTRO == "melodic"
- if: $DEPLOY && $BUILD_MELODIC
industrial_noetic_deploy:
extends:
- industrial_ci_noetic
- .industrial_ci_deploy
extends: .ddeploy
variables:
ROS_DISTRO: noetic
rules:
- if: $DEPLOY && $DEFAULT_DISTRO == "noetic"
- if: $DEPLOY && $BUILD_NOETIC
......@@ -4,3 +4,7 @@ include: ci-templates/auto-rules/no-default.yml
.industrial_ci:
variables:
UPSTREAM_WORKSPACE: .rosinstall
.ddeploy:
variables:
UPSTREAM_WORKSPACE: .rosinstall
......@@ -14,24 +14,56 @@
CMAKE_ARGS: -DCMAKE_CXX_FLAGS=-Wno-ignored-attributes -Wno-int-in-bool-context
.industrial_ci_deploy:
extends: .industrial_ci
.ddeploy:
stage: build
variables:
AFTER_SCRIPT: "wget -q -O - https://git.code.tecnalia.com/tecnalia_robotics-public/gitlab_templates/raw/master/scripts/pre-deploy-cleanup.bash | bash"
DOCKER_COMMIT: industrial_ci_image
DOCKER_BASE_REGISTRY: tecnalia-robotics-docker.artifact.tecnalia.com
DOCKER_BASE_USER: ${ARTIFACT_CI_USER}
DOCKER_BASE_TOKEN: ${ARTIFACT_CI_TOKEN}
DOCKER_BASE_NAME: flexbotics-base-devel
DOCKER_BASE_TAG: ${ROS_DISTRO}
DOCKER_PUSH_REGISTRY: tecnalia-robotics-docker.artifact.tecnalia.com
DOCKER_PUSH_USER: ${ARTIFACT_CI_USER}
DOCKER_PUSH_TOKEN: ${ARTIFACT_CI_TOKEN}
DOCKER_PUSH_NAME: ${CI_PROJECT_NAME}
DOCKER_PUSH_TAG: ${CI_COMMIT_REF_SLUG}
DDEPLOY_SOURCE: .
DDEPLOY_EXTRA_SOURCE: /tmp/empty.rosinstall
DDEPLOY_BEFORE_SCRIPT: ""
DDEPLOY_AFTER_SCRIPT: ""
DDEPLOY_CMD: "$${SHELL}"
DDEPLOY_EXTRA_ARGS: ""
before_script:
- docker info
- apk add --update python3 git py3-pip git-lfs
# forward the SSH authentication into the Docker executor
- "which ssh-agent || ( apk update && apk add openssh-client )"
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
- mkdir -p ~/.ssh
- echo "$SSH_SERVER_HOSTKEYS" > ~/.ssh/known_hosts
- chmod 700 ~/.ssh
# setup LFS authentication
- git lfs install
- git config --global credential.helper store
- echo https://$ARTIFACT_CI_USER:$ARTIFACT_CI_TOKEN@artifact.tecnalia.com > ~/.git-credentials
# install ddeploy
- oldpath=$(pwd) && cd /tmp && git clone --quiet --depth 1 git@git.code.tecnalia.com:tecnalia_robotics/flexbotics/flexbotics_utils/ddeploy.git && cd ddeploy && pip install -r requirements.txt && pip install . && cd $oldpath
- docker login ${DOCKER_BASE_REGISTRY} -u ${DOCKER_BASE_USER} -p ${DOCKER_BASE_TOKEN}
script:
- .ci_config/gitlab.sh
- cd $(mktemp -d)
- wget https://git.code.tecnalia.com/tecnalia_robotics-public/gitlab_templates/-/archive/master/gitlab_templates-master.zip
- unzip gitlab_templates-master.zip && cd gitlab_templates-master/deploy
- cd base
- chmod a+x ros_entrypoint.bash
- docker build -t ${ARTIFACT_DOCKER_URL}/${CI_PROJECT_NAME}:${CI_COMMIT_REF_NAME} .
- docker push ${ARTIFACT_DOCKER_URL}/${CI_PROJECT_NAME}:${CI_COMMIT_REF_NAME}
- cd ..
- cd dev
- docker build --build-arg APPLICATION_IMAGE=${ARTIFACT_DOCKER_URL}/${CI_PROJECT_NAME}:${CI_COMMIT_REF_NAME} -t ${ARTIFACT_DOCKER_URL}/${CI_PROJECT_NAME}:${CI_COMMIT_REF_NAME}-dev .
- docker push ${ARTIFACT_DOCKER_URL}/${CI_PROJECT_NAME}:${CI_COMMIT_REF_NAME}-dev
- cd ..
rules:
- if: $DEPLOY
- echo "[]" > /tmp/empty.rosinstall
- ddeploy \
--project-sources ${DDEPLOY_SOURCE} \
--project-sources ${DDEPLOY_EXTRA_SOURCE} \
--project-name ${DOCKER_PUSH_NAME} \
--ros-distro ${ROS_DISTRO} \
--image-name ${DOCKER_PUSH_REGISTRY}/${DOCKER_PUSH_NAME}:${DOCKER_PUSH_TAG} \
--base-image ${DOCKER_BASE_REGISTRY}/${DOCKER_BASE_NAME}:${DOCKER_BASE_TAG} \
--before-script ${DDEPLOY_BEFORE_SCRIPT} \
--after-script ${DDEPLOY_AFTER_SCRIPT} \
--cmd ${DDEPLOY_CMD} \
${DDEPLOY_EXTRA_ARGS}
- docker tag ${DOCKER_PUSH_REGISTRY}/${DOCKER_PUSH_NAME}:${DOCKER_PUSH_TAG} ${DOCKER_PUSH_REGISTRY}/${DOCKER_PUSH_NAME}:latest
- docker login ${DOCKER_PUSH_REGISTRY} -u ${DOCKER_PUSH_USER} -p ${DOCKER_PUSH_TOKEN}
- docker push ${DOCKER_PUSH_REGISTRY}/${DOCKER_PUSH_NAME}:${DOCKER_PUSH_TAG}
- docker push ${DOCKER_PUSH_REGISTRY}/${DOCKER_PUSH_NAME}:latest
FROM industrial_ci_image
RUN rm -rf /root/ici /root/src
RUN apt-get update -qq && apt-get install -y -qq --no-install-recommends \
ros-kinetic-rosbash \
&& rm -rf /var/lib/apt/lists/*
COPY ./ros_entrypoint.bash /
ENTRYPOINT ["/ros_entrypoint.bash"]
CMD ["bash"]
#!/bin/bash
set -e
# setup application environment
# shellcheck disable=SC1091
source "/root/target_ws/install/setup.bash"
exec "$@"
ARG APPLICATION_IMAGE
FROM ${APPLICATION_IMAGE}
RUN apt-get update -qq && apt-get install -y -qq --no-install-recommends \
apt-transport-https \
curl \
libasound2 \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg \
&& mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg \
&& sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list'
RUN apt-get update -qq && apt-get install -y -qq --no-install-recommends \
code \
&& rm -rf /var/lib/apt/lists/*
RUN echo "alias code='code --user-data-dir /root'" >> /root/.bashrc
RUN code --user-data-dir /root \
--install-extension ms-iot.vscode-ros \
--install-extension joaompinto.asciidoctor-vscode \
--install-extension ms-python.python \
--install-extension ms-vscode.cpptools \
--install-extension ms-azuretools.vscode-docker \
--install-extension twxs.cmake
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment