Cette action configure un environnement CLI .NET à utiliser dans les actions par :
Remarque : les exécuteurs hébergés par GitHub ont certaines versions du SDK .NET préinstallées. Les versions installées sont susceptibles de changer. Veuillez vous référer à la documentation : Logiciel installé sur les coureurs hébergés par github pour les versions du SDK .NET actuellement disponibles.
Voir action.yml
Basique :
steps :
- uses : actions/checkout@v4
- uses : actions/setup-dotnet@v4
with :
dotnet-version : ' 3.1.x '
- run : dotnet build <my project>
Attention : Sauf si une version concrète est spécifiée dans le fichier
global.json
, la dernière version .NET installée sur le runner (y compris les versions préinstallées) sera utilisée par défaut . Veuillez vous référer à la documentation pour les versions du SDK .NET actuellement préinstallées.
Installation de plusieurs versions :
steps :
- uses : actions/checkout@v4
- name : Setup dotnet
uses : actions/setup-dotnet@v4
with :
dotnet-version : |
3.1.x
5.0.x
- run : dotnet build <my project>
L'entrée dotnet-version
prend en charge la syntaxe suivante :
3.1
, y compris les versions préliminaires (preview, rc).NET 5.0
. Installe la dernière version de la version spécifique du SDK, y compris les versions préliminaires (preview, rc). dotnet-quality
Cette entrée configure l'action pour installer la dernière version de la qualité spécifiée dans le canal. Les valeurs possibles de dotnet-quality
sont : daily , signé , validé , aperçu , ga .
Remarque : l'entrée
dotnet-quality
ne peut être utilisée qu'avec la version .NET SDK aux formats 'A.B', 'ABx', 'A', 'Ax' et 'ABCxx' où la version majeure est supérieure à 5. Dans les autres cas , les entréesdotnet-quality
seront ignorées.
steps :
- uses : actions/checkout@v4
- uses : actions/setup-dotnet@v4
with :
dotnet-version : ' 6.0.x '
dotnet-quality : ' preview '
- run : dotnet build <my project>
global-json-file
L'action setup-dotnet
peut lire la version du SDK .NET à partir d'un fichier global.json
. L'entrée global-json-file
est utilisée pour spécifier le chemin d'accès au global.json
. Si le fichier fourni à l'entrée global-json-file
n'existe pas, l'action échouera avec une erreur.
Remarque : Si les entrées
dotnet-version
etglobal-json-file
sont utilisées, les versions des deux entrées seront installées.
steps :
- uses : actions/checkout@v4
- uses : actions/setup-dotnet@v4
with :
global-json-file : csharp/global.json
- run : dotnet build <my project>
working-directory : csharp
L'action dispose d'une fonctionnalité intégrée pour la mise en cache et la restauration des dépendances. Il utilise une boîte à outils/un cache sous le capot pour mettre en cache les données des packages globaux, mais nécessite moins de paramètres de configuration. L'entrée cache
est facultative et la mise en cache est désactivée par défaut.
L'action recherche les fichiers NuGet Lock ( packages.lock.json
) dans la racine du référentiel, calcule leur hachage et l'utilise dans le cadre de la clé de cache. Si le fichier de verrouillage n'existe pas, cette action génère une erreur. Utilisez cache-dependency-path
dans les cas où plusieurs fichiers de dépendance sont utilisés ou se trouvent dans des sous-répertoires différents.
Attention : la mise en cache des packages NuGet est disponible depuis .NET SDK 2.1.500 et 2.2.100 car le fichier de verrouillage NuGet n'est disponible que pour NuGet 4.9 et supérieur.
steps :
- uses : actions/checkout@v4
- uses : actions/setup-dotnet@v4
with :
dotnet-version : 6.x
cache : true
- run : dotnet restore --locked-mode
Remarque : Cette action restaurera uniquement le dossier
global-packages
, vous obtiendrez donc probablement l'erreur NU1403 lors de l'exécutiondotnet restore
. Pour éviter cela, vous pouvez utiliser l'optionDisableImplicitNuGetFallbackFolder
.
< PropertyGroup >
< DisableImplicitNuGetFallbackFolder >true</ DisableImplicitNuGetFallbackFolder >
</ PropertyGroup >
Remarque : utilisez la variable d'environnement
NUGET_PACKAGES
si disponible. Certains coureurs d’action disposent déjà d’énormes bibliothèques. (ex. Xamarin)
env :
NUGET_PACKAGES : ${{ github.workspace }}/.nuget/packages
steps :
- uses : actions/checkout@v4
- uses : actions/setup-dotnet@v4
with :
dotnet-version : 6.x
cache : true
- run : dotnet restore --locked-mode
env :
NUGET_PACKAGES : ${{ github.workspace }}/.nuget/packages
steps :
- uses : actions/checkout@v4
- uses : actions/setup-dotnet@v4
with :
dotnet-version : 6.x
cache : true
cache-dependency-path : subdir/packages.lock.json
- run : dotnet restore --locked-mode
En utilisant setup-dotnet
il est possible d'utiliser la syntaxe matricielle pour installer plusieurs versions du SDK .NET :
jobs :
build :
runs-on : ubuntu-latest
strategy :
matrix :
dotnet : [ '2.1.x', '3.1.x', '5.0.x' ]
name : Dotnet ${{ matrix.dotnet }} sample
steps :
- uses : actions/checkout@v4
- name : Setup dotnet
uses : actions/setup-dotnet@v4
with :
dotnet-version : ${{ matrix.dotnet }}
- name : Execute dotnet
run : dotnet build <my project>
Remarque : Sauf si une version concrète est spécifiée dans le fichier
global.json
, la dernière version .NET installée sur le runner (y compris les versions préinstallées) sera utilisée par défaut. Pour contrôler ce comportement, vous souhaiterez peut-être utiliser des fichiersglobal.json
temporaires :
Test matriciel avec création temporaire de global.json
jobs :
build :
runs-on : ubuntu-latest
strategy :
matrix :
dotnet : [ '2.1.x', '3.1.x', '5.0.x' ]
name : Dotnet ${{ matrix.dotnet }} sample
steps :
- uses : actions/checkout@v4
- name : Setup dotnet
uses : actions/setup-dotnet@v4
id : stepid
with :
dotnet-version : ${{ matrix.dotnet }}
- name : Create temporary global.json
run : echo '{"sdk":{"version": "${{ steps.stepid.outputs.dotnet-version }}"}}' > ./global.json
- name : Execute dotnet
run : dotnet build <my project>
steps :
- uses : actions/checkout@v4
- uses : actions/setup-dotnet@v4
with :
dotnet-version : ' 3.1.x '
source-url : https://nuget.pkg.github.com/<owner>/index.json
env :
NUGET_AUTH_TOKEN : ${{secrets.GITHUB_TOKEN}}
- run : dotnet build <my project>
- name : Create the package
run : dotnet pack --configuration Release <my project>
- name : Publish the package to GPR
run : dotnet nuget push <my project>/bin/Release/*.nupkg
- uses : actions/setup-dotnet@v4
with :
source-url : https://pkgs.dev.azure.com/<your-organization>/_packaging/<your-feed-name>/nuget/v3/index.json
env :
NUGET_AUTH_TOKEN : ${{secrets.AZURE_DEVOPS_PAT}} # Note, create a secret with this name in Settings
- name : Publish the package to Azure Artifacts
run : dotnet nuget push <my project>/bin/Release/*.nupkg
- uses : actions/setup-dotnet@v4
with :
dotnet-version : 3.1.x
- name : Publish the package to nuget.org
run : dotnet nuget push */bin/Release/*.nupkg -k $NUGET_AUTH_TOKEN -s https://api.nuget.org/v3/index.json
env :
NUGET_AUTH_TOKEN : ${{ secrets.NUGET_TOKEN }}
Remarque : c'est le seul moyen de transmettre un package vers le flux nuget.org pour les machines macOS/Linux en raison des limitations du magasin de configuration de clé API.
dotnet-version
En utilisant la sortie dotnet-version, il est possible d'obtenir la version installée par l'action .NET SDK.
Installation d'une seule version
Dans le cas d’une installation d’une seule version, la sortie dotnet-version
contient la version installée par l’action.
- uses : actions/setup-dotnet@v4
id : stepid
with :
dotnet-version : 3.1.422
- run : echo '${{ steps.stepid.outputs.dotnet-version }}' # outputs 3.1.422
Installation de plusieurs versions
Dans le cas d'une installation de plusieurs versions, la sortie dotnet-version
contient la dernière version installée par l'action.
- uses : actions/setup-dotnet@v4
id : stepid
with :
dotnet-version : |
3.1.422
5.0.408
- run : echo '${{ steps.stepid.outputs.dotnet-version }}' # outputs 5.0.408
Installation à partir de global.json
Lorsque l'entrée dotnet-version
est utilisée avec l'entrée global-json-file
, la sortie dotnet-version
contient la version résolue à partir de global.json
.
- uses : actions/setup-dotnet@v4
id : stepid
with :
dotnet-version : |
3.1.422
5.0.408
global-json-file : " ./global.json " # contains version 2.2.207
- run : echo '${{ steps.stepid.outputs.dotnet-version }}' # outputs 2.2.207
cache-hit
Une valeur booléenne pour indiquer qu'une correspondance exacte a été trouvée pour la clé de cache (suit les actions/le cache)
Certaines variables d'environnement peuvent être nécessaires pour votre cas particulier ou pour améliorer la journalisation. Quelques exemples sont répertoriés ci-dessous, mais la liste complète avec tous les détails peut être trouvée ici : https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-environment-variables
Variable d'environnement | Description | Valeur par défaut |
---|---|---|
DOTNET_INSTALL_DIR | Spécifie un répertoire dans lequel les SDK .NET doivent être installés par l'action. | valeur par défaut pour chaque système d'exploitation |
DOTNET_NOLOGO | Supprime le logo et le message de télémétrie de la première exécution de dotnet cli | FAUX |
DOTNET_CLI_TELEMETRY_OPTOUT | Désinscription de l'envoi de télémétrie à Microsoft | FAUX |
DOTNET_MULTILEVEL_LOOKUP | Configure si l'emplacement d'installation global est utilisé comme solution de secours | vrai |
NUGET_PACKAGES | Configure un chemin d'accès au dossier NuGet global-packages | valeur par défaut pour chaque système d'exploitation |
Les valeurs par défaut des variables d'environnement DOTNET_INSTALL_DIR
et NUGET_PACKAGES
dépendent du système d'exploitation utilisé sur un exécuteur :
Système d'exploitation | DOTNET_INSTALL_DIR | NUGET_PACKAGES |
---|---|---|
Fenêtres | C:Program Filesdotnet | %userprofile%.nugetpackages |
Ubuntu | /usr/share/dotnet | ~/.nuget/packages |
macOS | /Users/runner/.dotnet | ~/.nuget/packages |
Exemple d'utilisation de la variable d'environnement :
build :
runs-on : ubuntu-latest
env :
DOTNET_INSTALL_DIR : " path/to/directory "
NUGET_PACKAGES : ${{ github.workspace }}/.nuget/packages
steps :
- uses : actions/checkout@main
- uses : actions/setup-dotnet@v4
with :
dotnet-version : ' 3.1.x '
cache : true
Les scripts et la documentation de ce projet sont publiés sous la licence MIT
Les contributions sont les bienvenues ! Voir le Guide du contributeur