7676 - run : mkdir junit-xml
7777 - run : poe test ${{matrix.pytestExtraArgs}} -s --junit-xml=junit-xml/${{ matrix.python }}--${{ matrix.os }}.xml
7878 timeout-minutes : 15
79+ # Time skipping doesn't yet support ARM
80+ - if : ${{ !endsWith(matrix.os, '-arm') }}
81+ run : poe test ${{matrix.pytestExtraArgs}} -s --workflow-environment time-skipping --junit-xml=junit-xml/${{ matrix.python }}--${{ matrix.os }}--time-skipping.xml
82+ timeout-minutes : 10
83+ # Check cloud if proper target and not on fork
84+ - if : ${{ matrix.cloudTestTarget && (github.event.pull_request.head.repo.full_name == '' || github.event.pull_request.head.repo.full_name == 'temporalio/sdk-python') }}
85+ run : poe test ${{matrix.pytestExtraArgs}} -s -k test_cloud_client --junit-xml=junit-xml/${{ matrix.python }}--${{ matrix.os }}--cloud.xml
86+ timeout-minutes : 10
87+ env :
88+ TEMPORAL_CLIENT_CLOUD_API_KEY : ${{ secrets.TEMPORAL_CLIENT_CLOUD_API_KEY }}
89+ TEMPORAL_CLIENT_CLOUD_API_VERSION : 2024-05-13-00
90+ TEMPORAL_CLIENT_CLOUD_NAMESPACE : sdk-ci.a2dd6
91+ - if : ${{ matrix.openaiTestTarget && (github.event.pull_request.head.repo.full_name == '' || github.event.pull_request.head.repo.full_name == 'temporalio/sdk-python') }}
92+ run : poe test tests/contrib/openai_agents/test_openai.py ${{matrix.pytestExtraArgs}} -s --junit-xml=junit-xml/${{ matrix.python }}--${{ matrix.os }}--openai.xml
93+ timeout-minutes : 10
94+ env :
95+ OPENAI_API_KEY : ${{ secrets.OPENAI_API_KEY }}
7996 - name : " Upload junit-xml artifacts"
8097 uses : actions/upload-artifact@v4
8198 if : always()
@@ -84,7 +101,43 @@ jobs:
84101 path : junit-xml
85102 retention-days : 14
86103
104+ # Confirm protos are already generated properly with older protobuf
105+ # library and run test with that older version. We must downgrade protobuf
106+ # so we can generate 3.x and 4.x compatible API. We have to use older
107+ # Python to run this check because the grpcio-tools version we use
108+ # is <= 3.10.
109+ - name : Check generated protos and test protobuf 3.x
110+ if : ${{ matrix.protoCheckTarget }}
111+ env :
112+ TEMPORAL_TEST_PROTO3 : 1
113+ run : |
114+ uv add --python 3.9 "protobuf<4"
115+ uv sync --all-extras
116+ poe build-develop
117+ poe gen-protos
118+ poe format
119+ [[ -z $(git status --porcelain temporalio) ]] || (git diff temporalio; echo "Protos changed"; exit 1)
120+ poe test -s
121+ timeout-minutes : 10
122+
123+ # Do docs stuff (only on one host)
124+ - name : Build API docs
125+ if : ${{ matrix.docsTarget }}
126+ run : poe gen-docs
127+ - name : Deploy prod API docs
128+ if : ${{ github.ref == 'refs/heads/main' && matrix.docsTarget }}
129+ env :
130+ VERCEL_ORG_ID : ${{ secrets.VERCEL_ORG_ID }}
131+ VERCEL_PROJECT_ID : ${{ secrets.VERCEL_PROJECT_ID }}
132+ run : npx vercel deploy build/apidocs -t ${{ secrets.VERCEL_TOKEN }} --prod --yes
87133
134+ # Confirm README ToC is generated properly
135+ - uses : actions/setup-node@v4
136+ - name : Check generated README ToC
137+ if : ${{ matrix.docsTarget }}
138+ run : |
139+ npx doctoc README.md
140+ [[ -z $(git status --porcelain README.md) ]] || (git diff README.md; echo "README changed"; exit 1)
88141 test-latest-deps :
89142 timeout-minutes : 30
90143 runs-on : ubuntu-latest
@@ -120,3 +173,11 @@ jobs:
120173 name : junit-xml--${{github.run_id}}--${{github.run_attempt}}--latest-deps--time-skipping
121174 path : junit-xml
122175 retention-days : 14
176+
177+ # Runs the sdk features repo tests with this repo's current SDK code
178+ features-tests :
179+ uses : temporalio/features/.github/workflows/python.yaml@main
180+ with :
181+ python-repo-path : ${{github.event.pull_request.head.repo.full_name}}
182+ version : ${{github.event.pull_request.head.ref}}
183+ version-is-repo-ref : true
0 commit comments