Schrijf een technische handleiding voor het opzetten van een continu integratie- en deploymentproces
description
Met deze prompt kun je een heldere en praktische handleiding maken die ontwikkelteams helpt bij het opzetten van een effectief CI/CD-proces. Dit vermindert handmatige fouten, versnelt releases en verbetert de kwaliteit van softwareleveringen. Het is een aanvulling op bestaande technische documentatie gericht op installatie of integratie, door focus op automatisering en deployment.
prompt
try_prompt
Schrijf een technische handleiding voor het opzetten van een continu integratie- en deploymentproces. Projectnaam: {{projectnaam}}. Gebruikte technologieën: {{gebruikte_technologieen}}. Besc ... more
generate_helper
...
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Technische Handleiding: Opzetten van een Continous Integratie- en Deploymentproces voor het E-commerce Platform
Inleiding
Deze handleiding beschrijft de stappen voor het opzetten van een geautomatiseerd Continuous Integration (CI) en Continuous Deployment (CD) proces voor het E-commerce platform. Gebruikmakend van GitLab CI en Docker, zorgt dit proces voor automatische builds, tests en implementatie naar de productieomgeving. Daarnaast worden procedures voor verwijdering en rollback beschreven.
1. Voorbereiding
a. Repository Instelling
- Zorg dat alle code in een GitLab repository staat.
- Voeg een .gitlab-ci.yml bestand toe in de root van de repository.
b. Docker Setup
- Maak een Dockerfile voor het bouwen van de applicatie.
- Zorg dat de Dockerfile alle benodigde dependencies bevat.
- Publiceer de Docker images naar een Docker registry (bijvoorbeeld GitLab Container Registry).
2. GitLab CI/CD configuratie
a. .gitlab-ci.yml Bestand
Definieer de stages: build, test, deploy.
```yaml
stages:
- build
- test
- deploy
variables:
DOCKER_REGISTRY: registry.gitlab.com/gebruikersnaam/ecommerce-platform
IMAGE_TAG: $CI_COMMIT_SHORT_SHA
build:
stage: build
image: docker:latest
services:
- docker:dind
script:
- docker build -t $DOCKER_REGISTRY:$IMAGE_TAG .
- docker push $DOCKER_REGISTRY:$IMAGE_TAG
only:
- main
test:
stage: test
image: $DOCKER_REGISTRY:$IMAGE_TAG
script:
- ./run_tests.sh
only:
- main
deploy:
stage: deploy
environment: production
image: docker:latest
services:
- docker:dind
script:
- docker pull $DOCKER_REGISTRY:$IMAGE_TAG
- docker stop ecommerce_app || true
- docker rm ecommerce_app || true
- docker run -d --name ecommerce_app -p 80:80 $DOCKER_REGISTRY:$IMAGE_TAG
only:
- main
```
3. Automatisering van builds en tests
a. Build Automatisering
- Bij elke commit op de hoofdtak wordt automatisch een Docker image gebouwd en gepusht.
b. Test Automatisering
- Na de build wordt automatisch de container gestart en worden tests uitgevoerd via een script (`run_tests.sh`).
- Zorg dat dit script alle unit- en integratietests bevat.
4. Deployment naar Productie
a. Deploymentproces
- Na succesvolle tests wordt de nieuwe Docker image automatisch uitgerold naar de productieomgeving.
- Het oude container wordt gestopt en verwijderd voordat de nieuwe wordt gestart.
b. Beveiliging en Toegang
- Beperk deployment rechten tot geautoriseerde gebruikers.
- Gebruik beveiligde variabelen voor registratiesleutels en credentials.
5. Verwijdering en Rollback Procedures
a. Verwijdering
- Verwijder oude Docker images indien nodig met:
```bash
docker image prune
```
b. Rollback
- Om terug te keren naar de vorige versie:
- Identificeer het vorige image met `docker images`.
- Pull het vorige image:
```bash
docker pull registry.gitlab.com/gebruikersnaam/ecommerce-platform:<vorige_tag>
```
- Stop en verwijder de huidige container:
```bash
docker stop ecommerce_app
docker rm ecommerce_app
```
- Start de container met de vorige image:
```bash
docker run -d --name ecommerce_app -p 80:80 registry.gitlab.com/gebruikersnaam/ecommerce-platform:<vorige_tag>
```
6. Extra Aanbevelingen
- Implementeer notificaties voor build- en deploymentstatussen (bijvoorbeeld via Slack).
- Gebruik branch-specifieke workflows voor staging en productie.
- Voeg monitoring en logging toe voor de live omgeving.
Conclusie
Door deze stappen te volgen, ontstaat een robuust en geautomatiseerd CI/CD proces voor het E-commerce platform, met veilige deployment en eenvoudige rollback procedures. Zorg voor regelmatige updates van scripts en documentatie om de betrouwbaarheid te waarborgen.
provider: deepseek
model: deepseek-chat
### Technische Handleiding: CI/CD Pipeline voor E-commerce Platform
**Projectnaam:** E-commerce Platform
**Technologieën:** GitLab CI, Docker
**Doel:** Automatisering van build, test en deploymentprocessen
---
#### 1. Vereisten
- GitLab repository met correcte toegangsrechten
- GitLab Runner geïnstalleerd en geregistreerd
- Docker geïnstalleerd op alle betrokken systemen
- Toegang tot Docker Registry (GitLab Container Registry of extern)
- Productieserver met Docker ondersteuning
---
#### 2. Configuratie GitLab CI/CD
Maak een `.gitlab-ci.yml` bestand in de root van je repository:
```yaml
stages:
- build
- test
- deploy
variables:
DOCKER_IMAGE: registry.gitlab.com/je-gebruikersnaam/ecommerce-platform:$CI_COMMIT_REF_SLUG
build:
stage: build
image: docker:latest
services:
- docker:dind
script:
- docker build -t $DOCKER_IMAGE .
- docker push $DOCKER_IMAGE
only:
- main
- develop
unit_tests:
stage: test
image: node:18 # Pas aan naar jouw runtime
script:
- npm install
- npm run test:unit
artifacts:
reports:
junit: junit.xml
allow_failure: false
deploy_production:
stage: deploy
image: docker:latest
services:
- docker:dind
script:
- docker pull $DOCKER_IMAGE
- docker stop ecommerce-app || true
- docker rm ecommerce-app || true
- docker run -d --name ecommerce-app -p 80:3000 $DOCKER_IMAGE
environment:
name: production
url: https://jouw-domein.nl
only:
- main
```
---
#### 3. Docker Configuratie
**Dockerfile:**
```dockerfile
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
```
**.dockerignore:**
```
node_modules
npm-debug.log
.git
.gitlab-ci.yml
```
---
#### 4. Automatisering Build & Unit Tests
**Build Proces:**
1. Bij elke push naar main/develop branches
2. Docker image wordt gebouwd met versietag
3. Image wordt gepusht naar container registry
**Unit Tests:**
- Worden uitgevoerd in geïsoleerde Node.js omgeving
- Testresultaten worden opgeslagen als artifacts
- Build faalt bij testfalen
---
#### 5. Deployment naar Productie
**Automatische Deployment:**
- Alleen bij succesvolle builds van main branch
- Nieuwe container wordt gepulled van registry
- Oude container wordt gestopt en verwijderd
- Nieuwe container wordt gestart op poort 80
**Handmatige Deployment (optioneel):**
```yaml
deploy_production:
# ... bestaande configuratie ...
when: manual
```
---
#### 6. Rollback Procedures
**Methode 1: Directe rollback via Docker images**
```bash
# Verbind met productieserver
ssh productie-server
# Terug naar vorige versie
docker stop ecommerce-app
docker run -d --name ecommerce-app -p 80:3000 registry.gitlab.com/je-gebruikersnaam/ecommerce-platform:vorige-tag
```
**Methode 2: GitLab CI Rollback Job**
```yaml
rollback_production:
stage: deploy
image: docker:latest
services:
- docker:dind
script:
- docker pull $ROLLBACK_IMAGE
- docker stop ecommerce-app || true
- docker rm ecommerce-app || true
- docker run -d --name ecommerce-app -p 80:3000 $ROLLBACK_IMAGE
variables:
ROLLBACK_IMAGE: "registry.gitlab.com/je-gebruikersnaam/ecommerce-platform:specifieke-tag"
when: manual
```
---
#### 7. Best Practices
**Beveiliging:**
- Gebruik GitLab CI/CD variables voor gevoelige data
- Implementeer Docker image security scanning
- Beperk toegang tot productie-omgeving
**Monitoring:**
- Implementeer health checks in Dockerfile
- Monitor container performance
- Log aggregatie implementeren
**Onderhoud:**
- Regelmatig opruimen oude Docker images
- Update base images voor security patches
- Review CI/CD pipeline configuratie
---
#### 8. Troubleshooting
**Veelvoorkomende problemen:**
1. **Build faalt:** Controleer Dockerfile syntax
2. **Tests falen:** Bekijk junit reports in GitLab
3. **Deployment timeout:** Controleer server connectivity
4. **Rollback issues:** Verifieer beschikbaarheid oude images
**Log inspectie:**
```bash
docker logs ecommerce-app
docker ps -a
```
Deze handleiding biedt een complete basis voor een geautomatiseerd CI/CD proces. Pas de configuratie aan naar jouw specifieke projectvereisten.

