mirror of
https://github.com/actions/setup-dotnet.git
synced 2024-11-22 19:41:08 +07:00
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>
This commit is contained in:
parent
0fb87b12d2
commit
f078482971
26
.github/workflows/workflow.yml
vendored
26
.github/workflows/workflow.yml
vendored
@ -163,6 +163,32 @@ jobs:
|
|||||||
shell: pwsh
|
shell: pwsh
|
||||||
run: __tests__/verify-dotnet.ps1 3.1 2.2
|
run: __tests__/verify-dotnet.ps1 3.1 2.2
|
||||||
|
|
||||||
|
test-setup-global-json-specified-and-version:
|
||||||
|
runs-on: ${{ matrix.operating-system }}
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
operating-system: [ubuntu-latest, windows-latest, macOS-latest]
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
- name: Clear toolcache
|
||||||
|
shell: pwsh
|
||||||
|
run: __tests__/clear-toolcache.ps1 ${{ runner.os }}
|
||||||
|
- name: Write global.json
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
mkdir subdirectory
|
||||||
|
echo '{"sdk":{"version": "2.2","rollForward": "latestFeature"}}' > ./subdirectory/global.json
|
||||||
|
- name: Setup dotnet
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
dotnet-version: 3.1
|
||||||
|
global-json-file: ./subdirectory/global.json
|
||||||
|
- name: Verify dotnet
|
||||||
|
shell: pwsh
|
||||||
|
run: __tests__/verify-dotnet.ps1 2.2 3.1
|
||||||
|
|
||||||
test-proxy:
|
test-proxy:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
container:
|
container:
|
||||||
|
10
README.md
10
README.md
@ -51,6 +51,16 @@ steps:
|
|||||||
include-prerelease: true
|
include-prerelease: true
|
||||||
- run: dotnet build <my project>
|
- 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:
|
Matrix Testing:
|
||||||
```yaml
|
```yaml
|
||||||
|
@ -7,6 +7,8 @@ branding:
|
|||||||
inputs:
|
inputs:
|
||||||
dotnet-version:
|
dotnet-version:
|
||||||
description: 'Optional SDK version(s) to use. If not provided, will install global.json version when available. Examples: 2.2.104, 3.1, 3.1.x'
|
description: 'Optional SDK version(s) to use. If not provided, will install global.json version when available. Examples: 2.2.104, 3.1, 3.1.x'
|
||||||
|
global-json-file:
|
||||||
|
description: 'Optional global.json location, if your global.json isn''t located in the root of the repo.'
|
||||||
source-url:
|
source-url:
|
||||||
description: 'Optional package source for which to set up authentication. Will consult any existing NuGet.config in the root of the repo and provide a temporary NuGet.config using the NUGET_AUTH_TOKEN environment variable as a ClearTextPassword'
|
description: 'Optional package source for which to set up authentication. Will consult any existing NuGet.config in the root of the repo and provide a temporary NuGet.config using the NUGET_AUTH_TOKEN environment variable as a ClearTextPassword'
|
||||||
owner:
|
owner:
|
||||||
|
10
dist/index.js
vendored
10
dist/index.js
vendored
@ -9115,11 +9115,21 @@ function run() {
|
|||||||
//
|
//
|
||||||
// dotnet-version is optional, but needs to be provided for most use cases.
|
// dotnet-version is optional, but needs to be provided for most use cases.
|
||||||
// If supplied, install / use from the tool cache.
|
// If supplied, install / use from the tool cache.
|
||||||
|
// global-version-file may be specified to point to a specific global.json
|
||||||
|
// and will be used to install an additional version.
|
||||||
// If not supplied, look for version in ./global.json.
|
// If not supplied, look for version in ./global.json.
|
||||||
// If a valid version still can't be identified, nothing will be installed.
|
// If a valid version still can't be identified, nothing will be installed.
|
||||||
// Proxy, auth, (etc) are still set up, even if no version is identified
|
// Proxy, auth, (etc) are still set up, even if no version is identified
|
||||||
//
|
//
|
||||||
let versions = core.getMultilineInput('dotnet-version');
|
let versions = core.getMultilineInput('dotnet-version');
|
||||||
|
const globalJsonFileInput = core.getInput('global-json-file');
|
||||||
|
if (globalJsonFileInput) {
|
||||||
|
const globalJsonPath = path.join(process.cwd(), globalJsonFileInput);
|
||||||
|
if (!fs.existsSync(globalJsonPath)) {
|
||||||
|
throw new Error(`The specified global.json file '${globalJsonFileInput}' does not exist`);
|
||||||
|
}
|
||||||
|
versions.push(getVersionFromGlobalJson(globalJsonPath));
|
||||||
|
}
|
||||||
if (!versions.length) {
|
if (!versions.length) {
|
||||||
// Try to fall back to global.json
|
// Try to fall back to global.json
|
||||||
core.debug('No version found, trying to find version from global.json');
|
core.debug('No version found, trying to find version from global.json');
|
||||||
|
@ -9,11 +9,25 @@ export async function run() {
|
|||||||
//
|
//
|
||||||
// dotnet-version is optional, but needs to be provided for most use cases.
|
// dotnet-version is optional, but needs to be provided for most use cases.
|
||||||
// If supplied, install / use from the tool cache.
|
// If supplied, install / use from the tool cache.
|
||||||
|
// global-version-file may be specified to point to a specific global.json
|
||||||
|
// and will be used to install an additional version.
|
||||||
// If not supplied, look for version in ./global.json.
|
// If not supplied, look for version in ./global.json.
|
||||||
// If a valid version still can't be identified, nothing will be installed.
|
// If a valid version still can't be identified, nothing will be installed.
|
||||||
// Proxy, auth, (etc) are still set up, even if no version is identified
|
// Proxy, auth, (etc) are still set up, even if no version is identified
|
||||||
//
|
//
|
||||||
let versions = core.getMultilineInput('dotnet-version');
|
let versions = core.getMultilineInput('dotnet-version');
|
||||||
|
|
||||||
|
const globalJsonFileInput = core.getInput('global-json-file');
|
||||||
|
if (globalJsonFileInput) {
|
||||||
|
const globalJsonPath = path.join(process.cwd(), globalJsonFileInput);
|
||||||
|
if (!fs.existsSync(globalJsonPath)) {
|
||||||
|
throw new Error(
|
||||||
|
`The specified global.json file '${globalJsonFileInput}' does not exist`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
versions.push(getVersionFromGlobalJson(globalJsonPath));
|
||||||
|
}
|
||||||
|
|
||||||
if (!versions.length) {
|
if (!versions.length) {
|
||||||
// Try to fall back to global.json
|
// Try to fall back to global.json
|
||||||
core.debug('No version found, trying to find version from global.json');
|
core.debug('No version found, trying to find version from global.json');
|
||||||
|
Loading…
Reference in New Issue
Block a user