Skip to content

Commit ead83cd

Browse files
committed
ci: generate dataconnect SDK in CI
1 parent cd03ed9 commit ead83cd

File tree

6 files changed

+126
-125
lines changed

6 files changed

+126
-125
lines changed

.github/workflows/local-ci.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,14 +87,17 @@ jobs:
8787
max_attempts: 3
8888
command: npm i -g firebase-tools@14
8989

90+
# ✅ Ensure Data Connect SDKs are generated before emulator tests
91+
- name: Generate Data Connect SDKs
92+
run: firebase dataconnect:sdk:generate
93+
9094
# Build packages before testing
9195
- name: Build packages
9296
run: pnpm turbo build
9397

9498
# Verify build outputs
9599
- name: Verify build outputs
96100
run: |
97-
# Check all packages for dist directories
98101
MISSING_BUILDS=""
99102
for PKG_DIR in packages/*; do
100103
if [ -d "$PKG_DIR" ] && [ -f "$PKG_DIR/package.json" ]; then

.github/workflows/release.yml

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,10 @@ jobs:
109109
max_attempts: 3
110110
command: npm i -g firebase-tools@latest
111111

112+
# ✅ Ensure Data Connect SDKs are generated before emulator tests
113+
- name: Generate Data Connect SDKs
114+
run: firebase dataconnect:sdk:generate
115+
112116
- name: Run tests with emulator
113117
run: pnpm test:emulator
114118

@@ -118,7 +122,6 @@ jobs:
118122
- name: Verify build outputs
119123
run: |
120124
echo "Checking build outputs..."
121-
# Check all packages for dist directories
122125
MISSING_BUILDS=""
123126
for PKG_DIR in packages/*; do
124127
if [ -d "$PKG_DIR" ] && [ -f "$PKG_DIR/package.json" ]; then
@@ -128,27 +131,22 @@ jobs:
128131
fi
129132
fi
130133
done
131-
132134
if [ -n "$MISSING_BUILDS" ]; then
133135
echo "❌ Build outputs missing for: $MISSING_BUILDS"
134136
exit 1
135137
fi
136-
137138
echo "✅ All build outputs verified"
138139
139140
- name: Validate changesets
140141
run: |
141142
set -e
142143
CHANGESET_FILES=$(find .changeset -name "*.md" -type f ! -name "README.md" 2>/dev/null || true)
143-
144144
if [ -z "$CHANGESET_FILES" ]; then
145145
echo "❌ No changesets found!"
146146
echo ""
147147
echo "Please create changesets locally with: pnpm changeset"
148-
echo "Changesets should be created during development, not during release."
149148
exit 1
150149
fi
151-
152150
CHANGESET_COUNT=$(echo "$CHANGESET_FILES" | wc -l | tr -d ' ')
153151
echo "✅ Found $CHANGESET_COUNT changeset(s):"
154152
echo "$CHANGESET_FILES" | while read -r file; do
@@ -182,22 +180,19 @@ jobs:
182180
done
183181
184182
echo "📦 Version changes that would be applied:"
185-
# Configure git user for changeset version command
186183
git config user.name "github-actions[bot]"
187184
git config user.email "github-actions[bot]@users.noreply.github.com"
188-
189-
# Save current HEAD reference before making changes
185+
190186
ORIGINAL_HEAD=$(git rev-parse HEAD)
191-
# Create a temporary branch for dry run with unique name
192187
FALLBACK_ID=${GITHUB_RUN_ID:-$RANDOM$RANDOM}
193188
TEMP_BRANCH="dry-run-temp-$FALLBACK_ID"
194189
git checkout -b "$TEMP_BRANCH"
195190
pnpm changeset version
196-
191+
197192
echo ""
198193
echo "🔍 Changed files:"
199194
git diff --name-status "$ORIGINAL_HEAD"
200-
195+
201196
echo ""
202197
echo "🔍 Package version changes:"
203198
VERSION_CHANGES=$(git diff "$ORIGINAL_HEAD" -- '**/package.json' | grep -E "^[+-]\s*\"version\"" || true)
@@ -206,10 +201,9 @@ jobs:
206201
else
207202
echo "$VERSION_CHANGES"
208203
fi
209-
210-
# Clean up
204+
211205
git checkout -
212206
git branch -D "$TEMP_BRANCH"
213-
207+
214208
echo ""
215209
echo "✅ Dry run completed successfully"

