Compare commits
2 Commits
updatedNgi
...
Tache3
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2034192e2f | ||
|
|
a168cd1d88 |
95
.gitlab-ci.yml
Normal file
95
.gitlab-ci.yml
Normal file
@@ -0,0 +1,95 @@
|
||||
stages:
|
||||
- check
|
||||
- build
|
||||
- package
|
||||
- deploy
|
||||
|
||||
variables:
|
||||
DOCKER_REGISTRY: "docker.io"
|
||||
DOCKER_USERNAME: "$DOCKERHUB_USER" # c'est dans gitlab Setting -> CI -> Variable
|
||||
DOCKER_PASSWORD: "$DOCKERHUB_TOKEN" # IDEM mais j'ai caché mon token
|
||||
IMAGE_BACKEND: "docker.io/benarbause/doodleback-with-quarkus:latest"
|
||||
IMAGE_FRONTEND: "docker.io/vuminh224/doodle-frontend:latest"
|
||||
APP_REPO: "https://github.com/barais/doodlestudent.git"
|
||||
SUBMODULE_PATH: "doodlestudent"
|
||||
|
||||
check_app_update:
|
||||
stage: check
|
||||
image: debian:latest
|
||||
before_script:
|
||||
- apt-get update && apt-get install -y git
|
||||
script:
|
||||
# Récupère le dernier commit distant
|
||||
- LATEST_REMOTE=$(git ls-remote $APP_REPO HEAD | awk '{print $1}')
|
||||
# Récupère le commit actuel du submodule
|
||||
- CURRENT_SUBMODULE=$(git rev-parse HEAD:$SUBMODULE_PATH || echo "none")
|
||||
# Compare
|
||||
- |
|
||||
if [ "$LATEST_REMOTE" != "$CURRENT_SUBMODULE" ]; then
|
||||
echo "NEW_COMMIT=true" >> variables.env
|
||||
else
|
||||
echo "NEW_COMMIT=false" >> variables.env
|
||||
fi
|
||||
artifacts:
|
||||
reports:
|
||||
dotenv: variables.env
|
||||
|
||||
# Build Frontend (Angular)
|
||||
build_frontend:
|
||||
stage: build
|
||||
image: node:18
|
||||
dependencies:
|
||||
- check_app_update
|
||||
rules:
|
||||
- if: '$NEW_COMMIT == "true"'
|
||||
script:
|
||||
- cd doodlestudent/front
|
||||
- npm ci
|
||||
- npm run build --prod
|
||||
artifacts:
|
||||
paths:
|
||||
- doodlestudent/front/dist/
|
||||
|
||||
|
||||
# Build & Push Docker frontend
|
||||
build_docker_frontend:
|
||||
stage: package
|
||||
image: docker:latest
|
||||
services:
|
||||
- docker:dind
|
||||
dependencies:
|
||||
- build_frontend
|
||||
rules:
|
||||
- if: '$NEW_COMMIT == "true"'
|
||||
script:
|
||||
- echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
|
||||
- docker build -t "$IMAGE_FRONTEND" doodlestudent/front
|
||||
- docker push "$IMAGE_FRONTEND"
|
||||
- docker logout
|
||||
|
||||
# Deploy to Production
|
||||
deploy_production:
|
||||
stage: deploy
|
||||
image: alpine:latest
|
||||
dependencies:
|
||||
- build_docker_frontend
|
||||
rules:
|
||||
- if: '$NEW_COMMIT == "true"'
|
||||
before_script:
|
||||
- apk add --no-cache openssh-client docker-cli
|
||||
- mkdir -p ~/.ssh
|
||||
- chmod 700 ~/.ssh
|
||||
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' > ~/.ssh/id_rsa
|
||||
- chmod 600 ~/.ssh/id_rsa
|
||||
- ssh-keyscan -H "$DEPLOY_SERVER" >> ~/.ssh/known_hosts 2>/dev/null || true
|
||||
script:
|
||||
- |
|
||||
ssh "$DEPLOY_USER@$DEPLOY_SERVER" << 'EOF'
|
||||
cd /app
|
||||
docker compose pull
|
||||
docker compose up -d
|
||||
EOF
|
||||
#environment:
|
||||
#name: production
|
||||
#url: http://127.0.0.1
|
||||
when: manual
|
||||
@@ -15,6 +15,20 @@ server {
|
||||
root /var/www/certbot; # Root directory for Certbot challenges
|
||||
}
|
||||
|
||||
##########################
|
||||
# Grafana
|
||||
##########################
|
||||
location /grafana/ {
|
||||
proxy_pass http://grafana:3000/;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
##########################
|
||||
# API
|
||||
##########################
|
||||
|
||||
Reference in New Issue
Block a user