backend/.gitea/workflows/prod.yml
2025-09-12 11:59:35 +02:00

106 lines
2.7 KiB
YAML

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 }}