feat: add support for ruby 4.0 #1236
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build & Test | ||
| on: | ||
| pull_request: | ||
| branches: | ||
| - develop | ||
| - "feat*" | ||
| merge_group: | ||
| types: [checks_requested] | ||
| branches: | ||
| - develop | ||
| - "feat*" | ||
| concurrency: | ||
| group: ${{ github.ref }} | ||
| cancel-in-progress: true | ||
| jobs: | ||
| run-workflow: | ||
| name: PR Workflow | ||
| # If any dependent jobs fails, this WF skips which won't block merging PRs | ||
| # calling always() is required for this WF to run all the time | ||
| if: github.repository_owner == 'aws' && always() | ||
| runs-on: ubuntu-latest | ||
| needs: | ||
| - unit-functional | ||
| - node-integration | ||
| - node-esbuild-integration | ||
| - golang-integration | ||
| - java-maven-integration | ||
| - java-gradle-integration | ||
| - custom-make-integration | ||
| - python-pip-integration | ||
| - python-uv-integration | ||
| - ruby-integration | ||
| - dotnet-integration | ||
| - rust-cargo-lambda-integration | ||
| steps: | ||
| - name: report-failure | ||
| if: | | ||
| needs.unit-functional.result != 'success' || | ||
| needs.node-integration.result != 'success' || | ||
| needs.node-esbuild-integration.result != 'success' || | ||
| needs.golang-integration.result != 'success' || | ||
| needs.java-maven-integration.result != 'success' || | ||
| needs.java-gradle-integration.result != 'success' || | ||
| needs.custom-make-integration.result != 'success' || | ||
| needs.python-pip-integration.result != 'success' || | ||
| needs.python-uv-integration.result != 'success' || | ||
| needs.ruby-integration.result != 'success' || | ||
| needs.dotnet-integration.result != 'success' || | ||
| needs.rust-cargo-lambda-integration.result != 'success' | ||
| run: exit 1 | ||
| - name: report-success | ||
| run: exit 0 | ||
| unit-functional: | ||
| name: ${{ matrix.os }} / ${{ matrix.python }} / unit-functional | ||
| if: github.repository_owner == 'aws' | ||
| runs-on: ${{ matrix.os }} | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| os: | ||
| - ubuntu-latest | ||
| - windows-latest | ||
| python: | ||
| - "3.10" | ||
| - "3.11" | ||
| - "3.12" | ||
| - "3.13" | ||
| - "3.14" | ||
| steps: | ||
| - uses: actions/checkout@v6 | ||
| - uses: actions/setup-python@v6 | ||
| with: | ||
| python-version: ${{ matrix.python }} | ||
| - uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7 | ||
| - name: Unit Testing | ||
| run: make pr | ||
| - name: Functional Testing | ||
| run: make func-test | ||
| node-integration: | ||
| name: ${{ matrix.os }} / ${{ matrix.python }} / node ${{ matrix.nodejs }} / npm ${{ matrix.npm }}.x | ||
| if: github.repository_owner == 'aws' | ||
| runs-on: ${{ matrix.os }} | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| os: | ||
| - ubuntu-latest | ||
| - windows-latest | ||
| python: | ||
| - "3.13" | ||
| npm: | ||
| - 8 | ||
| - 9 | ||
| - 10 | ||
| - 11 | ||
| nodejs: | ||
| - 20 | ||
| - 22 | ||
| - 24 | ||
| exclude: | ||
| # Node 22.22.2 ships broken npm missing promise-retry, preventing | ||
| # upgrade to npm 11. See: https://github.com/npm/cli/issues/9151 | ||
| - nodejs: 22 | ||
| npm: 11 | ||
| steps: | ||
| - uses: actions/checkout@v6 | ||
| - uses: actions/setup-python@v6 | ||
| with: | ||
| python-version: ${{ matrix.python }} | ||
| - uses: actions/setup-node@v6 | ||
| with: | ||
| node-version: ${{ matrix.nodejs }} | ||
| - if: ${{ matrix.npm }} | ||
| run: npm install -g npm@${{ matrix.npm }} | ||
| - run: npm --version | ||
| - run: make init | ||
| - run: pytest -vv tests/integration/workflows/nodejs_npm | ||
| node-esbuild-integration: | ||
| name: ${{ matrix.os }} / ${{ matrix.python }} / esbuild / node ${{ matrix.nodejs }} / npm ${{ matrix.npm }}.x | ||
| if: github.repository_owner == 'aws' | ||
| runs-on: ${{ matrix.os }} | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| os: | ||
| - ubuntu-latest | ||
| - windows-latest | ||
| python: | ||
| - "3.13" | ||
| npm: | ||
| - 8 | ||
| - 9 | ||
| - 10 | ||
| - 11 | ||
| nodejs: | ||
| - 20 | ||
| - 22 | ||
| - 24 | ||
| exclude: | ||
| # Node 22.22.2 ships broken npm missing promise-retry, preventing | ||
| # upgrade to npm 11. See: https://github.com/npm/cli/issues/9151 | ||
| - nodejs: 22 | ||
| npm: 11 | ||
| steps: | ||
| - uses: actions/checkout@v6 | ||
| - uses: actions/setup-python@v6 | ||
| with: | ||
| python-version: ${{ matrix.python }} | ||
| - uses: actions/setup-node@v6 | ||
| with: | ||
| node-version: ${{ matrix.nodejs }} | ||
| - if: ${{ matrix.npm }} | ||
| run: npm install -g npm@${{ matrix.npm }} | ||
| - run: npm --version | ||
| - run: make init | ||
| - run: pytest -vv tests/integration/workflows/nodejs_npm_esbuild | ||
| golang-integration: | ||
| name: ${{ matrix.os }} / ${{ matrix.python }} / golang | ||
| if: github.repository_owner == 'aws' | ||
| runs-on: ${{ matrix.os }} | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| os: | ||
| - ubuntu-latest | ||
| - windows-latest | ||
| python: | ||
| - "3.13" | ||
| steps: | ||
| - uses: actions/checkout@v6 | ||
| - uses: actions/setup-python@v6 | ||
| with: | ||
| python-version: ${{ matrix.python }} | ||
| - uses: actions/setup-go@v6 | ||
| with: | ||
| go-version: '^1.16' | ||
| - run: make init | ||
| - run: pytest -vv tests/integration/workflows/go_modules | ||
| java-maven-integration: | ||
| name: ${{ matrix.os }} / ${{ matrix.python }} / java maven / java ${{ matrix.java }} | ||
| if: github.repository_owner == 'aws' | ||
| runs-on: ${{ matrix.os }} | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| os: | ||
| - ubuntu-latest | ||
| - windows-latest | ||
| python: | ||
| - "3.13" | ||
| java: | ||
| - "21" | ||
| - "25" | ||
| steps: | ||
| - uses: actions/checkout@v6 | ||
| - uses: actions/setup-python@v6 | ||
| with: | ||
| python-version: ${{ matrix.python }} | ||
| - uses: actions/setup-java@v5 | ||
| with: | ||
| distribution: 'corretto' | ||
| java-version: ${{ matrix.java }} | ||
| - run: make init | ||
| - run: pytest -vv tests/integration/workflows/java_maven | ||
| java-gradle-integration: | ||
| name: ${{ matrix.os }} / ${{ matrix.python }} / java gradle / java ${{ matrix.java }} | ||
| if: github.repository_owner == 'aws' | ||
| runs-on: ${{ matrix.os }} | ||
| env: | ||
| GRADLE_OPTS: -Dorg.gradle.daemon=false | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| os: | ||
| - ubuntu-latest | ||
| - windows-latest | ||
| python: | ||
| - "3.13" | ||
| java: | ||
| - "21" | ||
| - "25" | ||
| steps: | ||
| - uses: actions/checkout@v6 | ||
| - uses: actions/setup-python@v6 | ||
| with: | ||
| python-version: ${{ matrix.python }} | ||
| - uses: actions/setup-java@v5 | ||
| with: | ||
| distribution: 'zulu' | ||
| java-version: ${{ matrix.java }} | ||
| - run: make init | ||
| - run: pytest -vv tests/integration/workflows/java_gradle | ||
| custom-make-integration: | ||
| name: ${{ matrix.os }} / ${{ matrix.python }} / custom make | ||
| if: github.repository_owner == 'aws' | ||
| runs-on: ${{ matrix.os }} | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| os: | ||
| - ubuntu-latest | ||
| - windows-latest | ||
| python: | ||
| - "3.13" | ||
| steps: | ||
| - uses: actions/checkout@v6 | ||
| - uses: actions/setup-python@v6 | ||
| with: | ||
| python-version: ${{ matrix.python }} | ||
| - run: make init | ||
| - run: pytest -vv tests/integration/workflows/custom_make | ||
| python-pip-integration: | ||
| name: ${{ matrix.os }} / ${{ matrix.python }} / python-pip | ||
| if: github.repository_owner == 'aws' | ||
| runs-on: ${{ matrix.os }} | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| os: | ||
| - ubuntu-latest | ||
| - windows-latest | ||
| python: | ||
| - "3.10" | ||
| - "3.11" | ||
| - "3.12" | ||
| - "3.13" | ||
| - "3.14" | ||
| steps: | ||
| - uses: actions/checkout@v6 | ||
| - uses: actions/setup-python@v6 | ||
| with: | ||
| python-version: ${{ matrix.python }} | ||
| - run: | | ||
| python -m pip install --upgrade pip | ||
| pip install --upgrade setuptools | ||
| if: ${{ matrix.os }} == 'ubuntu-latest' && ${{ matrix.python }} == '3.12' | ||
|
Check warning on line 287 in .github/workflows/build.yml
|
||
| - run: make init | ||
| - run: pytest -vv tests/integration/workflows/python_pip | ||
| python-uv-integration: | ||
| name: ${{ matrix.os }} / ${{ matrix.python }} / python-uv | ||
| if: github.repository_owner == 'aws' | ||
| runs-on: ${{ matrix.os }} | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| os: | ||
| - ubuntu-latest | ||
| - windows-latest | ||
| python: | ||
| - "3.10" | ||
| - "3.11" | ||
| - "3.12" | ||
| - "3.13" | ||
| - "3.14" | ||
| steps: | ||
| - uses: actions/checkout@v6 | ||
| - uses: actions/setup-python@v6 | ||
| with: | ||
| python-version: ${{ matrix.python }} | ||
| - run: | | ||
| python -m pip install --upgrade pip | ||
| pip install --upgrade setuptools | ||
| if: ${{ matrix.os }} == 'ubuntu-latest' && ${{ matrix.python }} == '3.12' | ||
|
Check warning on line 315 in .github/workflows/build.yml
|
||
| # Install UV for python_uv workflow tests | ||
| - name: Install UV | ||
| uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7 | ||
| with: | ||
| enable-cache: true | ||
| - run: make init | ||
| - run: pytest -vv tests/integration/workflows/python_uv | ||
| ruby-integration: | ||
| name: ${{ matrix.os }} / ${{ matrix.python }} / ruby ${{ matrix.ruby }} | ||
| if: github.repository_owner == 'aws' | ||
| runs-on: ${{ matrix.os }} | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| os: | ||
| - ubuntu-latest | ||
| - windows-latest | ||
| python: | ||
| - "3.13" | ||
| ruby: | ||
| - "3.2" | ||
| - "4.0" | ||
| steps: | ||
| - uses: actions/checkout@v6 | ||
| - uses: actions/setup-python@v6 | ||
| with: | ||
| python-version: ${{ matrix.python }} | ||
| - uses: ruby/setup-ruby@4dc28cf14d77b0afa6832d9765ac422dbf0dfedd # v1 | ||
| with: | ||
| ruby-version: ${{ matrix.ruby }} | ||
| - run: make init | ||
| - run: pytest -vv tests/integration/workflows/ruby_bundler | ||
| dotnet-integration: | ||
| name: ${{ matrix.os }} / ${{ matrix.python }} / dotnet ${{ matrix.dotnet }} | ||
| if: github.repository_owner == 'aws' | ||
| runs-on: ${{ matrix.os }} | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| os: | ||
| - ubuntu-latest | ||
| - windows-latest | ||
| python: | ||
| - "3.13" | ||
| dotnet: | ||
| - "6.0.x" | ||
| - "8.0.x" | ||
| - "10.0.x" | ||
| steps: | ||
| - uses: actions/checkout@v6 | ||
| - uses: actions/setup-python@v6 | ||
| with: | ||
| python-version: ${{ matrix.python }} | ||
| - uses: actions/setup-dotnet@v5 | ||
| with: | ||
| dotnet-version: ${{ matrix.dotnet }} | ||
| - run: make init | ||
| - run: pytest -vv tests/integration/workflows/dotnet_clipackage | ||
| rust-cargo-lambda-integration: | ||
| name: ${{ matrix.os }} / ${{ matrix.python }} / rust-cargo-lambda | ||
| if: github.repository_owner == 'aws' | ||
| runs-on: ${{ matrix.os }} | ||
| env: | ||
| CARGO_LAMBDA_VERSION: 0.15.0 | ||
| defaults: | ||
| run: | ||
| shell: bash | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| os: | ||
| - ubuntu-latest | ||
| - windows-latest | ||
| python: | ||
| - "3.13" | ||
| rust: | ||
| - stable | ||
| steps: | ||
| - uses: actions/checkout@v6 | ||
| - uses: actions/setup-python@v6 | ||
| with: | ||
| python-version: ${{ matrix.python }} | ||
| # Install and configure Rust | ||
| - name: Install rustup | ||
| run: | | ||
| : install rustup if needed | ||
| if ! command -v rustup &> /dev/null ; then | ||
| curl --proto '=https' --tlsv1.2 --retry 10 --retry-connrefused -fsSL "https://sh.rustup.rs" | sh -s -- --default-toolchain none -y | ||
| echo "${CARGO_HOME:-$HOME/.cargo}/bin" >> $GITHUB_PATH | ||
| fi | ||
| if: ${{ matrix.os }} == 'ubuntu-latest' | ||
|
Check warning on line 410 in .github/workflows/build.yml
|
||
| - name: rustup toolchain install ${{ matrix.rust }} | ||
| run: rustup toolchain install ${{ matrix.rust }} --profile minimal --no-self-update | ||
| - run: rustup default ${{ matrix.rust }} | ||
| - run: | | ||
| : disable incremental compilation | ||
| echo CARGO_INCREMENTAL=0 >> $GITHUB_ENV | ||
| - run: | | ||
| : enable colors in Cargo output | ||
| echo CARGO_TERM_COLOR=always >> $GITHUB_ENV | ||
| # Install and configure Cargo Lambda | ||
| - name: Install Cargo Lambda | ||
| run: pip install cargo-lambda==$CARGO_LAMBDA_VERSION | ||
| - run: echo "$HOME/.local/bin" >> $GITHUB_PATH | ||
| - run: make init | ||
| - run: pytest -vv tests/integration/workflows/rust_cargo | ||