diff --git a/.github/workflows/__cleanup-db-cluster-dir.yml b/.github/workflows/__cleanup-db-cluster-dir.yml index dfe53c67ce..063e38d6b3 100644 --- a/.github/workflows/__cleanup-db-cluster-dir.yml +++ b/.github/workflows/__cleanup-db-cluster-dir.yml @@ -36,7 +36,7 @@ jobs: fail-fast: false matrix: include: - - os: ubuntu-latest + - os: ubuntu-slim version: linked name: Clean up database cluster directory if: github.triggering_actor != 'dependabot[bot]' @@ -54,7 +54,7 @@ jobs: with: version: ${{ matrix.version }} use-all-platform-bundle: 'false' - setup-kotlin: 'true' + setup-kotlin: 'false' - name: Add a file to the database cluster directory run: | mkdir -p "${{ runner.temp }}/customDbLocation/javascript" diff --git a/.github/workflows/__config-input.yml b/.github/workflows/__config-input.yml index 59db10d4d6..f426723525 100644 --- a/.github/workflows/__config-input.yml +++ b/.github/workflows/__config-input.yml @@ -36,7 +36,7 @@ jobs: fail-fast: false matrix: include: - - os: ubuntu-latest + - os: ubuntu-slim version: linked name: Config input if: github.triggering_actor != 'dependabot[bot]' @@ -61,7 +61,7 @@ jobs: with: version: ${{ matrix.version }} use-all-platform-bundle: 'false' - setup-kotlin: 'true' + setup-kotlin: 'false' - name: Copy queries into workspace run: | cp -a ../action/queries . diff --git a/.github/workflows/__language-aliases.yml b/.github/workflows/__language-aliases.yml index 5f95caa131..7f8b2adf77 100644 --- a/.github/workflows/__language-aliases.yml +++ b/.github/workflows/__language-aliases.yml @@ -36,7 +36,7 @@ jobs: fail-fast: false matrix: include: - - os: ubuntu-latest + - os: ubuntu-slim version: linked name: Language aliases if: github.triggering_actor != 'dependabot[bot]' @@ -54,7 +54,7 @@ jobs: with: version: ${{ matrix.version }} use-all-platform-bundle: 'false' - setup-kotlin: 'true' + setup-kotlin: 'false' - uses: ./../action/init with: languages: C#,java-kotlin,swift,typescript diff --git a/.github/workflows/check-expected-release-files.yml b/.github/workflows/check-expected-release-files.yml index edcc499dc8..a066cbde55 100644 --- a/.github/workflows/check-expected-release-files.yml +++ b/.github/workflows/check-expected-release-files.yml @@ -15,7 +15,7 @@ defaults: jobs: check-expected-release-files: - runs-on: ubuntu-latest + runs-on: ubuntu-slim permissions: contents: read diff --git a/.github/workflows/label-pr-size.yml b/.github/workflows/label-pr-size.yml index 83ec360f57..965a4a8587 100644 --- a/.github/workflows/label-pr-size.yml +++ b/.github/workflows/label-pr-size.yml @@ -16,7 +16,7 @@ permissions: jobs: sizeup: name: Label PR with size - runs-on: ubuntu-latest + runs-on: ubuntu-slim steps: - name: Run sizeup diff --git a/pr-checks/checks/cleanup-db-cluster-dir.yml b/pr-checks/checks/cleanup-db-cluster-dir.yml index d2cacf47eb..f2052cd7c5 100644 --- a/pr-checks/checks/cleanup-db-cluster-dir.yml +++ b/pr-checks/checks/cleanup-db-cluster-dir.yml @@ -1,6 +1,7 @@ name: "Clean up database cluster directory" description: "The database cluster directory is cleaned up if it is not empty." versions: ["linked"] +runnerSize: "slim" steps: - name: Add a file to the database cluster directory run: | diff --git a/pr-checks/checks/config-input.yml b/pr-checks/checks/config-input.yml index f139ff90e6..8721f4de4e 100644 --- a/pr-checks/checks/config-input.yml +++ b/pr-checks/checks/config-input.yml @@ -2,6 +2,7 @@ name: "Config input" description: "Tests specifying configuration using the config input" installNode: true versions: ["linked"] +runnerSize: "slim" steps: - name: Copy queries into workspace run: | diff --git a/pr-checks/checks/language-aliases.yml b/pr-checks/checks/language-aliases.yml index b0db1288a3..5dca1b46fe 100644 --- a/pr-checks/checks/language-aliases.yml +++ b/pr-checks/checks/language-aliases.yml @@ -1,6 +1,7 @@ name: "Language aliases" description: "Tests that language aliases are resolved correctly" versions: ["linked"] +runnerSize: "slim" steps: - uses: ./../action/init with: diff --git a/pr-checks/sync.py b/pr-checks/sync.py index f247f38245..a0e25aef3f 100755 --- a/pr-checks/sync.py +++ b/pr-checks/sync.py @@ -76,22 +76,34 @@ def writeHeader(checkStream): if version == "latest": raise ValueError('Did not recognize "version: latest". Did you mean "version: linked"?') - runnerImages = ["ubuntu-latest", "macos-latest", "windows-latest"] + # Determine runner size + # "default" is used in check specifications and maps to "latest" for the actual runner image + runnerSize = checkSpecification.get('runnerSize', 'default') + if runnerSize == 'default': + runnerSize = 'latest' + + # Build runner images based on runner size and operating systems operatingSystems = checkSpecification.get('operatingSystems', ["ubuntu"]) - + for operatingSystem in operatingSystems: - runnerImagesForOs = [image for image in runnerImages if image.startswith(operatingSystem)] - - for runnerImage in runnerImagesForOs: - matrix.append({ - 'os': runnerImage, - 'version': version - }) + # Construct the runner image name: {os}-{size} + # Note: Not all OS types may support all runner sizes (e.g., only ubuntu-slim exists as of now) + runnerImage = f"{operatingSystem}-{runnerSize}" + matrix.append({ + 'os': runnerImage, + 'version': version + }) useAllPlatformBundle = "false" # Default to false if checkSpecification.get('useAllPlatformBundle'): useAllPlatformBundle = checkSpecification['useAllPlatformBundle'] + # Store the runner size for use in prepare-test step + # This is determined once per check specification + finalRunnerSize = checkSpecification.get('runnerSize', 'default') + if finalRunnerSize == 'default': + finalRunnerSize = 'latest' + if 'analysisKinds' in checkSpecification: newMatrix = [] @@ -136,9 +148,10 @@ def writeHeader(checkStream): 'with': { 'version': '${{ matrix.version }}', 'use-all-platform-bundle': useAllPlatformBundle, - # If the action is being run from a container, then do not setup kotlin. - # This is because the kotlin binaries cannot be downloaded from the container. - 'setup-kotlin': str(not 'container' in checkSpecification).lower(), + # If the action is being run from a container or on a slim runner, then do not setup kotlin. + # Containers: kotlin binaries cannot be downloaded from the container. + # Slim runners: limited resources may cause issues with Kotlin setup. + 'setup-kotlin': str(not 'container' in checkSpecification and finalRunnerSize != 'slim').lower(), } })