Кай шохаро барои татбиқи тағирот дар муҳити санҷиши рушд истифода мебаред?
sobes.tech AI
Ҷавоб аз AI
develop ё ё ё махсус шохи хусусият/фикр, ки баъд ба develop мерж мешавад.
Вариантҳо:
develop: Шохи асосии рушд, ки дар он ҳама хусусиятҳо ва ислоҳотҳо дохил мешаванд. Барои пайвастаи ҳамгироӣ ва санҷиши тағйиротҳои охирин беҳтарин аст.- Шохи Feature/Bugfix: Барои хусусиятҳои калон ё ислоҳоти фаврӣ, шохи алоҳида истифода мешавад. Пас аз анҷоми кор, онҳо ба
developмерж мешаванд. Санҷиш метавонад ё пас аз мерж баdevelopё мустақиман аз шох, вобаста ба раванд.
Интихоби равиши махсус ба стратегияи шохакорӣ (Gitflow, Trunk-Based Development ва ғайра) ва танзимоти CI/CD пайплайнҳо вобаста аст. Дар аксар ҳолатҳо, муҳити санҷиш автоматӣ тағйиротҳоро аз шохи develop дар ҳар як коммит ҷойгир мекунад.
Масалан, конфигуратсияи CI/CD (Jenkins Groovy Script):
// Пайплайн, ки дар коммит ба шохи `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"] # Пас аз муваффақона ҷойгиркунӣ
Агар шохҳои хусусият истифода шаванд, пайплайн метавонад танзим шавад, то муҳитҳои муваққатӣ барои санҷиш ҷойгир кунад:
Масалан, бо муҳитҳои динамикӣ дар 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 барои санҷиши махсус истифода шаванд.