From de2f149cf7e7be4d76f945dc6b00b9bd2f9298ef Mon Sep 17 00:00:00 2001 From: Aurince AKAKPO Date: Fri, 5 Dec 2025 18:39:21 +0100 Subject: [PATCH] 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 -- 2.49.1