@@ -15,91 +15,112 @@ permissions:
1515 packages : write
1616
1717jobs :
18+ determine-tag :
19+ if : github.event_name == 'workflow_run'
20+ runs-on : ubuntu-latest
21+ outputs :
22+ tag_name : ${{ steps.get_tag.outputs.tag }}
23+ steps :
24+ - name : Récupérer le dernier tag via l'API GitHub
25+ id : get_tag
26+ run : |
27+ LATEST_TAG=$(gh api repos/${{ github.repository }}/git/matching-refs/tags/v --jq '.[-1].ref' | sed 's|refs/tags/||')
28+ if [[ -z "$LATEST_TAG" ]]; then
29+ echo "Aucun tag trouvé. Arrêt du workflow."
30+ exit 1
31+ fi
32+ echo "tag=$LATEST_TAG" >> "$GITHUB_OUTPUT"
33+ env :
34+ GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
35+
1836 validate-and-release :
37+ needs : determine-tag
1938 runs-on : windows-latest
2039 env :
2140 CARGO_TERM_COLOR : always
2241 RUSTFLAGS : -D warnings
42+ # Définition du tag selon l'événement déclencheur
43+ TAG_NAME : ${{ github.event_name == 'push' && github.ref_name || needs.determine-tag.outputs.tag_name }}
2344
2445 steps :
25- - name : Checkout repository
46+ - name : Récupérer le code du dépôt
2647 uses : actions/checkout@v4
2748
28- - name : Cache Cargo Registry
49+ - name : Mise en cache du Cargo Registry
2950 uses : actions/cache@v3
3051 with :
3152 path : ~/.cargo/registry
3253 key : ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
3354 restore-keys : ${{ runner.os }}-cargo-registry-
3455
35- - name : Cache Cargo Git Index
56+ - name : Mise en cache du Cargo Git Index
3657 uses : actions/cache@v3
3758 with :
3859 path : ~/.cargo/git
3960 key : ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }}
4061 restore-keys : ${{ runner.os }}-cargo-index-
4162
42- - name : Install Rust
63+ - name : Installer Rust
4364 shell : pwsh
4465 run : rustup update stable && rustup default stable
4566
46- - name : Install PSSemVer
67+ - name : Installer PSSemVer
4768 shell : pwsh
4869 run : |
4970 try {
5071 Import-Module -Name PSSemVer -ErrorAction Stop
5172 } catch {
52- Write-Host "Installing PSSemVer module..."
73+ Write-Host "Installation du module PSSemVer ..."
5374 Install-Module -Name PSSemVer -Scope CurrentUser -Force -ErrorAction Stop
5475 Import-Module -Name PSSemVer -ErrorAction Stop
5576 }
5677
57- - name : Validate Tag with PSSemVer
78+ - name : Valider le tag avec PSSemVer
5879 id : validate
5980 shell : pwsh
6081 run : |
61- # Récupère le nom du tag en supprimant le préfixe "v"
62- $tagName = "${{ github.ref_name }}"
82+ # Récupérer le nom du tag en supprimant le préfixe "v"
83+ $tagName = "${{ env.TAG_NAME }}"
6384 Import-Module -Name PSSemVer -ErrorAction Stop
6485 try {
6586 $rawVersion = $tagName -replace '^v', ''
6687 $Version = [PSSemVer]::Parse($rawVersion)
6788
68- # Forcer le booléen à une chaîne en minuscules
89+ # Convertir le booléen indiquant si la version est prerelease en chaîne en minuscules
6990 $prereleaseValue = ($Version.Prerelease -ne $null).ToString().ToLower()
7091 echo "prerelease=$prereleaseValue" >> $env:GITHUB_ENV
7192
72- # Vérifier que le champ metadata est renseigné pour la version NuGet
73- if (-not [string]::IsNullOrEmpty($Version.metadata )) {
93+ # Vérifier le champ metadata pour la version NuGet
94+ if (-not [string]::IsNullOrEmpty($Version.BuildMetadata )) {
7495 echo "nuget_version=$($Version.BuildMetadata)" >> $env:GITHUB_ENV
7596 } else {
76- Write-Error "BuildMetadata is empty. Cannot determine NuGet version."
77- exit 1
97+ Write-Host "Aucune métadonnée trouvée dans le tag. Utilisation de la version sans métadonnée pour NuGet ."
98+ echo "nuget_version=$rawVersion" >> $env:GITHUB_ENV
7899 }
79100 } catch {
80- Write-Error "Tag name does not contain a valid semantic version. Current tag : $tagName"
101+ Write-Error "Le nom du tag ne contient pas une version sémantique valide. Tag actuel : $tagName"
81102 exit 1
82103 }
83104 continue-on-error : false
84105
85- - name : Cargo Publish Dry-Run
106+ - name : Exécuter Cargo Publish en mode Dry-Run
86107 run : cargo publish --dry-run
87108
88- - name : Create GitHub Release
109+ - name : Créer une Release GitHub
89110 id : release
90111 uses : softprops/action-gh-release@v2
91112 with :
92- tag_name : ${{ github.ref_name }}
93- name : ${{ env.prerelease == 'true' && 'Prerelease' || 'Release' }} ${{ github.ref_name }}
113+ tag_name : ${{ env.TAG_NAME }}
114+ name : ${{ env.prerelease == 'true' && 'Prerelease' || 'Release' }} ${{ env.TAG_NAME }}
94115 body : |
95- This is a ${{ env.prerelease == 'true' && 'prerelease' || 'release' }} of the crate.
96- You can find the [crate here ](https://crates.io/crates/${{ github.repository }}).
97- This version is a binding for the WSLPluginAPI v${{ env.nuget_version }} available on [NuGet](https://www.nuget.org/packages/Microsoft.WSL.PluginApi/${{ env.nuget_version }}).
116+ Ceci est une ${{ env.prerelease == 'true' && 'prerelease' || 'release' }} de la crate.
117+ Vous pouvez retrouver la [crate ici ](https://crates.io/crates/${{ github.repository }}).
118+ Cette version est un binding pour le WSLPluginAPI v${{ env.nuget_version }} disponible sur [NuGet](https://www.nuget.org/packages/Microsoft.WSL.PluginApi/${{ env.nuget_version }}).
98119 prerelease : ${{ env.prerelease == 'true' }}
99120 env :
100121 GITHUB_TOKEN : ${{ secrets.GH_PAT }}
101122
102- - name : Cargo Publish
123+ - name : Publier sur Cargo
103124 run : cargo publish
104125 env :
105126 CARGO_REGISTRY_TOKEN : ${{ secrets.CARGO_REGISTRY_TOKEN }}
0 commit comments