Sobes.tech
Junior

Ի՞նչ ճյուղ եք օգտագործում փոփոխությունները կիրառելու համար զարգացման փորձնական միջավայրում:

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 ճյուղեր՝ կոնկրետ փորձարկման համար: