GitLab CI/CD Pipeline: Run Script via SSH to remote server

Viewed 1430

Im working on big shared project. I found this lines of code in gitlab-ci.yml and visibly there is no ssh connection to server and the job is running on distinct server.

The server is FinanceDep1.l and the runner that should run the job is tagged pprod for build job. LEt's say that my deploy chain contains 3 jobs , and i want to change the deploy manner to do it via ssh on server FinanceDep1.l, FinanceDep2.l, FinanceDep3.l respectively.

Does anyone knows how it can be possible?

Thank you,

stages:
  - build
  - test
  - deploy

variables:
  CI_IMAGE_COMMIT_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
  DOCKER_API_VERSION: "1.39"

build:
  stage: release
  variables:
    SERVER: FinanceDep1.l
    SSH_OPTS: -p 22 -l pw -o BatchMode=true -o StrictHostKeyChecking=no
  script:
    - docker info
    - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY
    - echo P_IMAGE = \"$CI_IMAGE_COMMIT_TAG\" > version.py
    - mkdir -p config/secrets
    - echo P_PWD = \"$P_PWD\" > config/secrets/passwords.py
    - docker build --pull --tag $CI_IMAGE_COMMIT_TAG .
    - docker push $CI_IMAGE_COMMIT_TAG

  tags:
    - pprod

test:
   stage: test
   variables:
      SERVER: FinanceDep2.l
      SSH_OPTS: -p 22 -l pw -o BatchMode=true -o 
   image:
   name: $CI_IMAGE_COMMIT_TAG
   entrypoint: [""]
   services:
     - name: postgres:10.1-alpine
       alias: source
     - name: postgres:10.1-alpine
       alias: target
   script:
     - echo $DEVELOPMENT_CONFIG > config/secrets/passwords.py
     - export ENV='dev'
     - py.test --cov=src --cov-report xml --junitxml=pytest-report.xml
     - apt-get update -qq
     - apt-get install -qq unzip
     - wget -q https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.3.0.1492-linux.zip
     - unzip -q sonar*.zip
     - printf "sonar.host.url=$SONAR_URL\nsonar.login=$SONAR_LOGIN\n" > ./sonar-scanner*/conf/sonar-scanner.properties
     - ./sonar*/bin/sonar-scanner

  tags:
     - test


deploy-preprod:

  stage: deploy
  script:
    - docker info
    - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY
    - docker pull $CI_IMAGE_COMMIT_TAG
    - docker rm -f P1
    - export hostIpAdresse=$(host $HOSTNAME | awk '{print $NF}')
    - docker run -p 8080:8080 --add-host bdd:$hostIpAdresse --env deploy_date=$current_date --env ENV=preprod --env-file=airflow/setup/setup_airflow_env.list -v /home/gitlab-runner/config/secrets/passwords.py:/opt/P1/config/secrets/passwords.py -v /var/run/docker.sock:/var/run/docker.sock -v /etc/localtime:/etc/localtime -d --name P1 $CI_IMAGE_COMMIT_TAG /bin/bash -c "./script.sh"

  tags:
   - preprod
0 Answers
Related