.github/workflows/tests.yaml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ concurrency:
1515

1616
jobs:
1717
quality:
18-
runs-on: ubuntu-latest
18+
runs-on: macos-latest
1919
timeout-minutes: 10
2020
steps:
2121
- name: Checkout
@@ -50,7 +50,7 @@ jobs:
5050
run: pnpm format
5151

5252
test:
53-
runs-on: ubuntu-latest
53+
runs-on: macos-latest
5454
timeout-minutes: 30
5555
needs: quality
5656
strategy:
@@ -88,8 +88,8 @@ jobs:
8888

8989
- name: Install Java
9090
run: |
91-
sudo apt-get update
92-
sudo apt-get install -y openjdk-17-jdk
91+
brew install openjdk@17
92+
sudo ln -sfn /usr/local/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk
9393
java -version
9494
9595
- name: Cache Firebase emulators
@@ -143,6 +143,10 @@ jobs:
143143
fi
144144
echo "✅ All build outputs verified"
145145
146+
# ✅ Generate Data Connect SDK before running emulators
147+
- name: Generate Data Connect SDKs
148+
run: firebase dataconnect:sdk:generate
149+
146150
# Run tests with all emulators (auth, firestore, and data-connect)
147151
- name: Run tests with emulator
148152
run: pnpm test:emulator

dataconnect-sdk/js/default-connector/esm/index.esm.js

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -6,39 +6,6 @@ export const connectorConfig = {
66
location: 'us-central1'
77
};
88

9-
export const listMoviesRef = (dc) => {
10-
const { dc: dcInstance} = validateArgs(connectorConfig, dc, undefined);
11-
dcInstance._useGeneratedSdk();
12-
return queryRef(dcInstance, 'ListMovies');
13-
}
14-
listMoviesRef.operationName = 'ListMovies';
15-
16-
export function listMovies(dc) {
17-
return executeQuery(listMoviesRef(dc));
18-
}
19-
20-
export const getMovieByIdRef = (dcOrVars, vars) => {
21-
const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true);
22-
dcInstance._useGeneratedSdk();
23-
return queryRef(dcInstance, 'GetMovieById', inputVars);
24-
}
25-
getMovieByIdRef.operationName = 'GetMovieById';
26-
27-
export function getMovieById(dcOrVars, vars) {
28-
return executeQuery(getMovieByIdRef(dcOrVars, vars));
29-
}
30-
31-
export const getMetaRef = (dc) => {
32-
const { dc: dcInstance} = validateArgs(connectorConfig, dc, undefined);
33-
dcInstance._useGeneratedSdk();
34-
return queryRef(dcInstance, 'GetMeta');
35-
}
36-
getMetaRef.operationName = 'GetMeta';
37-
38-
export function getMeta(dc) {
39-
return executeQuery(getMetaRef(dc));
40-
}
41-
429
export const createMovieRef = (dcOrVars, vars) => {
4310
const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true);
4411
dcInstance._useGeneratedSdk();
@@ -94,3 +61,36 @@ export function deleteMeta(dcOrVars, vars) {
9461
return executeMutation(deleteMetaRef(dcOrVars, vars));
9562
}
9663

64+
export const listMoviesRef = (dc) => {
65+
const { dc: dcInstance} = validateArgs(connectorConfig, dc, undefined);
66+
dcInstance._useGeneratedSdk();
67+
return queryRef(dcInstance, 'ListMovies');
68+
}
69+
listMoviesRef.operationName = 'ListMovies';
70+
71+
export function listMovies(dc) {
72+
return executeQuery(listMoviesRef(dc));
73+
}
74+
75+
export const getMovieByIdRef = (dcOrVars, vars) => {
76+
const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true);
77+
dcInstance._useGeneratedSdk();
78+
return queryRef(dcInstance, 'GetMovieById', inputVars);
79+
}
80+
getMovieByIdRef.operationName = 'GetMovieById';
81+
82+
export function getMovieById(dcOrVars, vars) {
83+
return executeQuery(getMovieByIdRef(dcOrVars, vars));
84+
}
85+
86+
export const getMetaRef = (dc) => {
87+
const { dc: dcInstance} = validateArgs(connectorConfig, dc, undefined);
88+
dcInstance._useGeneratedSdk();
89+
return queryRef(dcInstance, 'GetMeta');
90+
}
91+
getMetaRef.operationName = 'GetMeta';
92+
93+
export function getMeta(dc) {
94+
return executeQuery(getMetaRef(dc));
95+
}
96+

