Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit af00093

Browse files
authoredNov 4, 2022
feat: adding pkg:gcp (#358)
1 parent 1cb172c commit af00093

29 files changed

+1054
-192
lines changed
 

‎.github/workflows/lint.yml

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,16 +39,16 @@ jobs:
3939
- name: mono_repo self validate
4040
run: dart pub global run mono_repo generate --validate
4141
job_002:
42-
name: "analyze_format; Dart 2.18.0; PKGS: dartfn, functions_framework, functions_framework_builder; `dart analyze`"
42+
name: "analyze_format; Dart 2.18.0; PKGS: dartfn, functions_framework, functions_framework_builder, gcp; `dart analyze`"
4343
runs-on: ubuntu-latest
4444
steps:
4545
- name: Cache Pub hosted dependencies
4646
uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7
4747
with:
4848
path: "~/.pub-cache/hosted"
49-
key: "os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0;packages:dartfn-functions_framework-functions_framework_builder;commands:analyze_1"
49+
key: "os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0;packages:dartfn-functions_framework-functions_framework_builder-gcp;commands:analyze_1"
5050
restore-keys: |
51-
os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0;packages:dartfn-functions_framework-functions_framework_builder
51+
os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0;packages:dartfn-functions_framework-functions_framework_builder-gcp
5252
os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0
5353
os:ubuntu-latest;pub-cache-hosted
5454
os:ubuntu-latest
@@ -86,17 +86,26 @@ jobs:
8686
run: dart analyze
8787
if: "always() && steps.functions_framework_builder_pub_upgrade.conclusion == 'success'"
8888
working-directory: functions_framework_builder
89+
- id: gcp_pub_upgrade
90+
name: gcp; dart pub upgrade
91+
run: dart pub upgrade
92+
if: "always() && steps.checkout.conclusion == 'success'"
93+
working-directory: gcp
94+
- name: gcp; dart analyze
95+
run: dart analyze
96+
if: "always() && steps.gcp_pub_upgrade.conclusion == 'success'"
97+
working-directory: gcp
8998
job_003:
90-
name: "analyze_format; Dart dev; PKGS: dartfn, functions_framework, functions_framework_builder, integration_test; `dart format --output=none --set-exit-if-changed .`, `dart analyze --fatal-infos`"
99+
name: "analyze_format; Dart dev; PKGS: dartfn, functions_framework, functions_framework_builder, gcp, integration_test; `dart format --output=none --set-exit-if-changed .`, `dart analyze --fatal-infos`"
91100
runs-on: ubuntu-latest
92101
steps:
93102
- name: Cache Pub hosted dependencies
94103
uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7
95104
with:
96105
path: "~/.pub-cache/hosted"
97-
key: "os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:dartfn-functions_framework-functions_framework_builder-integration_test;commands:format-analyze_0"
106+
key: "os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:dartfn-functions_framework-functions_framework_builder-gcp-integration_test;commands:format-analyze_0"
98107
restore-keys: |
99-
os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:dartfn-functions_framework-functions_framework_builder-integration_test
108+
os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:dartfn-functions_framework-functions_framework_builder-gcp-integration_test
100109
os:ubuntu-latest;pub-cache-hosted;sdk:dev
101110
os:ubuntu-latest;pub-cache-hosted
102111
os:ubuntu-latest
@@ -146,6 +155,19 @@ jobs:
146155
run: dart analyze --fatal-infos
147156
if: "always() && steps.functions_framework_builder_pub_upgrade.conclusion == 'success'"
148157
working-directory: functions_framework_builder
158+
- id: gcp_pub_upgrade
159+
name: gcp; dart pub upgrade
160+
run: dart pub upgrade
161+
if: "always() && steps.checkout.conclusion == 'success'"
162+
working-directory: gcp
163+
- name: "gcp; dart format --output=none --set-exit-if-changed ."
164+
run: "dart format --output=none --set-exit-if-changed ."
165+
if: "always() && steps.gcp_pub_upgrade.conclusion == 'success'"
166+
working-directory: gcp
167+
- name: "gcp; dart analyze --fatal-infos"
168+
run: dart analyze --fatal-infos
169+
if: "always() && steps.gcp_pub_upgrade.conclusion == 'success'"
170+
working-directory: gcp
149171
- id: integration_test_pub_upgrade
150172
name: integration_test; dart pub upgrade
151173
run: dart pub upgrade

‎.github/workflows/unit.yml

Lines changed: 141 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,16 @@ permissions: read-all
1616

1717
jobs:
1818
job_001:
19-
name: "unit_test; Dart 2.18.0; PKGS: dartfn, functions_framework_builder, integration_test; `dart test`"
19+
name: "unit_test; linux; Dart 2.18.0; PKGS: dartfn, functions_framework_builder, gcp, integration_test; `dart test`"
2020
runs-on: ubuntu-latest
2121
steps:
2222
- name: Cache Pub hosted dependencies
2323
uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7
2424
with:
2525
path: "~/.pub-cache/hosted"
26-
key: "os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0;packages:dartfn-functions_framework_builder-integration_test;commands:test_0"
26+
key: "os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0;packages:dartfn-functions_framework_builder-gcp-integration_test;commands:test_0"
2727
restore-keys: |
28-
os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0;packages:dartfn-functions_framework_builder-integration_test
28+
os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0;packages:dartfn-functions_framework_builder-gcp-integration_test
2929
os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0
3030
os:ubuntu-latest;pub-cache-hosted
3131
os:ubuntu-latest
@@ -54,6 +54,15 @@ jobs:
5454
run: dart test
5555
if: "always() && steps.functions_framework_builder_pub_upgrade.conclusion == 'success'"
5656
working-directory: functions_framework_builder
57+
- id: gcp_pub_upgrade
58+
name: gcp; dart pub upgrade
59+
run: dart pub upgrade
60+
if: "always() && steps.checkout.conclusion == 'success'"
61+
working-directory: gcp
62+
- name: gcp; dart test
63+
run: dart test
64+
if: "always() && steps.gcp_pub_upgrade.conclusion == 'success'"
65+
working-directory: gcp
5766
- id: integration_test_pub_upgrade
5867
name: integration_test; dart pub upgrade
5968
run: dart pub upgrade
@@ -64,7 +73,37 @@ jobs:
6473
if: "always() && steps.integration_test_pub_upgrade.conclusion == 'success'"
6574
working-directory: integration_test
6675
job_002:
67-
name: "unit_test; Dart dev; PKGS: dartfn, functions_framework, integration_test; `dart test --run-skipped -t presubmit-only`"
76+
name: "unit_test; linux; Dart 2.18.0; PKG: gcp; `./tool/docker_test_script.sh`"
77+
runs-on: ubuntu-latest
78+
steps:
79+
- name: Cache Pub hosted dependencies
80+
uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7
81+
with:
82+
path: "~/.pub-cache/hosted"
83+
key: "os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0;packages:gcp;commands:command"
84+
restore-keys: |
85+
os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0;packages:gcp
86+
os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0
87+
os:ubuntu-latest;pub-cache-hosted
88+
os:ubuntu-latest
89+
- name: Setup Dart SDK
90+
uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d
91+
with:
92+
sdk: "2.18.0"
93+
- id: checkout
94+
name: Checkout repository
95+
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
96+
- id: gcp_pub_upgrade
97+
name: gcp; dart pub upgrade
98+
run: dart pub upgrade
99+
if: "always() && steps.checkout.conclusion == 'success'"
100+
working-directory: gcp
101+
- name: gcp; ./tool/docker_test_script.sh
102+
run: ./tool/docker_test_script.sh
103+
if: "always() && steps.gcp_pub_upgrade.conclusion == 'success'"
104+
working-directory: gcp
105+
job_003:
106+
name: "unit_test; linux; Dart dev; PKGS: dartfn, functions_framework, integration_test; `dart test --run-skipped -t presubmit-only`"
68107
runs-on: ubuntu-latest
69108
steps:
70109
- name: Cache Pub hosted dependencies
@@ -111,17 +150,17 @@ jobs:
111150
run: dart test --run-skipped -t presubmit-only
112151
if: "always() && steps.integration_test_pub_upgrade.conclusion == 'success'"
113152
working-directory: integration_test
114-
job_003:
115-
name: "unit_test; Dart dev; PKGS: dartfn, functions_framework_builder, integration_test; `dart test`"
153+
job_004:
154+
name: "unit_test; linux; Dart dev; PKGS: dartfn, functions_framework_builder, gcp, integration_test; `dart test`"
116155
runs-on: ubuntu-latest
117156
steps:
118157
- name: Cache Pub hosted dependencies
119158
uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7
120159
with:
121160
path: "~/.pub-cache/hosted"
122-
key: "os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:dartfn-functions_framework_builder-integration_test;commands:test_0"
161+
key: "os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:dartfn-functions_framework_builder-gcp-integration_test;commands:test_0"
123162
restore-keys: |
124-
os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:dartfn-functions_framework_builder-integration_test
163+
os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:dartfn-functions_framework_builder-gcp-integration_test
125164
os:ubuntu-latest;pub-cache-hosted;sdk:dev
126165
os:ubuntu-latest;pub-cache-hosted
127166
os:ubuntu-latest
@@ -150,6 +189,15 @@ jobs:
150189
run: dart test
151190
if: "always() && steps.functions_framework_builder_pub_upgrade.conclusion == 'success'"
152191
working-directory: functions_framework_builder
192+
- id: gcp_pub_upgrade
193+
name: gcp; dart pub upgrade
194+
run: dart pub upgrade
195+
if: "always() && steps.checkout.conclusion == 'success'"
196+
working-directory: gcp
197+
- name: gcp; dart test
198+
run: dart test
199+
if: "always() && steps.gcp_pub_upgrade.conclusion == 'success'"
200+
working-directory: gcp
153201
- id: integration_test_pub_upgrade
154202
name: integration_test; dart pub upgrade
155203
run: dart pub upgrade
@@ -159,7 +207,87 @@ jobs:
159207
run: dart test
160208
if: "always() && steps.integration_test_pub_upgrade.conclusion == 'success'"
161209
working-directory: integration_test
162-
job_004:
210+
job_005:
211+
name: "unit_test; macos; Dart 2.18.0; PKG: gcp; `dart test`"
212+
runs-on: macos-latest
213+
steps:
214+
- name: Cache Pub hosted dependencies
215+
uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7
216+
with:
217+
path: "~/.pub-cache/hosted"
218+
key: "os:macos-latest;pub-cache-hosted;sdk:2.18.0;packages:gcp;commands:test_0"
219+
restore-keys: |
220+
os:macos-latest;pub-cache-hosted;sdk:2.18.0;packages:gcp
221+
os:macos-latest;pub-cache-hosted;sdk:2.18.0
222+
os:macos-latest;pub-cache-hosted
223+
os:macos-latest
224+
- name: Setup Dart SDK
225+
uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d
226+
with:
227+
sdk: "2.18.0"
228+
- id: checkout
229+
name: Checkout repository
230+
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
231+
- id: gcp_pub_upgrade
232+
name: gcp; dart pub upgrade
233+
run: dart pub upgrade
234+
if: "always() && steps.checkout.conclusion == 'success'"
235+
working-directory: gcp
236+
- name: gcp; dart test
237+
run: dart test
238+
if: "always() && steps.gcp_pub_upgrade.conclusion == 'success'"
239+
working-directory: gcp
240+
job_006:
241+
name: "unit_test; macos; Dart dev; PKG: gcp; `dart test`"
242+
runs-on: macos-latest
243+
steps:
244+
- name: Cache Pub hosted dependencies
245+
uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7
246+
with:
247+
path: "~/.pub-cache/hosted"
248+
key: "os:macos-latest;pub-cache-hosted;sdk:dev;packages:gcp;commands:test_0"
249+
restore-keys: |
250+
os:macos-latest;pub-cache-hosted;sdk:dev;packages:gcp
251+
os:macos-latest;pub-cache-hosted;sdk:dev
252+
os:macos-latest;pub-cache-hosted
253+
os:macos-latest
254+
- name: Setup Dart SDK
255+
uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d
256+
with:
257+
sdk: dev
258+
- id: checkout
259+
name: Checkout repository
260+
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
261+
- id: gcp_pub_upgrade
262+
name: gcp; dart pub upgrade
263+
run: dart pub upgrade
264+
if: "always() && steps.checkout.conclusion == 'success'"
265+
working-directory: gcp
266+
- name: gcp; dart test
267+
run: dart test
268+
if: "always() && steps.gcp_pub_upgrade.conclusion == 'success'"
269+
working-directory: gcp
270+
job_007:
271+
name: "unit_test; windows; Dart dev; PKG: gcp; `dart test`"
272+
runs-on: windows-latest
273+
steps:
274+
- name: Setup Dart SDK
275+
uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d
276+
with:
277+
sdk: dev
278+
- id: checkout
279+
name: Checkout repository
280+
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
281+
- id: gcp_pub_upgrade
282+
name: gcp; dart pub upgrade
283+
run: dart pub upgrade
284+
if: "always() && steps.checkout.conclusion == 'success'"
285+
working-directory: gcp
286+
- name: gcp; dart test
287+
run: dart test
288+
if: "always() && steps.gcp_pub_upgrade.conclusion == 'success'"
289+
working-directory: gcp
290+
job_008:
163291
name: Notify failure
164292
runs-on: ubuntu-latest
165293
if: "(github.event_name == 'push' || github.event_name == 'schedule') && failure()"
@@ -174,3 +302,7 @@ jobs:
174302
- job_001
175303
- job_002
176304
- job_003
305+
- job_004
306+
- job_005
307+
- job_006
308+
- job_007

‎.markdownlint.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,5 @@ line_length: # MD013 max line length
1111
line_length: 80
1212
html: # MD033 no html
1313
allowed_elements: [br]
14-
headings: true # MD041 require heading at top of file
1514
images: false # MD045: image alt text
15+
first-line-h1: false # MD041: First line in a file should be a top-level heading

‎functions_framework/lib/serve.dart

Lines changed: 8 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,10 @@ library serve;
2525
import 'dart:async';
2626
import 'dart:io';
2727

28+
import 'package:gcp/gcp.dart';
2829
import 'package:io/ansi.dart';
2930
import 'package:io/io.dart';
3031

31-
import 'src/bad_configuration.dart';
32-
import 'src/cloud_metadata.dart';
3332
import 'src/function_config.dart';
3433
import 'src/function_target.dart';
3534
import 'src/logging.dart';
@@ -89,43 +88,18 @@ Future<void> _serve(
8988
);
9089
}
9190

