Ի՞նչ ճյուղ եք օգտագործում փոփոխությունները կիրառելու համար զարգացման փորձնական միջավայրում:
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"] # Հաջող տեղադրման հետո
Եթե օգտագործվում են feature ճյուղեր, ապա պլանավորումը կարող է լինել այնպես, որ տեղադրի ժամանակավոր միջավայրեր այդ ճյուղերի փորձարկման համար:
Դինամիկ միջավայրերով օրինակ՝ 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 ճյուղեր՝ կոնկրետ փորձարկման համար: