Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
d5dc76c
update core
chris-olszewski Oct 21, 2025
858c605
update imports
chris-olszewski Oct 23, 2025
68c2fe0
add skipClientWorkerSetCheck to worker options
chris-olszewski Oct 23, 2025
cb60d7c
update workflow poller assertion
chris-olszewski Oct 23, 2025
ecd3d63
chore: update filter string with new crate names
chris-olszewski Oct 23, 2025
23fdb5c
update proto paths
chris-olszewski Oct 23, 2025
c4bce2e
add new workflow service rpc calls
chris-olszewski Oct 23, 2025
57b2cc2
write doc comment
chris-olszewski Oct 23, 2025
51cd6ff
remove public config setting
chris-olszewski Oct 24, 2025
fecc241
enable skip validation for replay workers
chris-olszewski Oct 24, 2025
a720a26
update core and remove bridge config altering
chris-olszewski Oct 27, 2025
8c320f1
add test for GH 1787
chris-olszewski Oct 27, 2025
e09a2dc
Worker heartbeating
yuandrew Oct 28, 2025
b03bf16
Revert "Worker heartbeating"
yuandrew Oct 28, 2025
fde399c
Merge branch 'main' into olszewski/update_core
yuandrew Oct 28, 2025
59ac47b
bump core to 9e9a46191656fc9ccd95589dac3552410561d620
chris-olszewski Oct 28, 2025
7f17d20
fix tests
chris-olszewski Oct 29, 2025
cb50896
add new rpc calls
chris-olszewski Oct 28, 2025
9d587c0
trace logging
yuandrew Oct 29, 2025
c615bb4
add runtime logger
chris-olszewski Oct 30, 2025
97769a8
enable logging for bridge test
chris-olszewski Oct 30, 2025
18e9c8d
add runtime drop logging
chris-olszewski Oct 30, 2025
2f81432
bump log filter
chris-olszewski Oct 30, 2025
7b5233c
only run hanging test
chris-olszewski Oct 30, 2025
e3edef8
better logging
chris-olszewski Oct 30, 2025
6d83993
use additional events from core
chris-olszewski Oct 30, 2025
d4e8d74
bump tracing branch
chris-olszewski Oct 30, 2025
741bc72
bump to info level
chris-olszewski Oct 30, 2025
e077393
bump tracing branch
chris-olszewski Oct 30, 2025
203348d
enable more tracing
chris-olszewski Oct 30, 2025
6474f2f
bump core
chris-olszewski Oct 30, 2025
eb4e51a
bump timeout
chris-olszewski Oct 30, 2025
4ffd576
remove timeout
chris-olszewski Oct 30, 2025
53d3660
add back heartbeat
chris-olszewski Oct 30, 2025
a049ed0
disable heartbeat
chris-olszewski Oct 30, 2025
a7282cc
bump to instrument heartbeating
chris-olszewski Oct 30, 2025
20ead68
bump core
chris-olszewski Oct 30, 2025
ca73ffb
bump core with warn on heartbeat missing
chris-olszewski Oct 30, 2025
a02eac6
bump core to disable heartbeat
chris-olszewski Oct 30, 2025
99493cb
enable features for ci server
chris-olszewski Oct 30, 2025
60d0864
reenable heartbeat from core
chris-olszewski Oct 30, 2025
fb87c21
add additional heartbeat tracing
chris-olszewski Oct 30, 2025
fc3bb92
Set heartbeat_internal to None
mjameswh Oct 30, 2025
c44f0b1
Reenable all tests
mjameswh Oct 30, 2025
f278408
Enable only runtime tests
mjameswh Oct 30, 2025
f4aabdd
bump to 76b66fa
yuandrew Nov 4, 2025
fecccd0
Merge branch 'main' into bump_to_heartbeat
yuandrew Nov 4, 2025
3e857b7
Decrease what's run in CI
yuandrew Nov 7, 2025
5fcc7c8
Decrease more, add dynamic configs to test harness
yuandrew Nov 7, 2025
35c4cf7
Delete all tests that don't seem to fail
yuandrew Nov 7, 2025
eb27282
add dynamic config for external server
yuandrew Nov 7, 2025
33020c1
add dynamic config for external server, 2nd try
yuandrew Nov 7, 2025
ca29db9
RUST_LOG for CI
yuandrew Nov 7, 2025
32404c4
Add prints
yuandrew Nov 7, 2025
70bf0df
Merge remote-tracking branch 'chris/olszewski/bump_to_heatbeat' into …
yuandrew Nov 7, 2025
44903f4
fix merge issue
yuandrew Nov 7, 2025
ddff246
try with more rust logging
yuandrew Nov 7, 2025
49e0922
more logging on register
yuandrew Nov 7, 2025
f06528e
increase CI timeout
yuandrew Nov 7, 2025
725a017
MORE LOGSSS
yuandrew Nov 7, 2025
b00cafc
self.ever_polled.store
yuandrew Nov 7, 2025
81cef3d
comment out first two tests
yuandrew Nov 7, 2025
30c61de
Try with await Promise.resolve();
yuandrew Nov 7, 2025
418cba7
Comment out Runtime.install() remembers installed options after it ha…
yuandrew Nov 7, 2025
63224e4
Add logging to TS bridge
yuandrew Nov 7, 2025
e337d9f
Test test-bridge instead of runtime
yuandrew Nov 7, 2025
1433dab
test.serial
yuandrew Nov 7, 2025
3b94cd9
use u8 instead of bool for atomic
yuandrew Nov 8, 2025
5a9a09f
Remove EphemeralServer test
yuandrew Nov 8, 2025
b54af77
Remove EphemeralServer test
yuandrew Nov 8, 2025
db62ac3
run test-runtime again
yuandrew Nov 8, 2025
b777fb5
more logs in shutdown path
yuandrew Nov 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
226 changes: 117 additions & 109 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,12 +60,12 @@ jobs:
run:
shell: bash
steps:
- name: 'Checkout code'
- name: "Checkout code"
uses: actions/checkout@v4
with:
submodules: recursive

