Ontwerp GitLab CI-pijplijn voor geautomatiseerde integratietests van feature branches
description
Maakt vroege detectie van integratieproblemen op feature branches mogelijk, verbetert de codekwaliteit en vermindert merge conflicten. Automatiseert testen afgestemd op je branching-strategie en tools, bespaart tijd en zorgt voor consistente validatie vóór het samenvoegen.
prompt
Help me met het ontwerpen van een GitLab CI-pijplijn die automatisch integratietests uitvoert voor feature branches voordat ze worden samengevoegd. Mijn huidige GitLab CI-configuratie: <voer je huidige GitLab CI YAML-configuratie in>. Naamgevingsconventies voor feature branc ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een voorbeeld van een GitLab CI-configuratie die automatisch integratietests uitvoert voor feature branches voordat ze worden samengevoegd. Ik heb rekening gehouden met jouw huidige stages en de genoemde tools en doelen.
```yaml
stages:
- build
- test
# Build-stap (blijft zoals jij hebt)
build_taak:
stage: build
script:
- echo Build
# Test-stap met integratietests voor feature branches
integratietest:
stage: test
only:
- /^feature\/.*$/ # Alleen uitvoeren voor feature branches
variables:
# Stel omgevingsvariabelen in voor jouw testtools indien nodig
POSTMAN_ENV: staging
script:
- echo "Start integratietests voor branch $CI_COMMIT_REF_NAME"
# API integratietests uitvoeren met Postman
- if [ -f tests/postman_collection.json ]; then \
echo "Uitvoeren Postman tests"; \
newman run tests/postman_collection.json --environment tests/environments/staging.postman_environment.json; \
fi
# Selenium tests uitvoeren
- echo "Start Selenium tests"
# Dit kan variëren afhankelijk van jouw setup, bijvoorbeeld:
# - Start Selenium server
# - Run tests met bijvoorbeeld pytest of een ander framework
- if [ -d tests/selenium ]; then \
echo "Run Selenium tests"; \
# Voorbeeld: python3 tests/selenium/run_tests.py; \
fi
artifacts:
when: always
reports:
junit: tests/results/junit.xml # Als je JUnit rapporten genereert
paths:
- tests/results/
```
**Uitleg:**
- De `only`-regel zorgt dat de integratietests alleen worden uitgevoerd voor feature branches (`feature/*`).
- De scriptsectie voert API integratietests uit met Postman (via Newman) en Selenium tests.
- Je kunt verdere configuratie toevoegen afhankelijk van je testframeworks en infrastructuur.
- Artifacts worden opgeslagen voor rapportages en debugging.
**Aanvullende tips:**
- Zorg dat je testtools (Postman, Selenium) correct geïnstalleerd en geconfigureerd zijn in je CI-omgeving.
- Voeg eventueel een `before_script` toe voor installatie van dependencies.
- Overweeg om testresultaten automatisch te rapporteren via GitLab's test rapportagesysteem.
Wil je dat ik een meer gedetailleerde configuratie maak, bijvoorbeeld met installatie-instructies of integratie met een test framework?
provider: deepseek
model: deepseek-chat
Hier is een aangepaste GitLab CI-configuratie voor automatische integratietests op feature branches:
```yaml
stages:
- build
- test
- integration-test
build_taak:
stage: build
script:
- echo "Building application"
only:
- branches
test_taak:
stage: test
script:
- echo "Running unit tests"
only:
- branches
api_integration_tests:
stage: integration-test
script:
- echo "Running API integration tests with Postman"
- |
# Voorbeeld Postman commando
# newman run api-tests.json -e staging-environment.json
# Zorg dat Postman/newman geïnstalleerd is in je Docker image
only:
- branches
except:
- main
- master
variables:
ENVIRONMENT: "staging"
ui_integration_tests:
stage: integration-test
script:
- echo "Running UI integration tests with Selenium"
- |
# Voorbeeld Selenium commando
# python run_selenium_tests.py
# Zorg dat Selenium en browsers geïnstalleerd zijn
only:
- branches
except:
- main
- master
variables:
ENVIRONMENT: "staging"
artifacts:
when: always
paths:
- test-reports/
reports:
junit: test-reports/junit.xml
# Optioneel: Specifieke regels voor feature branches
.feature_rules: &feature_rules
only:
refs:
- branches
variables:
- $CI_COMMIT_REF_NAME =~ /^feature\/.*/
# Gebruik de regels in je jobs
api_integration_tests:
<<: *feature_rules
# ... rest van de configuratie
ui_integration_tests:
<<: *feature_rules
# ... rest van de configuratie
```
**Belangrijke aanpassingen:**
1. **Nieuwe stage**: `integration-test` toegevoegd
2. **Branch filtering**: Tests worden alleen uitgevoerd op branches, niet op main/master
3. **Postman integratie**: API tests voor staging environment
4. **Selenium configuratie**: UI integration tests met rapportage
5. **Feature branch patroon**: Gebruikt `feature/*` naamgevingsconventie
**Aanvullende aanbevelingen:**
1. **Docker images**: Gebruik geschatte images met pre-installed tools
2. **Test rapportage**: Configureer JUnit XML rapporten voor testresultaten
3. **Environment variables**: Stel staging credentials in via GitLab CI/CD variables
4. **Parallel execution**: Voer API en UI tests parallel uit voor snelheid
De pijplijn wordt nu automatisch geactiveerd voor elke feature branch en blokkeert merging tot alle integratietests slagen.