Skip to content

Extraire le contenu du référentiel dans le runner, permettant ainsi a… #40

Extraire le contenu du référentiel dans le runner, permettant ainsi a…

Extraire le contenu du référentiel dans le runner, permettant ainsi a… #40

name: Test Both Frontend and Backend
on: [push]
jobs:
test-frontend:
runs-on: ubuntu-latest
defaults:
run:
working-directory: front
strategy:
matrix:
node-version: [16.x]
steps:
- uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
cache: "npm"
cache-dependency-path: front/package-lock.json
- run: npm ci
- run: npm run test -- --no-watch --no-progress --browsers=ChromeHeadless --code-coverage
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
file: ./front/coverage/bobapp/report-lcovonly.txt
analyze-frontend:
needs: test-frontend
runs-on: ubuntu-latest
defaults:
run:
working-directory: front
steps:
- uses: actions/checkout@v3
- name: Setup Node.js with caching
uses: actions/setup-node@v3
with:
node-version: 16.x
cache: "npm"
cache-dependency-path: front/package-lock.json
- run: npm ci
- name: Ensure coverage directory exists
run: mkdir -p coverage/bobapp
- name: Run tests and generate coverage report
run: npm run test -- --no-watch --no-progress --browsers=ChromeHeadless --code-coverage
- name: List coverage directory
run: ls -la coverage/bobapp
- name: Check if coverage report exists
env:
COVERAGE_REPORT_PATH: ./front/coverage/bobapp/report-lcovonly.txt
run: |
if [ ! -f "$COVERAGE_REPORT_PATH" ]; then
echo "⚠️ Warning: Coverage report not found at $COVERAGE_REPORT_PATH!"
else
echo "Coverage report found at $COVERAGE_REPORT_PATH."
fi
- name: Run Sonar analysis
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }}
run: npm run sonar
test-backend:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Set up JDK 11
uses: actions/setup-java@v3
with:
distribution: "adopt"
java-version: 11
- name: Cache Maven packages
uses: actions/cache@v3
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2
- name: Build with Maven and Run Tests
run: |
cd back
mvn clean install
- name: Test Report
uses: phoenix-actions/test-reporting@v8
if: success() || failure()
with:
name: Maven Tests
path: back/target/surefire-reports/TEST-*.xml
reporter: java-junit
analysis-backend:
needs: test-backend
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
- name: Set up JDK 11
uses: actions/setup-java@v3
with:
distribution: "adopt"
java-version: 11
- name: Cache SonarQube packages
uses: actions/cache@v3
with:
path: ~/.sonar/cache
key: ${{ runner.os }}-sonar
restore-keys: ${{ runner.os }}-sonar
- name: Cache Maven packages
uses: actions/cache@v3
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2
- name: Build and analyze
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }}
run: |
cd back
mvn -B verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar
build-and-push-docker-images:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
# Cette étape permet de se connecter à Docker Hub.
- name: Login to Docker Hub
if: success() # Cette condition s'assure que cette étape est exécutée uniquement si les étapes précédentes ont réussi.
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }} # Utilise le nom d'utilisateur Docker Hub stocké en tant que secret dans GitHub.
password: ${{ secrets.DOCKERHUB_TOKEN }} # Utilise le mot de passe Docker Hub stocké en tant que secret dans GitHub.
# pour débugger, on affiche le contenu du répertoire courant
- name: List directory contents
run: ls -la
# Cette étape construit l'image Docker pour le frontend et la pousse sur Docker Hub.
- name: Build and push frontend Docker image
if: success() # Cette condition s'assure que cette étape est exécutée uniquement si les étapes précédentes ont réussi.
run: |
cd front # Change le répertoire courant pour accéder au dossier 'front'.
docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/bobapp_frontend:latest -f Dockerfile . # Construit l'image Docker en utilisant le Dockerfile dans le dossier 'front'.
docker push ${{ secrets.DOCKERHUB_TOKEN }}/nom_du_depot_frontend:latest # Pousse l'image construite sur Docker Hub.
# Cette étape construit l'image Docker pour le backend et la pousse sur Docker Hub.
- name: Build and push backend Docker image
if: success() # Cette condition s'assure que cette étape est exécutée uniquement si les étapes précédentes ont réussi.
run: |
cd back # Change le répertoire courant pour accéder au dossier 'back'.
docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/bobapp_backend:latest -f Dockerfile . # Construit l'image Docker en utilisant le Dockerfile dans le dossier 'back'.
docker push ${{ secrets.DOCKERHUB_TOKEN }}/nom_du_depot_backend:latest # Pousse l'image construite sur Docker Hub.