diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index 43b5387..b3faf9a 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -17,7 +17,7 @@ jobs: strategy: fail-fast: false matrix: - operating-system: [ubuntu-latest, windows-latest, macos-13] + operating-system: [ubuntu-22.02, windows-latest, macos-13] steps: - name: Checkout uses: actions/checkout@v4 @@ -35,12 +35,35 @@ jobs: shell: pwsh run: __tests__/verify-dotnet.ps1 -Patterns "^2.2.402$", "^3.1.404$", "^3.0" + test-setup-multiple-versions-extended: + runs-on: ${{ matrix.operating-system }} + strategy: + fail-fast: false + matrix: + operating-system: [ubuntu-latest, macos-latest] + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Clear toolcache + shell: pwsh + run: __tests__/clear-toolcache.ps1 ${{ runner.os }} + - name: Setup dotnet 6.0.427, 8.0.403 and 8.0.x + uses: ./ + with: + dotnet-version: | + 6.0.427 + 8.0.403 + 8.0.x + - name: Verify dotnet + shell: pwsh + run: __tests__/verify-dotnet.ps1 -Patterns "^6.0.427$", "^8.0.403$", "^8.0" + test-setup-full-version: runs-on: ${{ matrix.operating-system }} strategy: fail-fast: false matrix: - operating-system: [ubuntu-latest, windows-latest, macos-13] + operating-system: [ubuntu-22.02, windows-latest, macos-13] steps: - name: Checkout uses: actions/checkout@v4 @@ -64,12 +87,41 @@ jobs: shell: pwsh run: __tests__/verify-dotnet.ps1 -Patterns "^3.1.201$", "^2.2.402$" -CheckNugetConfig + test-setup-full-version-extended: + runs-on: ${{ matrix.operating-system }} + strategy: + fail-fast: false + matrix: + operating-system: [ubuntu-latest, macos-latest] + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Clear toolcache + shell: pwsh + run: __tests__/clear-toolcache.ps1 ${{ runner.os }} + # Side-by-side install of 6.0 and 8.0 used for the test project + - name: Setup dotnet 6.0.427 + uses: ./ + with: + dotnet-version: 6.0.427 + - name: Setup dotnet 8.0.402 + uses: ./ + with: + dotnet-version: 8.0.402 + # We are including this variable to force the generation of the nuget config file to verify that it is created in the correct place + source-url: https://api.nuget.org/v3/index.json + env: + NUGET_AUTH_TOKEN: NOTATOKEN + - name: Verify dotnet + shell: pwsh + run: __tests__/verify-dotnet.ps1 -Patterns "^8.0.402$", "^6.0.427$" -CheckNugetConfig + test-setup-without-patch-version: runs-on: ${{ matrix.operating-system }} strategy: fail-fast: false matrix: - operating-system: [ubuntu-latest, windows-latest, macos-13] + operating-system: [ubuntu-22.02, windows-latest, macos-13] steps: - name: Checkout uses: actions/checkout@v4 @@ -89,12 +141,37 @@ jobs: shell: pwsh run: __tests__/verify-dotnet.ps1 -Patterns "^3.1", "^2.2" + test-setup-without-patch-version-extended: + runs-on: ${{ matrix.operating-system }} + strategy: + fail-fast: false + matrix: + operating-system: [ubuntu-latest, macos-latest] + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Clear toolcache + shell: pwsh + run: __tests__/clear-toolcache.ps1 ${{ runner.os }} + # 6.0, 7.0, 8.0 needs to be in single quotes to interpret as a string instead of as an integer + - name: Setup dotnet '8.0' + uses: ./ + with: + dotnet-version: '8.0' + - name: Setup dotnet '6.0' + uses: ./ + with: + dotnet-version: '6.0' + - name: Verify dotnet + shell: pwsh + run: __tests__/verify-dotnet.ps1 -Patterns "^8.0", "^6.0" + test-setup-prerelease-version: runs-on: ${{ matrix.operating-system }} strategy: fail-fast: false matrix: - operating-system: [ubuntu-latest, windows-latest, macos-13] + operating-system: [ubuntu-22.02, windows-latest, macos-13] steps: - name: Checkout uses: actions/checkout@v4 @@ -109,12 +186,32 @@ jobs: shell: pwsh run: __tests__/verify-dotnet.ps1 -Patterns "3.1.100-preview1-014459" + test-setup-prerelease-version-extended: + runs-on: ${{ matrix.operating-system }} + strategy: + fail-fast: false + matrix: + operating-system: [ubuntu-latest, macos-latest] + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Clear toolcache + shell: pwsh + run: __tests__/clear-toolcache.ps1 ${{ runner.os }} + - name: Setup dotnet '8.0.100-preview.1.23115.2' + uses: ./ + with: + dotnet-version: '8.0.100-preview.1.23115.2' + - name: Verify dotnet + shell: pwsh + run: __tests__/verify-dotnet.ps1 -Patterns "8.0.100-preview.1.23115.2" + test-setup-latest-patch-version: runs-on: ${{ matrix.operating-system }} strategy: fail-fast: false matrix: - operating-system: [ubuntu-latest, windows-latest, macos-13] + operating-system: [ubuntu-22.02, windows-latest, macos-13] steps: - name: Checkout uses: actions/checkout@v4 @@ -133,12 +230,37 @@ jobs: shell: pwsh run: __tests__/verify-dotnet.ps1 -Patterns "^2.2", "^3.1" + test-setup-latest-patch-version-extended: + runs-on: ${{ matrix.operating-system }} + strategy: + fail-fast: false + matrix: + operating-system: [ubuntu-latest, macos-latest] + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Clear toolcache + shell: pwsh + run: __tests__/clear-toolcache.ps1 ${{ runner.os }} + - name: Setup dotnet 8.0.x + uses: ./ + with: + dotnet-version: 8.0.x + - name: Setup dotnet 6.0.X + uses: ./ + with: + dotnet-version: 6.0.X + - name: Verify dotnet + shell: pwsh + run: __tests__/verify-dotnet.ps1 -Patterns "^6.0", "^8.0" + test-ABCxx-syntax: runs-on: ${{ matrix.operating-system }} strategy: fail-fast: false matrix: - operating-system: [ubuntu-latest, windows-latest, macos-13] + operating-system: + [ubuntu-latest, windows-latest, macos-13, macos-latest] steps: - name: Checkout uses: actions/checkout@v4 @@ -159,7 +281,7 @@ jobs: strategy: fail-fast: false matrix: - operating-system: [ubuntu-latest, windows-latest, macos-13] + operating-system: [ubuntu-22.02, windows-latest, macos-13] steps: - name: Checkout uses: actions/checkout@v4 @@ -178,12 +300,36 @@ jobs: shell: pwsh run: __tests__/verify-dotnet.ps1 -Patterns "^3.1", "^2.2" + test-setup-with-wildcard-extended: + runs-on: ${{ matrix.operating-system }} + strategy: + fail-fast: false + matrix: + operating-system: [ubuntu-latest, macos-latest] + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Clear toolcache + shell: pwsh + run: __tests__/clear-toolcache.ps1 ${{ runner.os }} + - name: Setup dotnet 8.0.* + uses: ./ + with: + dotnet-version: 8.0.* + - name: Setup dotnet 6.0.* + uses: ./ + with: + dotnet-version: 6.0.* + - name: Verify dotnet + shell: pwsh + run: __tests__/verify-dotnet.ps1 -Patterns "^8.0", "^6.0" + test-setup-global-json-specified-and-version: runs-on: ${{ matrix.operating-system }} strategy: fail-fast: false matrix: - operating-system: [ubuntu-latest, windows-latest, macos-13] + operating-system: [ubuntu-22.02, windows-latest, macos-13] steps: - name: Checkout uses: actions/checkout@v4 @@ -204,12 +350,38 @@ jobs: shell: pwsh run: __tests__/verify-dotnet.ps1 -Patterns "^2.2", "^3.1" + test-setup-global-json-specified-and-version-extended: + runs-on: ${{ matrix.operating-system }} + strategy: + fail-fast: false + matrix: + operating-system: [ubuntu-latest, macos-latest] + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Clear toolcache + shell: pwsh + run: __tests__/clear-toolcache.ps1 ${{ runner.os }} + - name: Write global.json + shell: bash + run: | + mkdir subdirectory + echo '{"sdk":{"version": "6.0.424","rollForward": "latestFeature"}}' > ./subdirectory/global.json + - name: Setup dotnet + uses: ./ + with: + dotnet-version: '8.0' + global-json-file: ./subdirectory/global.json + - name: Verify dotnet + shell: pwsh + run: __tests__/verify-dotnet.ps1 -Patterns "^6.0", "^8.0" + test-setup-global-json-only: runs-on: ${{ matrix.operating-system }} strategy: fail-fast: false matrix: - operating-system: [ubuntu-latest, windows-latest, macos-13] + operating-system: [ubuntu-22.02, windows-latest, macos-13] steps: - name: Checkout uses: actions/checkout@v4 @@ -229,12 +401,37 @@ jobs: shell: pwsh run: __tests__/verify-dotnet.ps1 -Patterns "^2.2" + test-setup-global-json-only-extended: + runs-on: ${{ matrix.operating-system }} + strategy: + fail-fast: false + matrix: + operating-system: [ubuntu-latest, macos-latest] + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Clear toolcache + shell: pwsh + run: __tests__/clear-toolcache.ps1 ${{ runner.os }} + - name: Write global.json + shell: bash + run: | + mkdir subdirectory + echo '{"sdk":{"version": "6.0.424","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 "^6.0" + test-global-json-with-comments: runs-on: ${{ matrix.operating-system }} strategy: fail-fast: false matrix: - operating-system: [ubuntu-latest, windows-latest, macos-13] + operating-system: [ubuntu-22.02, windows-latest, macos-13] steps: - name: Checkout uses: actions/checkout@v4 @@ -254,12 +451,38 @@ jobs: shell: pwsh run: __tests__/verify-dotnet.ps1 -Patterns "^2.2" + test-global-json-with-comments-extended: + runs-on: ${{ matrix.operating-system }} + strategy: + fail-fast: false + matrix: + operating-system: [ubuntu-latest, macos-latest] + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Clear toolcache + shell: pwsh + run: __tests__/clear-toolcache.ps1 ${{ runner.os }} + - name: Write global.json + shell: bash + run: | + mkdir subdirectory + echo '/* should support comments */ {"sdk":{"version": "6.0.424","rollForward": "latestFeature"}} // should support comments' > ./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 "^6.0" + test-setup-with-dotnet-quality: runs-on: ${{ matrix.operating-system }} strategy: fail-fast: false matrix: - operating-system: [ubuntu-latest, windows-latest, macos-13] + operating-system: + [ubuntu-latest, windows-latest, macos-13, macos-latest] steps: - name: Checkout uses: actions/checkout@v4 @@ -281,7 +504,7 @@ jobs: strategy: fail-fast: false matrix: - operating-system: [ubuntu-latest, windows-latest, macos-13] + operating-system: [ubuntu-22.02, windows-latest, macos-13] env: NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages steps: @@ -307,12 +530,43 @@ jobs: shell: pwsh run: __tests__/verify-dotnet.ps1 -Patterns "^3.1" + test-setup-with-cache-extended: + runs-on: ${{ matrix.operating-system }} + strategy: + fail-fast: false + matrix: + operating-system: [ubuntu-latest, macos-latest] + env: + NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Clear toolcache + shell: pwsh + run: __tests__/clear-toolcache.ps1 ${{ runner.os }} + - name: Copy NuGet lock file to root + shell: bash + run: cp ./__tests__/e2e-test-csproj/packages.lock.json ./packages.lock.json + - name: Setup .NET Core 8.0 + id: setup-dotnet + uses: ./ + with: + dotnet-version: '8.0' + cache: true + - name: Verify Cache + if: steps.setup-dotnet.outputs.cache-hit == 'true' + shell: bash + run: if [[ -e ${NUGET_PACKAGES} ]]; then exit 0; else exit 1; fi + - name: Verify dotnet + shell: pwsh + run: __tests__/verify-dotnet.ps1 -Patterns "^8.0" + test-setup-with-cache-dependency-path: runs-on: ${{ matrix.operating-system }} strategy: fail-fast: false matrix: - operating-system: [ubuntu-latest, windows-latest, macos-13] + operating-system: [ubuntu-22.02, windows-latest, macos-13] env: NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages steps: @@ -336,12 +590,42 @@ jobs: shell: pwsh run: __tests__/verify-dotnet.ps1 -Patterns "^3.1" + test-setup-with-cache-dependency-path-extended: + runs-on: ${{ matrix.operating-system }} + strategy: + fail-fast: false + matrix: + operating-system: [ubuntu-latest, macos-latest] + env: + NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Clear toolcache + shell: pwsh + run: __tests__/clear-toolcache.ps1 ${{ runner.os }} + - name: Setup .NET Core 8.0 + id: setup-dotnet + uses: ./ + with: + dotnet-version: '8.0' + cache: true + cache-dependency-path: './__tests__/e2e-test-csproj/packages.lock.json' + - name: Verify Cache + if: steps.setup-dotnet.outputs.cache-hit == 'true' + shell: bash + run: if [[ -e ${NUGET_PACKAGES} ]]; then exit 0; else exit 1; fi + - name: Verify dotnet + shell: pwsh + run: __tests__/verify-dotnet.ps1 -Patterns "^8.0" + test-dotnet-version-output-during-single-version-installation: runs-on: ${{ matrix.operating-system }} strategy: fail-fast: false matrix: - operating-system: [ubuntu-latest, windows-latest, macos-13] + operating-system: + [ubuntu-latest, windows-latest, macos-13, macos-latest] steps: - name: Checkout uses: actions/checkout@v4 @@ -367,7 +651,8 @@ jobs: strategy: fail-fast: false matrix: - operating-system: [ubuntu-latest, windows-latest, macos-13] + operating-system: + [ubuntu-latest, windows-latest, macos-13, macos-latest] steps: - name: Checkout uses: actions/checkout@v4 @@ -431,7 +716,7 @@ jobs: __tests__/verify-dotnet.ps1 -Patterns "^6.0" -CheckNugetConfig test-bypass-proxy: - runs-on: ubuntu-latest + runs-on: ubuntu-22.02 env: https_proxy: http://no-such-proxy:3128 no_proxy: github.com,dotnetcli.blob.core.windows.net,download.visualstudio.microsoft.com,api.nuget.org,dotnetcli.azureedge.net @@ -452,12 +737,34 @@ jobs: shell: pwsh run: __tests__/verify-dotnet.ps1 -Patterns "^3.1.201$" -CheckNugetConfig + test-bypass-proxy-extended: + runs-on: ubuntu-latest + env: + https_proxy: http://no-such-proxy:3128 + no_proxy: github.com,dotnetcli.blob.core.windows.net,download.visualstudio.microsoft.com,api.nuget.org,dotnetcli.azureedge.net + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Clear toolcache + shell: pwsh + run: __tests__/clear-toolcache.ps1 ${{ runner.os }} + - name: Setup dotnet 8.0.402 + uses: ./ + with: + dotnet-version: 8.0.402 + source-url: https://api.nuget.org/v3/index.json + env: + NUGET_AUTH_TOKEN: NOTATOKEN + - name: Verify dotnet + shell: pwsh + run: __tests__/verify-dotnet.ps1 -Patterns "^8.0.402$" -CheckNugetConfig + test-sequential-version-installation: runs-on: ${{ matrix.operating-system }} strategy: fail-fast: false matrix: - operating-system: [ubuntu-latest, windows-latest, macos-13] + operating-system: [ubuntu-22.02, windows-latest, macos-13] lower-version: ['3.1.426'] higher-version: ['7.0.203'] steps: @@ -481,3 +788,33 @@ jobs: - name: Verify dotnet (higher version) shell: pwsh run: __tests__/verify-dotnet.ps1 -Patterns "^${{ matrix.lower-version }}$", "^${{ matrix.higher-version }}$" + + test-sequential-version-installation-extended: + runs-on: ${{ matrix.operating-system }} + strategy: + fail-fast: false + matrix: + operating-system: [ubuntu-latest, macos-latest] + lower-version: ['6.0.425'] + higher-version: ['8.0.403'] + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Clear toolcache + shell: pwsh + run: __tests__/clear-toolcache.ps1 ${{ runner.os }} + # Install one version, use it for something, then switch to next version + - name: Setup dotnet (lower version) + uses: ./ + with: + dotnet-version: ${{ matrix.lower-version }} + - name: Verify dotnet (lower version) + shell: pwsh + run: __tests__/verify-dotnet.ps1 -Patterns "^${{ matrix.lower-version }}$" + - name: Setup dotnet (higher version) + uses: ./ + with: + dotnet-version: ${{ matrix.higher-version }} + - name: Verify dotnet (higher version) + shell: pwsh + run: __tests__/verify-dotnet.ps1 -Patterns "^${{ matrix.lower-version }}$", "^${{ matrix.higher-version }}$" diff --git a/.github/workflows/release-new-action-version.yml b/.github/workflows/release-new-action-version.yml index e584e46..e58e906 100644 --- a/.github/workflows/release-new-action-version.yml +++ b/.github/workflows/release-new-action-version.yml @@ -23,7 +23,7 @@ jobs: steps: - name: Update the ${{ env.TAG_NAME }} tag id: update-major-tag - uses: actions/publish-action@v0.2.2 + uses: actions/publish-action@v0.3.0 with: source-tag: ${{ env.TAG_NAME }} slack-webhook: ${{ secrets.SLACK_WEBHOOK }} diff --git a/.github/workflows/test-dotnet.yml b/.github/workflows/test-dotnet.yml index 32f91ac..9ac9efb 100644 --- a/.github/workflows/test-dotnet.yml +++ b/.github/workflows/test-dotnet.yml @@ -17,8 +17,21 @@ jobs: strategy: fail-fast: false matrix: - operating-system: [ubuntu-latest, windows-latest, macos-13] + operating-system: + [ubuntu-latest, ubuntu-22.04, windows-latest, macos-13, macos-latest] dotnet-version: ['2.1', '2.2', '3.0', '3.1', '5.0', '6.0', '7.0', '8.0'] + exclude: + - dotnet-version: '2.1' + operating-system: ubuntu-latest + - dotnet-version: '2.2' + operating-system: ubuntu-latest + - dotnet-version: '3.0' + operating-system: ubuntu-latest + - dotnet-version: '3.1' + operating-system: ubuntu-latest + - dotnet-version: '5.0' + operating-system: ubuntu-latest + steps: - name: Checkout uses: actions/checkout@v4