Skip to content

Commit 1db4d38

Browse files
authored
Merge branch 'storage-node-18' into node18/system-test
2 parents 89368d3 + 2686699 commit 1db4d38

140 files changed

Lines changed: 263 additions & 224092 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/.OwlBot.lock.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,5 @@
1313
# limitations under the License.
1414
docker:
1515
image: gcr.io/cloud-devrel-public-resources/owlbot-nodejs-mono-repo:latest
16-
digest: sha256:af5fe933b006a4679903d4dc8e1f11e45b46c53acef70e4fd6a4b1949fab8781
17-
# created: 2026-05-06T17:06:25.633305017Z
16+
digest: sha256:909f781cd00f94ea393b711b954050e67fd0888cfb8c34f3a1ac00e3bfe6a9d9
17+
# created: 2026-07-17T20:41:55.903802238Z

.github/workflows/assign-reviewers.yml

Lines changed: 72 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
name: Auto Assign Reviewers
22

33
on:
4+
# pull_request_target is required to grant write permissions for reviewer assignment on fork PRs.
5+
# The workflow only runs github-script and does not check out or execute untrusted code.
6+
# zizmor: ignore[dangerous-triggers]
47
pull_request_target:
5-
types: [opened, ready_for_review, reopened]
8+
types: [opened, ready_for_review, reopened, synchronize]
69

