24 juli 2023
|Als software-ontwikkelaar is het belangrijk om een gestroomlijnde workflow te hebben bij het werken aan een project met meerdere teamleden. Een van de manieren om dit te bereiken is door middel van feature branching. In deze blog bespreken we de best practices en voordelen van feature branching.
Wat is Feature Branching?
Feature branching is een ontwikkelingsmethode waarbij elk teamlid een eigen afgezonderde tak (branch) maakt van de main branch om aan nieuwe features te werken. Het teamlid werkt vervolgens in zijn of haar branch tot de nieuwe feature of verbetering klaar is om te worden gemerged met de main branch.
Best practices:
Feature branching in een CI/CD-pipeline
Een CI/CD-pipeline is een geautomatiseerd proces dat ontwikkelingsteams helpt hun code wijzigingen snel en betrouwbaar te bouwen, testen en implementeren. Bij het implementeren van feature branching in een CI/CD-pipeline, moet de pipeline de branching strategie weerspiegelen door stages te hebben voor het bouwen, testen en implementeren van wijzigingen naar verschillende omgevingen.
Laten we eens kijken naar een voorbeeldpipeline die feature branching gebruikt:
# .gitlab-ci.yml
stages:
- build
- test
- deploy_dev
- deploy_test
- deploy_acceptance
- deploy_production
# Define the jobs for each stage
build:
stage: build
script:
- echo "Building…"
test:
stage: test
script:
- echo "Running tests"
deploy_dev:
stage: deploy_dev
script:
- echo "Deploying to the dev environment"
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
deploy_test:
stage: deploy_test
script:
- echo "Deploying to the test environment"
rules:
- if: '$CI_COMMIT_BRANCH == "main"
deploy_acceptance:
stage: deploy_acceptance
script:
- echo "Deploying to the acceptance environment"
rules:
- if: '$CI_COMMIT_BRANCH == "main"
deploy_production:
stage: deploy_production
script:
- echo "Deploying to the production environment"
rules:
- if: '$CI_COMMIT_BRANCH == "main"
Deze GitLab pipeline volgt de feature branching strategie. De pipeline heeft jobs voor build, testen en het deployen naar verschillende omgevingen, namelijk dev, test, acceptance en production. Elke deploy job heeft regels ingesteld die bepalen op welke branch de job moet worden uitgevoerd. De deploy_dev job wordt alleen uitgevoerd wanneer de merge request gericht is op de dev branch. De deploy_test job wordt alleen uitgevoerd als de merge request gericht is op de test branch en zo verder. De deploy_production job wordt alleen uitgevoerd wanneer er een push is gedaan naar de main branch.
Voordelen van feature branching
Uitdagingen rondom feature branching
Wanneer je overweegt hier gebruik van te maken, zijn er ook een aantal zaken waar je rekening mee moet houden:
Wat is ons advies?
Feature branching is een nuttige methode voor software-ontwikkeling die teamleden in staat stelt om efficiënt te werken aan nieuwe functies en verbeteringen zonder de rest van de codebase te beïnvloeden. Deze strategie is wel complex en vergt de nodige kennis van het proces. Hierdoor kan het moeilijker zijn voor beginnende teamleden. Door het volgen van best practices kunnen teams de voordelen van feature branching maximaliseren.
Wil je hier meer over weten? Neem dan contact op met onze collega Gerard!