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

try_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: < ... more
generate_helper
disclaimerOnPageApi image_legal_disclaimer...

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