dataconnect-sdk/js/default-connector/index.cjs.js

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -7,42 +7,6 @@ const connectorConfig = {
77
};
88
exports.connectorConfig = connectorConfig;
99

10-
const listMoviesRef = (dc) => {
11-
const { dc: dcInstance} = validateArgs(connectorConfig, dc, undefined);
12-
dcInstance._useGeneratedSdk();
13-
return queryRef(dcInstance, 'ListMovies');
14-
}
15-
listMoviesRef.operationName = 'ListMovies';
16-
exports.listMoviesRef = listMoviesRef;
17-
18-
exports.listMovies = function listMovies(dc) {
19-
return executeQuery(listMoviesRef(dc));
20-
};
21-
22-
const getMovieByIdRef = (dcOrVars, vars) => {
23-
const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true);
24-
dcInstance._useGeneratedSdk();
25-
return queryRef(dcInstance, 'GetMovieById', inputVars);
26-
}
27-
getMovieByIdRef.operationName = 'GetMovieById';
28-
exports.getMovieByIdRef = getMovieByIdRef;
29-
30-
exports.getMovieById = function getMovieById(dcOrVars, vars) {
31-
return executeQuery(getMovieByIdRef(dcOrVars, vars));
32-
};
33-
34-
const getMetaRef = (dc) => {
35-
const { dc: dcInstance} = validateArgs(connectorConfig, dc, undefined);
36-
dcInstance._useGeneratedSdk();
37-
return queryRef(dcInstance, 'GetMeta');
38-
}
39-
getMetaRef.operationName = 'GetMeta';
40-
exports.getMetaRef = getMetaRef;
41-
42-
exports.getMeta = function getMeta(dc) {
43-
return executeQuery(getMetaRef(dc));
44-
};
45-
4610
const createMovieRef = (dcOrVars, vars) => {
4711
const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true);
4812
dcInstance._useGeneratedSdk();
@@ -102,3 +66,39 @@ exports.deleteMetaRef = deleteMetaRef;
10266
exports.deleteMeta = function deleteMeta(dcOrVars, vars) {
10367
return executeMutation(deleteMetaRef(dcOrVars, vars));
10468
};
69+
70+
const listMoviesRef = (dc) => {
71+
const { dc: dcInstance} = validateArgs(connectorConfig, dc, undefined);
72+
dcInstance._useGeneratedSdk();
73+
return queryRef(dcInstance, 'ListMovies');
74+
}
75+
listMoviesRef.operationName = 'ListMovies';
76+
exports.listMoviesRef = listMoviesRef;
77+
78+
exports.listMovies = function listMovies(dc) {
79+
return executeQuery(listMoviesRef(dc));
80+
};
81+
82+
const getMovieByIdRef = (dcOrVars, vars) => {
83+
const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true);
84+
dcInstance._useGeneratedSdk();
85+
return queryRef(dcInstance, 'GetMovieById', inputVars);
86+
}
87+
getMovieByIdRef.operationName = 'GetMovieById';
88+
exports.getMovieByIdRef = getMovieByIdRef;
89+
90+
exports.getMovieById = function getMovieById(dcOrVars, vars) {
91+
return executeQuery(getMovieByIdRef(dcOrVars, vars));
92+
};
93+
94+
const getMetaRef = (dc) => {
95+
const { dc: dcInstance} = validateArgs(connectorConfig, dc, undefined);
96+
dcInstance._useGeneratedSdk();
97+
return queryRef(dcInstance, 'GetMeta');
98+
}
99+
getMetaRef.operationName = 'GetMeta';
100+
exports.getMetaRef = getMetaRef;
101+
102+
exports.getMeta = function getMeta(dc) {
103+
return executeQuery(getMetaRef(dc));
104+
};

dataconnect-sdk/js/default-connector/index.d.ts

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -93,42 +93,6 @@ export interface UpsertMovieVariables {
9393
imageUrl: string;
9494
}
9595

