Sobes.tech
Junior

Kokį šaką naudojate pakeitimams taikyti kūrimo bandymo aplinkoje?

sobes.tech AI

Atsakymas iš AI

develop arba specializuota funkcijos/bug šakutė, kuri vėliau sujungiama į develop.

Variantai:

  • develop: Pagrindinė vystymo šaka, kurioje integruojamos visos naujos funkcijos ir pataisymai. Idealiai tinka nuolatinei integracijai ir naujausių pakeitimų testavimui.
  • Feature/Bugfix šakos: Didelėms funkcijoms arba skubiems pataisyti gali būti naudojamos atskiros šakos. Baigus darbą, jos sujungiamos į develop. Testavimas gali būti atliekamas tiek po sujungimo į develop, tiek iš pačios šakos, priklausomai nuo proceso.

Konkretaus požiūrio pasirinkimas priklauso nuo komandos taikomos šakų strategijos (Gitflow, Trunk-Based Development ir kt.) ir CI/CD pipeline nustatymų. Daugeliu atvejų, testavimo kontūras automatiškai diegia pakeitimus iš develop šakos kiekvieno commito metu.

CI/CD konfigūracijos pavyzdys (Jenkins Groovy Script):

// Pipeline, veikiantis commit`ui į `develop` šaką
pipeline {
    agent any
    stages {
        stage('Checkout') {
            steps {
                checkout scm
            }
        }
        stage('Build') {
            steps {
                sh './build.sh' // Programos statymas
            }
        }
        stage('Deploy to Dev Test') {
            when {
                branch 'develop' // Diegti tik iš `develop`
            }
            steps {
                sh './deploy_to_dev_test.sh' // Diegimas į testavimo kontūrą
            }
        }
        stage('Run Automated Tests') {
            steps {
                // UI/API testų paleidimas testavimo kontūre
                sh './run_automated_tests.sh'
            }
        }
    }
}

GitLab CI/CD konfigūracijos pavyzdys:

# gitlab-ci.yml
stages:
  - build
  - deploy
  - test

build:
  stage: build
  script:
    - ./build.sh # Programos statymas

deploy_dev_test:
  stage: deploy
  only:
    - develop # Tik iš `develop`
  script:
    - ./deploy_to_dev_test.sh # Diegimas į testavimo kontūrą

run_automated_tests:
  stage: test
  script:
    - ./run_automated_tests.sh # UI/API testų paleidimas
  needs: ["deploy_dev_test"] # Po sėkmingo diegimo

Jei naudojamos feature šakos, pipeline gali būti sukonfigūruotas taip, kad diegtų laikinas aplinkas šakoms testavimui:

GitLab CI/CD su dinamiškomis aplinkomis:

# gitlab-ci.yml
stages:
  - build
  - deploy
  - test
  - cleanup

build:
  stage: build
  script:
    - ./build.sh

deploy_feature_env:
  stage: deploy
  except:
    - develop # Čia ne diegti `develop`
    - main # Čia ne diegti `main`
  script:
    - ./deploy_dynamic_env.sh $CI_COMMIT_REF_SLUG # Laikinos aplinkos diegimas
  environment:
    name: review/$CI_COMMIT_REF_SLUG # Dinaminis aplinkos pavadinimas
    url: http://$CI_COMMIT_REF_SLUG.test.example.com # Aplinkos 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

Taigi, dažniausiai naudojama develop šaka testavimo kontūrui, užtikrinanti nuolatinį naujausių pakeitimų testavimą. Priklausomai nuo proceso, gali būti naudojamos ir feature ar bugfix šakos tiksliniam testavimui.