92-
final projectId = await CloudMetadata.projectId();
93-
final loggingMiddleware = createLoggingMiddleware(projectId);
94-
95-
final completer = Completer<bool>.sync();
96-
97-
// sigIntSub is copied below to avoid a race condition - ignoring this lint
98-
// ignore: cancel_subscriptions
99-
StreamSubscription<ProcessSignal>? sigIntSub, sigTermSub;
100-
101-
Future<void> signalHandler(ProcessSignal signal) async {
102-
print('Received signal $signal - closing');
103-
104-
final subCopy = sigIntSub;
105-
if (subCopy != null) {
106-
sigIntSub = null;
107-
await subCopy.cancel();
108-
sigIntSub = null;
109-
if (sigTermSub != null) {
110-
await sigTermSub!.cancel();
111-
sigTermSub = null;
112-
}
113-
completer.complete(true);
114-
}
115-
}
116-
117-
sigIntSub = ProcessSignal.sigint.watch().listen(signalHandler);
118-
119-
// SIGTERM is not supported on Windows. Attempting to register a SIGTERM
120-
// handler raises an exception.
121-
if (!Platform.isWindows) {
122-
sigTermSub = ProcessSignal.sigterm.watch().listen(signalHandler);
91+
String? projectId;
92+
try {
93+
projectId = await currentProjectId(metadataServerOnly: true);
94+
} on BadConfigurationException {
95+
// NOOP! - we aren't on GCP, so use normal logging
12396
}
97+
final loggingMiddleware = createLoggingMiddleware(projectId);
12498

12599
await run(
126100
config.port,
127101
functionTarget.handler,
128-
completer.future,
102+
waitForTerminate().then((value) => true),
129103
loggingMiddleware,
130104
);
131105
}

0 commit comments

Comments
 (0)
Please sign in to comment.