- name: 'Cache index.node'
- name: "Cache index.node"
id: cached-artifact
uses: actions/cache@v4
with:
Expand All @@ -77,7 +77,7 @@ jobs:
uses: arduino/setup-protoc@v3
with:
# TODO: Upgrade proto once https://github.com/arduino/setup-protoc/issues/99 is fixed
version: '23.x'
version: "23.x"
repo-token: ${{ secrets.GITHUB_TOKEN }}

- name: Upgrade Rust to latest stable
Expand All @@ -90,7 +90,7 @@ jobs:
workspaces: packages/core-bridge -> target
prefix-key: corebridge-buildcache-debug
shared-key: ${{ matrix.platform }}
env-vars: ''
env-vars: ""
save-if: ${{ env.IS_MAIN_OR_RELEASE == 'true' }}

- name: Compile rust code
Expand All @@ -111,7 +111,7 @@ jobs:
# Run integration tests.
# Uses the native binaries built in compile-native-binaries, but build `@temporalio/*` packages locally.
integration-tests:
timeout-minutes: 20
timeout-minutes: 10
needs:
- compile-native-binaries-debug
strategy:
Expand Down Expand Up @@ -148,7 +148,7 @@ jobs:
- name: Set git config
run: git config --global core.autocrlf false

- name: 'Checkout code'
- name: "Checkout code"
uses: actions/checkout@v4
with:
submodules: recursive
Expand Down Expand Up @@ -209,11 +209,20 @@ jobs:
--db-filename temporal.sqlite \
--sqlite-pragma journal_mode=WAL \
--sqlite-pragma synchronous=OFF \
--dynamic-config-value system.enableEagerWorkflowStart=true \
--dynamic-config-value system.enableNexus=true \
--dynamic-config-value frontend.workerVersioningWorkflowAPIs=true \
--dynamic-config-value frontend.workerVersioningDataAPIs=true \
--dynamic-config-value system.enableDeploymentVersions=true \
--dynamic-config-value component.nexusoperations.recordCancelRequestCompletionEvents=true \
--dynamic-config-value frontend.WorkerHeartbeatsEnabled=true \
--dynamic-config-value frontend.ListWorkersEnabled=true \
--headless &> ./devserver.log &

