Skip to main content
added 118 characters in body
Source Link
vak
  • 1.8k
  • 14
  • 18

Unfortunatelly YAML-anchors or GitLab-CI's extends don't seem to allow to combine things in script array of commands as of today.

I use built-in variable CI_COMMIT_REF_NAME in combination with global or job-only before_script to solve similar tasks without repeating myself.

Here is an example of my workaround on how to set environment variable to different values dynamically for PROD and DEV during delivery or deployment:

.provide ssh private deploy key: &provide_ssh_private_deploy_key
  before_script:
    - mkdir -p ~/.ssh
    - chmod 700 ~/.ssh
    - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
    - |
      if [ "$CI_COMMIT_REF_NAME" == "master" ]; then
        echo "$SSH_PRIVATE_DEPLOY_KEY_PROD" > ~/.ssh/id_rsa
        MY_DYNAMIC_VAR="we are in master (PROD)"
      else
        echo "$SSH_PRIVATE_DEPLOY_KEY_DEV" > ~/.ssh/id_rsa
        MY_DYNAMIC_VAR="we are NOT in master (DEV)"
      fi
    - chmod 600 ~/.ssh/id_rsa


deliver-via-ssh:
  stage: deliver
  <<: *provide_ssh_private_deploy_key
  script:
    - echo Stage is deliver
    - echo $MY_DYNAMIC_VAR
    - ssh ...

Also consider this workaround for concatenation of "script" commands: https://stackoverflow.com/a/57209078/470108

hopefully it helps.

Unfortunatelly YAML-anchors or GitLab-CI's extends don't seem to allow to combine things in script array of commands as of today.

I use built-in variable CI_COMMIT_REF_NAME in combination with global or job-only before_script to solve similar tasks without repeating myself.

Here is an example of my workaround on how to set environment variable to different values dynamically for PROD and DEV during delivery or deployment:

.provide ssh private deploy key: &provide_ssh_private_deploy_key
  before_script:
    - mkdir -p ~/.ssh
    - chmod 700 ~/.ssh
    - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
    - |
      if [ "$CI_COMMIT_REF_NAME" == "master" ]; then
        echo "$SSH_PRIVATE_DEPLOY_KEY_PROD" > ~/.ssh/id_rsa
        MY_DYNAMIC_VAR="we are in master (PROD)"
      else
        echo "$SSH_PRIVATE_DEPLOY_KEY_DEV" > ~/.ssh/id_rsa
        MY_DYNAMIC_VAR="we are NOT in master (DEV)"
      fi
    - chmod 600 ~/.ssh/id_rsa


deliver-via-ssh:
  stage: deliver
  <<: *provide_ssh_private_deploy_key
  script:
    - echo Stage is deliver
    - echo $MY_DYNAMIC_VAR
    - ssh ...

hopefully it helps

Unfortunatelly YAML-anchors or GitLab-CI's extends don't seem to allow to combine things in script array of commands as of today.

I use built-in variable CI_COMMIT_REF_NAME in combination with global or job-only before_script to solve similar tasks without repeating myself.

Here is an example of my workaround on how to set environment variable to different values dynamically for PROD and DEV during delivery or deployment:

.provide ssh private deploy key: &provide_ssh_private_deploy_key
  before_script:
    - mkdir -p ~/.ssh
    - chmod 700 ~/.ssh
    - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
    - |
      if [ "$CI_COMMIT_REF_NAME" == "master" ]; then
        echo "$SSH_PRIVATE_DEPLOY_KEY_PROD" > ~/.ssh/id_rsa
        MY_DYNAMIC_VAR="we are in master (PROD)"
      else
        echo "$SSH_PRIVATE_DEPLOY_KEY_DEV" > ~/.ssh/id_rsa
        MY_DYNAMIC_VAR="we are NOT in master (DEV)"
      fi
    - chmod 600 ~/.ssh/id_rsa


deliver-via-ssh:
  stage: deliver
  <<: *provide_ssh_private_deploy_key
  script:
    - echo Stage is deliver
    - echo $MY_DYNAMIC_VAR
    - ssh ...

