slogan3

Maak een aangepaste GitLab CI-pijplijn voor mijn project

description

Met deze prompt kan ik een op maat gemaakte GitLab CI-pijplijn ontvangen die perfect aansluit bij de technologieën en deploymentdoelen van mijn project, waardoor ik builds, tests en deployments effectief kan automatiseren en mijn huidige uitdagingen kan oplossen.

prompt

Help me een GitLab CI-pijplijn te ontwerpen die is afgestemd op mijn projectvereisten. Geef de fasen, taken en scripts die ik moet opnemen voor: < ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een voorstel voor een GitLab CI/CD-pijplijn voor jouw Node.js webapplicatie, met automatische build, testen, en zero-downtime deployment via SSH naar een Linux productie server. **Fasen:** 1. **stages:** defineer de fasen van de pijplijn. 2. **build:** installeer dependencies en bouw de applicatie. 3. **test:** voer tests uit. 4. **deploy:** deploy naar productie met zero downtime. --- **.gitlab-ci.yml voorbeeld:** ```yaml stages: - build - test - deploy variables: SSH_USER: "your_user" SSH_HOST: "your.server.com" SSH_KEY: "$SSH_PRIVATE_KEY" # Zet je private SSH key als CI/CD variabele APP_DIR: "/var/www/yourapp" BACKUP_DIR: "/var/www/yourapp_backup" TEMP_DIR: "/tmp/deploy_temp" before_script: - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )' - eval $(ssh-agent -s) - echo "$SSH_KEY" | tr -d '\r' | ssh-add - build: stage: build image: node:18 script: - npm install - npm run build # indien je build script hebt artifacts: paths: - node_modules/ - dist/ # of de build output directory test: stage: test image: node:18 dependencies: - build script: - npm test deploy: stage: deploy image: alpine:latest dependencies: - build environment: production script: - apk add --no-cache openssh bash - | # Maak backup van huidige app ssh "$SSH_USER@$SSH_HOST" "cp -r $APP_DIR ${BACKUP_DIR}_$(date +%Y%m%d%H%M%S)" - | # Upload nieuwe build naar tijdelijke directory op server scp -r dist/ "$SSH_USER@$SSH_HOST:$TEMP_DIR" - | # Zero-downtime deployment via symlinks ssh "$SSH_USER@$SSH_HOST" bash -c " set -e # Maak nieuwe release directory RELEASE_DIR=\$APP_DIR/releases/\$(date +%Y%m%d%H%M%S) mkdir -p \$RELEASE_DIR # Kopieer bestanden naar release directory cp -r $TEMP_DIR/* \$RELEASE_DIR/ # Update symlink ln -sfn \$RELEASE_DIR $APP_DIR/current # (optioneel) herstart applicatie of server # Bijvoorbeeld: pm2 restart app " - | # Verwijder tijdelijke bestanden ssh "$SSH_USER@$SSH_HOST" "rm -rf $TEMP_DIR" ``` **Uitleg:** - **Build-fase:** installeert dependencies en bouwt de app. - **Test-fase:** voert tests uit op de build. - **Deploy-fase:** - Maakt een backup van de huidige live app. - Uploadt de nieuwe build naar een tijdelijke directory op de server. - Verplaatst de bestanden naar een nieuwe release directory. - Wijzigt de symlink `current` naar de nieuwste release (zero downtime). - (Optioneel) herstart de Node.js applicatie via bijvoorbeeld `pm2`. **Aanpassingen:** - Vervang `your_user`, `your.server.com`, en paden door jouw gegevens. - Zorg dat je SSH-sleutels correct zijn ingesteld in GitLab CI/CD variabelen. - Pas eventueel de deployment scripts aan afhankelijk van jouw setup (bijv. gebruik van pm2, nginx, etc.). Dit schema geeft een solide basis voor een geautomatiseerde, betrouwbare, en zero-downtime deployment van jouw Node.js webapplicatie.
provider: deepseek
model: deepseek-chat
no_answer_for_language
error: Generation failed [deepseek] prompt_id=2064 locale=nl err=DeepSeek connection/timeout | Generation failed [deepseek] prompt_id=2064 locale=en err=DeepSeek connection/timeout | Generation failed [deepseek] prompt_id=2064 locale=de err=DeepSeek connection/timeout | Generation failed [deepseek] prompt_id=2064 locale=fr err=DeepSeek connection/timeout | Generation failed [deepseek] prompt_id=2064 locale=pt err=DeepSeek connection/timeout | Generation failed [deepseek] prompt_id=2064 locale=es err=DeepSeek connection/timeout | Generation failed [deepseek] prompt_id=2064 locale=zh err=DeepSeek connection/timeout