mirror of
https://github.com/protocolbuffers/protobuf.git
synced 2026-03-30 20:07:27 +00:00
## Summary Upgrade GitHub Actions to their latest versions to ensure compatibility with Node 24, as Node 20 will reach end-of-life in April 2026. ## Changes | Action | Old Version(s) | New Version | Release | Files | |--------|---------------|-------------|---------|-------| | `actions/cache` | [`1bd1e32`](1bd1e32a3b) | [`8b402f5`](8b402f58fb) | [Release](https://github.com/actions/cache/releases/tag/v5) | clear_caches.yml | | `actions/checkout` | [`8ade135`](8ade135a41) | [`8e8c483`](8e8c483db8) | [Release](https://github.com/actions/checkout/releases/tag/v6) | scorecard.yml, staleness_refresh.yml, update_php_repo.yml | | `actions/download-artifact` | [`018cc2c`](018cc2cf5b), [`fa0a91b`](fa0a91b85d) | [`37930b1`](37930b1c2a) | [Release](https://github.com/actions/download-artifact/releases/tag/v7) | test_cpp.yml, test_php_ext.yml, test_upb.yml | | `actions/setup-dotnet` | [`3447fd6`](3447fd6a9f) | [`baa11fb`](baa11fbfe1) | [Release](https://github.com/actions/setup-dotnet/releases/tag/v5) | test_csharp.yml | | `actions/setup-java` | [`3a4f6e1`](3a4f6e1af5) | [`be666c2`](be666c2fcd) | [Release](https://github.com/actions/setup-java/releases/tag/v5) | test_bazel.yml | | `actions/setup-python` | [`39cd149`](39cd14951b), [`e797f83`](e797f83bcb) | [`a309ff8`](a309ff8b42) | [Release](https://github.com/actions/setup-python/releases/tag/v6) | test_python.yml, test_upb.yml | | `actions/stale` | [`b69b346`](b69b346013) | [`9971854`](997185467f) | [Release](https://github.com/actions/stale/releases/tag/v10) | janitor.yml | | `actions/upload-artifact` | [`5076954`](50769540e7), [`v4`](https://github.com/actions/upload-artifact/releases/tag/v4) | [`b7c566a`](b7c566a772) | [Release](https://github.com/actions/upload-artifact/releases/tag/v6) | scorecard.yml, test_cpp.yml, test_php_ext.yml, test_ruby.yml, test_upb.yml | ## Context Per [GitHub's announcement](https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/), Node 20 is being deprecated and runners will begin using Node 24 by default starting March 4th, 2026. ### Why this matters - **Node 20 EOL**: April 2026 - **Node 24 default**: March 4th, 2026 - **Action**: Update to latest action versions that support Node 24 ### Security Note Actions that were previously pinned to commit SHAs remain pinned to SHAs (updated to the latest release SHA) to maintain the security benefits of immutable references. ### Testing These changes only affect CI/CD workflow configurations and should not impact application functionality. The workflows should be tested by running them on a branch before merging. Closes #25572 COPYBARA_INTEGRATE_REVIEW=https://github.com/protocolbuffers/protobuf/pull/25572 from salmanmkc:upgrade-github-actions-node24ef77dcfa4fPiperOrigin-RevId: 874140973
125 lines
4.6 KiB
YAML
125 lines
4.6 KiB
YAML
name: Python Tests
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
continuous-run:
|
|
required: true
|
|
description: "Boolean string denoting whether this run is continuous --
|
|
empty string for presubmit, non-empty string for continuous."
|
|
type: string
|
|
safe-checkout:
|
|
required: true
|
|
description: "The SHA key for the commit we want to run over"
|
|
type: string
|
|
continuous-prefix:
|
|
required: true
|
|
description: "The string continuous-only tests should be prefixed with when displaying test
|
|
results."
|
|
type: string
|
|
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
linux:
|
|
strategy:
|
|
fail-fast: false # Don't cancel all jobs if one fails.
|
|
matrix:
|
|
type: [ Pure, C++]
|
|
version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
|
|
include:
|
|
- type: Pure
|
|
targets: //python/... //python:python_version_test
|
|
flags: --define=use_fast_cpp_protos=false
|
|
- type: C++
|
|
targets: //python/... //python:python_version_test
|
|
flags: --define=use_fast_cpp_protos=true
|
|
# Test using WORKSPACE with our oldest support Python version.
|
|
- version: "3.10"
|
|
- version: "3.11"
|
|
continuous-only: true
|
|
- version: "3.12"
|
|
continuous-only: true
|
|
- version: "3.13"
|
|
continuous-only: true
|
|
- version: "3.14"
|
|
- type: C++
|
|
version: aarch64
|
|
targets: //python/... //python:aarch64_test
|
|
# TODO Enable this once conformance tests are fixed.
|
|
flags: --define=use_fast_cpp_protos=true --test_tag_filters=-conformance
|
|
image: us-docker.pkg.dev/protobuf-build/containers/test/linux/emulation:8.0.1-aarch64-168f9c9d015a0fa16611e1e9eede796fe9bfbb69
|
|
|
|
name: ${{ matrix.continuous-only && inputs.continuous-prefix || '' }} Linux ${{ matrix.type }} ${{ matrix.version }} ${{ matrix.nobzlmod && 'No Bzlmod' || '' }}
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout pending changes
|
|
if: ${{ !matrix.continuous-only || inputs.continuous-run }}
|
|
uses: protocolbuffers/protobuf-ci/checkout@v5
|
|
with:
|
|
ref: ${{ inputs.safe-checkout }}
|
|
- name: Run tests
|
|
if: ${{ !matrix.continuous-only || inputs.continuous-run }}
|
|
uses: protocolbuffers/protobuf-ci/bazel-docker@v5
|
|
with:
|
|
image: ${{ matrix.image || format('us-docker.pkg.dev/protobuf-build/containers/test/linux/python:8.0.1-{0}-5237f14696e60e4b050edfbf7ba9b374f37f83c6', matrix.version) }}
|
|
credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }}
|
|
bazel-cache: python_linux/${{ matrix.type }}_${{ matrix.version }}
|
|
bazel: test ${{ matrix.targets }} ${{ matrix.flags }} ${{ matrix.nobzlmod && '--noenable_bzlmod' || '' }} --test_env=KOKORO_PYTHON_VERSION
|
|
|
|
|
|
macos:
|
|
strategy:
|
|
fail-fast: false # Don't cancel all jobs if one fails.
|
|
matrix:
|
|
type: [ Pure, C++]
|
|
version: [ "3.12", "3.13", "3.14" ]
|
|
include:
|
|
- type: Pure
|
|
targets: //python/... //python:python_version_test
|
|
- type: C++
|
|
targets: //python/... //python:python_version_test
|
|
flags: --define=use_fast_cpp_protos=true
|
|
- version: "3.13"
|
|
continuous-only: true
|
|
- version: "3.14"
|
|
continuous-only: true
|
|
|
|
name: MacOS ${{ matrix.type }} ${{ matrix.version }}
|
|
runs-on: macos-14
|
|
steps:
|
|
- name: Checkout pending changes
|
|
uses: protocolbuffers/protobuf-ci/checkout@v5
|
|
with:
|
|
ref: ${{ inputs.safe-checkout }}
|
|
|
|
- name: Pin Python version
|
|
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
|
with:
|
|
python-version: ${{ matrix.version }}
|
|
cache: pip
|
|
cache-dependency-path: 'python/requirements.txt'
|
|
|
|
- name: Validate version
|
|
run: python3 --version | grep ${{ matrix.version }} || (echo "Invalid Python version - $(python3 --version)" && exit 1)
|
|
|
|
- name: Create and start virtual environment
|
|
run: |
|
|
python3 -m venv venv
|
|
source venv/bin/activate
|
|
|
|
- name: Run tests
|
|
uses: protocolbuffers/protobuf-ci/bazel@v5
|
|
env:
|
|
KOKORO_PYTHON_VERSION: ${{ matrix.version }}
|
|
with:
|
|
version: 8.0.1 # Bazel version
|
|
credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }}
|
|
bazel-cache: python_macos/${{ matrix.type }}_${{ matrix.version }}
|
|
bazel: >-
|
|
test ${{ matrix.targets }} ${{ matrix.flags }}
|
|
--test_env=KOKORO_PYTHON_VERSION=${{ matrix.version }}
|
|
--macos_minimum_os=12.0
|