Коя клонка използвате за прилагане на промени в тестовата среда за разработка?
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 клонове за целенасочено тестване.