Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
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
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
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
220 changes: 114 additions & 106 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,12 +56,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 @@ -73,7 +73,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 @@ -86,7 +86,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 Down Expand Up @@ -144,7 +144,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 @@ -205,11 +205,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
env:
TEMPORAL_TRACE_NATIVE_CALLS: true
RUN_INTEGRATION_TESTS: true
REUSE_V8_CONTEXT: ${{ matrix.reuse-v8-context }}

Expand All @@ -229,104 +238,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