• Gitlab CI. Как задать разные значения переменных для разных веток?

    @goodweather Автор вопроса
    Станислав Макаров,
    image: alpine
    
    # Глобальные переменные для дева
    variables: &global_variables_dev
        ENV_PRIVATE_KEY: $STAGING_PRIVATE_KEY
        PROJECT_HOST: "root@87.250.250.242"
        PROJECT_PATH: "/var/www/siteA"
        SSH_PORT: 22
    
    # Глобальные переменные для продакшена
    variables: &global_variables_prod
        ENV_PRIVATE_KEY: $PRODUCTION_PRIVATE_KEY
        PROJECT_HOST: "root@173.194.222.94"
        PROJECT_PATH: "/var/www/site1"
        SSH_PORT: 22
    
    .prepare_ssh_connection: &prepare_ssh_connection
        - 'which ssh-agent || ( apk update && apk add openssh-client )'
        - eval $(ssh-agent -s)
        - echo "$ENV_PRIVATE_KEY" | ssh-add -
        - mkdir -p ~/.ssh
        - echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts
    
    pull_dev:
        stage: deploy_after
        variables:
            <<: *global_variables
            <<: *global_variables_dev
        only:
            refs:
                - dev
        before_script:
            - *prepare_ssh_connection
        script:
            - ssh -p $SSH_PORT $PROJECT_HOST "cd $PROJECT_PATH/ && git checkout $CI_COMMIT_BRANCH && git pull --force origin $CI_COMMIT_BRANCH"
    
    pull_prod:
        stage: deploy_after
        variables:
            <<: *global_variables
            <<: *global_variables_prod
        only:
            refs:
                - master
        before_script:
            - *prepare_ssh_connection
        script:
            - ssh -p $SSH_PORT $PROJECT_HOST "cd $PROJECT_PATH/ && git checkout $CI_COMMIT_BRANCH && git pull --force origin $CI_COMMIT_BRANCH"


    Это более наглядный пример. pull_prod и pull_dev отличаются веткой и значениями переменных. Моя цель заменить это одной job'ой. С переменными меняющими своё значение в зависимости от ветки.
  • Gitlab CI. Как задать разные значения переменных для разных веток?

    @goodweather Автор вопроса
    Нет, это тестовый ci для поиска решения.

    У меня есть две версии приложения. master и дев. Их job'ы отличаются только веткой и, например, адресом сервера и директорией на этом сервере. Сейчас для каждой ветки у меня отдельные job's, одинаковые по сути. От этого дублирования я пытаюсь избавиться.

    Поясните, пожалуйста, что вы подразумеваете под окружением в данном контексте? В каком направлении копать?
  • Как добавить строки в сниппеты?

    @goodweather Автор вопроса
    Возможно действительно плохо сформулировал, но нужно мне вот это:
    60515353e9591276651913.jpeg

    Я смог такое реализовать в sublime text и vs code, а phpstorm не могу найти как реализовать такой автокомплит