Also consider this workaround for concatenation of "script" commands: https://stackoverflow.com/a/57209078/470108

hopefully it helps.

added 21 characters in body
Source Link
vak
  • 1.8k
  • 14
  • 18

Unfortunatelly YAML-anchors or GitLab-CI's extends don't seem to allow to combine things in script array of commands as of today.

I use built-in variable CI_COMMIT_REF_NAME in combination with global or job-only before_script to solve similar tasks without repeating myself.

Here is an example of my workaround on how to use differentset environment variablesvariable to different values dynamically for PROD and ENVDEV during delivery or deployment:

.provide ssh private deploy key: &provide_ssh_private_deploy_key
  before_script:
    - mkdir -p ~/.ssh
    - chmod 700 ~/.ssh
    - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
    - |
      if [ "$CI_COMMIT_REF_NAME" == "master" ]; then
        echo "$SSH_PRIVATE_DEPLOY_KEY_PROD" > ~/.ssh/id_rsa
        MY_DYNAMIC_VAR="we are in master (PROD)"
      else
        echo "$SSH_PRIVATE_DEPLOY_KEY_DEV" > ~/.ssh/id_rsa
        MY_DYNAMIC_VAR="we are NOT in master (DEV)"
      fi
    - chmod 600 ~/.ssh/id_rsa


deliver-via-ssh:
  stage: deliver
  <<: *provide_ssh_private_deploy_key
  script:
    - echo Stage is deliver
    - echo $MY_DYNAMIC_VAR
    - ssh ...

hopefully it helps

Unfortunatelly YAML-anchors or GitLab-CI's extends don't seem to allow to combine things in script array of commands as of today.

I use built-in variable CI_COMMIT_REF_NAME in combination with global or job-only before_script to solve similar tasks without repeating myself.

Here is an example of my workaround on how to use different environment variables for PROD and ENV during delivery or deployment:

.provide ssh private deploy key: &provide_ssh_private_deploy_key
  before_script:
    - mkdir -p ~/.ssh
    - chmod 700 ~/.ssh
    - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
    - |
      if [ "$CI_COMMIT_REF_NAME" == "master" ]; then
        echo "$SSH_PRIVATE_DEPLOY_KEY_PROD" > ~/.ssh/id_rsa
        MY_DYNAMIC_VAR="we are in master (PROD)"
      else
        echo "$SSH_PRIVATE_DEPLOY_KEY_DEV" > ~/.ssh/id_rsa
        MY_DYNAMIC_VAR="we are NOT in master (DEV)"
      fi
    - chmod 600 ~/.ssh/id_rsa


deliver-via-ssh:
  stage: deliver
  <<: *provide_ssh_private_deploy_key
  script:
    - echo Stage is deliver
    - echo $MY_DYNAMIC_VAR
    - ssh ...

hopefully it helps

Unfortunatelly YAML-anchors or GitLab-CI's extends don't seem to allow to combine things in script array of commands as of today.

I use built-in variable CI_COMMIT_REF_NAME in combination with global or job-only before_script to solve similar tasks without repeating myself.

Here is an example of my workaround on how to set environment variable to different values dynamically for PROD and DEV during delivery or deployment:

.provide ssh private deploy key: &provide_ssh_private_deploy_key
  before_script:
    - mkdir -p ~/.ssh
    - chmod 700 ~/.ssh
    - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
    - |
      if [ "$CI_COMMIT_REF_NAME" == "master" ]; then
        echo "$SSH_PRIVATE_DEPLOY_KEY_PROD" > ~/.ssh/id_rsa
        MY_DYNAMIC_VAR="we are in master (PROD)"
      else
        echo "$SSH_PRIVATE_DEPLOY_KEY_DEV" > ~/.ssh/id_rsa
        MY_DYNAMIC_VAR="we are NOT in master (DEV)"
      fi
    - chmod 600 ~/.ssh/id_rsa


deliver-via-ssh:
  stage: deliver
  <<: *provide_ssh_private_deploy_key
  script:
    - echo Stage is deliver
    - echo $MY_DYNAMIC_VAR
    - ssh ...

hopefully it helps

