Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
f14703f
Add cloudbuild.yaml
danieljbruce May 6, 2026
248638f
Shorten the script
danieljbruce May 6, 2026
cdb2ad1
remove the timeout
danieljbruce May 6, 2026
372a03b
feat: add new Bigtable feature
danieljbruce May 6, 2026
7caf8a0
Merge branch 'migrate-bigtable-to-gcp-cloud-build' of https://github.…
danieljbruce May 6, 2026
55b0dec
Merge branch 'main' into migrate-bigtable-to-gcp-cloud-build
danieljbruce May 6, 2026
7a3fadd
Merge branch 'main' into migrate-bigtable-to-gcp-cloud-build
danieljbruce May 6, 2026
5f930f9
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] May 6, 2026
f3772ea
Merge branch 'migrate-bigtable-to-gcp-cloud-build' of https://github.…
gcf-owl-bot[bot] May 6, 2026
83f73dd
feat: add new Bigtable feature
danieljbruce May 6, 2026
d7782b2
Merge branch 'migrate-bigtable-to-gcp-cloud-build' of https://github.…
danieljbruce May 6, 2026
6be7893
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] May 6, 2026
1f71bd1
Merge branch 'migrate-bigtable-to-gcp-cloud-build' of https://github.…
gcf-owl-bot[bot] May 6, 2026
e6cc411
Changed to `ubuntu` in the yaml file
danieljbruce May 6, 2026
c836303
Merge branch 'migrate-bigtable-to-gcp-cloud-build' of https://github.…
danieljbruce May 6, 2026
1ab42bc
change the dir to handwritten/bigtable
danieljbruce May 6, 2026
8e6ff1d
Change the pre-system test script
danieljbruce May 7, 2026
051f019
Fix the unique id error
danieljbruce May 7, 2026
20b11db
Add pre system tests to the first step
danieljbruce May 7, 2026
a74e61e
Remove the comment changed to
danieljbruce May 7, 2026
0aae31a
Eliminate the first pack and play error
danieljbruce May 8, 2026
af443d1
Fix `require` error with node dependencies
danieljbruce May 8, 2026
57bbdad
Modify the pack and play tests by adding a header
danieljbruce May 8, 2026
f6d43fe
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] May 8, 2026
8dd7d70
Eliminate unnecessary comments
danieljbruce May 8, 2026
fd18c1a
Merge branch 'migrate-bigtable-to-gcp-cloud-build' of https://github.…
danieljbruce May 8, 2026
bfe5155
Restore the system test script
danieljbruce May 8, 2026
e51a2e8
Increase the timeout to 3 hours for the system tes
danieljbruce May 8, 2026
11f861b
Merge branch 'main' into migrate-bigtable-to-gcp-cloud-build
danieljbruce May 8, 2026
88a19c7
Add dependency comment
danieljbruce May 8, 2026
c6a65a8
Merge branch 'migrate-bigtable-to-gcp-cloud-build' of https://github.…
danieljbruce May 11, 2026
83539cc
Do a conditional diff check
danieljbruce May 11, 2026
9f6587c
check against main removed
danieljbruce May 11, 2026
9916905
Add a comment about the packnplay tests
danieljbruce May 11, 2026
3ce9c3f
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] May 11, 2026
45420f8
pin the node version
danieljbruce May 11, 2026
206070f
Apply suggestions from code review
danieljbruce May 12, 2026
93476ce
Change all node runs to node 24
danieljbruce May 12, 2026
b8599b8
Fix the install script to use cjs
danieljbruce May 12, 2026
34475c4
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] May 12, 2026
9fcae3c
Remove initial step for checking the diff
danieljbruce May 12, 2026
11f52d2
Remove workspace check and presystem-test
danieljbruce May 12, 2026
ae907a5
Merge branch 'migrate-bigtable-to-gcp-cloud-build' of https://github.…
danieljbruce May 12, 2026
f786ec8
Merge branch 'main' of https://github.com/googleapis/google-cloud-nod…
danieljbruce May 12, 2026
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
74 changes: 74 additions & 0 deletions handwritten/bigtable/cloudbuild.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
steps:
# 1. Set up Node.js environment
- name: 'node:24'
entrypoint: 'bash'
args:
- '-c'
- |
npm install
dir: 'handwritten/bigtable'
id: 'install-dependencies'