- name: Run Tests
run: npm run test
- name: Run Tests # DEBUG,temporal_sdk_core=DEBUG,temporal_client=DEBUG,temporal_sdk=DEBUG
run: RUST_LOG=DEBUG,temporal_sdk_core=DEBUG,temporal_client=DEBUG,temporal_sdk=DEBUG npm run test
env:
TEMPORAL_TRACE_NATIVE_CALLS: true
RUN_INTEGRATION_TESTS: true
REUSE_V8_CONTEXT: ${{ matrix.reuse-v8-context }}

Expand All @@ -233,104 +242,103 @@ jobs:
TEMPORAL_CLOUD_OPS_TEST_NAMESPACE: ${{ vars.TEMPORAL_CLIENT_NAMESPACE }}
TEMPORAL_CLOUD_OPS_TEST_API_KEY: ${{ secrets.TEMPORAL_CLIENT_CLOUD_API_KEY }}
TEMPORAL_CLOUD_OPS_TEST_API_VERSION: 2024-05-13-00

# FIXME: Move samples tests to a custom activity
# Sample 1: hello-world to local server
- name: Instantiate sample project using verdaccio artifacts - Hello World
run: |
node scripts/init-from-verdaccio.js --registry-dir ${{ steps.tmp-dir.outputs.dir }}/npm-registry --sample https://github.com/temporalio/samples-typescript/tree/main/hello-world --target-dir ${{ steps.tmp-dir.outputs.dir }}/sample-hello-world
node scripts/test-example.js --work-dir "${{ steps.tmp-dir.outputs.dir }}/sample-hello-world"

# Sample 2: hello-world-mtls to cloud server
- name: Instantiate sample project using verdaccio artifacts - Hello World MTLS
run: |
if [ -z "$TEMPORAL_ADDRESS" ] || [ -z "$TEMPORAL_NAMESPACE" ] || [ -z "$TEMPORAL_CLIENT_CERT" ] || [ -z "$TEMPORAL_CLIENT_KEY" ]; then
echo "Skipping hello-world-mtls sample test as required environment variables are not set"
exit 0
fi

node scripts/create-certs-dir.js ${{ steps.tmp-dir.outputs.dir }}/certs
node scripts/init-from-verdaccio.js --registry-dir ${{ steps.tmp-dir.outputs.dir }}/npm-registry --sample https://github.com/temporalio/samples-typescript/tree/main/hello-world-mtls --target-dir ${{ steps.tmp-dir.outputs.dir }}/sample-hello-world-mtls
node scripts/test-example.js --work-dir "${{ steps.tmp-dir.outputs.dir }}/sample-hello-world-mtls"
env:
# These env vars are used by the hello-world-mtls sample
TEMPORAL_ADDRESS: ${{ vars.TEMPORAL_CLIENT_NAMESPACE }}.tmprl.cloud:7233
TEMPORAL_NAMESPACE: ${{ vars.TEMPORAL_CLIENT_NAMESPACE }}
TEMPORAL_CLIENT_CERT: ${{ secrets.TEMPORAL_CLIENT_CERT }}
TEMPORAL_CLIENT_KEY: ${{ secrets.TEMPORAL_CLIENT_KEY }}
TEMPORAL_TASK_QUEUE: ${{ format('tssdk-ci-{0}-{1}-sample-hello-world-mtls-{2}-{3}', matrix.platform, matrix.node, github.run_id, github.run_attempt) }}

TEMPORAL_CLIENT_CERT_PATH: ${{ steps.tmp-dir.outputs.dir }}/certs/client.pem
TEMPORAL_CLIENT_KEY_PATH: ${{ steps.tmp-dir.outputs.dir }}/certs/client.key

- name: Destroy certs dir
if: always()
run: rm -rf ${{ steps.tmp-dir.outputs.dir }}/certs
continue-on-error: true

# Sample 3: fetch-esm to local server
- name: Instantiate sample project using verdaccio artifacts - Fetch ESM
run: |
node scripts/init-from-verdaccio.js --registry-dir ${{ steps.tmp-dir.outputs.dir }}/npm-registry --sample https://github.com/temporalio/samples-typescript/tree/main/fetch-esm --target-dir ${{ steps.tmp-dir.outputs.dir }}/sample-fetch-esm
node scripts/test-example.js --work-dir "${{ steps.tmp-dir.outputs.dir }}/sample-fetch-esm"