96-
interface ListMoviesRef {
97-
/* Allow users to create refs without passing in DataConnect */
98-
(): QueryRef<ListMoviesData, undefined>;
99-
/* Allow users to pass in custom DataConnect instances */
100-
(dc: DataConnect): QueryRef<ListMoviesData, undefined>;
101-
operationName: string;
102-
}
103-
export const listMoviesRef: ListMoviesRef;
104-
105-
export function listMovies(): QueryPromise<ListMoviesData, undefined>;
106-
export function listMovies(dc: DataConnect): QueryPromise<ListMoviesData, undefined>;
107-
108-
interface GetMovieByIdRef {
109-
/* Allow users to create refs without passing in DataConnect */
110-
(vars: GetMovieByIdVariables): QueryRef<GetMovieByIdData, GetMovieByIdVariables>;
111-
/* Allow users to pass in custom DataConnect instances */
112-
(dc: DataConnect, vars: GetMovieByIdVariables): QueryRef<GetMovieByIdData, GetMovieByIdVariables>;
113-
operationName: string;
114-
}
115-
export const getMovieByIdRef: GetMovieByIdRef;
116-
117-
export function getMovieById(vars: GetMovieByIdVariables): QueryPromise<GetMovieByIdData, GetMovieByIdVariables>;
118-
export function getMovieById(dc: DataConnect, vars: GetMovieByIdVariables): QueryPromise<GetMovieByIdData, GetMovieByIdVariables>;
119-
120-
interface GetMetaRef {
121-
/* Allow users to create refs without passing in DataConnect */
122-
(): QueryRef<GetMetaData, undefined>;
123-
/* Allow users to pass in custom DataConnect instances */
124-
(dc: DataConnect): QueryRef<GetMetaData, undefined>;
125-
operationName: string;
126-
}
127-
export const getMetaRef: GetMetaRef;
128-
129-
export function getMeta(): QueryPromise<GetMetaData, undefined>;
130-
export function getMeta(dc: DataConnect): QueryPromise<GetMetaData, undefined>;
131-
13296
interface CreateMovieRef {
13397
/* Allow users to create refs without passing in DataConnect */
13498
(vars: CreateMovieVariables): MutationRef<CreateMovieData, CreateMovieVariables>;
@@ -189,3 +153,39 @@ export const deleteMetaRef: DeleteMetaRef;
189153
export function deleteMeta(vars: DeleteMetaVariables): MutationPromise<DeleteMetaData, DeleteMetaVariables>;
190154
export function deleteMeta(dc: DataConnect, vars: DeleteMetaVariables): MutationPromise<DeleteMetaData, DeleteMetaVariables>;
191155

156+
interface ListMoviesRef {
157+
/* Allow users to create refs without passing in DataConnect */
158+
(): QueryRef<ListMoviesData, undefined>;
159+
/* Allow users to pass in custom DataConnect instances */
160+
(dc: DataConnect): QueryRef<ListMoviesData, undefined>;
161+
operationName: string;
162+
}
163+
export const listMoviesRef: ListMoviesRef;
164+
165+
export function listMovies(): QueryPromise<ListMoviesData, undefined>;
166+
export function listMovies(dc: DataConnect): QueryPromise<ListMoviesData, undefined>;
167+
168+
interface GetMovieByIdRef {
169+
/* Allow users to create refs without passing in DataConnect */
170+
(vars: GetMovieByIdVariables): QueryRef<GetMovieByIdData, GetMovieByIdVariables>;
171+
/* Allow users to pass in custom DataConnect instances */
172+
(dc: DataConnect, vars: GetMovieByIdVariables): QueryRef<GetMovieByIdData, GetMovieByIdVariables>;
173+
operationName: string;
174+
}
175+
export const getMovieByIdRef: GetMovieByIdRef;
176+
177+
export function getMovieById(vars: GetMovieByIdVariables): QueryPromise<GetMovieByIdData, GetMovieByIdVariables>;
178+
export function getMovieById(dc: DataConnect, vars: GetMovieByIdVariables): QueryPromise<GetMovieByIdData, GetMovieByIdVariables>;
179+
180+
interface GetMetaRef {
181+
/* Allow users to create refs without passing in DataConnect */
182+
(): QueryRef<GetMetaData, undefined>;
183+
/* Allow users to pass in custom DataConnect instances */
184+
(dc: DataConnect): QueryRef<GetMetaData, undefined>;
185+
operationName: string;
186+
}
187+
export const getMetaRef: GetMetaRef;
188+
189+
export function getMeta(): QueryPromise<GetMetaData, undefined>;
190+
export function getMeta(dc: DataConnect): QueryPromise<GetMetaData, undefined>;
191+

0 commit comments

Comments
 (0)