Sobes.tech
Junior

Коя клонка използвате за прилагане на промени в тестовата среда за разработка?

sobes.tech AI

Отговор от AI

develop или специализирана клонка за функции/фикси, която след това се слива в develop.

Варианти:

  • develop: Основната клонка за развитие, в която се интегрират всички нови функции и корекции. Идеална за непрекъсната интеграция и тестване на последните промени.
  • Клонове Feature/Bugfix: За големи функции или спешни корекции могат да се използват отделни клонове. След завършване те се сливат в develop. Тестването може да се извършва както след сливане в develop, така и директно от клона, в зависимост от процеса.

Изборът на конкретен подход зависи от стратегията за клонене (Gitflow, Trunk-Based Development и др.) и настройките на CI/CD pipeline-ите. В повечето случаи тестовият контур автоматично деплойва промените от клона develop при всеки комит.

Пример за конфигурация на CI/CD (Jenkins Groovy Script):

// Pipeline, активиращ се при комит в клона `develop`
pipeline {
    agent any
    stages {
        stage('Checkout') {
            steps {
                checkout scm
            }
        }
        stage('Build') {
            steps {
                sh './build.sh' // Сглобяване на приложението
            }
        }
        stage('Deploy to Dev Test') {
            when {
                branch 'develop' // Деплой само от `develop`
            }
            steps {
                sh './deploy_to_dev_test.sh' // Деплой към тестовия контур
            }
        }
        stage('Run Automated Tests') {
            steps {
                // Стартиране на UI/API тестове на тестовия контур
                sh './run_automated_tests.sh'
            }
        }
    }
}

Пример за конфигурация на GitLab CI/CD:

# gitlab-ci.yml
stages:
  - build
  - deploy
  - test

build:
  stage: build
  script:
    - ./build.sh # Сглобяване на приложението

deploy_dev_test:
  stage: deploy
  only:
    - develop # Само от `develop`
  script:
    - ./deploy_to_dev_test.sh # Деплой към тестовия контур

run_automated_tests:
  stage: test
  script:
    - ./run_automated_tests.sh # Стартиране на UI/API тестове
  needs: ["deploy_dev_test"] # След успешен деплой

Ако се използват feature клонове, pipeline-ът може да бъде настроен така, че да деплойва временни среди за тестване на тези клонове:

Пример с динамични среди в GitLab CI/CD:

# gitlab-ci.yml
stages:
  - build
  - deploy
  - test
  - cleanup

build:
  stage: build
  script:
    - ./build.sh

deploy_feature_env:
  stage: deploy
  except:
    - develop # Не деплойва от `develop`
    - main # Не деплойва от `main`
  script:
    - ./deploy_dynamic_env.sh $CI_COMMIT_REF_SLUG # Деплой на временна среда
  environment:
    name: review/$CI_COMMIT_REF_SLUG # Име на динамичната среда
    url: http://$CI_COMMIT_REF_SLUG.test.example.com # URL на средата
    on_stop: cleanup_feature_env

run_feature_tests:
  stage: test
  except:
    - develop
    - main
  script:
    - ./run_tests_on_dynamic_env.sh http://$CI_COMMIT_REF_SLUG.test.example.com

cleanup_feature_env:
  stage: cleanup
  variables:
    GIT_STRATEGY: none
  script:
    - ./cleanup_dynamic_env.sh $CI_COMMIT_REF_SLUG
  environment:
    name: review/$CI_COMMIT_REF_SLUG
    action: stop

По този начин, за тестовата среда за разработка, най-често се използва клонът develop, който осигурява постоянен тест на последните промени. В зависимост от процеса, могат да се използват и feature или bugfix клонове за целенасочено тестване.