Sobes.tech
Junior

Qual ramo você usa para aplicar alterações no ambiente de teste de desenvolvimento?

sobes.tech IA

Resposta da IA

develop ou um ramo especializado de funcionalidades/bugs, que depois é mesclado em develop.

Opções:

  • develop: Ramo principal de desenvolvimento, onde todas as novas funcionalidades e correções são integradas. Ideal para integração contínua e testes das últimas alterações.
  • Ramos de Feature/Bugfix: Para funcionalidades grandes ou correções urgentes, podem ser usados ramos separados. Após a conclusão, eles são mesclados em develop. Os testes no ambiente de teste podem ocorrer tanto após a fusão em develop como diretamente do ramo, dependendo do processo.

A escolha da estratégia específica depende da estratégia de ramificação adotada pela equipa (Gitflow, Trunk-Based Development, etc.) e da configuração dos pipelines CI/CD. Na maioria dos casos, o ambiente de teste faz deploy automaticamente das alterações a partir do ramo develop em cada commit.

Exemplo de configuração CI/CD (Jenkins Groovy Script):

// Pipeline ativado por commit no ramo develop
pipeline {
    agent any
    stages {
        stage('Checkout') {
            steps {
                checkout scm
            }
        }
        stage('Build') {
            steps {
                sh './build.sh' // Construção da aplicação
            }
        }
        stage('Deploy to Dev Test') {
            when {
                branch 'develop' // Apenas deploy de develop
            }
            steps {
                sh './deploy_to_dev_test.sh' // Deploy no ambiente de teste
            }
        }
        stage('Run Automated Tests') {
            steps {
                // Execução de testes UI/API no ambiente de teste
                sh './run_automated_tests.sh'
            }
        }
    }
}

Exemplo de configuração CI/CD (GitLab CI/CD):

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

build:
  stage: build
  script:
    - ./build.sh # Construção da aplicação

deploy_dev_test:
  stage: deploy
  only:
    - develop # Apenas deploy de develop
  script:
    - ./deploy_to_dev_test.sh # Deploy no ambiente de teste

run_automated_tests:
  stage: test
  script:
    - ./run_automated_tests.sh # Execução de testes UI/API
  needs: ["deploy_dev_test"] # Executa após deploy bem-sucedido

No caso de usar ramos de feature, o pipeline pode ser configurado para fazer deploy de ambientes temporários para testes dessas ramos:

Exemplo de GitLab CI/CD com ambientes dinâmicos:

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

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

deploy_feature_env:
  stage: deploy
  except:
    - develop
    - main
  script:
    - ./deploy_dynamic_env.sh $CI_COMMIT_REF_SLUG # Deploy de ambiente temporário
  environment:
    name: review/$CI_COMMIT_REF_SLUG # Nome dinâmico do ambiente
    url: http://$CI_COMMIT_REF_SLUG.test.example.com # URL do ambiente
    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

Assim, para o ambiente de desenvolvimento, geralmente é usada a rama develop, garantindo o teste contínuo das últimas alterações. Dependendo do processo, também podem ser usadas ramas de feature ou bugfix para testes pontuais.