diff --git a/.github/workflows/ci-merge-request.yml b/.github/workflows/ci-merge-request.yml new file mode 100644 index 00000000..a6ea2e79 --- /dev/null +++ b/.github/workflows/ci-merge-request.yml @@ -0,0 +1,53 @@ +name: CI - Merge Request + +on: + pull_request: + branches: + - main + +jobs: + frontend_ci: + name: Frontend CI + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + + - name: Install frontend dependencies + run: npm install + working-directory: ./frontend + + - name: Build React app + run: npm run build + working-directory: ./frontend + + - name: Run frontend lint + run: npm run lint + working-directory: ./frontend + + + backend_ci: + name: Backend CI + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Setup .NET SDK + uses: actions/setup-dotnet@v4 + with: + dotnet-version: '9.0.x' + + - name: Restore backend dependencies + run: dotnet restore + working-directory: ./backend + + - name: Build backend (Release) + run: dotnet build -c diff --git a/.github/workflows/ci-release.yml b/.github/workflows/ci-release.yml new file mode 100644 index 00000000..01750aa0 --- /dev/null +++ b/.github/workflows/ci-release.yml @@ -0,0 +1,72 @@ +name: CI Release + +# Ce workflow peut être déclenché manuellement pour une release +on: + workflow_dispatch: + +jobs: + # Job Frontend + frontend_release: + name: Frontend Release + runs-on: ubuntu-latest + + steps: + # Récupérer le code du repository + - name: Checkout repository + uses: actions/checkout@v4 + + # Installer Node.js + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + + # Installer les dépendances + - name: Install frontend dependencies + run: npm install + working-directory: ./frontend + + # Build l'application React + - name: Build React app + run: npm run build + working-directory: ./frontend + + # Upload l'artifact frontend pour le CD + - name: Upload frontend artifact + uses: actions/upload-artifact@v3 + with: + name: frontend-build + path: ./frontend/build # Dossier généré par npm run build + + # Job Backend + backend_release: + name: Backend Release + runs-on: ubuntu-latest + + steps: + # Récupérer le code du repository + - name: Checkout repository + uses: actions/checkout@v4 + + # Installer le SDK .NET + - name: Setup .NET SDK + uses: actions/setup-dotnet@v4 + with: + dotnet-version: '9.0.x' + + # Restaurer les dépendances .NET + - name: Restore backend dependencies + run: dotnet restore + working-directory: ./backend + + # Publier le backend (build Release) et créer le dossier publish + - name: Publish backend + run: dotnet publish ./parkndeployDoumi.csproj -c Release -o ./publish + working-directory: ./backend + + # Upload l'artifact backend pour le CD + - name: Upload backend artifact + uses: actions/upload-artifact@v3 + with: + name: backend-build + path: ./backend/publish