# End samples

- name: Upload NPM logs
uses: actions/upload-artifact@v4
if: failure() || cancelled()
with:
name: integration-tests-${{ matrix.platform }}-node${{ matrix.node }}-${{ matrix.reuse-v8-context && 'reuse' || 'noreuse' }}-logs
path: ${{ startsWith(matrix.platform, 'windows') && 'C:\\npm\\_logs\\' || '~/.npm/_logs/' }}

- name: Upload Dev Server logs
uses: actions/upload-artifact@v4
if: failure() || cancelled()
with:
name: integration-tests-${{ matrix.platform }}-node${{ matrix.node }}-${{ matrix.reuse-v8-context && 'reuse' || 'noreuse' }}-devserver-logs
path: ${{ steps.tmp-dir.outputs.dir }}/devserver.log

conventions:
name: Lint and Prune
uses: ./.github/workflows/conventions.yml

# Runs the features repo tests with this repo's current SDK code
# FIXME: Update this job to reuse native build artifacts from compile-native-binaries
features-tests:
name: Features Tests
uses: temporalio/features/.github/workflows/typescript.yaml@main
with:
typescript-repo-path: ${{github.event.pull_request.head.repo.full_name}}
version: ${{github.event.pull_request.head.ref}}
version-is-repo-ref: true
features-repo-ref: main

stress-tests-no-reuse-context:
name: Stress Tests (No Reuse V8 Context)
# FIXME: Update this job to reuse native build artifacts from compile-native-binaries
uses: ./.github/workflows/stress.yml
with:
test-type: ci-stress
test-timeout-minutes: 20
reuse-v8-context: false

stress-tests-reuse-context:
name: Stress Tests (Reuse V8 Context)
# FIXME: Update this job to reuse native build artifacts from compile-native-binaries
uses: ./.github/workflows/stress.yml
with:
test-type: ci-stress
test-timeout-minutes: 20
reuse-v8-context: true