edited body
Source Link
vak
  • 1.8k
  • 14
  • 18

Unfortunatelly YAML-anchors or GitLab-CI's extends don't seem to allow to combine things in script array of commands as of today.

I use built-in variable CI_COMMIT_REF_NAME in combination with global or job-only before_script to solve similar tasks without repeating myself.

Here is an example of my workaround on how to use different environment variables for PROD and ENV during delivery or deployment:

.provide ssh private deploy key: &provide_ssh_private_deploy_key
  before_script:
    - mkdir -p ~/.ssh
    - chmod 700 ~/.ssh
    - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
    - |
      if [ "$CI_COMMIT_REF_NAME" == "master" ]; then
        echo "$SSH_PRIVATE_DEPLOY_KEY_PROD" > ~/.ssh/id_rsa
        MY_DYNAMIC_VAR="we are in master (PROD)"
      else
        echo "$SSH_PRIVATE_DEPLOY_KEY_DEV" > ~/.ssh/id_rsa
        MY_DYNAMIC_VAR="we are in NOT in master (DEV)"
      fi
    - chmod 600 ~/.ssh/id_rsa


deliver-via-ssh:
  stage: deliver
  <<: *provide_ssh_private_deploy_key
  script:
    - echo Stage is deliver
    - echo $MY_DYNAMIC_VAR
    - ssh ...

hopefully it helps

Unfortunatelly YAML-anchors or GitLab-CI's extends don't seem to allow to combine things in script array of commands as of today.

I use built-in variable CI_COMMIT_REF_NAME in combination with global or job-only before_script to solve similar tasks without repeating myself.

Here is an example of my workaround on how to use different environment variables for PROD and ENV during delivery or deployment:

.provide ssh private deploy key: &provide_ssh_private_deploy_key
  before_script:
    - mkdir -p ~/.ssh
    - chmod 700 ~/.ssh
    - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
    - |
      if [ "$CI_COMMIT_REF_NAME" == "master" ]; then
        echo "$SSH_PRIVATE_DEPLOY_KEY_PROD" > ~/.ssh/id_rsa
        MY_DYNAMIC_VAR="we are in master (PROD)"
      else
        echo "$SSH_PRIVATE_DEPLOY_KEY_DEV" > ~/.ssh/id_rsa
        MY_DYNAMIC_VAR="we are in NOT master (DEV)"
      fi
    - chmod 600 ~/.ssh/id_rsa


deliver-via-ssh:
  stage: deliver
  <<: *provide_ssh_private_deploy_key
  script:
    - echo Stage is deliver
    - echo $MY_DYNAMIC_VAR
    - ssh ...

hopefully it helps

Unfortunatelly YAML-anchors or GitLab-CI's extends don't seem to allow to combine things in script array of commands as of today.

I use built-in variable CI_COMMIT_REF_NAME in combination with global or job-only before_script to solve similar tasks without repeating myself.

Here is an example of my workaround on how to use different environment variables for PROD and ENV during delivery or deployment:

.provide ssh private deploy key: &provide_ssh_private_deploy_key
  before_script:
    - mkdir -p ~/.ssh
    - chmod 700 ~/.ssh
    - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
    - |
      if [ "$CI_COMMIT_REF_NAME" == "master" ]; then
        echo "$SSH_PRIVATE_DEPLOY_KEY_PROD" > ~/.ssh/id_rsa
        MY_DYNAMIC_VAR="we are in master (PROD)"
      else
        echo "$SSH_PRIVATE_DEPLOY_KEY_DEV" > ~/.ssh/id_rsa
        MY_DYNAMIC_VAR="we are NOT in master (DEV)"
      fi
    - chmod 600 ~/.ssh/id_rsa


deliver-via-ssh:
  stage: deliver
  <<: *provide_ssh_private_deploy_key
  script:
    - echo Stage is deliver
    - echo $MY_DYNAMIC_VAR
    - ssh ...

hopefully it helps

added 143 characters in body
Source Link
vak
  • 1.8k
  • 14
  • 18
Loading
Source Link
vak
  • 1.8k
  • 14
  • 18
Loading