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"] # Пас аз муваффақона ҷойгиркунӣ

Агар шохҳои хусусият истифода шаванд, пайплайн метавонад танзим шавад, то муҳитҳои муваққатӣ барои санҷиш ҷойгир кунад:

Масалан, бо муҳитҳои динамикӣ дар 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 барои санҷиши махсус истифода шаванд.