setup-dotnet/README.md

147 lines
4.6 KiB
Markdown
Raw Normal View History

2019-07-17 14:45:43 +00:00
# setup-dotnet
2019-06-19 20:22:22 +00:00
2019-08-12 19:11:11 +00:00
<p align="left">
<a href="https://github.com/actions/setup-dotnet"><img alt="GitHub Actions status" src="https://github.com/actions/setup-dotnet/workflows/Main%20workflow/badge.svg"></a>
</p>
This action sets up a [.NET CLI](https://github.com/dotnet/sdk) environment for use in actions by:
2019-06-19 20:22:22 +00:00
2019-08-01 20:40:13 +00:00
- optionally downloading and caching a version of dotnet by SDK version and adding to PATH
2019-07-17 14:45:43 +00:00
- registering problem matchers for error output
- setting up authentication to private package sources like GitHub Packages
2019-07-17 14:45:43 +00:00
Please Note: GitHub hosted runners have some versions of the .NET SDK
preinstalled. Installed versions are subject to change. Please refer to the
documentation
[software installed on github hosted runners](https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-software)
for .NET SDK versions that are currently available.
2019-07-17 14:45:43 +00:00
# Usage
See [action.yml](action.yml)
Basic:
```yaml
2019-07-26 01:27:45 +00:00
steps:
2021-05-05 13:45:32 +00:00
- uses: actions/checkout@v2
- uses: actions/setup-dotnet@v1
2019-07-17 14:45:43 +00:00
with:
2020-04-04 17:47:16 +00:00
dotnet-version: '3.1.x' # SDK Version to use; x will use the latest version of the 3.1 channel
2019-07-17 14:45:43 +00:00
- run: dotnet build <my project>
```
2021-05-05 13:45:32 +00:00
Preview version:
```yml
steps:
2021-08-29 12:56:20 +00:00
- uses: actions/checkout@v2
2021-05-05 13:47:58 +00:00
- uses: actions/setup-dotnet@v1
2021-05-05 13:45:32 +00:00
with:
dotnet-version: '6.0.x'
include-prerelease: true
- run: dotnet build <my project>
```
2019-07-17 14:45:43 +00:00
Matrix Testing:
```yaml
jobs:
build:
2020-09-17 19:49:59 +00:00
runs-on: ubuntu-latest
2019-07-17 14:45:43 +00:00
strategy:
matrix:
dotnet: [ '2.1.x', '3.1.x', '5.0.x' ]
2019-07-17 14:45:43 +00:00
name: Dotnet ${{ matrix.dotnet }} sample
2019-07-26 01:27:45 +00:00
steps:
- uses: actions/checkout@v2
2019-07-17 14:45:43 +00:00
- name: Setup dotnet
uses: actions/setup-dotnet@v1
2019-07-17 14:45:43 +00:00
with:
2019-08-13 20:05:52 +00:00
dotnet-version: ${{ matrix.dotnet }}
2019-07-17 14:45:43 +00:00
- run: dotnet build <my project>
```
2019-06-19 20:22:22 +00:00
2020-09-17 19:49:59 +00:00
Side by Side Testing:
```yaml
jobs:
build:
runs-on: ubuntu-latest
name: Dotnet Side by Side testing sample
steps:
- uses: actions/checkout@v2
- name: Setup dotnet
uses: actions/setup-dotnet@v1
with:
dotnet-version: '2.1.x'
2020-09-17 19:49:59 +00:00
- name: Setup dotnet
uses: actions/setup-dotnet@v1
with:
dotnet-version: '3.1.x'
- run: dotnet build <my project>
- run: dotnet test <my project>
```
2019-11-25 23:16:52 +00:00
Authentication for nuget feeds:
2019-09-09 17:27:23 +00:00
```yaml
steps:
- uses: actions/checkout@v2
2019-11-25 23:16:52 +00:00
# Authenticates packages to push to GPR
2019-09-09 17:27:23 +00:00
- uses: actions/setup-dotnet@v1
with:
2020-04-04 17:47:16 +00:00
dotnet-version: '3.1.x' # SDK Version to use.
2019-11-25 23:16:52 +00:00
source-url: https://nuget.pkg.github.com/<owner>/index.json
2019-09-09 17:27:23 +00:00
env:
NUGET_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
- run: dotnet build <my project>
- name: Create the package
run: dotnet pack --configuration Release <my project>
2021-05-05 19:55:59 +00:00
- name: Publish the package to GPR
2019-09-09 17:27:23 +00:00
run: dotnet nuget push <my project>/bin/Release/*.nupkg
2021-05-06 13:10:13 +00:00
# Authenticates packages to push to Azure Artifacts
2019-10-04 01:00:43 +00:00
- uses: actions/setup-dotnet@v1
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
2019-11-25 23:16:52 +00:00
- name: Publish the package to Azure Artifacts
2019-10-04 01:00:43 +00:00
run: dotnet nuget push <my project>/bin/Release/*.nupkg
2021-05-05 19:55:59 +00:00
2021-05-06 13:10:13 +00:00
# Authenticates packages to push to nuget.org.
2021-05-06 14:38:47 +00:00
# It's only the way to push a package to nuget.org feed for macOS/Linux machines due to API key config store limitations.
2021-05-05 19:55:59 +00:00
- uses: actions/setup-dotnet@v1
with:
dotnet-version: 3.1.x
2021-05-06 08:10:43 +00:00
- name: Publish the package to nuget.org
2021-05-05 19:55:59 +00:00
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 }}
2019-10-04 01:00:43 +00:00
```
## Environment Variables to use with dotnet
Some environment variables may be necessary for your particular case or to improve logging. Some examples are listed below, but the full list with complete details can be found here: https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-environment-variables
- DOTNET_NOLOGO - removes logo and telemetry message from first run of dotnet cli (default: false)
- DOTNET_CLI_TELEMETRY_OPTOUT - opt-out of telemetry being sent to Microsoft (default: false)
- DOTNET_MULTILEVEL_LOOKUP - configures whether the global install location is used as a fall-back (default: true)
Example usage:
```yaml
2020-06-01 15:53:23 +00:00
build:
runs-on: ubuntu-latest
env:
DOTNET_NOLOGO: true
2020-06-01 15:53:23 +00:00
steps:
2020-07-15 17:00:26 +00:00
- uses: actions/checkout@main
2020-06-01 15:53:23 +00:00
- uses: actions/setup-dotnet@v1
with:
dotnet-version: '3.1.x' # SDK Version to use.
```
2019-06-19 20:22:22 +00:00
# License
The scripts and documentation in this project are released under the [MIT License](LICENSE)
# Contributions
Contributions are welcome! See [Contributor's Guide](docs/contributors.md)