Fix drag issue #17
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build and Release | |
| on: | |
| push: | |
| workflow_dispatch: | |
| permissions: | |
| contents: write | |
| jobs: | |
| build-and-release: | |
| runs-on: windows-latest | |
| timeout-minutes: 5 | |
| steps: | |
| - name: 🛎️ Checkout du code | |
| uses: actions/checkout@v4 | |
| - name: 📦 Configuration de NuGet | |
| uses: NuGet/setup-nuget@v3 | |
| - name: 🛠️ Configuration de MSBuild | |
| uses: microsoft/setup-msbuild@v2 | |
| - name: 📥 Restauration des paquets NuGet | |
| run: nuget restore SioForgeCAD.sln | |
| - name: 🏗️ Compilation du projet (Release) | |
| run: msbuild SioForgeCAD\SioForgeCAD.csproj /p:Configuration=Release /p:Platform="AnyCPU" | |
| - name: 🔍 Extraction de la version depuis AssemblyInfo.cs | |
| id: get_version | |
| shell: pwsh | |
| run: | | |
| $content = Get-Content -Raw -Path SioForgeCAD\Properties\AssemblyInfo.cs | |
| # 1. On cherche la ligne AssemblyVersion (en ignorant les lignes commentées) | |
| if ($content -match '(?m)^\s*\[assembly:\s*AssemblyVersion\("([^"]+)"\)\]') { | |
| $fullVersion = $matches[1] | |
| # 2. On tronque pour ne garder que les 3 premiers nombres (ex: 2026.4.7) | |
| if ($fullVersion -match '^(\d+\.\d+\.\d+)') { | |
| $shortVersion = $matches[1] | |
| } else { | |
| # Sécurité au cas où la version n'aurait que 2 chiffres (ex: 1.0) | |
| $shortVersion = $fullVersion | |
| } | |
| Write-Output "Version complète trouvée : $fullVersion" | |
| Write-Output "Version tronquée utilisée : $shortVersion" | |
| # 3. Export vers les outputs de l'étape | |
| Write-Output "VERSION=$shortVersion" >> $env:GITHUB_OUTPUT | |
| } else { | |
| Write-Error "Impossible de trouver la version dans AssemblyInfo.cs" | |
| exit 1 | |
| } | |
| - name: 🗜️ Création de l'archive ZIP (Livrable) | |
| shell: pwsh | |
| run: | | |
| Compress-Archive -Path SioForgeCAD\bin\Release\* -DestinationPath SioForgeCAD_v${{ steps.get_version.outputs.VERSION }}.zip | |
| - name: 🚀 Create or update GitHub Release | |
| shell: bash | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| TAG="v${{ steps.get_version.outputs.VERSION }}" | |
| echo "Using tag: $TAG" | |
| # Recherche du fichier .zip à la racine du projet | |
| # On utilise ls et on récupère le nom du fichier généré | |
| FILES=$(ls SioForgeCAD_v*.zip 2>/dev/null || true) | |
| # Nettoyage des espaces potentiels | |
| FILES=$(echo $FILES | xargs) | |
| if [ -z "$FILES" ]; then | |
| echo "❌ Aucun fichier .zip trouvé !" | |
| exit 1 | |
| fi | |
| echo "✅ Fichier trouvé : $FILES" | |
| # Vérifie si la release existe déjà | |
| if gh release view "$TAG" >/dev/null 2>&1; then | |
| echo "La release existe → Upload des assets" | |
| git config user.name "github-actions[bot]" | |
| git config user.email "41898282+github-actions[bot]@users.noreply.github.com" | |
| git tag -fa "$TAG" -m "Mise à jour du tag $TAG" | |
| git push origin -f refs/tags/"$TAG" | |
| # 2. Met à jour le titre et la description | |
| gh release edit "$TAG" --title="$TAG" --notes="Release SioForgeCAD version ${{ steps.get_version.outputs.VERSION }}." | |
| # 3. Upload et écrase l'ancien fichier .zip | |
| gh release upload "$TAG" $FILES --clobber | |
| else | |
| echo "Création d'une nouvelle release" | |
| gh release create "$TAG" $FILES --title="$TAG" --notes="Release SioForgeCAD version ${{ steps.get_version.outputs.VERSION }}." | |
| fi |