diff --git a/.github/workflows/__multi-language-autodetect.yml b/.github/workflows/__multi-language-autodetect.yml index e2a7cbeb3..7b917f725 100644 --- a/.github/workflows/__multi-language-autodetect.yml +++ b/.github/workflows/__multi-language-autodetect.yml @@ -39,10 +39,16 @@ jobs: version: stable-v2.16.6 - os: macos-latest version: default + - os: ubuntu-latest + version: default - os: macos-latest version: linked + - os: ubuntu-latest + version: linked - os: macos-latest version: nightly-latest + - os: ubuntu-latest + version: nightly-latest name: Multi-language repository permissions: contents: read diff --git a/.github/workflows/__scaling-reserved-ram.yml b/.github/workflows/__scaling-reserved-ram.yml index a9cf98c34..add21ad3d 100644 --- a/.github/workflows/__scaling-reserved-ram.yml +++ b/.github/workflows/__scaling-reserved-ram.yml @@ -39,10 +39,16 @@ jobs: version: stable-v2.16.6 - os: macos-latest version: default + - os: ubuntu-latest + version: default - os: macos-latest version: linked + - os: ubuntu-latest + version: linked - os: macos-latest version: nightly-latest + - os: ubuntu-latest + version: nightly-latest name: Scaling reserved RAM permissions: contents: read diff --git a/.github/workflows/__swift-custom-build.yml b/.github/workflows/__swift-custom-build.yml index 765c33667..f298b17e2 100644 --- a/.github/workflows/__swift-custom-build.yml +++ b/.github/workflows/__swift-custom-build.yml @@ -29,10 +29,16 @@ jobs: include: - os: macos-latest version: linked + - os: ubuntu-latest + version: linked - os: macos-latest version: default + - os: ubuntu-latest + version: default - os: macos-latest version: nightly-latest + - os: ubuntu-latest + version: nightly-latest name: Swift analysis using a custom build command permissions: contents: read diff --git a/.github/workflows/__unset-environment.yml b/.github/workflows/__unset-environment.yml index 07275673e..3f12a3c2b 100644 --- a/.github/workflows/__unset-environment.yml +++ b/.github/workflows/__unset-environment.yml @@ -27,17 +27,11 @@ jobs: fail-fast: false matrix: include: - - os: macos-12 - version: stable-v2.14.6 - - os: macos-latest - version: stable-v2.15.5 - - os: macos-latest - version: stable-v2.16.6 - - os: macos-latest - version: linked - - os: macos-latest + - os: ubuntu-latest version: default - - os: macos-latest + - os: ubuntu-latest + version: linked + - os: ubuntu-latest version: nightly-latest name: Test unsetting environment variables permissions: diff --git a/pr-checks/checks/multi-language-autodetect.yml b/pr-checks/checks/multi-language-autodetect.yml index 89efa2ca5..b1558cebc 100644 --- a/pr-checks/checks/multi-language-autodetect.yml +++ b/pr-checks/checks/multi-language-autodetect.yml @@ -1,7 +1,14 @@ name: "Multi-language repository" description: "An end-to-end integration test of a multi-language repository using automatic language detection" -# TODO: Add ubuntu back for `nightly-latest` and `latest` once CLI v2.17.4 is available. -operatingSystems: ["macos"] +operatingSystems: ["macos", "ubuntu"] +excludeOsAndVersionCombination: [ + # Known failure for Swift on Linux before CLI v2.17.4. + [ "ubuntu", "stable-20230403" ], + [ "ubuntu", "stable-v2.13.5" ], + [ "ubuntu", "stable-v2.14.6" ], + [ "ubuntu", "stable-v2.15.5" ], + [ "ubuntu", "stable-v2.16.6" ], +] steps: - uses: actions/setup-go@v5 with: diff --git a/pr-checks/checks/scaling-reserved-ram.yml b/pr-checks/checks/scaling-reserved-ram.yml index acd6c2b24..8e7143bd4 100644 --- a/pr-checks/checks/scaling-reserved-ram.yml +++ b/pr-checks/checks/scaling-reserved-ram.yml @@ -1,7 +1,14 @@ name: "Scaling reserved RAM" description: "An end-to-end integration test of a multi-language repository with the scaling_reserved_ram feature flag enabled" -# TODO: Add ubuntu back for `nightly-latest` and `latest` once CLI v2.17.4 is available. -operatingSystems: ["macos"] +operatingSystems: ["macos", "ubuntu"] +excludeOsAndVersionCombination: [ + # Known failure for Swift on Linux before CLI v2.17.4. + [ "ubuntu", "stable-20230403" ], + [ "ubuntu", "stable-v2.13.5" ], + [ "ubuntu", "stable-v2.14.6" ], + [ "ubuntu", "stable-v2.15.5" ], + [ "ubuntu", "stable-v2.16.6" ], +] env: CODEQL_ACTION_SCALING_RESERVED_RAM: true steps: diff --git a/pr-checks/checks/swift-custom-build.yml b/pr-checks/checks/swift-custom-build.yml index 2984641ad..3bdd0748d 100644 --- a/pr-checks/checks/swift-custom-build.yml +++ b/pr-checks/checks/swift-custom-build.yml @@ -1,8 +1,7 @@ name: "Swift analysis using a custom build command" description: "Tests creation of a Swift database using custom build" versions: ["linked", "default", "nightly-latest"] -# TODO: Add ubuntu back for `nightly-latest` and `latest` once CLI v2.17.4 is available. -operatingSystems: ["macos"] +operatingSystems: ["macos", "ubuntu"] env: DOTNET_GENERATE_ASPNET_CERTIFICATE: "false" steps: diff --git a/pr-checks/checks/unset-environment.yml b/pr-checks/checks/unset-environment.yml index d7513114f..c3803ff1e 100644 --- a/pr-checks/checks/unset-environment.yml +++ b/pr-checks/checks/unset-environment.yml @@ -1,8 +1,15 @@ name: "Test unsetting environment variables" description: "An end-to-end integration test that unsets some environment variables" -# TODO: Switch back to all versions once CLI v2.17.4 is available and running on ubuntu again. -versions: ["stable-v2.14.6", "stable-v2.15.5", "stable-v2.16.6", "linked", "default", "nightly-latest"] -operatingSystems: ["macos"] # TODO: Switch back to ubuntu for `nightly-latest` and `latest` once CLI v2.17.4 is available. +operatingSystems: ["ubuntu"] +excludeOsAndVersionCombination: [ + # Known failure for Swift on Linux before CLI v2.17.4. + [ "ubuntu", "stable-20230403" ], + [ "ubuntu", "stable-v2.13.5" ], + [ "ubuntu", "stable-v2.14.6" ], + [ "ubuntu", "stable-v2.15.5" ], + [ "ubuntu", "stable-v2.16.6" ], +] + steps: - uses: ./../action/init id: init diff --git a/pr-checks/sync.py b/pr-checks/sync.py index 6d96bd620..31e818cce 100755 --- a/pr-checks/sync.py +++ b/pr-checks/sync.py @@ -27,6 +27,12 @@ "nightly-latest" ] +def is_version_and_os_excluded(version, os, exclude_params): + for exclude_param in exclude_params: + if exclude_param[0] == os and exclude_param[1] == version: + return True + return False + # When updating the ruamel.yaml version here, update the PR check in # `.github/workflows/pr-checks.yml` too. header = """# Warning: This file is generated automatically, and should not be modified. @@ -56,27 +62,32 @@ def writeHeader(checkStream): for file in (this_dir / 'checks').glob('*.yml'): with open(file, 'r') as checkStream: checkSpecification = yaml.load(checkStream) - matrix = [] + excludedVersionsAndOses = checkSpecification.get('excludeOsAndVersionCombination', []) for version in checkSpecification.get('versions', defaultTestVersions): - runnerImages = ["ubuntu-latest", "macos-latest", "windows-latest"] - if checkSpecification.get('operatingSystems', None): - runnerImages = [image for image in runnerImages for operatingSystem in checkSpecification['operatingSystems'] - if image.startswith(operatingSystem)] - - for runnerImage in runnerImages: - # Prior to CLI v2.15.1, ARM runners were not supported by the build tracer. - # "macos-latest" is now an ARM runner, so we run tests on the old CLIs on Intel runners instead. - if version in ["stable-20230403", "stable-v2.13.4", "stable-v2.13.5", "stable-v2.14.6"] and runnerImage == "macos-latest": - matrix.append({ - 'os': "macos-12", - 'version': version - }) - else: - matrix.append({ - 'os': runnerImage, - 'version': version - }) + runnerImages = ["ubuntu-latest", "macos-latest", "windows-latest"] + operatingSystems = checkSpecification.get('operatingSystems', ["ubuntu", "macos", "windows"]) + + for operatingSystem in operatingSystems: + runnerImagesForOs = [image for image in runnerImages if image.startswith(operatingSystem)] + + for runnerImage in runnerImagesForOs: + # Skip appending this combination to the matrix if it is explicitly excluded. + if is_version_and_os_excluded(version, operatingSystem, excludedVersionsAndOses): + continue + + # Prior to CLI v2.15.1, ARM runners were not supported by the build tracer. + # "macos-latest" is now an ARM runner, so we run tests on the old CLIs on Intel runners instead. + if version in ["stable-20230403", "stable-v2.13.4", "stable-v2.13.5", "stable-v2.14.6"] and runnerImage == "macos-latest": + matrix.append({ + 'os': "macos-12", + 'version': version + }) + else: + matrix.append({ + 'os': runnerImage, + 'version': version + }) useAllPlatformBundle = "false" # Default to false if checkSpecification.get('useAllPlatformBundle'):