710
permissions:
811
pull-requests: write
@@ -17,54 +20,84 @@ jobs:
1720
continue-on-error: true
1821
uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7
1922
with:
20-
github-token: ${{ secrets.GOOGLER_CHECK_TOKEN || secrets.GITHUB_TOKEN }}
23+
github-token: ${{ secrets.GITHUB_TOKEN }}
2124
script: |
2225
const author = context.payload.pull_request.user.login;
23-
24-
const ALLOWED_BOTS = new Set([
25-
'gcf-owl-bot[bot]',
26-
'gcf-owl-bot',
27-
'release-please[bot]',
28-
'release-please',
29-
'dependabot[bot]',
30-
'dependabot',
31-
'renovate-bot',
32-
'renovate',
33-
'yoshi-code-bot'
34-
]);
35-
36-
let isGoogler = ALLOWED_BOTS.has(author);
37-
38-
if (isGoogler) {
39-
console.log(`${author} is a trusted bot. Treating as Googler.`);
40-
} else {
41-
const orgs = ['googlers', 'GoogleCloudPlatform', 'googleapis'];
42-
for (const org of orgs) {
26+
27+
// Release PRs should remain the responsibility of the oncall,
28+
// so we route them only to the default team rather than individual team members.
29+
if (author === 'release-please[bot]' || author === 'release-please') {
30+
console.log(`PR opened by ${author}. Ensuring cloud-sdk-nodejs-team is assigned as a reviewer.`);
31+
const requestedTeams = context.payload.pull_request.requested_teams || [];
32+
const hasDefaultTeam = requestedTeams.some(team => team.slug === 'cloud-sdk-nodejs-team');
33+
if (!hasDefaultTeam) {
4334
try {
44-
const res = await github.rest.orgs.checkMembershipForUser({
45-
org: org,
46-
username: author,
35+
await github.rest.pulls.requestReviewers({
36+
owner: context.repo.owner,
37+
repo: context.repo.repo,
38+
pull_number: context.payload.pull_request.number,
39+
team_reviewers: ['cloud-sdk-nodejs-team'],
4740
});
48-
if (res.status === 204) {
49-
isGoogler = true;
50-
console.log(`${author} is a member of '${org}' organization.`);
51-
break;
52-
}
53-
} catch (error) {
54-
if (error.status === 404) {
55-
console.log(`${author} is NOT a member of '${org}' organization.`);
56-
} else {
57-
console.warn(`Could not check membership in '${org}' organization: Status ${error.status}.`);
58-
}
41+
} catch (err) {
42+
console.error("Failed to assign default cloud-sdk-nodejs-team reviewer:", err.message || err);
5943
}
6044
}
45+
return;
46+
}
47+
48+
const requestedReviewers = context.payload.pull_request.requested_reviewers || [];
49+
const requestedTeams = context.payload.pull_request.requested_teams || [];
50+
51+
const hasDefaultTeam = requestedTeams.some(team => team.slug === 'cloud-sdk-nodejs-team');
52+
const hasRouteSpecificTeam = requestedTeams.some(team => team.slug !== 'cloud-sdk-nodejs-team');
53+
54+
// Check if PR has already been reviewed
55+
let hasReviews = false;
56+
try {
57+
const { data: reviews } = await github.rest.pulls.listReviews({
58+
owner: context.repo.owner,
59+
repo: context.repo.repo,
60+
pull_number: context.payload.pull_request.number,
61+
});
62+
if (reviews.length > 0) {
63+
console.log("PR already has reviews.");
64+
hasReviews = true;
65+
}
66+
} catch (err) {
67+
console.warn("Failed to check PR reviews:", err.message || err);
6168
}
6269
63-
if (!isGoogler) {
64-
console.log("PR not opened by a Googler. Skipping auto-assignment.");
70+
let shouldExit = false;
71+
if (requestedReviewers.length > 0) {
72+
console.log(`PR already has requested reviewers: ${requestedReviewers.map(r => r.login).join(', ')}.`);
73+
shouldExit = true;
74+
} else if (hasRouteSpecificTeam) {
75+
console.log(`PR already has route-specific team reviewer requested: ${requestedTeams.map(t => t.slug).join(', ')}.`);
76+
shouldExit = true;
77+
} else if (hasReviews) {
78+
shouldExit = true;
79+
}
80+
81+
if (shouldExit) {
82+
if (hasDefaultTeam) {
83+
console.log("PR already has individual, route-specific reviewers, or reviews, but default cloud-sdk-nodejs-team is still requested. Removing it...");
84+
try {
85+
await github.rest.pulls.removeRequestedReviewers({
86+
owner: context.repo.owner,
87+
repo: context.repo.repo,
88+
pull_number: context.payload.pull_request.number,
89+
reviewers: [],
90+
team_reviewers: ['cloud-sdk-nodejs-team'],
91+
});
92+
} catch (err) {
93+
console.warn("Failed to remove default cloud-sdk-nodejs-team reviewer:", err.message || err);
94+
}
95+
}
96+
console.log("Skipping auto-assignment.");
6597
return;
6698
}
6799
100+
68101
// 2. Get list of files modified in the PR
69102
const { data: files } = await github.rest.pulls.listFiles({
70103
owner: context.repo.owner,
@@ -213,6 +246,7 @@ jobs:
213246
owner: context.repo.owner,
214247
repo: context.repo.repo,
215248
pull_number: context.payload.pull_request.number,
249+
reviewers: [],
216250
team_reviewers: ['cloud-sdk-nodejs-team'],
217251
});
218252
} catch (err) {

.github/workflows/discovery.yaml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,17 @@ jobs:
1515
persist-credentials: false
1616
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
1717
with:
18-
node-version: 16
18+
node-version: 22
19+
- uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4
20+
with:
21+
version: ^10.0.0
22+
1923
# Install all deps, including dev dependencies.
20-
- run: cd handwritten/bigquery && npm install
24+
- run: cd handwritten/bigquery && pnpm install
2125
# Generate types
22-
- run: cd handwritten/bigquery && npm run types
26+
- run: cd handwritten/bigquery && pnpm run types
2327
# Fix formatting
24-
- run: cd handwritten/bigquery && npm run fix
28+
- run: cd handwritten/bigquery && pnpm run fix
2529
# Submit pull request
2630
- uses: googleapis/code-suggester@f9fef85aa02459e30e62526abe950341cbbd768b # v5
2731
env:

.pnpmfile.cjs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,30 @@ module.exports = {
2121
mutateC8(pkg.devDependencies, pkg.name, 'devDependencies', context);
2222
}
2323

24+
// Check if this package has brace-expansion as a dependency or devDependency
25+
if (pkg.dependencies && pkg.dependencies['brace-expansion']) {
26+
mutateBraceExpansion(pkg.dependencies, pkg.name, 'dependencies', context);
27+
}
28+
if (pkg.devDependencies && pkg.devDependencies['brace-expansion']) {
29+
mutateBraceExpansion(pkg.devDependencies, pkg.name, 'devDependencies', context);
30+
}
2431
return pkg;
2532
}
2633
}
2734
};
2835

36+
function mutateBraceExpansion(deps, pkgName, depType, context) {
37+
const nodeVersion = process.version;
38+
const majorVersion = parseInt(nodeVersion.replace('v', '').split('.')[0], 10);
39+
40+
if (majorVersion === 18) {
41+
if (deps['brace-expansion'] && deps['brace-expansion'].startsWith('^5.')) {
42+
console.log(`[pnpmfile] Node.js version is 18. Overriding brace-expansion to 5.0.7 in ${pkgName}`);
43+
deps['brace-expansion'] = '5.0.7';
44+
}
45+
}
46+
}
47+
2948
function mutateYargs(deps, pkgName, depType, context) {
3049
const nodeVersion = process.version;
3150
const majorVersion = parseInt(nodeVersion.replace('v', '').split('.')[0], 10);

.release-please-manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"core/dev-packages/jsdoc-region-tag": "4.0.3",
55
"core/dev-packages/pack-n-play": "4.2.3",
66
"core/generator/gapic-generator-typescript": "4.13.0",
7-
"core/packages/gapic-node-processing": "0.1.10",
7+
"core/packages/gapic-node-processing": "0.1.11",
88
"core/packages/gax": "5.0.8",
99
"core/packages/gaxios": "7.3.0",
1010
"core/packages/gcp-metadata": "8.1.4",

changelog.json

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,24 @@
11
{
22
"repository": "googleapis/google-cloud-node",
33
"entries": [
4+
{
5+
"changes": [
6+
{
7+
"type": "fix",
8+
"sha": "c2f51364b47c40e6793c55d3020329e1fa4a9f74",
9+
"message": "Move typescript to dependencies for AST runtime execution",
10+
"issues": [
11+
"8962"
12+
],
13+
"scope": "gapic-node-processing"
14+
}
15+
],
16+
"version": "0.1.11",
17+
"language": "JAVASCRIPT",
18+
"artifactName": "gapic-node-processing",
19+
"id": "0f3e8835-d490-4fb9-8b07-25406b1826be",
20+
"createTime": "2026-07-24T15:02:00.313Z"
21+
},
422
{
523
"changes": [
624
{
@@ -83144,5 +83162,5 @@
8314483162
"createTime": "2023-01-28T04:18:24.718Z"
8314583163
}
8314683164
],
83147-
"updateTime": "2026-07-23T20:57:58.341Z"
83165+
"updateTime": "2026-07-24T15:02:00.313Z"
8314883166
}

core/generator/gapic-generator-typescript/package-lock.json

Lines changed: 26 additions & 23 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

core/generator/gapic-generator-typescript/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
"long": "^5.3.2",
5151
"object-hash": "^3.0.0",
5252
"proto3-json-serializer": "^3.0.3",
53-
"protobufjs": "^7.5.8",
53+
"protobufjs": "^7.6.5",
5454
"protobufjs-cli": "^1.2.0",
5555
"prettier": "^3.2.5",
5656
"yargs": "^17.7.2"

0 commit comments

Comments
 (0)