diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml new file mode 100755 index 0000000..eca6a75 --- /dev/null +++ b/.gitea/workflows/ci.yml @@ -0,0 +1,105 @@ +name: CI/CD Pipeline for Spring Boot + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + build-and-test: + runs-on: ubuntu-latest + + steps: + # Step 1: Checkout code + - name: Checkout Code + uses: actions/checkout@v3 + + # Step 2: Set up JDK + - name: Set up JDK 23 + uses: actions/setup-java@v3 + with: + java-version: 23 + distribution: 'temurin' + + # Step 3: Cache Maven dependencies + - name: Cache Maven Dependencies + uses: actions/cache@v3 + with: + path: ~/.m2 + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven- + + # Step 4: Build and test + - name: Build and Test + run: | + ./mvnw clean verify + + docker: + runs-on: ubuntu-latest + needs: [ build-and-test ] + steps: + - name: Install Docker + run: | + apt-get update + apt-get install -y docker.io + - name: Checkout + uses: actions/checkout@v3 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Download buildx + run: | + mkdir -p ~/.docker/cli-plugins + curl -sL https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-amd64 -o ~/.docker/cli-plugins/docker-buildx + chmod +x ~/.docker/cli-plugins/docker-buildx + + - name: Setup buildx + run: | + docker buildx create --use + docker buildx inspect --bootstrap + + - name: Login to Cloud Coding Registry + uses: docker/login-action@v2 + with: + registry: rg.fr-par.scw.cloud/weworkstudio + username: nologin + password: ${{ secrets.REGISTRY_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@master + with: + context: . + file: ./Dockerfile + push: true + tags: rg.fr-par.scw.cloud/weworkstudio/leblr-backend:preprod + build-args: | + LEBLR_PROFILE=${{ secrets.LEBLR_PROFILE }} + + - name: Cleanup buildx + run: | + docker buildx rm + + - name: Docker cleanup + run: docker system prune -af + + - name: Uninstall Docker + run: | + apt-get purge -y docker.io + apt-get autoremove -y --purge docker.io + rm -rf /var/lib/docker /etc/docker + + deploy_server: + name: Deploy - Docker - serveur + runs-on: ubuntu-latest + needs: [ docker ] + steps: + - name: Checkout repository + uses: actions/checkout@v3 + - name: Déclencher le Webhook + run: | + curl -X POST -H "Content-Type:application/json" -d '{"data": "example" }' ${{ secrets.WEBHOOK_URL }} diff --git a/.gitea/workflows/prod.yml b/.gitea/workflows/prod.yml new file mode 100644 index 0000000..433de9f --- /dev/null +++ b/.gitea/workflows/prod.yml @@ -0,0 +1,105 @@ +name: CI/CD Pipeline for Spring Boot Prod + +on: + push: + branches: + - prod + pull_request: + branches: + - prod + +jobs: + build-and-test: + runs-on: ubuntu-latest + + steps: + # Step 1: Checkout code + - name: Checkout Code + uses: actions/checkout@v3 + + # Step 2: Set up JDK + - name: Set up JDK 23 + uses: actions/setup-java@v3 + with: + java-version: 23 + distribution: 'temurin' + + # Step 3: Cache Maven dependencies + - name: Cache Maven Dependencies + uses: actions/cache@v3 + with: + path: ~/.m2 + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven- + + # Step 4: Build and test + - name: Build and Test + run: | + ./mvnw clean verify + + docker: + runs-on: ubuntu-latest + needs: [ build-and-test ] + steps: + - name: Install Docker + run: | + apt-get update + apt-get install -y docker.io + - name: Checkout + uses: actions/checkout@v3 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Download buildx + run: | + mkdir -p ~/.docker/cli-plugins + curl -sL https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-amd64 -o ~/.docker/cli-plugins/docker-buildx + chmod +x ~/.docker/cli-plugins/docker-buildx + + - name: Setup buildx + run: | + docker buildx create --use + docker buildx inspect --bootstrap + + - name: Login to Cloud Coding Registry + uses: docker/login-action@v2 + with: + registry: rg.fr-par.scw.cloud/weworkstudio + username: nologin + password: ${{ secrets.REGISTRY_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@master + with: + context: . + file: ./Dockerfile + push: true + tags: rg.fr-par.scw.cloud/weworkstudio/leblr-backend:prod + build-args: | + LEBLR_PROFILE=${{ secrets.LEBLR_PROFILE }} + + - name: Cleanup buildx + run: | + docker buildx rm + + - name: Docker cleanup + run: docker system prune -af + + - name: Uninstall Docker + run: | + apt-get purge -y docker.io + apt-get autoremove -y --purge docker.io + rm -rf /var/lib/docker /etc/docker + + deploy_server: + name: Deploy - Docker - serveur + runs-on: ubuntu-latest + needs: [ docker ] + steps: + - name: Checkout repository + uses: actions/checkout@v3 + - name: Déclencher le Webhook + run: | + curl -X POST -H "Content-Type:application/json" -d '{"data": "example" }' ${{ secrets.WEBHOOK_URL_PROD }}