mirror of
https://github.com/apache/airflow.git
synced 2026-11-04 07:12:48 +00:00
Widen the Spot pool for RunsOn runners: more families, capacity-optimized, size ranges (#75822)
* Let RunsOn x64 runners use more instance families for Spot Generated-by: Claude Opus 5 * Take RunsOn Spot runners from capacity-optimized pools Generated-by: Claude Opus 5 * Let RunsOn runners take Spot from up to twice the requested size Generated-by: Claude Opus 5
This commit is contained in:
1 parent
fccfbf8ad2
commit
d17f121363
21 files changed
+129
-114
No files matched your search
@@ -62,7 +62,7 @@ jobs:
|
||||
# layer that builds Python from source, which takes 11-18 minutes for Python 3.11+ on hosted runners.
|
||||
timeout-minutes: 35
|
||||
name: Check that image builds quickly
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 8, 32) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '8+16', '32+64') }}
|
||||
env:
|
||||
UPGRADE_TO_NEWER_DEPENDENCIES: false
|
||||
PYTHON_MAJOR_MINOR_VERSION: "${{ inputs.default-python-version }}"
|
||||
|
||||
@@ -163,7 +163,7 @@ jobs:
|
||||
timeout-minutes: 60
|
||||
name: "Test examples of PROD image building"
|
||||
if: inputs.run-generic-prod-image-tests == 'true'
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 4, 16) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '4+8', '16+32') }}
|
||||
env:
|
||||
GITHUB_REPOSITORY: ${{ github.repository }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
@@ -201,7 +201,7 @@ jobs:
|
||||
timeout-minutes: 60
|
||||
name: "Docker Compose quick start with PROD image verifying"
|
||||
if: inputs.run-generic-prod-image-tests == 'true'
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 32, 128) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '32+64', '128+256') }}
|
||||
env:
|
||||
PYTHON_MAJOR_MINOR_VERSION: "${{ inputs.default-python-version }}"
|
||||
GITHUB_REPOSITORY: ${{ github.repository }}
|
||||
@@ -232,7 +232,7 @@ jobs:
|
||||
task-sdk-integration-tests:
|
||||
timeout-minutes: 60
|
||||
name: "Task SDK integration tests with PROD image"
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 4, 16) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '4+8', '16+32') }}
|
||||
env:
|
||||
PYTHON_MAJOR_MINOR_VERSION: "${{ inputs.default-python-version }}"
|
||||
GITHUB_REPOSITORY: ${{ github.repository }}
|
||||
@@ -267,7 +267,7 @@ jobs:
|
||||
uses: ./.github/workflows/airflow-e2e-tests.yml
|
||||
with:
|
||||
workflow-name: "Regular e2e test"
|
||||
runners: ${{ format(inputs.runners, 8, 32) }}
|
||||
runners: ${{ format(inputs.runners, '8+16', '32+64') }}
|
||||
platform: ${{ inputs.platform }}
|
||||
default-python-version: "${{ inputs.default-python-version }}"
|
||||
use-uv: ${{ inputs.use-uv }}
|
||||
@@ -277,7 +277,7 @@ jobs:
|
||||
uses: ./.github/workflows/airflow-e2e-tests.yml
|
||||
with:
|
||||
workflow-name: "Remote logging e2e test"
|
||||
runners: ${{ format(inputs.runners, 4, 16) }}
|
||||
runners: ${{ format(inputs.runners, '4+8', '16+32') }}
|
||||
platform: ${{ inputs.platform }}
|
||||
default-python-version: "${{ inputs.default-python-version }}"
|
||||
use-uv: ${{ inputs.use-uv }}
|
||||
@@ -291,7 +291,7 @@ jobs:
|
||||
uses: ./.github/workflows/airflow-e2e-tests.yml
|
||||
with:
|
||||
workflow-name: "Elasticsearch remote logging e2e test"
|
||||
runners: ${{ format(inputs.runners, 8, 32) }}
|
||||
runners: ${{ format(inputs.runners, '8+16', '32+64') }}
|
||||
platform: ${{ inputs.platform }}
|
||||
default-python-version: "${{ inputs.default-python-version }}"
|
||||
use-uv: ${{ inputs.use-uv }}
|
||||
@@ -305,7 +305,7 @@ jobs:
|
||||
uses: ./.github/workflows/airflow-e2e-tests.yml
|
||||
with:
|
||||
workflow-name: "OpenSearch remote logging e2e test"
|
||||
runners: ${{ format(inputs.runners, 8, 32) }}
|
||||
runners: ${{ format(inputs.runners, '8+16', '32+64') }}
|
||||
platform: ${{ inputs.platform }}
|
||||
default-python-version: "${{ inputs.default-python-version }}"
|
||||
use-uv: ${{ inputs.use-uv }}
|
||||
@@ -320,7 +320,7 @@ jobs:
|
||||
uses: ./.github/workflows/airflow-e2e-tests.yml
|
||||
with:
|
||||
workflow-name: "XCom object storage backend e2e test"
|
||||
runners: ${{ format(inputs.runners, 4, 16) }}
|
||||
runners: ${{ format(inputs.runners, '4+8', '16+32') }}
|
||||
platform: ${{ inputs.platform }}
|
||||
default-python-version: "${{ inputs.default-python-version }}"
|
||||
use-uv: ${{ inputs.use-uv }}
|
||||
@@ -331,7 +331,7 @@ jobs:
|
||||
uses: ./.github/workflows/airflow-e2e-tests.yml
|
||||
with:
|
||||
workflow-name: "Event driven e2e test"
|
||||
runners: ${{ format(inputs.runners, 32, 128) }}
|
||||
runners: ${{ format(inputs.runners, '32+64', '128+256') }}
|
||||
platform: ${{ inputs.platform }}
|
||||
default-python-version: "${{ inputs.default-python-version }}"
|
||||
use-uv: ${{ inputs.use-uv }}
|
||||
@@ -345,7 +345,7 @@ jobs:
|
||||
uses: ./.github/workflows/airflow-e2e-tests.yml
|
||||
with:
|
||||
workflow-name: "Java SDK e2e test"
|
||||
runners: ${{ format(inputs.runners, 8, 32) }}
|
||||
runners: ${{ format(inputs.runners, '8+16', '32+64') }}
|
||||
platform: ${{ inputs.platform }}
|
||||
default-python-version: "${{ inputs.default-python-version }}"
|
||||
use-uv: ${{ inputs.use-uv }}
|
||||
@@ -359,7 +359,7 @@ jobs:
|
||||
uses: ./.github/workflows/airflow-e2e-tests.yml
|
||||
with:
|
||||
workflow-name: "Go SDK e2e test"
|
||||
runners: ${{ format(inputs.runners, 32, 128) }}
|
||||
runners: ${{ format(inputs.runners, '32+64', '128+256') }}
|
||||
platform: ${{ inputs.platform }}
|
||||
default-python-version: "${{ inputs.default-python-version }}"
|
||||
use-uv: ${{ inputs.use-uv }}
|
||||
@@ -373,7 +373,7 @@ jobs:
|
||||
uses: ./.github/workflows/airflow-e2e-tests.yml
|
||||
with:
|
||||
workflow-name: "TypeScript SDK e2e test"
|
||||
runners: ${{ format(inputs.runners, 32, 128) }}
|
||||
runners: ${{ format(inputs.runners, '32+64', '128+256') }}
|
||||
platform: ${{ inputs.platform }}
|
||||
default-python-version: "${{ inputs.default-python-version }}"
|
||||
use-uv: ${{ inputs.use-uv }}
|
||||
@@ -387,7 +387,7 @@ jobs:
|
||||
uses: ./.github/workflows/airflow-e2e-tests.yml
|
||||
with:
|
||||
workflow-name: "OpenLineage e2e test"
|
||||
runners: ${{ format(inputs.runners, 8, 32) }}
|
||||
runners: ${{ format(inputs.runners, '8+16', '32+64') }}
|
||||
platform: ${{ inputs.platform }}
|
||||
default-python-version: "${{ inputs.default-python-version }}"
|
||||
use-uv: ${{ inputs.use-uv }}
|
||||
@@ -407,7 +407,7 @@ jobs:
|
||||
compat: ${{ fromJSON(inputs.providers-compatibility-tests-matrix) }}
|
||||
uses: ./.github/workflows/openlineage-e2e-compat-tests.yml
|
||||
with:
|
||||
runners: ${{ format(inputs.runners, 8, 32) }}
|
||||
runners: ${{ format(inputs.runners, '8+16', '32+64') }}
|
||||
platform: ${{ inputs.platform }}
|
||||
default-python-version: "${{ inputs.default-python-version }}"
|
||||
use-uv: ${{ inputs.use-uv }}
|
||||
@@ -453,7 +453,7 @@ jobs:
|
||||
airflow-ctl-integration-tests:
|
||||
timeout-minutes: 60
|
||||
name: "Airflow CTL integration tests with PROD image"
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 8, 32) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '8+16', '32+64') }}
|
||||
env:
|
||||
PYTHON_MAJOR_MINOR_VERSION: "${{ inputs.default-python-version }}"
|
||||
GITHUB_REPOSITORY: ${{ github.repository }}
|
||||
|
||||
@@ -98,7 +98,7 @@ jobs:
|
||||
run-breeze-tests:
|
||||
timeout-minutes: 10
|
||||
name: Breeze unit tests
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 4, 16) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '4+8', '16+32') }}
|
||||
steps:
|
||||
- name: "Cleanup repo"
|
||||
shell: bash
|
||||
@@ -116,7 +116,7 @@ jobs:
|
||||
run-breeze-integration-tests:
|
||||
timeout-minutes: 120
|
||||
name: Breeze integration tests
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 4, 16) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '4+8', '16+32') }}
|
||||
if: inputs.run-breeze-integration-tests == 'true'
|
||||
steps:
|
||||
- name: "Cleanup repo"
|
||||
@@ -148,7 +148,7 @@ jobs:
|
||||
# Without a pin uv picks the runner's system Python, which can be older than Airflow supports.
|
||||
UV_PYTHON: "${{ inputs.default-python-version }}"
|
||||
SHARED_DISTRIBUTIONS: ${{ join(fromJSON(inputs.shared-distributions-as-json), ' ') }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 8, 32) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '8+16', '32+64') }}
|
||||
steps:
|
||||
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
@@ -185,7 +185,7 @@ jobs:
|
||||
tests-scripts:
|
||||
timeout-minutes: 10
|
||||
name: Scripts tests
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 4, 16) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '4+8', '16+32') }}
|
||||
if: inputs.run-scripts-tests == 'true'
|
||||
env:
|
||||
# Without a pin uv picks the runner's system Python, which can be older than Airflow supports.
|
||||
@@ -216,7 +216,7 @@ jobs:
|
||||
tests-ui:
|
||||
timeout-minutes: 15
|
||||
name: React UI tests
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 8, 32) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '8+16', '32+64') }}
|
||||
if: inputs.run-ui-tests == 'true'
|
||||
steps:
|
||||
- name: "Cleanup repo"
|
||||
@@ -255,7 +255,7 @@ jobs:
|
||||
check-translation-completness:
|
||||
timeout-minutes: 15
|
||||
name: "Check translation completeness"
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 32, 128) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '32+64', '128+256') }}
|
||||
steps:
|
||||
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
@@ -272,7 +272,7 @@ jobs:
|
||||
static-checks-basic-checks-only:
|
||||
timeout-minutes: 30
|
||||
name: "Static checks: basic checks only"
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 8, 32) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '8+16', '32+64') }}
|
||||
if: inputs.basic-checks-only == 'true'
|
||||
steps:
|
||||
- name: "Cleanup repo"
|
||||
@@ -358,7 +358,7 @@ jobs:
|
||||
test-airflow-release-commands:
|
||||
timeout-minutes: 80
|
||||
name: "Test Airflow release commands"
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 8, 32) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '8+16', '32+64') }}
|
||||
env:
|
||||
PYTHON_MAJOR_MINOR_VERSION: "${{ inputs.default-python-version }}"
|
||||
GITHUB_REPOSITORY: ${{ github.repository }}
|
||||
@@ -413,7 +413,7 @@ jobs:
|
||||
timeout-minutes: 30
|
||||
name: "Test Airflow standalone commands"
|
||||
if: inputs.run-generic-basic-tests == 'true'
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 4, 16) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '4+8', '16+32') }}
|
||||
env:
|
||||
AIRFLOW_HOME: ~/airflow
|
||||
FORCE_COLOR: 1
|
||||
|
||||
@@ -605,7 +605,7 @@ jobs:
|
||||
timeout-minutes: 45
|
||||
name: "MyPy providers checks"
|
||||
needs: [build-info, build-ci-images]
|
||||
runs-on: ${{ format(fromJSON(needs.build-info.outputs.runner-type)[0], 4, 16) }}
|
||||
runs-on: ${{ format(fromJSON(needs.build-info.outputs.runner-type)[0], '4+8', '16+32') }}
|
||||
if: needs.build-info.outputs.run-mypy-providers == 'true'
|
||||
env:
|
||||
PYTHON_MAJOR_MINOR_VERSION: "${{ needs.build-info.outputs.default-python-version }}"
|
||||
@@ -646,7 +646,7 @@ jobs:
|
||||
timeout-minutes: 20
|
||||
name: "Migration round-trip check"
|
||||
needs: [build-info, build-ci-images]
|
||||
runs-on: ${{ format(fromJSON(needs.build-info.outputs.runner-type)[0], 8, 32) }}
|
||||
runs-on: ${{ format(fromJSON(needs.build-info.outputs.runner-type)[0], '8+16', '32+64') }}
|
||||
if: needs.build-info.outputs.has-migrations == 'true'
|
||||
env:
|
||||
PYTHON_MAJOR_MINOR_VERSION: "${{ needs.build-info.outputs.default-python-version }}"
|
||||
@@ -768,7 +768,7 @@ jobs:
|
||||
contents: read
|
||||
packages: read
|
||||
with:
|
||||
runners: ${{ format(needs.build-info.outputs.in-memory-runner-type, 8, '32+64') }}
|
||||
runners: ${{ format(needs.build-info.outputs.in-memory-runner-type, '8+16', '32+128') }}
|
||||
platform: ${{ needs.build-info.outputs.platform }}
|
||||
backend: "postgres"
|
||||
test-name: "Postgres"
|
||||
@@ -797,7 +797,7 @@ jobs:
|
||||
contents: read
|
||||
packages: read
|
||||
with:
|
||||
runners: ${{ format(needs.build-info.outputs.in-memory-runner-type, 8, '32+64') }}
|
||||
runners: ${{ format(needs.build-info.outputs.in-memory-runner-type, '8+16', '32+128') }}
|
||||
platform: ${{ needs.build-info.outputs.platform }}
|
||||
backend: "postgres"
|
||||
test-name: "Postgres"
|
||||
@@ -826,7 +826,7 @@ jobs:
|
||||
contents: read
|
||||
packages: read
|
||||
with:
|
||||
runners: ${{ format(needs.build-info.outputs.in-memory-runner-type, 8, '32+64') }}
|
||||
runners: ${{ format(needs.build-info.outputs.in-memory-runner-type, '8+16', '32+128') }}
|
||||
platform: ${{ needs.build-info.outputs.platform }}
|
||||
backend: "mysql"
|
||||
test-name: "MySQL"
|
||||
@@ -856,7 +856,7 @@ jobs:
|
||||
contents: read
|
||||
packages: read
|
||||
with:
|
||||
runners: ${{ format(needs.build-info.outputs.in-memory-runner-type, 8, '32+64') }}
|
||||
runners: ${{ format(needs.build-info.outputs.in-memory-runner-type, '8+16', '32+128') }}
|
||||
platform: ${{ needs.build-info.outputs.platform }}
|
||||
backend: "mysql"
|
||||
test-name: "MySQL"
|
||||
@@ -885,7 +885,7 @@ jobs:
|
||||
contents: read
|
||||
packages: read
|
||||
with:
|
||||
runners: ${{ format(needs.build-info.outputs.in-memory-runner-type, 8, '32+64') }}
|
||||
runners: ${{ format(needs.build-info.outputs.in-memory-runner-type, '8+16', '32+128') }}
|
||||
platform: ${{ needs.build-info.outputs.platform }}
|
||||
backend: "sqlite"
|
||||
test-name: "Sqlite"
|
||||
@@ -916,7 +916,7 @@ jobs:
|
||||
contents: read
|
||||
packages: read
|
||||
with:
|
||||
runners: ${{ format(needs.build-info.outputs.in-memory-runner-type, 8, '32+64') }}
|
||||
runners: ${{ format(needs.build-info.outputs.in-memory-runner-type, '8+16', '32+128') }}
|
||||
platform: ${{ needs.build-info.outputs.platform }}
|
||||
backend: "sqlite"
|
||||
test-name: "Sqlite"
|
||||
@@ -947,7 +947,7 @@ jobs:
|
||||
contents: read
|
||||
packages: read
|
||||
with:
|
||||
runners: ${{ format(needs.build-info.outputs.runner-type, 32, 128) }}
|
||||
runners: ${{ format(needs.build-info.outputs.runner-type, '32+64', '128+256') }}
|
||||
platform: ${{ needs.build-info.outputs.platform }}
|
||||
backend: "sqlite"
|
||||
test-name: ""
|
||||
@@ -977,7 +977,7 @@ jobs:
|
||||
contents: read
|
||||
packages: read
|
||||
with:
|
||||
runners: ${{ format(needs.build-info.outputs.runner-type, 32, 128) }}
|
||||
runners: ${{ format(needs.build-info.outputs.runner-type, '32+64', '128+256') }}
|
||||
platform: ${{ needs.build-info.outputs.platform }}
|
||||
backend: "sqlite"
|
||||
test-name: ""
|
||||
@@ -1064,7 +1064,7 @@ jobs:
|
||||
if: >
|
||||
needs.build-info.outputs.run-unit-tests == 'true'
|
||||
with:
|
||||
runners: ${{ format(needs.build-info.outputs.in-memory-runner-type, 8, '32+64') }}
|
||||
runners: ${{ format(needs.build-info.outputs.in-memory-runner-type, '8+16', '32+128') }}
|
||||
platform: ${{ needs.build-info.outputs.platform }}
|
||||
test-name: "LowestDeps"
|
||||
force-lowest-dependencies: "true"
|
||||
@@ -1094,7 +1094,7 @@ jobs:
|
||||
packages: read
|
||||
if: needs.build-info.outputs.run-unit-tests == 'true'
|
||||
with:
|
||||
runners: ${{ format(needs.build-info.outputs.runner-type, 32, 128) }}
|
||||
runners: ${{ format(needs.build-info.outputs.runner-type, '32+64', '128+256') }}
|
||||
platform: ${{ needs.build-info.outputs.platform }}
|
||||
test-name: "LowestDeps"
|
||||
force-lowest-dependencies: "true"
|
||||
@@ -1206,7 +1206,7 @@ jobs:
|
||||
contents: read
|
||||
packages: read
|
||||
with:
|
||||
runners: ${{ format(needs.build-info.outputs.runner-type, 32, 128) }}
|
||||
runners: ${{ format(needs.build-info.outputs.runner-type, '32+64', '128+256') }}
|
||||
platform: ${{ needs.build-info.outputs.platform }}
|
||||
default-python-version: "${{ needs.build-info.outputs.default-python-version }}"
|
||||
python-versions: ${{ needs.build-info.outputs.python-versions }}
|
||||
@@ -1222,7 +1222,7 @@ jobs:
|
||||
tests-go-sdk:
|
||||
name: "Go SDK tests"
|
||||
needs: [build-info]
|
||||
runs-on: ${{ format(fromJSON(needs.build-info.outputs.runner-type)[0], 8, 32) }}
|
||||
runs-on: ${{ format(fromJSON(needs.build-info.outputs.runner-type)[0], '8+16', '32+64') }}
|
||||
timeout-minutes: 15
|
||||
permissions:
|
||||
contents: read
|
||||
@@ -1291,7 +1291,7 @@ jobs:
|
||||
tests-ts-sdk:
|
||||
name: "TypeScript SDK tests"
|
||||
needs: [build-info]
|
||||
runs-on: ${{ format(fromJSON(needs.build-info.outputs.runner-type)[0], 8, 32) }}
|
||||
runs-on: ${{ format(fromJSON(needs.build-info.outputs.runner-type)[0], '8+16', '32+64') }}
|
||||
timeout-minutes: 15
|
||||
permissions:
|
||||
contents: read
|
||||
@@ -1327,7 +1327,7 @@ jobs:
|
||||
tests-java-sdk:
|
||||
name: "Java SDK tests"
|
||||
needs: [build-info]
|
||||
runs-on: ${{ format(fromJSON(needs.build-info.outputs.runner-type)[0], 32, 128) }}
|
||||
runs-on: ${{ format(fromJSON(needs.build-info.outputs.runner-type)[0], '32+64', '128+256') }}
|
||||
timeout-minutes: 15
|
||||
permissions:
|
||||
contents: read
|
||||
@@ -1359,7 +1359,7 @@ jobs:
|
||||
build-java-sdk-docs:
|
||||
name: "Java SDK docs"
|
||||
needs: [build-info]
|
||||
runs-on: ${{ format(fromJSON(needs.build-info.outputs.runner-type)[0], 8, 32) }}
|
||||
runs-on: ${{ format(fromJSON(needs.build-info.outputs.runner-type)[0], '8+16', '32+64') }}
|
||||
timeout-minutes: 30
|
||||
permissions:
|
||||
contents: read
|
||||
@@ -1391,7 +1391,7 @@ jobs:
|
||||
build-ts-sdk-docs:
|
||||
name: "TypeScript SDK docs"
|
||||
needs: [build-info]
|
||||
runs-on: ${{ format(fromJSON(needs.build-info.outputs.runner-type)[0], 4, 16) }}
|
||||
runs-on: ${{ format(fromJSON(needs.build-info.outputs.runner-type)[0], '4+8', '16+32') }}
|
||||
timeout-minutes: 30
|
||||
permissions:
|
||||
contents: read
|
||||
@@ -1428,7 +1428,7 @@ jobs:
|
||||
contents: read
|
||||
packages: read
|
||||
with:
|
||||
runners: ${{ format(needs.build-info.outputs.runner-type, 4, 16) }}
|
||||
runners: ${{ format(needs.build-info.outputs.runner-type, '4+8', '16+32') }}
|
||||
platform: ${{ needs.build-info.outputs.platform }}
|
||||
default-python-version: "${{ needs.build-info.outputs.default-python-version }}"
|
||||
python-versions: ${{ needs.build-info.outputs.python-versions }}
|
||||
@@ -1449,7 +1449,7 @@ jobs:
|
||||
contents: read
|
||||
packages: read
|
||||
with:
|
||||
runners: ${{ format(needs.build-info.outputs.runner-type, 8, 32) }}
|
||||
runners: ${{ format(needs.build-info.outputs.runner-type, '8+16', '32+64') }}
|
||||
platform: ${{ needs.build-info.outputs.platform }}
|
||||
default-python-version: "${{ needs.build-info.outputs.default-python-version }}"
|
||||
use-uv: ${{ needs.build-info.outputs.use-uv }}
|
||||
@@ -1772,7 +1772,7 @@ jobs:
|
||||
- tests-special
|
||||
- tests-with-lowest-direct-resolution-core
|
||||
- tests-with-lowest-direct-resolution-providers
|
||||
runs-on: ${{ format(fromJSON(needs.build-info.outputs.runner-type)[0], 8, 32) }}
|
||||
runs-on: ${{ format(fromJSON(needs.build-info.outputs.runner-type)[0], '8+16', '32+64') }}
|
||||
if: needs.build-info.outputs.run-unit-tests == 'true'
|
||||
steps:
|
||||
- name: "Cleanup repo"
|
||||
|
||||
@@ -486,7 +486,7 @@ jobs:
|
||||
timeout-minutes: 45
|
||||
name: "MyPy providers checks"
|
||||
needs: [build-info, build-ci-images]
|
||||
runs-on: ${{ format(fromJSON(needs.build-info.outputs.runner-type)[0], 4, 16) }}
|
||||
runs-on: ${{ format(fromJSON(needs.build-info.outputs.runner-type)[0], '4+8', '16+32') }}
|
||||
if: needs.build-info.outputs.run-mypy-providers == 'true'
|
||||
env:
|
||||
PYTHON_MAJOR_MINOR_VERSION: "${{ needs.build-info.outputs.default-python-version }}"
|
||||
@@ -527,7 +527,7 @@ jobs:
|
||||
timeout-minutes: 20
|
||||
name: "Migration round-trip check"
|
||||
needs: [build-info, build-ci-images]
|
||||
runs-on: ${{ format(fromJSON(needs.build-info.outputs.runner-type)[0], 8, 32) }}
|
||||
runs-on: ${{ format(fromJSON(needs.build-info.outputs.runner-type)[0], '8+16', '32+64') }}
|
||||
if: needs.build-info.outputs.has-migrations == 'true'
|
||||
env:
|
||||
PYTHON_MAJOR_MINOR_VERSION: "${{ needs.build-info.outputs.default-python-version }}"
|
||||
@@ -649,7 +649,7 @@ jobs:
|
||||
contents: read
|
||||
packages: read
|
||||
with:
|
||||
runners: ${{ format(needs.build-info.outputs.in-memory-runner-type, 8, '32+64') }}
|
||||
runners: ${{ format(needs.build-info.outputs.in-memory-runner-type, '8+16', '32+128') }}
|
||||
platform: ${{ needs.build-info.outputs.platform }}
|
||||
backend: "postgres"
|
||||
test-name: "Postgres"
|
||||
@@ -678,7 +678,7 @@ jobs:
|
||||
contents: read
|
||||
packages: read
|
||||
with:
|
||||
runners: ${{ format(needs.build-info.outputs.in-memory-runner-type, 8, '32+64') }}
|
||||
runners: ${{ format(needs.build-info.outputs.in-memory-runner-type, '8+16', '32+128') }}
|
||||
platform: ${{ needs.build-info.outputs.platform }}
|
||||
backend: "postgres"
|
||||
test-name: "Postgres"
|
||||
@@ -707,7 +707,7 @@ jobs:
|
||||
contents: read
|
||||
packages: read
|
||||
with:
|
||||
runners: ${{ format(needs.build-info.outputs.in-memory-runner-type, 8, '32+64') }}
|
||||
runners: ${{ format(needs.build-info.outputs.in-memory-runner-type, '8+16', '32+128') }}
|
||||
platform: ${{ needs.build-info.outputs.platform }}
|
||||
backend: "mysql"
|
||||
test-name: "MySQL"
|
||||
@@ -737,7 +737,7 @@ jobs:
|
||||
contents: read
|
||||
packages: read
|
||||
with:
|
||||
runners: ${{ format(needs.build-info.outputs.in-memory-runner-type, 8, '32+64') }}
|
||||
runners: ${{ format(needs.build-info.outputs.in-memory-runner-type, '8+16', '32+128') }}
|
||||
platform: ${{ needs.build-info.outputs.platform }}
|
||||
backend: "mysql"
|
||||
test-name: "MySQL"
|
||||
@@ -766,7 +766,7 @@ jobs:
|
||||
contents: read
|
||||
packages: read
|
||||
with:
|
||||
runners: ${{ format(needs.build-info.outputs.in-memory-runner-type, 8, '32+64') }}
|
||||
runners: ${{ format(needs.build-info.outputs.in-memory-runner-type, '8+16', '32+128') }}
|
||||
platform: ${{ needs.build-info.outputs.platform }}
|
||||
backend: "sqlite"
|
||||
test-name: "Sqlite"
|
||||
@@ -797,7 +797,7 @@ jobs:
|
||||
contents: read
|
||||
packages: read
|
||||
with:
|
||||
runners: ${{ format(needs.build-info.outputs.in-memory-runner-type, 8, '32+64') }}
|
||||
runners: ${{ format(needs.build-info.outputs.in-memory-runner-type, '8+16', '32+128') }}
|
||||
platform: ${{ needs.build-info.outputs.platform }}
|
||||
backend: "sqlite"
|
||||
test-name: "Sqlite"
|
||||
@@ -828,7 +828,7 @@ jobs:
|
||||
contents: read
|
||||
packages: read
|
||||
with:
|
||||
runners: ${{ format(needs.build-info.outputs.runner-type, 32, 128) }}
|
||||
runners: ${{ format(needs.build-info.outputs.runner-type, '32+64', '128+256') }}
|
||||
platform: ${{ needs.build-info.outputs.platform }}
|
||||
backend: "sqlite"
|
||||
test-name: ""
|
||||
@@ -858,7 +858,7 @@ jobs:
|
||||
contents: read
|
||||
packages: read
|
||||
with:
|
||||
runners: ${{ format(needs.build-info.outputs.runner-type, 32, 128) }}
|
||||
runners: ${{ format(needs.build-info.outputs.runner-type, '32+64', '128+256') }}
|
||||
platform: ${{ needs.build-info.outputs.platform }}
|
||||
backend: "sqlite"
|
||||
test-name: ""
|
||||
@@ -945,7 +945,7 @@ jobs:
|
||||
if: >
|
||||
needs.build-info.outputs.run-unit-tests == 'true'
|
||||
with:
|
||||
runners: ${{ format(needs.build-info.outputs.in-memory-runner-type, 8, '32+64') }}
|
||||
runners: ${{ format(needs.build-info.outputs.in-memory-runner-type, '8+16', '32+128') }}
|
||||
platform: ${{ needs.build-info.outputs.platform }}
|
||||
test-name: "LowestDeps"
|
||||
force-lowest-dependencies: "true"
|
||||
@@ -975,7 +975,7 @@ jobs:
|
||||
packages: read
|
||||
if: needs.build-info.outputs.run-unit-tests == 'true'
|
||||
with:
|
||||
runners: ${{ format(needs.build-info.outputs.runner-type, 32, 128) }}
|
||||
runners: ${{ format(needs.build-info.outputs.runner-type, '32+64', '128+256') }}
|
||||
platform: ${{ needs.build-info.outputs.platform }}
|
||||
test-name: "LowestDeps"
|
||||
force-lowest-dependencies: "true"
|
||||
@@ -1087,7 +1087,7 @@ jobs:
|
||||
contents: read
|
||||
packages: read
|
||||
with:
|
||||
runners: ${{ format(needs.build-info.outputs.runner-type, 32, 128) }}
|
||||
runners: ${{ format(needs.build-info.outputs.runner-type, '32+64', '128+256') }}
|
||||
platform: ${{ needs.build-info.outputs.platform }}
|
||||
default-python-version: "${{ needs.build-info.outputs.default-python-version }}"
|
||||
python-versions: ${{ needs.build-info.outputs.python-versions }}
|
||||
@@ -1103,7 +1103,7 @@ jobs:
|
||||
tests-go-sdk:
|
||||
name: "Go SDK tests"
|
||||
needs: [build-info]
|
||||
runs-on: ${{ format(fromJSON(needs.build-info.outputs.runner-type)[0], 8, 32) }}
|
||||
runs-on: ${{ format(fromJSON(needs.build-info.outputs.runner-type)[0], '8+16', '32+64') }}
|
||||
timeout-minutes: 15
|
||||
permissions:
|
||||
contents: read
|
||||
@@ -1172,7 +1172,7 @@ jobs:
|
||||
tests-ts-sdk:
|
||||
name: "TypeScript SDK tests"
|
||||
needs: [build-info]
|
||||
runs-on: ${{ format(fromJSON(needs.build-info.outputs.runner-type)[0], 8, 32) }}
|
||||
runs-on: ${{ format(fromJSON(needs.build-info.outputs.runner-type)[0], '8+16', '32+64') }}
|
||||
timeout-minutes: 15
|
||||
permissions:
|
||||
contents: read
|
||||
@@ -1208,7 +1208,7 @@ jobs:
|
||||
tests-java-sdk:
|
||||
name: "Java SDK tests"
|
||||
needs: [build-info]
|
||||
runs-on: ${{ format(fromJSON(needs.build-info.outputs.runner-type)[0], 32, 128) }}
|
||||
runs-on: ${{ format(fromJSON(needs.build-info.outputs.runner-type)[0], '32+64', '128+256') }}
|
||||
timeout-minutes: 15
|
||||
permissions:
|
||||
contents: read
|
||||
@@ -1240,7 +1240,7 @@ jobs:
|
||||
build-java-sdk-docs:
|
||||
name: "Java SDK docs"
|
||||
needs: [build-info]
|
||||
runs-on: ${{ format(fromJSON(needs.build-info.outputs.runner-type)[0], 8, 32) }}
|
||||
runs-on: ${{ format(fromJSON(needs.build-info.outputs.runner-type)[0], '8+16', '32+64') }}
|
||||
timeout-minutes: 30
|
||||
permissions:
|
||||
contents: read
|
||||
@@ -1272,7 +1272,7 @@ jobs:
|
||||
build-ts-sdk-docs:
|
||||
name: "TypeScript SDK docs"
|
||||
needs: [build-info]
|
||||
runs-on: ${{ format(fromJSON(needs.build-info.outputs.runner-type)[0], 4, 16) }}
|
||||
runs-on: ${{ format(fromJSON(needs.build-info.outputs.runner-type)[0], '4+8', '16+32') }}
|
||||
timeout-minutes: 30
|
||||
permissions:
|
||||
contents: read
|
||||
@@ -1309,7 +1309,7 @@ jobs:
|
||||
contents: read
|
||||
packages: read
|
||||
with:
|
||||
runners: ${{ format(needs.build-info.outputs.runner-type, 4, 16) }}
|
||||
runners: ${{ format(needs.build-info.outputs.runner-type, '4+8', '16+32') }}
|
||||
platform: ${{ needs.build-info.outputs.platform }}
|
||||
default-python-version: "${{ needs.build-info.outputs.default-python-version }}"
|
||||
python-versions: ${{ needs.build-info.outputs.python-versions }}
|
||||
@@ -1330,7 +1330,7 @@ jobs:
|
||||
contents: read
|
||||
packages: read
|
||||
with:
|
||||
runners: ${{ format(needs.build-info.outputs.runner-type, 8, 32) }}
|
||||
runners: ${{ format(needs.build-info.outputs.runner-type, '8+16', '32+64') }}
|
||||
platform: ${{ needs.build-info.outputs.platform }}
|
||||
default-python-version: "${{ needs.build-info.outputs.default-python-version }}"
|
||||
use-uv: ${{ needs.build-info.outputs.use-uv }}
|
||||
@@ -1651,7 +1651,7 @@ jobs:
|
||||
- tests-special
|
||||
- tests-with-lowest-direct-resolution-core
|
||||
- tests-with-lowest-direct-resolution-providers
|
||||
runs-on: ${{ format(fromJSON(needs.build-info.outputs.runner-type)[0], 8, 32) }}
|
||||
runs-on: ${{ format(fromJSON(needs.build-info.outputs.runner-type)[0], '8+16', '32+64') }}
|
||||
if: needs.build-info.outputs.run-unit-tests == 'true'
|
||||
steps:
|
||||
- name: "Cleanup repo"
|
||||
|
||||
@@ -128,7 +128,7 @@ jobs:
|
||||
python-version: ${{ fromJSON(inputs.python-versions) }}
|
||||
timeout-minutes: 110
|
||||
name: "Build CI ${{ inputs.platform }} image ${{ matrix.python-version }}"
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 8, 32) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '8+16', '32+64') }}
|
||||
env:
|
||||
BACKEND: sqlite
|
||||
PYTHON_MAJOR_MINOR_VERSION: ${{ matrix.python-version }}
|
||||
|
||||
@@ -124,7 +124,7 @@ jobs:
|
||||
static-checks:
|
||||
timeout-minutes: 45
|
||||
name: "Static checks"
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 32, 128) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '32+64', '128+256') }}
|
||||
env:
|
||||
PYTHON_MAJOR_MINOR_VERSION: "${{ inputs.default-python-version }}"
|
||||
UPGRADE_TO_NEWER_DEPENDENCIES: "${{ inputs.upgrade-to-newer-dependencies }}"
|
||||
@@ -192,7 +192,7 @@ jobs:
|
||||
build-docs:
|
||||
timeout-minutes: 150
|
||||
name: "Build documentation"
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 32, 128) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '32+64', '128+256') }}
|
||||
if: inputs.docs-build == 'true'
|
||||
env:
|
||||
GITHUB_REPOSITORY: ${{ github.repository }}
|
||||
@@ -351,7 +351,7 @@ jobs:
|
||||
id-token: write
|
||||
contents: read
|
||||
needs: build-docs
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 8, 32) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '8+16', '32+64') }}
|
||||
env:
|
||||
GITHUB_REPOSITORY: ${{ github.repository }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
@@ -483,7 +483,7 @@ jobs:
|
||||
test-python-api-client:
|
||||
timeout-minutes: 60
|
||||
name: "Test Python API client"
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 4, 16) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '4+8', '16+32') }}
|
||||
if: inputs.run-api-codegen == 'true'
|
||||
env:
|
||||
BACKEND: "postgres"
|
||||
|
||||
@@ -80,7 +80,7 @@ permissions:
|
||||
contents: read
|
||||
jobs:
|
||||
update-constraints:
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 8, 32) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '8+16', '32+64') }}
|
||||
timeout-minutes: 80
|
||||
name: "Update constraints"
|
||||
permissions:
|
||||
@@ -128,7 +128,7 @@ jobs:
|
||||
# Constraint commits are now handled by the dedicated update-constraints-on-push workflow
|
||||
# triggered when uv.lock changes are pushed to main/test branches.
|
||||
dependency-upgrade-summary:
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 4, 16) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '4+8', '16+32') }}
|
||||
needs: [update-constraints]
|
||||
if: inputs.upgrade-to-newer-dependencies == 'true' && inputs.platform == 'linux/amd64'
|
||||
name: "Deps ${{ matrix.python-version }}:${{ matrix.constraints-mode }}"
|
||||
|
||||
@@ -85,7 +85,7 @@ jobs:
|
||||
contents: read
|
||||
timeout-minutes: 70
|
||||
name: Generate constraints for ${{ matrix.python-version }} on ${{ inputs.platform }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 8, 32) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '8+16', '32+64') }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
max-parallel: 20
|
||||
|
||||
@@ -52,7 +52,7 @@ jobs:
|
||||
name: >-
|
||||
Unit tests Helm: ${{ matrix.helm-test-package }}
|
||||
(K8S ${{ matrix.kubernetes-version }})
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 32, 128) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '32+64', '128+256') }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
max-parallel: 20
|
||||
@@ -98,7 +98,7 @@ jobs:
|
||||
tests-helm-release:
|
||||
timeout-minutes: 80
|
||||
name: "Release Helm"
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 8, 32) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '8+16', '32+64') }}
|
||||
env:
|
||||
PYTHON_MAJOR_MINOR_VERSION: "${{inputs.default-python-version}}"
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
@@ -75,7 +75,7 @@ jobs:
|
||||
timeout-minutes: 30
|
||||
if: inputs.testable-core-integrations != '[]'
|
||||
name: "Integration core ${{ matrix.integration }}"
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 32, 128) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '32+64', '128+256') }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
max-parallel: 20
|
||||
@@ -126,7 +126,7 @@ jobs:
|
||||
timeout-minutes: 30
|
||||
if: inputs.testable-providers-integrations != '[]' && inputs.skip-providers-tests != 'true'
|
||||
name: "Integration: providers ${{ matrix.integration }}"
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 8, 32) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '8+16', '32+64') }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
max-parallel: 20
|
||||
@@ -176,7 +176,7 @@ jobs:
|
||||
timeout-minutes: 30
|
||||
if: inputs.run-system-tests == 'true'
|
||||
name: "System Tests"
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 4, 16) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '4+8', '16+32') }}
|
||||
env:
|
||||
BACKEND: "postgres"
|
||||
BACKEND_VERSION: ${{ inputs.default-postgres-version }}
|
||||
|
||||
@@ -62,7 +62,7 @@ jobs:
|
||||
tests-kubernetes:
|
||||
timeout-minutes: 60
|
||||
name: "K8S System:${{ matrix.executor }}-${{ matrix.kubernetes-combo }}-${{ matrix.use-standard-naming }}"
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 8, 32) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '8+16', '32+64') }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
max-parallel: 20
|
||||
@@ -149,7 +149,7 @@ jobs:
|
||||
tests-kubernetes-lang-sdk:
|
||||
timeout-minutes: 60
|
||||
name: "K8S Lang-SDK:${{ inputs.lang-sdk-kubernetes-combo }}"
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 8, 32) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '8+16', '32+64') }}
|
||||
env:
|
||||
DEBUG_RESOURCES: ${{ inputs.debug-resources }}
|
||||
INCLUDE_SUCCESS_OUTPUTS: ${{ inputs.include-success-outputs }}
|
||||
|
||||
@@ -53,7 +53,7 @@ jobs:
|
||||
smoke-test-overlay:
|
||||
timeout-minutes: 40
|
||||
name: "Overlay smoke test: ${{ matrix.overlay }}"
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 4, 16) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '4+8', '16+32') }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
max-parallel: 4
|
||||
|
||||
@@ -119,7 +119,7 @@ jobs:
|
||||
build-prod-packages:
|
||||
name: "Build Airflow and provider distributions"
|
||||
timeout-minutes: 10
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 8, 32) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '8+16', '32+64') }}
|
||||
if: inputs.prod-image-build == 'true'
|
||||
env:
|
||||
PYTHON_MAJOR_MINOR_VERSION: "${{ inputs.default-python-version }}"
|
||||
@@ -199,7 +199,7 @@ jobs:
|
||||
python-version: ${{ fromJSON(inputs.python-versions) }}
|
||||
timeout-minutes: 80
|
||||
name: "Build PROD ${{ inputs.build-type }} image ${{ matrix.python-version }}"
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 8, 32) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '8+16', '32+64') }}
|
||||
needs:
|
||||
- build-prod-packages
|
||||
env:
|
||||
|
||||
@@ -79,7 +79,7 @@ on: # yamllint disable-line rule:truthy
|
||||
jobs:
|
||||
push-ci-image-cache:
|
||||
name: "Push CI ${{ inputs.cache-type }}:${{ matrix.python }} image cache "
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 8, 32) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '8+16', '32+64') }}
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
@@ -149,7 +149,7 @@ jobs:
|
||||
|
||||
push-prod-image-cache:
|
||||
name: "Push PROD ${{ inputs.cache-type }}:${{ matrix.python }} image cache"
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 8, 32) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '8+16', '32+64') }}
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
|
||||
@@ -98,7 +98,7 @@ jobs:
|
||||
contents: read
|
||||
packages: read
|
||||
with:
|
||||
runners: ${{ format(inputs.in-memory-runners, 8, '32+64') }}
|
||||
runners: ${{ format(inputs.in-memory-runners, '8+16', '32+128') }}
|
||||
platform: ${{ inputs.platform }}
|
||||
downgrade-sqlalchemy: "true"
|
||||
test-name: "MinSQLAlchemy-Postgres"
|
||||
@@ -123,7 +123,7 @@ jobs:
|
||||
contents: read
|
||||
packages: read
|
||||
with:
|
||||
runners: ${{ format(inputs.in-memory-runners, 8, '32+64') }}
|
||||
runners: ${{ format(inputs.in-memory-runners, '8+16', '32+128') }}
|
||||
platform: ${{ inputs.platform }}
|
||||
downgrade-sqlalchemy: "true"
|
||||
test-name: "MinSQLAlchemy-Postgres"
|
||||
@@ -148,7 +148,7 @@ jobs:
|
||||
contents: read
|
||||
packages: read
|
||||
with:
|
||||
runners: ${{ format(inputs.in-memory-runners, 8, '32+64') }}
|
||||
runners: ${{ format(inputs.in-memory-runners, '8+16', '32+128') }}
|
||||
platform: ${{ inputs.platform }}
|
||||
upgrade-sqlalchemy: "true"
|
||||
test-name: "LatestSQLAlchemy-Postgres"
|
||||
@@ -173,7 +173,7 @@ jobs:
|
||||
contents: read
|
||||
packages: read
|
||||
with:
|
||||
runners: ${{ format(inputs.in-memory-runners, 8, '32+64') }}
|
||||
runners: ${{ format(inputs.in-memory-runners, '8+16', '32+128') }}
|
||||
platform: ${{ inputs.platform }}
|
||||
upgrade-sqlalchemy: "true"
|
||||
test-name: "LatestSQLAlchemy-Postgres"
|
||||
@@ -198,7 +198,7 @@ jobs:
|
||||
contents: read
|
||||
packages: read
|
||||
with:
|
||||
runners: ${{ format(inputs.in-memory-runners, 8, '32+64') }}
|
||||
runners: ${{ format(inputs.in-memory-runners, '8+16', '32+128') }}
|
||||
platform: ${{ inputs.platform }}
|
||||
upgrade-boto: "true"
|
||||
test-name: "LatestBoto-Postgres"
|
||||
@@ -224,7 +224,7 @@ jobs:
|
||||
contents: read
|
||||
packages: read
|
||||
with:
|
||||
runners: ${{ format(inputs.in-memory-runners, 8, '32+64') }}
|
||||
runners: ${{ format(inputs.in-memory-runners, '8+16', '32+128') }}
|
||||
platform: ${{ inputs.platform }}
|
||||
upgrade-boto: "true"
|
||||
test-name: "LatestBoto-Postgres"
|
||||
@@ -250,7 +250,7 @@ jobs:
|
||||
contents: read
|
||||
packages: read
|
||||
with:
|
||||
runners: ${{ format(inputs.in-memory-runners, 8, '32+64') }}
|
||||
runners: ${{ format(inputs.in-memory-runners, '8+16', '32+128') }}
|
||||
platform: ${{ inputs.platform }}
|
||||
downgrade-pendulum: "true"
|
||||
test-name: "Pendulum2-Postgres"
|
||||
@@ -276,7 +276,7 @@ jobs:
|
||||
contents: read
|
||||
packages: read
|
||||
with:
|
||||
runners: ${{ format(inputs.in-memory-runners, 8, '32+64') }}
|
||||
runners: ${{ format(inputs.in-memory-runners, '8+16', '32+128') }}
|
||||
platform: ${{ inputs.platform }}
|
||||
downgrade-pendulum: "true"
|
||||
test-name: "Pendulum2-Postgres"
|
||||
@@ -302,7 +302,7 @@ jobs:
|
||||
contents: read
|
||||
packages: read
|
||||
with:
|
||||
runners: ${{ format(inputs.runners, 4, 16) }}
|
||||
runners: ${{ format(inputs.runners, '4+8', '16+32') }}
|
||||
platform: ${{ inputs.platform }}
|
||||
test-name: "Postgres"
|
||||
test-scope: "Quarantined"
|
||||
@@ -327,7 +327,7 @@ jobs:
|
||||
contents: read
|
||||
packages: read
|
||||
with:
|
||||
runners: ${{ format(inputs.runners, 4, 16) }}
|
||||
runners: ${{ format(inputs.runners, '4+8', '16+32') }}
|
||||
platform: ${{ inputs.platform }}
|
||||
test-name: "Postgres"
|
||||
test-scope: "Quarantined"
|
||||
@@ -352,7 +352,7 @@ jobs:
|
||||
contents: read
|
||||
packages: read
|
||||
with:
|
||||
runners: ${{ format(inputs.runners, 32, 128) }}
|
||||
runners: ${{ format(inputs.runners, '32+64', '128+256') }}
|
||||
platform: ${{ inputs.platform }}
|
||||
test-name: "SystemTest"
|
||||
test-scope: "System"
|
||||
|
||||
@@ -72,7 +72,7 @@ jobs:
|
||||
prepare-install-verify-provider-distributions:
|
||||
timeout-minutes: 80
|
||||
name: "Providers ${{ matrix.package-format }} tests"
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 8, 32) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '8+16', '32+64') }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
@@ -178,7 +178,7 @@ jobs:
|
||||
timeout-minutes: 80
|
||||
# yamllint disable rule:line-length
|
||||
name: Compat ${{ matrix.compat.airflow-version }}:P${{ matrix.compat.python-version }}:${{ matrix.test-types.description }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], 8, 32) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners)[0], '8+16', '32+64') }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
|
||||
@@ -88,7 +88,7 @@ jobs:
|
||||
test-ui-e2e-tests:
|
||||
timeout-minutes: 90
|
||||
name: ${{ inputs.workflow-name || 'UI E2E Tests' }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners || '["ubuntu-24.04"]')[0], 8, 32) }}
|
||||
runs-on: ${{ format(fromJSON(inputs.runners || '["ubuntu-24.04"]')[0], '8+16', '32+64') }}
|
||||
env:
|
||||
PYTHON_MAJOR_MINOR_VERSION: "${{ inputs.default-python-version || '3.11' }}"
|
||||
GITHUB_REPOSITORY: ${{ github.repository }}
|
||||
|
||||
@@ -762,9 +762,13 @@ approval `use self-hosted runners` needs, so for that label approve the head com
|
||||
reopen the PR.
|
||||
|
||||
The RunsOn value is a label template such as
|
||||
`["runs-on=<run_id>/family=.../image=ubuntu22-full-x64/volume=150gb/cpu={0}/ram={1}"]`. Every job
|
||||
picks its size class with `format(fromJSON(inputs.runners)[0], <cpu>, <ram>)` (4/16, 8/32 or 32/128),
|
||||
or, for a single-job reusable workflow, its caller passes `format(<runners>, <cpu>, <ram>)`;
|
||||
`["runs-on=<run_id>/family=.../image=ubuntu22-full-x64/volume=150gb/spot=co/cpu={0}/ram={1}"]`. Every job
|
||||
picks its size class with `format(fromJSON(inputs.runners)[0], <cpu>, <ram>)` (`'4+8', '16+32'`,
|
||||
`'8+16', '32+64'` or `'32+64', '128+256'`), or, for a single-job reusable workflow, its caller passes
|
||||
`format(<runners>, <cpu>, <ram>)`. Each class is a range up to twice its size, so Spot can come from
|
||||
the larger instance types too; xdist follows the host's CPUs, so a larger runner runs more test workers.
|
||||
`spot=co` takes Spot from the pools with the most capacity regardless of price, which is cheaper than
|
||||
the on-demand launch and whole-job rerun a capacity miss or interruption costs;
|
||||
on a public label the same call returns the label unchanged. Steps that only make sense on RunsOn are
|
||||
gated on `runner.environment == 'self-hosted'`:
|
||||
|
||||
@@ -781,8 +785,8 @@ jobs whose databases wait on disk syncs: the Postgres, MySQL and Sqlite test job
|
||||
core tests and the SQLAlchemy, Boto and Pendulum special tests. Its label adds
|
||||
[`extras=tmpfs`](https://runs-on.com/docs/runners/capabilities/yolo-mode/), which puts
|
||||
`/var/lib/docker`, `/tmp` and `/home/runner` on a RAM disk, and also accepts the memory-optimized
|
||||
r-family. The jobs ask for 8 CPUs and 32 or 64 GB (`ram=32+64`), as the RAM disk is capped at the
|
||||
runner's memory before RunsOn v3.5.0. On public runners the output equals `runner-type`, and so it does
|
||||
r-family. The jobs ask for 8 to 16 CPUs and 32 to 128 GB (`cpu=8+16/ram=32+128`), as the RAM disk
|
||||
is capped at the runner's memory before RunsOn v3.5.0. On public runners the output equals `runner-type`, and so it does
|
||||
on RunsOn while the repository variable `USE_IN_MEMORY_DOCKER` is `false`: the switch for moving docker
|
||||
back to disk without a PR.
|
||||
|
||||
|
||||
@@ -40,21 +40,26 @@ PUBLIC_AMD_RUNNERS = '["ubuntu-22.04"]'
|
||||
PUBLIC_ARM_RUNNERS = '["ubuntu-22.04-arm"]'
|
||||
# RunsOn (runs-on.com) EC2 runner label templates. Jobs fill in their size class with
|
||||
# `format(<label>, cpu, ram)` in the workflow; the same call leaves the public labels unchanged.
|
||||
# `spot=co` (capacity-optimized) takes Spot from the pools least likely to run out or be reclaimed
|
||||
# instead of RunsOn's default price-capacity-optimized: a capacity miss or an interruption sends the
|
||||
# runner to on-demand (and reruns the whole job), which costs more than the higher Spot price.
|
||||
RUNS_ON_AMD_RUNNER_TEMPLATE = (
|
||||
"runs-on={run_id}/family=m7a+m7i+m6a+m6i/image=ubuntu22-full-x64/volume=150gb/cpu={{0}}/ram={{1}}"
|
||||
"runs-on={run_id}/family=m8a+m8i+m7a+m7i+m6a+m6i+m5a+m5/image=ubuntu22-full-x64/volume=150gb/spot=co"
|
||||
"/cpu={{0}}/ram={{1}}"
|
||||
)
|
||||
RUNS_ON_ARM_RUNNER_TEMPLATE = (
|
||||
"runs-on={run_id}/family=m8g+m7g+m6g/image=ubuntu22-full-arm64/volume=150gb/cpu={{0}}/ram={{1}}"
|
||||
"runs-on={run_id}/family=m8g+m7g+m6g/image=ubuntu22-full-arm64/volume=150gb/spot=co/cpu={{0}}/ram={{1}}"
|
||||
)
|
||||
# The same runners with docker, /tmp and /home/runner on a RAM disk (RunsOn `extras=tmpfs`), for jobs whose
|
||||
# databases wait on disk syncs. The RAM disk is capped at 100% of RAM before RunsOn v3.5.0, so these jobs
|
||||
# ask for memory headroom and also accept the memory-optimized r-family.
|
||||
RUNS_ON_AMD_IN_MEMORY_RUNNER_TEMPLATE = (
|
||||
"runs-on={run_id}/family=m7a+m7i+m6a+m6i+r7a+r7i+r6a+r6i/image=ubuntu22-full-x64/volume=150gb"
|
||||
"runs-on={run_id}/family=m8a+m8i+m7a+m7i+m6a+m6i+m5a+m5+r8i+r7a+r7i+r6a+r6i"
|
||||
"/image=ubuntu22-full-x64/volume=150gb/spot=co"
|
||||
"/cpu={{0}}/ram={{1}}/extras=tmpfs"
|
||||
)
|
||||
RUNS_ON_ARM_IN_MEMORY_RUNNER_TEMPLATE = (
|
||||
"runs-on={run_id}/family=m8g+m7g+m6g+r8g+r7g+r6g/image=ubuntu22-full-arm64/volume=150gb"
|
||||
"runs-on={run_id}/family=m8g+m7g+m6g+r8g+r7g+r6g/image=ubuntu22-full-arm64/volume=150gb/spot=co"
|
||||
"/cpu={{0}}/ram={{1}}/extras=tmpfs"
|
||||
)
|
||||
|
||||
|
||||
@@ -4910,14 +4910,20 @@ def test_providers_with_test_side_effects_are_shared_process_providers():
|
||||
assert provider not in LONG_RUNNING_TEST_PROVIDERS
|
||||
|
||||
|
||||
RUNS_ON_AMD = '["runs-on=42/family=m7a+m7i+m6a+m6i/image=ubuntu22-full-x64/volume=150gb/cpu={0}/ram={1}"]'
|
||||
RUNS_ON_ARM = '["runs-on=42/family=m8g+m7g+m6g/image=ubuntu22-full-arm64/volume=150gb/cpu={0}/ram={1}"]'
|
||||
RUNS_ON_AMD = (
|
||||
'["runs-on=42/family=m8a+m8i+m7a+m7i+m6a+m6i+m5a+m5/image=ubuntu22-full-x64/volume=150gb/spot=co'
|
||||
'/cpu={0}/ram={1}"]'
|
||||
)
|
||||
RUNS_ON_ARM = (
|
||||
'["runs-on=42/family=m8g+m7g+m6g/image=ubuntu22-full-arm64/volume=150gb/spot=co/cpu={0}/ram={1}"]'
|
||||
)
|
||||
RUNS_ON_AMD_IN_MEMORY = (
|
||||
'["runs-on=42/family=m7a+m7i+m6a+m6i+r7a+r7i+r6a+r6i/image=ubuntu22-full-x64/volume=150gb'
|
||||
'["runs-on=42/family=m8a+m8i+m7a+m7i+m6a+m6i+m5a+m5+r8i+r7a+r7i+r6a+r6i'
|
||||
"/image=ubuntu22-full-x64/volume=150gb/spot=co"
|
||||
'/cpu={0}/ram={1}/extras=tmpfs"]'
|
||||
)
|
||||
RUNS_ON_ARM_IN_MEMORY = (
|
||||
'["runs-on=42/family=m8g+m7g+m6g+r8g+r7g+r6g/image=ubuntu22-full-arm64/volume=150gb'
|
||||
'["runs-on=42/family=m8g+m7g+m6g+r8g+r7g+r6g/image=ubuntu22-full-arm64/volume=150gb/spot=co'
|
||||
'/cpu={0}/ram={1}/extras=tmpfs"]'
|
||||
)
|
||||
|
||||
|
||||
Reference in new issue
Block a user