docs:
name: Build Docs
uses: ./.github/workflows/docs.yml
with:
# Can't publish from forks, as secrets won't be available
publish_target: ${{ vars.IS_TEMPORALIO_SDK_TYPESCRIPT_REPO == 'true' && 'draft' || '' }}
secrets:
ALGOLIA_API_KEY: ${{ secrets.ALGOLIA_API_KEY }}
VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
# # FIXME: Move samples tests to a custom activity
# # Sample 1: hello-world to local server
# - name: Instantiate sample project using verdaccio artifacts - Hello World
# run: |
# node scripts/init-from-verdaccio.js --registry-dir ${{ steps.tmp-dir.outputs.dir }}/npm-registry --sample https://github.com/temporalio/samples-typescript/tree/main/hello-world --target-dir ${{ steps.tmp-dir.outputs.dir }}/sample-hello-world
# node scripts/test-example.js --work-dir "${{ steps.tmp-dir.outputs.dir }}/sample-hello-world"
#
# # Sample 2: hello-world-mtls to cloud server
# - name: Instantiate sample project using verdaccio artifacts - Hello World MTLS
# run: |
# if [ -z "$TEMPORAL_ADDRESS" ] || [ -z "$TEMPORAL_NAMESPACE" ] || [ -z "$TEMPORAL_CLIENT_CERT" ] || [ -z "$TEMPORAL_CLIENT_KEY" ]; then
# echo "Skipping hello-world-mtls sample test as required environment variables are not set"
# exit 0
# fi
#
# node scripts/create-certs-dir.js ${{ steps.tmp-dir.outputs.dir }}/certs
# node scripts/init-from-verdaccio.js --registry-dir ${{ steps.tmp-dir.outputs.dir }}/npm-registry --sample https://github.com/temporalio/samples-typescript/tree/main/hello-world-mtls --target-dir ${{ steps.tmp-dir.outputs.dir }}/sample-hello-world-mtls
# node scripts/test-example.js --work-dir "${{ steps.tmp-dir.outputs.dir }}/sample-hello-world-mtls"
# env:
# # These env vars are used by the hello-world-mtls sample
# TEMPORAL_ADDRESS: ${{ vars.TEMPORAL_CLIENT_NAMESPACE }}.tmprl.cloud:7233
# TEMPORAL_NAMESPACE: ${{ vars.TEMPORAL_CLIENT_NAMESPACE }}
# TEMPORAL_CLIENT_CERT: ${{ secrets.TEMPORAL_CLIENT_CERT }}
# TEMPORAL_CLIENT_KEY: ${{ secrets.TEMPORAL_CLIENT_KEY }}
# TEMPORAL_TASK_QUEUE: ${{ format('tssdk-ci-{0}-{1}-sample-hello-world-mtls-{2}-{3}', matrix.platform, matrix.node, github.run_id, github.run_attempt) }}
#
# TEMPORAL_CLIENT_CERT_PATH: ${{ steps.tmp-dir.outputs.dir }}/certs/client.pem
# TEMPORAL_CLIENT_KEY_PATH: ${{ steps.tmp-dir.outputs.dir }}/certs/client.key
#
# - name: Destroy certs dir
# if: always()
# run: rm -rf ${{ steps.tmp-dir.outputs.dir }}/certs
# continue-on-error: true
#
# # Sample 3: fetch-esm to local server
# - name: Instantiate sample project using verdaccio artifacts - Fetch ESM
# run: |
# node scripts/init-from-verdaccio.js --registry-dir ${{ steps.tmp-dir.outputs.dir }}/npm-registry --sample https://github.com/temporalio/samples-typescript/tree/main/fetch-esm --target-dir ${{ steps.tmp-dir.outputs.dir }}/sample-fetch-esm
# node scripts/test-example.js --work-dir "${{ steps.tmp-dir.outputs.dir }}/sample-fetch-esm"
#
# # End samples
#
# - name: Upload NPM logs
# uses: actions/upload-artifact@v4
# if: failure() || cancelled()
# with:
# name: integration-tests-${{ matrix.platform }}-node${{ matrix.node }}-${{ matrix.reuse-v8-context && 'reuse' || 'noreuse' }}-logs
# path: ${{ startsWith(matrix.platform, 'windows') && 'C:\\npm\\_logs\\' || '~/.npm/_logs/' }}
#
# - name: Upload Dev Server logs
# uses: actions/upload-artifact@v4
# if: failure() || cancelled()
# with:
# name: integration-tests-${{ matrix.platform }}-node${{ matrix.node }}-${{ matrix.reuse-v8-context && 'reuse' || 'noreuse' }}-devserver-logs
# path: ${{ steps.tmp-dir.outputs.dir }}/devserver.log

#conventions:
# name: Lint and Prune
# uses: ./.github/workflows/conventions.yml

# # Runs the features repo tests with this repo's current SDK code
# # FIXME: Update this job to reuse native build artifacts from compile-native-binaries
# features-tests:
# name: Features Tests
# uses: temporalio/features/.github/workflows/typescript.yaml@main
# with:
# typescript-repo-path: ${{github.event.pull_request.head.repo.full_name}}
# version: ${{github.event.pull_request.head.ref}}
# version-is-repo-ref: true
# features-repo-ref: main

# stress-tests-no-reuse-context:
# name: Stress Tests (No Reuse V8 Context)
# # FIXME: Update this job to reuse native build artifacts from compile-native-binaries
# uses: ./.github/workflows/stress.yml
# with:
# test-type: ci-stress
# test-timeout-minutes: 20
# reuse-v8-context: false
#
# stress-tests-reuse-context:
# name: Stress Tests (Reuse V8 Context)
# # FIXME: Update this job to reuse native build artifacts from compile-native-binaries
# uses: ./.github/workflows/stress.yml
# with:
# test-type: ci-stress
# test-timeout-minutes: 20
# reuse-v8-context: true

# docs:
# name: Build Docs
# uses: ./.github/workflows/docs.yml
# with:
# # Can't publish from forks, as secrets won't be available
# publish_target: ${{ vars.IS_TEMPORALIO_SDK_TYPESCRIPT_REPO == 'true' && 'draft' || '' }}
# secrets:
# ALGOLIA_API_KEY: ${{ secrets.ALGOLIA_API_KEY }}
# VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
# VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
# VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
Loading
Loading