Sobes.tech
Junior

Koju granu koristite za primenu promena u okruženju za razvoj testova?

sobes.tech АИ

Одговор од АИ

develop или специјализована грана за функције/фиксе, која се затим спаја у develop.

Опције:

  • develop: Главна грана за развој, у коју се интегришу све нове функције и исправке. Идеална за континуирану интеграцију и тестирање најновијих промена.
  • Гране Feature/Bugfix: За велике функције или хитне исправке могу се користити одвојене гране. Након завршетка рада, оне се спајају у develop. Тестирање може бити или након спајања у develop, или директно из гране, у зависности од процеса.

Избор конкретног приступа зависи од стратегије гранања (Gitflow, Trunk-Based Development итд.) и подешавања CI/CD pipeline-ова. У већини случајева, тестни контур аутоматски деплоује промене из гране 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-грана, pipeline може бити подешен тако да деплоује привремена окружења за тестирање тих грана:

Пример са динамичким окружењима у 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 гране за тачно тестирање.