# 2. Configure environment variables for the tests and run system tests
# - GOOGLE_APPLICATION_CREDENTIALS: GCB steps run as a service account
# that is typically granted permissions directly. Explicitly setting
# GOOGLE_APPLICATION_CREDENTIALS might not be needed if the GCB service
# account has the right roles (e.g., Bigtable Admin, Bigtable User).
# If you need to use specific service account key JSON, you'd store it
# in Secret Manager and mount it here. For simplicity, we'll rely on
# the GCB service account's inherent permissions.
# - GCLOUD_PROJECT: Can be passed as a build variable.
- name: 'node:24'
entrypoint: 'bash'
args:
- '-c'
- |
npm run system-test
dir: 'handwritten/bigtable'
env:
- 'GCLOUD_PROJECT=${_GCP_PROJECT_ID}' # Pass project ID via build variable
# If you need specific credentials from Secret Manager, uncomment these:
# - 'GOOGLE_APPLICATION_CREDENTIALS=/secrets/sa-key.json'
id: 'run-system-tests'
waitFor: ['install-dependencies']
# For Secret Manager, uncomment these (adjust secret name and volume path as needed):
# secretEnv: ['SA_KEY']
# volumes:
# - name: 'sa-keys'
# path: '/secrets'

# 3. (Optional) Code Coverage Reporting
- name: 'node:24'
entrypoint: 'bash'
args:
- '-c'
- |
# Check if nyc is installed and run report
if [ -f ./node_modules/nyc/bin/nyc.js ]; then
./node_modules/nyc/bin/nyc.js report || true # `|| true` prevents build failure if nyc report itself exits non-zero
else
echo "nyc not found, skipping coverage report."
fi
# The original codecov.sh script from Kokoro needs to be made available to GCB.
# Options:
# a) Commit codecov.sh into your repo (e.g., .kokoro/codecov.sh) and call it:
# if [ -f .kokoro/codecov.sh ]; then . ./.kokoro/codecov.sh; fi
# b) Replicate its functionality directly in this step.
# c) Store it in a GCS bucket and fetch it.
echo "Codecov reporting (if desired) would be integrated here."
dir: 'handwritten/bigtable'
id: 'coverage-report'
waitFor: ['run-system-tests']

# If you use Secret Manager for credentials, uncomment and configure:
# availableSecrets:
# secretManager:
# - versionName: projects/${PROJECT_ID}/secrets/YOUR_SERVICE_ACCOUNT_KEY_SECRET_NAME/versions/latest
# env: 'SA_KEY' # This env var will hold the secret value. Use it as GOOGLE_APPLICATION_CREDENTIALS in step 3 if needed.

# Define a substitution variable for your project ID
# Replace 'long-door-651' with the actual GCP Project ID your system tests should run against.
substitutions:
_GCP_PROJECT_ID: 'long-door-651'

timeout: '10800s'
10 changes: 7 additions & 3 deletions handwritten/bigtable/src/tabular-api-surface.ts
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this modifying a generated asset? Does this proto.js get made by the generator? If so, does it risk getting overwritten in the future? Would the library break if this happened?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No. tabular-api-surface.ts is entirely handwritten.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh sorry, I meant "protos.js", not this file.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

protos.js diff has been eliminated by merging with main.

Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ import {
} from './index';
import {BoundData, RawFilter} from './filter';
import {Row} from './row';
import {BackoffSettings} from 'google-gax/build/src/gax';
import {google} from '../protos/protos';
import {CallOptions, grpc, ServiceError} from 'google-gax';
import {Transform} from 'stream';
Expand All @@ -38,13 +37,18 @@ import {
} from './client-side-metrics/client-side-metrics-attributes';
import {mutateInternal} from './utils/mutateInternal';

// StrictLongRunningType introduces a type equal to BackoffSettings so that we
// don't have to reach into the gax folder of build which is causing pack and
// play errors.
type StrictLongRunningType = NonNullable<CallOptions['longrunning']>;

// See protos/google/rpc/code.proto
// (4=DEADLINE_EXCEEDED, 8=RESOURCE_EXHAUSTED, 10=ABORTED, 14=UNAVAILABLE)
export const RETRYABLE_STATUS_CODES = new Set([4, 8, 10, 14]);
// (1=CANCELLED)
export const IGNORED_STATUS_CODES = new Set([1]);

export const DEFAULT_BACKOFF_SETTINGS: BackoffSettings = {
export const DEFAULT_BACKOFF_SETTINGS: StrictLongRunningType = {
initialRetryDelayMillis: 10,
retryDelayMultiplier: 2,
maxRetryDelayMillis: 60000,
Expand Down Expand Up @@ -495,7 +499,7 @@ Please use the format 'prezzy' or '${instance.name}/tables/prezzy'.`);

export function getNextDelay(
numConsecutiveErrors: number,
config: BackoffSettings,
config: StrictLongRunningType,
) {
// 0 - 100 ms jitter
const jitter = Math.floor(Math.random() * 100);
Expand Down
2 changes: 1 addition & 1 deletion handwritten/bigtable/system-test/install.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ describe('📦 pack-n-play test', () => {
packageDir: process.cwd(),
sample: {
description: 'JavaScript user can use the library',
ts: readFileSync(
cjs: readFileSync(
'./system-test/fixtures/sample/src/index.js',
).toString(),
},
Expand Down
Loading