mirror of
				https://github.com/actions/setup-dotnet.git
				synced 2025-10-31 19:33:45 +00:00 
			
		
		
		
	Support global.json's rollForward latest* variants
Co-authored-by: js6pak <me@6pak.dev>
This commit is contained in:
		
							parent
							
								
									b35888cca7
								
							
						
					
					
						commit
						4456588b5e
					
				
							
								
								
									
										100
									
								
								.github/workflows/e2e-tests.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										100
									
								
								.github/workflows/e2e-tests.yml
									
									
									
									
										vendored
									
									
								
							| @ -373,6 +373,106 @@ jobs: | ||||
|         shell: pwsh | ||||
|         run: __tests__/verify-dotnet.ps1 -Patterns "^6.0", "^8.0" | ||||
| 
 | ||||
|   test-setup-global-json-rollforward-latestmajor: | ||||
|     runs-on: ${{ matrix.operating-system }} | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         operating-system: [ubuntu-22.04, windows-latest, macos-13] | ||||
|     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": "3.1.0","rollForward": "latestMajor"}}' > ./subdirectory/global.json | ||||
|       - name: Setup dotnet | ||||
|         uses: ./ | ||||
|         with: | ||||
|           global-json-file: ./subdirectory/global.json | ||||
|       - name: Verify dotnet | ||||
|         shell: pwsh | ||||
|         run: __tests__/verify-dotnet.ps1 -Patterns "^(?!3)" | ||||
| 
 | ||||
|   test-setup-global-json-rollforward-latestminor: | ||||
|     runs-on: ${{ matrix.operating-system }} | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         operating-system: [ubuntu-22.04, windows-latest, macos-13] | ||||
|     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": "3.0.100","rollForward": "latestMinor"}}' > ./subdirectory/global.json | ||||
|       - name: Setup dotnet | ||||
|         uses: ./ | ||||
|         with: | ||||
|           global-json-file: ./subdirectory/global.json | ||||
|       - name: Verify dotnet | ||||
|         shell: pwsh | ||||
|         run: __tests__/verify-dotnet.ps1 -Patterns "^3.1" | ||||
| 
 | ||||
|   test-setup-global-json-rollforward-latestfeature: | ||||
|     runs-on: ${{ matrix.operating-system }} | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         operating-system: [ubuntu-22.04, windows-latest, macos-13] | ||||
|     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": "3.1.100","rollForward": "latestFeature"}}' > ./subdirectory/global.json | ||||
|       - name: Setup dotnet | ||||
|         uses: ./ | ||||
|         with: | ||||
|           global-json-file: ./subdirectory/global.json | ||||
|       - name: Verify dotnet | ||||
|         shell: pwsh | ||||
|         run: __tests__/verify-dotnet.ps1 -Patterns "^3.1.4" | ||||
| 
 | ||||
|   test-setup-global-json-rollforward-latestpatch: | ||||
|     runs-on: ${{ matrix.operating-system }} | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         operating-system: [ubuntu-22.04, windows-latest, macos-13] | ||||
|     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": "5.0.400","rollForward": "latestPatch"}}' > ./subdirectory/global.json | ||||
|       - name: Setup dotnet | ||||
|         uses: ./ | ||||
|         with: | ||||
|           global-json-file: ./subdirectory/global.json | ||||
|       - name: Verify dotnet | ||||
|         shell: pwsh | ||||
|         run: __tests__/verify-dotnet.ps1 -Patterns "^5.0.408$" | ||||
| 
 | ||||
|   test-setup-global-json-only: | ||||
|     runs-on: ${{ matrix.operating-system }} | ||||
|     strategy: | ||||
|  | ||||
							
								
								
									
										20
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							| @ -99758,9 +99758,23 @@ function getVersionFromGlobalJson(globalJsonPath) { | ||||
|     if (globalJson.sdk && globalJson.sdk.version) { | ||||
|         version = globalJson.sdk.version; | ||||
|         const rollForward = globalJson.sdk.rollForward; | ||||
|         if (rollForward && rollForward === 'latestFeature') { | ||||
|             const [major, minor] = version.split('.'); | ||||
|             version = `${major}.${minor}`; | ||||
|         if (rollForward) { | ||||
|             const [major, minor, featurePatch] = version.split('.'); | ||||
|             const feature = featurePatch.substring(0, 1); | ||||
|             switch (rollForward) { | ||||
|                 case 'latestMajor': | ||||
|                     version = ''; | ||||
|                     break; | ||||
|                 case 'latestMinor': | ||||
|                     version = `${major}`; | ||||
|                     break; | ||||
|                 case 'latestFeature': | ||||
|                     version = `${major}.${minor}`; | ||||
|                     break; | ||||
|                 case 'latestPatch': | ||||
|                     version = `${major}.${minor}.${feature}xx`; | ||||
|                     break; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|     return version; | ||||
|  | ||||
| @ -110,9 +110,27 @@ function getVersionFromGlobalJson(globalJsonPath: string): string { | ||||
|   if (globalJson.sdk && globalJson.sdk.version) { | ||||
|     version = globalJson.sdk.version; | ||||
|     const rollForward = globalJson.sdk.rollForward; | ||||
|     if (rollForward && rollForward === 'latestFeature') { | ||||
|       const [major, minor] = version.split('.'); | ||||
|       version = `${major}.${minor}`; | ||||
|     if (rollForward) { | ||||
|       const [major, minor, featurePatch] = version.split('.'); | ||||
|       const feature = featurePatch.substring(0, 1); | ||||
| 
 | ||||
|       switch (rollForward) { | ||||
|         case 'latestMajor': | ||||
|           version = ''; | ||||
|           break; | ||||
| 
 | ||||
|         case 'latestMinor': | ||||
|           version = `${major}`; | ||||
|           break; | ||||
| 
 | ||||
|         case 'latestFeature': | ||||
|           version = `${major}.${minor}`; | ||||
|           break; | ||||
| 
 | ||||
|         case 'latestPatch': | ||||
|           version = `${major}.${minor}.${feature}xx`; | ||||
|           break; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   return version; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user