Sobes.tech
Junior

Σε ποιο κλάδο χρησιμοποιείτε για την εφαρμογή αλλαγών στο περιβάλλον δοκιμής ανάπτυξης;

sobes.tech AI

Απάντηση από AI

develop ή ένα εξειδικευμένο κλάδο χαρακτηριστικών/διορθώσεων, ο οποίος στη συνέχεια συγχωνεύεται στο develop.

Επιλογές:

  • develop: Ο κύριος κλάδος ανάπτυξης, στον οποίο ενσωματώνονται όλες οι νέες λειτουργίες και διορθώσεις. Ιδανικός για συνεχή ολοκλήρωση και δοκιμές των τελευταίων αλλαγών.
  • Κλάδοι Feature/Bugfix: Για μεγάλα χαρακτηριστικά ή επείγουσες διορθώσεις, μπορούν να χρησιμοποιηθούν ξεχωριστοί κλάδοι. Μετά την ολοκλήρωση, συγχωνεύονται στο develop. Οι δοκιμές μπορούν να πραγματοποιηθούν είτε μετά τη συγχώνευση στο develop, είτε απευθείας από τον κλάδο, ανάλογα με τη διαδικασία.

Η επιλογή της συγκεκριμένης προσέγγισης εξαρτάται από τη στρατηγική διακλάδωσης που έχει υιοθετήσει η ομάδα (Gitflow, Trunk-Based Development κ.ά.) και τις ρυθμίσεις των CI/CD pipelines. Στις περισσότερες περιπτώσεις, το δοκιμαστικό περιβάλλον αυτόματα αναπτύσσει τις αλλαγές από το develop σε κάθε commit.

Παραδείγματα διαμόρφωσης CI/CD (Jenkins Groovy Script):

// Pipeline που ενεργοποιείται με commit στο branch `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"] # Μετά την επιτυχή ανάπτυξη

Εάν χρησιμοποιούνται κλάδοι χαρακτηριστικών, το 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

Έτσι, για το περιβάλλον ανάπτυξης, συχνά χρησιμοποιείται το branch develop, που διασφαλίζει συνεχείς δοκιμές των τελευταίων αλλαγών. Ανάλογα με τη διαδικασία, μπορούν επίσης να χρησιμοποιούνται κλάδοι χαρακτηριστικών ή διορθώσεων για συγκεκριμένες δοκιμές.