setup-dotnet/README.md
misamoo ebb714cfd8
J (#1)
* YAML Formatting at a example workflow

YAML Format of the code at 'Example usage' with Environment Variables

* Ignore Generated Files in Git PR's

* Use v1 tag for setup-dotnet

* Update install scripts

* Package updates

* Update index file

* Fix generated index

* Honor specified nuget file location (#109)

* Honor specified nuget file location

* Generate and verify nuget.config

* Install sxs with the install-dotnet scripts (#124)

* Use dotnet-install scripts for proper sxs

* Update dotnet version in testing

* Error message cleanup

* SxS testing in the dotnet project

* Update package lock

* Test fixes

* Use proper environment variable

* Set dotnet root for windows

* Add example for SxS testing to Readme

* Bump node-fetch from 2.6.0 to 2.6.1 (#127)

* Bump node-fetch from 2.6.0 to 2.6.1

Bumps [node-fetch](https://github.com/bitinn/node-fetch) from 2.6.0 to 2.6.1.
- [Release notes](https://github.com/bitinn/node-fetch/releases)
- [Changelog](https://github.com/node-fetch/node-fetch/blob/master/docs/CHANGELOG.md)
- [Commits](https://github.com/bitinn/node-fetch/compare/v2.6.0...v2.6.1)

Signed-off-by: dependabot[bot] <support@github.com>

* Package and index update

* Formatting on installer.test

* Updated licenses

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Zachary Eisinger <zeisinger@github.com>

* Action input text update

* DOTNET_ROOT and short generic versions (#131)

* Update `@actions/core` Version and move towards uses environment files to talk to runner (#135)

* update toolkit version

* update licensed

* fix typo

* Update contributors.md

* Bump node-notifier from 8.0.0 to 8.0.1

Bumps [node-notifier](https://github.com/mikaelbr/node-notifier) from 8.0.0 to 8.0.1.
- [Release notes](https://github.com/mikaelbr/node-notifier/releases)
- [Changelog](https://github.com/mikaelbr/node-notifier/blob/v8.0.1/CHANGELOG.md)
- [Commits](https://github.com/mikaelbr/node-notifier/compare/v8.0.0...v8.0.1)

Signed-off-by: dependabot[bot] <support@github.com>

* Add issue and pr templates

* Update installer scripts

* Resolve comments

* Debug

* Minor fix

* Rework feature request template

* Move toolcache cleanup to separated script

* Debug

* Debug

* Debug

* Debug

* Minor fix

* Debug

* Debug

* Debug

* Debug

* Debug

* Debug

* Debug

* Debug

* Debug

* Debug

* Debug

* Minor fix

* Debug

* Debug

* Debug

* Debug

* Debug

* Debug

* Debug

* Add nuget config file

* Debug

* Debug

* Debug

* Debug

* Debug

* Debug

* Debug

* Debug

* Debug

* Debug

* Debug

* Debug

* Debug

* Debug

* Debug

* Minor fixes

* Remove workflow dispatch event

* Minor fix

* Debug

* Debug

* Debug

* Minor fix

* Minor fix

* Minor fix

* Minor fix

* Minor fix

* Minor fix

* Rename stages

* Rework cleanup script

* Set ubuntu-latest

* Minor fixes

* Add tests

* Debug

* Minor fix

* Debug

* Debug

* Debug

* Update installer scripts

* restrict blank issues

* Update Linux installer

* Include include-prerelease input in action.yml

* Implement passing includePrerelase to semver

* Add @actions/virtual-environments-owners to CODEOWNERS file

* try fixing 5.x issue

* work on fixing test

* create release

* add yesy cases

* fix test

* Remove unsupported versions of .NET from README.

.NET Core 2.2 and 3.0 are no longer supported and should not be in the examples.

All versions were changed to pull in the latest revision as people might copy this without
checking all accepted version formats and getting the latest revision is good security practice.

* Bump y18n from 4.0.0 to 4.0.1

Bumps [y18n](https://github.com/yargs/y18n) from 4.0.0 to 4.0.1.
- [Release notes](https://github.com/yargs/y18n/releases)
- [Changelog](https://github.com/yargs/y18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yargs/y18n/commits)

Signed-off-by: dependabot[bot] <support@github.com>

* Update link to pre-installed runner Software

* Improve key names validation for keys from user nuget config

* Improve key names validation for keys from user nuget config

* Minor fix

* Minor fix

* Fix index.js

* Support nuget.config name formats

* Prettier

* Build index.js

* Minor fix

* Minor fix

* Rerun build

* Automate releasing new versions of the setup-dotnet action

* Add workaround to fix BOM-related error  during parsing global.json

* build dist/index.js

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Bump hosted-git-info from 2.8.8 to 2.8.9

Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.8 to 2.8.9.
- [Release notes](https://github.com/npm/hosted-git-info/releases)
- [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md)
- [Commits](https://github.com/npm/hosted-git-info/compare/v2.8.8...v2.8.9)

Signed-off-by: dependabot[bot] <support@github.com>

* Use the "publish-action" action

* Use permissions as a top-level key

* Update installers scripts

* Update description for action

Fixes #209 by adding a few more terms for search discoverability

* Bump ws from 7.3.1 to 7.5.0

Bumps [ws](https://github.com/websockets/ws) from 7.3.1 to 7.5.0.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/7.3.1...7.5.0)

---
updated-dependencies:
- dependency-name: ws
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump lodash from 4.17.20 to 4.17.21

Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21)

Signed-off-by: dependabot[bot] <support@github.com>

* Move toolcache folder

* Rework action description

* Update link to dotnet environment variables docs

Old: https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet#environment-variables
New: https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-environment-variables

* Bump path-parse from 1.0.6 to 1.0.7

Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Support rollForward option from global.json

* Format code

* Revert exports in index.js

* Fix unit test

* Fix unstaged changes in index.js

* Minor fix

* Fix unit test

* Remove hardcoded patch version from unit test

* Prettier

* Improve condition

* Format code

* Add check-dist.yml

* Fix triggers in licensed.yml

* Update installers scripts

* Update README.md

fix docs

* Handle only latestFeature option

* Build index.js

* Update README.md

Fix the README.md file to avoid the .NET CLI repo link that is now the .NET SDK repo.

* Bump tmpl from 1.0.4 to 1.0.5

Bumps [tmpl](https://github.com/daaku/nodejs-tmpl) from 1.0.4 to 1.0.5.
- [Release notes](https://github.com/daaku/nodejs-tmpl/releases)
- [Commits](https://github.com/daaku/nodejs-tmpl/commits/v1.0.5)

---
updated-dependencies:
- dependency-name: tmpl
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Update dependencies

* Update installer scripts

* Update deps with force

* Revert jest version

* Update jest

* Support multiple versions in single invocation  (#240)

* Fix a space in the documentation (#248)

* Warn users when installing EOL .NET versions (#245)

* Fix the Licensed workflow (#258)

* Moved checkout above setup step to align with the other samples (#256)

* Avoiding installing the same version multiple times (#252)

* Updated dotnet-install scripts to latest version

* Update node version to v16

* Update dependencies

* Update licenses

* Update docs to v2 (#278)

* Update docs to v2

* Bump checkout action to v3

* Update installer scripts

* Replace v2 to vX on the docs, minor fixes

* Remove extra whitespace

* switch side by side testing example to single setup step (#283)

* Add code of conduct

* add global-json-file input (#276)

* support specifying global.json location with global-json-file input

* add test workflow jobs for global.json usage

* fix typo in global-json-file description

Co-authored-by: Brian Cristante <33549821+brcrista@users.noreply.github.com>

Co-authored-by: Brian Cristante <33549821+brcrista@users.noreply.github.com>

* Update vulnerable packages

* Update @zeit/ncc to @vercel/ncc (#290)

* update @zeit/ncc to @vercel/ncc

* rebuild project

* v3 adr

* Create codeql-analysis.yml

* Don't need C# analysis for CodeQL

* updated local installation scripts

* updated guide

* chore(deps-dev): migrate husky config to v8

Follow: https://github.com/typicode/husky-4-to-8
- npm install husky --save-dev
- npx husky-init
- npm exec -- github:typicode/husky-4-to-8 --remove-v4-config

* ci: add `--ignore-scripts` argument

* advice on updating installers

* refactor: use core.getBooleanInput()

* chore: set include-prerelease to false on default

* test: add include-prerelease env on test

* rephased docs

* Update docs/contributors.md

Co-authored-by: Ivan <98037481+IvanZosimov@users.noreply.github.com>

* Grammar fixes

* Update ADR date

* Update actions version in package json

* Run update installers

* Rework

* ADR change (#1)

* Update ADR proposal

ADR proposal was updated in order to reflect cahnges that will be done
more thoroughly.

* Fix formatting

* Set status accepted

* Create generator-generic-ossf-slsa3-publish.yml

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: No Name Pro <noname.pro.nn@gmail.com>
Co-authored-by: Zachary Eisinger <zeisinger@github.com>
Co-authored-by: Thomas Boop <thboop@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Thomas Boop <52323235+thboop@users.noreply.github.com>
Co-authored-by: Vladimir Safonkin <vsafonkin@github.com>
Co-authored-by: Maxim Lobanov <maxim-lobanov@github.com>
Co-authored-by: Dmitry Shibanov <dmitry-shibanov@github.com>
Co-authored-by: GGG KILLER <gggkiller2@gmail.com>
Co-authored-by: Andreas Offenhaeuser <anoff@users.noreply.github.com>
Co-authored-by: Alena Sviridenko <alenasviridenko@github.com>
Co-authored-by: MaksimZhukov <v-mazhuk@microsoft.com>
Co-authored-by: Sergey Dolin <v-sedoli@micorosoft.com>
Co-authored-by: Maxim Lobanov <v-malob@microsoft.com>
Co-authored-by: Darii Nurgaleev <50947177+Darleev@users.noreply.github.com>
Co-authored-by: Tim Heuer <tim@timheuer.com>
Co-authored-by: Aleksandr Chebotov <v-aleche@microsoft.com>
Co-authored-by: George Chakhidze <0xfeeddeadbeef@gmail.com>
Co-authored-by: Brian Cristante <33549821+brcrista@users.noreply.github.com>
Co-authored-by: Thomas Pisula <12602834+tomp736@users.noreply.github.com>
Co-authored-by: MaksimZhukov <46996400+MaksimZhukov@users.noreply.github.com>
Co-authored-by: David Pine <david.pine@microsoft.com>
Co-authored-by: La'Kaleigh Harris <35268101+Xlient@users.noreply.github.com>
Co-authored-by: Pure Krome <github@world-domination.com.au>
Co-authored-by: Thomas Ardal <thomasardal@gmail.com>
Co-authored-by: Adam Ralph <adam@adamralph.com>
Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
Co-authored-by: Owen Smith <owen@omsmith.ca>
Co-authored-by: Dmitry Shibanov <shibanov-1997@inbox.ru>
Co-authored-by: Evgenii Korolevskii <e-korolevskii@github.com>
Co-authored-by: Marko Zivic <100996310+marko-zivic-93@users.noreply.github.com>
Co-authored-by: Nogic <24802730+nogic1008@users.noreply.github.com>
Co-authored-by: Evgenii Korolevskii <102794661+e-korolevskii@users.noreply.github.com>
Co-authored-by: Ivan <98037481+IvanZosimov@users.noreply.github.com>
Co-authored-by: panticmilos <panticmilos@github.com>
2022-09-15 09:10:08 +02:00

166 lines
5.0 KiB
Markdown

# setup-dotnet
[![GitHub Actions Status](https://github.com/actions/setup-dotnet/workflows/Main%20workflow/badge.svg)](https://github.com/actions/setup-dotnet)
This action sets up a [.NET CLI](https://github.com/dotnet/sdk) environment for use in actions by:
- optionally downloading and caching a version(s) of dotnet by SDK version(s) and adding to PATH
- registering problem matchers for error output
- setting up authentication to private package sources like GitHub Packages
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.
# Usage
See [action.yml](action.yml)
Basic:
```yaml
steps:
- uses: actions/checkout@v3
- uses: actions/setup-dotnet@v2
with:
dotnet-version: '3.1.x' # SDK Version to use; x will use the latest version of the 3.1 channel
- run: dotnet build <my project>
```
Multiple versions:
> Note: In case multiple versions are installed, the latest .NET version will be used by default unless another version is specified in the `global.json` file.
```yml
steps:
- uses: actions/checkout@v3
- name: Setup dotnet
uses: actions/setup-dotnet@v2
with:
dotnet-version: |
3.1.x
5.0.x
- run: dotnet build <my project>
```
Preview version:
```yml
steps:
- uses: actions/checkout@v3
- uses: actions/setup-dotnet@v2
with:
dotnet-version: '6.0.x'
include-prerelease: true
- run: dotnet build <my project>
```
global.json in a subdirectory:
```yml
steps:
- uses: actions/checkout@v3
- uses: actions/setup-dotnet@v2
with:
global-json-file: csharp/global.json
- run: dotnet build <my project>
working-directory: csharp
```
Matrix Testing:
```yaml
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@v3
- name: Setup dotnet
uses: actions/setup-dotnet@v2
with:
dotnet-version: ${{ matrix.dotnet }}
- run: dotnet build <my project>
```
Side by Side Testing:
```yaml
jobs:
build:
runs-on: ubuntu-latest
name: Dotnet Side by Side testing sample
steps:
- uses: actions/checkout@v3
- name: Setup dotnet
uses: actions/setup-dotnet@v2
with:
dotnet-version: |
2.1.x
3.1.x
- run: dotnet build <my project>
- run: dotnet test <my project>
```
Authentication for nuget feeds:
```yaml
steps:
- uses: actions/checkout@v3
# Authenticates packages to push to GPR
- uses: actions/setup-dotnet@v2
with:
dotnet-version: '3.1.x' # SDK Version to use.
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
# Authenticates packages to push to Azure Artifacts
- uses: actions/setup-dotnet@v2
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
# Authenticates packages to push to nuget.org.
# It's only the way to push a package to nuget.org feed for macOS/Linux machines due to API key config store limitations.
- uses: actions/setup-dotnet@v2
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 }}
```
## 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
build:
runs-on: ubuntu-latest
env:
DOTNET_NOLOGO: true
steps:
- uses: actions/checkout@main
- uses: actions/setup-dotnet@v2
with:
dotnet-version: '3.1.x' # SDK Version to use.
```
# 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)