Esta ação configura um ambiente CLI do .NET para uso em ações:
Observação : os executores hospedados no GitHub têm algumas versões do SDK do .NET pré-instaladas. As versões instaladas estão sujeitas a alterações. Consulte a documentação: Software instalado em executores hospedados no github para versões do .NET SDK que estão disponíveis atualmente.
Veja action.yml
Básico :
steps :
- uses : actions/checkout@v4
- uses : actions/setup-dotnet@v4
with :
dotnet-version : ' 3.1.x '
- run : dotnet build <my project>
Aviso : a menos que uma versão concreta seja especificada no arquivo
global.json
, a versão .NET mais recente instalada no executor (incluindo versões pré-instaladas) será usada por padrão . Consulte a documentação das versões do .NET SDK atualmente pré-instaladas.
Instalação de múltiplas versões :
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>
A entrada dotnet-version
dá suporte à seguinte sintaxe:
3.1
, incluindo versões de pré-lançamento (preview, rc).NET 5.0
. Instala a versão mais recente da versão específica do SDK, incluindo versões de pré-lançamento (visualização, rc). dotnet-quality
Esta entrada configura a ação para instalar a compilação mais recente da qualidade especificada no canal. Os valores possíveis de dotnet-quality
são: daily , assinado , validado , visualização , ga .
Nota : a entrada
dotnet-quality
pode ser usada apenas com a versão .NET SDK nos formatos 'A.B', 'ABx', 'A', 'Ax' e 'ABCxx' onde a versão principal é superior a 5. Em outros casos , a entradadotnet-quality
será ignorada.
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
A ação setup-dotnet
pode ler a versão do SDK do .NET de um arquivo global.json
. A entrada global-json-file
é usada para especificar o caminho para global.json
. Se o arquivo fornecido para a entrada global-json-file
não existir, a ação falhará com erro.
Nota : Caso sejam usadas entradas
dotnet-version
eglobal-json-file
, as versões de ambas as entradas serão instaladas.
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
A ação possui uma funcionalidade integrada para armazenar em cache e restaurar dependências. Ele usa kit de ferramentas/cache nos bastidores para armazenar dados de pacotes globais em cache, mas requer menos definições de configuração. A entrada cache
é opcional e o cache está desativado por padrão.
A ação procura arquivos NuGet Lock ( packages.lock.json
) na raiz do repositório, calcula seu hash e o usa como parte da chave de cache. Se o arquivo de bloqueio não existir, esta ação gera um erro. Use cache-dependency-path
para casos em que vários arquivos de dependência são usados ou estão localizados em subdiretórios diferentes.
Aviso : o armazenamento em cache de pacotes NuGet está disponível desde o .NET SDK 2.1.500 e 2.2.100, pois o arquivo de bloqueio NuGet está disponível apenas para NuGet 4.9 e superior.
steps :
- uses : actions/checkout@v4
- uses : actions/setup-dotnet@v4
with :
dotnet-version : 6.x
cache : true
- run : dotnet restore --locked-mode
Nota : Esta ação irá restaurar apenas a pasta
global-packages
, então você provavelmente receberá o erro NU1403 ao executardotnet restore
. Para evitar isso, você pode usar a opçãoDisableImplicitNuGetFallbackFolder
.
< PropertyGroup >
< DisableImplicitNuGetFallbackFolder >true</ DisableImplicitNuGetFallbackFolder >
</ PropertyGroup >
Nota : Use a variável de ambiente
NUGET_PACKAGES
, se disponível. Alguns corredores de ação já possuem bibliotecas enormes. (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
Usando setup-dotnet
é possível usar sintaxe de matriz para instalar várias versões do .NET SDK:
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>
Nota : A menos que uma versão concreta seja especificada no arquivo
global.json
, a versão .NET mais recente instalada no executor (incluindo versões pré-instaladas) será usada por padrão. Para controlar esse comportamento, você pode usar arquivosglobal.json
temporários:
Teste de matriz com criação temporária 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 }}
Observação : é a única maneira de enviar um pacote para o feed nuget.org para máquinas macOS/Linux devido às limitações do armazenamento de configuração da chave de API.
dotnet-version
Usando a saída dotnet-version é possível instalar a versão do .NET SDK instalada pela ação.
Instalação de versão única
No caso de instalação de uma única versão, a saída dotnet-version
contém a versão instalada pela ação.
- uses : actions/setup-dotnet@v4
id : stepid
with :
dotnet-version : 3.1.422
- run : echo '${{ steps.stepid.outputs.dotnet-version }}' # outputs 3.1.422
Instalação de múltiplas versões
No caso de uma instalação de diversas versões, a saída dotnet-version
contém a versão mais recente instalada pela ação.
- 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
Instalação de global.json
Quando a entrada dotnet-version
é usada junto com a entrada global-json-file
, a saída dotnet-version
contém a versão resolvida do 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
Um valor booleano para indicar que uma correspondência exata foi encontrada para a chave de cache (segue ações/cache)
Algumas variáveis de ambiente podem ser necessárias para o seu caso específico ou para melhorar o registro. Alguns exemplos estão listados abaixo, mas a lista completa com detalhes completos pode ser encontrada aqui: https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-environment-variables
Variável ambiente | Descrição | Valor padrão |
---|---|---|
DOTNET_INSTALL_DIR | Especifica um diretório onde os SDKs do .NET devem ser instalados pela ação. | valor padrão para cada sistema operacional |
DOTNET_NOLOGO | Remove o logotipo e a mensagem de telemetria da primeira execução do dotnet cli | falso |
DOTNET_CLI_TELEMETRY_OPTOUT | Desativar o envio de telemetria à Microsoft | falso |
DOTNET_MULTILEVEL_LOOKUP | Configura se o local de instalação global é usado como substituto | verdadeiro |
NUGET_PACKAGES | Configura um caminho para a pasta de global-packages do NuGet | valor padrão para cada sistema operacional |
Os valores padrão das variáveis de ambiente DOTNET_INSTALL_DIR
e NUGET_PACKAGES
dependem do sistema operacional usado em um executor:
Sistema operacional | DOTNET_INSTALL_DIR | NUGET_PACKAGES |
---|---|---|
Windows | C:Program Filesdotnet | %userprofile%.nugetpackages |
Ubuntu | /usr/share/dotnet | ~/.nuget/packages |
macOS | /Users/runner/.dotnet | ~/.nuget/packages |
Exemplo de uso de variável de ambiente :
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
Os scripts e documentação deste projeto são lançados sob a licença MIT
Contribuições são bem-vindas! Consulte o Guia do Colaborador