From de2f149cf7e7be4d76f945dc6b00b9bd2f9298ef Mon Sep 17 00:00:00 2001 From: Aurince AKAKPO Date: Fri, 5 Dec 2025 18:39:21 +0100 Subject: [PATCH 1/2] ajout de ci-cd --- .gitea/workflows/cd-main.yml | 124 ++++++++++++++++++++++++++++++++ .gitea/workflows/ci-develop.yml | 73 +++++++++++++++++++ 2 files changed, 197 insertions(+) create mode 100644 .gitea/workflows/cd-main.yml create mode 100644 .gitea/workflows/ci-develop.yml diff --git a/.gitea/workflows/cd-main.yml b/.gitea/workflows/cd-main.yml new file mode 100644 index 0000000..8f862e9 --- /dev/null +++ b/.gitea/workflows/cd-main.yml @@ -0,0 +1,124 @@ +name: CD - Deploy on main + +on: + pull_request: + branches: + - main + +jobs: + deploy: + runs-on: self-hosted + + steps: + # 1) S'assurer que Node.js est installé + - name: Ensure Node.js is installed + shell: sh + run: | + if command -v node >/dev/null 2>&1; then + echo "Node.js already installed: $(node -v)" + else + echo "Node.js not found, installing..." + apk update && apk add --no-cache nodejs + echo "Node.js installed: $(node -v)" + fi + + # 2) S'assurer que Java & Maven sont installés + - name: Ensure Java & Maven are installed + shell: sh + run: | + if command -v java >/dev/null 2>&1; then + echo "Java already installed:" + java -version + else + echo "Java not found, installing OpenJDK 17..." + apk update && apk add --no-cache openjdk17-jdk + echo "Java installed:" + java -version + fi + + if command -v mvn >/dev/null 2>&1; then + echo "Maven already installed:" + mvn -version + else + echo "Maven not found, installing Maven..." + apk update && apk add --no-cache maven + echo "Maven installed:" + mvn -version + fi + + # 3) Détecter JAVA_HOME dynamiquement et le propager + - name: Detect JAVA_HOME dynamically + shell: sh + run: | + JAVA_BIN=$(readlink -f "$(command -v java)") + JAVA_HOME=$(dirname "$(dirname "$JAVA_BIN")") + echo "Detected JAVA_HOME=$JAVA_HOME" + echo "JAVA_HOME=$JAVA_HOME" >> "$GITHUB_ENV" + + # 4) Checkout du dépôt + - name: Checkout repository + uses: actions/checkout@v4 + + # 5) Afficher quelques infos utiles + - name: Show current commit and tools + shell: sh + run: | + echo "Current commit:" + git rev-parse HEAD + echo "JAVA_HOME is: $JAVA_HOME" + java -version + mvn -version + + # 6) S'assurer que le client Docker + docker-compose sont installés + - name: Ensure Docker CLI is installed + shell: sh + run: | + if command -v docker >/dev/null 2>&1; then + echo "Docker CLI already installed:" + docker version || true + else + echo "Docker CLI not found, installing..." + apk update && apk add --no-cache docker docker-compose + echo "Docker CLI installed:" + docker version || true + fi + + # 7) Générer le .env utilisé par docker-compose-prod.yml + - name: Generate .env from Gitea secrets + shell: sh + run: | + cat > .env </dev/null || true + + # Puis on déploie avec un nom de projet fixe + docker-compose -f docker-compose-prod.yml pull || true + docker-compose -f docker-compose-prod.yml down --remove-orphans + docker-compose -f docker-compose-prod.yml up -d --build + + # 10) Nettoyage des images non utilisées + - name: Cleanup unused images + shell: sh + run: docker image prune -f || true \ No newline at end of file diff --git a/.gitea/workflows/ci-develop.yml b/.gitea/workflows/ci-develop.yml new file mode 100644 index 0000000..95e8aea --- /dev/null +++ b/.gitea/workflows/ci-develop.yml @@ -0,0 +1,73 @@ +name: CI - Build & Test (develop) + +on: + pull_request: + branches: + - develop + +jobs: + build-and-test: + runs-on: self-hosted + + steps: + # 1) S'assurer que Node.js est installé (utile pour les actions JS comme actions/checkout) + - name: Ensure Node.js is installed + shell: sh + run: | + if command -v node >/dev/null 2>&1; then + echo "Node.js already installed: $(node -v)" + else + echo "Node.js not found, installing..." + apk update && apk add --no-cache nodejs + echo "Node.js installed: $(node -v)" + fi + + # 2) S'assurer que Java + Maven sont installés + - name: Ensure Java & Maven are installed + shell: sh + run: | + if command -v java >/dev/null 2>&1; then + echo "Java already installed:" + java -version + else + echo "Java not found, installing OpenJDK 17..." + apk update && apk add --no-cache openjdk17-jdk + echo "Java installed:" + java -version + fi + + if command -v mvn >/dev/null 2>&1; then + echo "Maven already installed:" + mvn -version + else + echo "Maven not found, installing Maven..." + apk update && apk add --no-cache maven + echo "Maven installed:" + mvn -version + fi + + # 3) Détecter automatiquement JAVA_HOME et le propager au reste du job + - name: Detect JAVA_HOME dynamically + shell: sh + run: | + JAVA_BIN=$(readlink -f "$(command -v java)") + JAVA_HOME=$(dirname "$(dirname "$JAVA_BIN")") + echo "Detected JAVA_HOME=$JAVA_HOME" + echo "JAVA_HOME=$JAVA_HOME" >> "$GITHUB_ENV" + + # 4) Checkout du dépôt (Node est déjà garanti à ce stade) + - name: Checkout repository + uses: actions/checkout@v4 + + # 5) Vérification des versions (pour les logs) + - name: Show Java & Maven versions + shell: sh + run: | + echo "JAVA_HOME is: $JAVA_HOME" + java -version + mvn -version + + # 6) Build Maven + - name: Build with Maven + shell: sh + run: mvn -B clean verify \ No newline at end of file From 87615f210b3a33cabd40e61fdaa33847ecec526f Mon Sep 17 00:00:00 2001 From: Aurince AKAKPO Date: Fri, 5 Dec 2025 20:05:52 +0100 Subject: [PATCH 2/2] ajout de ci-cd --- .gitea/workflows/cd-main.yml | 16 ++++--------- docker-compose-prod.yml | 46 ++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 11 deletions(-) create mode 100644 docker-compose-prod.yml diff --git a/.gitea/workflows/cd-main.yml b/.gitea/workflows/cd-main.yml index 8f862e9..6798f10 100644 --- a/.gitea/workflows/cd-main.yml +++ b/.gitea/workflows/cd-main.yml @@ -88,12 +88,9 @@ jobs: shell: sh run: | cat > .env </dev/null || true - + export COMPOSE_PROJECT_NAME=fiscad + # Puis on déploie avec un nom de projet fixe docker-compose -f docker-compose-prod.yml pull || true docker-compose -f docker-compose-prod.yml down --remove-orphans diff --git a/docker-compose-prod.yml b/docker-compose-prod.yml new file mode 100644 index 0000000..23e1406 --- /dev/null +++ b/docker-compose-prod.yml @@ -0,0 +1,46 @@ +version: '3.9' + +services: + + db: + image: postgres:15 + container_name: fiscad-db + restart: always + environment: + POSTGRES_DB: ${POSTGRES_DB_FISCAD} + POSTGRES_USER: ${POSTGRES_USER_FISCAD} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD_FISCAD} + ports: + - "5432:5432" + volumes: + - db-data-fiscad:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER_FISCAD}"] + interval: 10s + timeout: 5s + retries: 5 + + app: + build: + context: . + dockerfile: Dockerfile + container_name: fiscad-app + depends_on: + - db + environment: + SPRING_DATASOURCE_URL: jdbc:postgresql://db:5432/${POSTGRES_DB_FISCAD} + SPRING_DATASOURCE_USERNAME: ${POSTGRES_USER_FISCAD} + SPRING_DATASOURCE_PASSWORD: ${POSTGRES_PASSWORD_FISCAD} + SERVER_PORT: 8282 + IO_GMSS_FISCAD_PROFILE: abomey + SPRING_PROFILES_ACTIVE: abomey + ports: + - "8282:8282" + volumes: + - /fiscad/uploads:/app/uploads + - /fiscad/jasperReport:/app/jasperReport + - /fiscad/logs:/app/logs + restart: on-failure + +volumes: + db-data-fiscad: \ No newline at end of file