Skip to content

modif dockerfile front #269

modif dockerfile front

modif dockerfile front #269

Workflow file for this run

name: CI # Nom de l'action
on: # Déclencheur de l'action
push: # Déclencheur de l'action lors d'un push
branches: [test] # Déclencheur de l'action lors d'un push sur la branche test
env: # Variables d'environnement declarées dans la vm de l'action
DOCKER_HUB_USERNAME: ${{ secrets.DOCKER_HUB_USERNAME }} # les secrets sont des variables d'environnement sous forme de secrets stockées dans le répertoire secrets du repo sur github
DOCKER_HUB_ACCESS_TOKEN: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
DB_USER_PASS: ${{ secrets.DB_USER_PASS }}
REACT_APP_URL_API: ${{ vars.REACT_APP_LOCAL_URL_API }} # les vars sont des variables d'environnement stockées dans le répertoire vars du repo sur github
TARGET_PLATFORM: linux/amd64, linux/arm64
jobs: # Jobs de l'action
Jest-tests: # Job de l'action pour les tests Jest
runs-on: ubuntu-latest # Système d'exploitation de la vm
steps: # Etapes du job
- name: Checkout code # Prendre le code du repot en contexte
uses: actions/checkout@v2 # use permet d'utiliser une action déjà existante (ici checkout@v2)
- name: Use Node.js # Installation de Node.js
uses: actions/setup-node@v2
with: # with permet de passer des paramètres à l'action
node-version: 20
- name: Install front dependencies # Installation des dépendances front
run: | # run permet d'exécuter des commandes dans la vm
cd client
npm ci
- name: Install back dependencies # Installation des dépendances back
run: |
cd server
npm ci
- name: Create rapports directory if not exists # Creation du dossier rapports pour les tests front s'il n'existe pas
run: mkdir -p rapports
working-directory: server # working-directory permet de changer le répertoire de travail
- name: Create rapports directory if not exists # Creation du dossier rapports pour les tests back s'il n'existe pas
run: mkdir -p rapports
working-directory: client
- name: Run back Jest tests # execution des tests Jest du backend
run: |
cd server
npm test
mv ./test-report.html ./back-jest-report.html
- name: Run front Jest tests # execution des tests Jest du frontendD
run: |
cd client
npm test
mv ./test-report.html ./front-jest-report.html
- name: Upload reports # Upload des rapports de tests (les tests tournant sur une vm, les rapports sont uploadés pour consultation car ils ne sont pas accessibles directement sur la vm)
uses: actions/upload-artifact@v3
with:
name: jest reports
path: | # path permet de spécifier le chemin des fichiers à uploader
./client/front-jest-report.html
./server/back-jest-report.html
build-and-push:
needs: [Jest-tests]
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v2
with:
node-version: 20
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
- name: Install front dependencies
run: |
cd client
npm install
- name: Create .env files
run: |
echo "DB_USER_PASS=${{ secrets.DB_USER_PASS }}" > ./server/config/.env
cat ./server/config/.env
echo "REACT_APP_URL_API=${{ secrets.REACT_APP_URL_API_RASPBERRY }}" > ./client/.env
cat ./client/.env
- name: Build front
if: ${{ success() }}
env:
REACT_APP_URL_API: ${{ secrets.REACT_APP_URL_API_RASPBERRY }}
run: |
cd client
npm run build
- name: Build and push front
uses: docker/build-push-action@v2
env:
REACT_APP_URL_API: ${{ secrets.REACT_APP_URL_API_RASPBERRY }}
with:
context: ./client/
file: ./client/Dockerfile
platforms: ${{ env.TARGET_PLATFORM }}
push: true
tags: ${{ secrets.DOCKER_HUB_USERNAME }}/${{ vars.DOCKER_FRONT }}:${{ vars.DOCKER_FRONT_VERSION }}
- name: Build and push back
uses: docker/build-push-action@v2
env:
DB_USER_PASS: ${{ secrets.DB_USER_PASS }}
with:
context: ./server/
file: ./server/Dockerfile
platforms: ${{ env.TARGET_PLATFORM }}
push: true
tags: ${{ secrets.DOCKER_HUB_USERNAME }}/${{ vars.DOCKER_BACK }}:${{ vars.DOCKER_BACK_VERSION }}