1cb93a386Sopenharmony_ci<!--- AUTOGENERATED BY `./recipes.py test train` -->
2cb93a386Sopenharmony_ci# Repo documentation for [skia]()
3cb93a386Sopenharmony_ci## Table of Contents
4cb93a386Sopenharmony_ci
5cb93a386Sopenharmony_ci**[Recipe Modules](#Recipe-Modules)**
6cb93a386Sopenharmony_ci  * [build](#recipe_modules-build) (Python3 ✅) &mdash; Build Skia for various platforms.
7cb93a386Sopenharmony_ci  * [builder_name_schema](#recipe_modules-builder_name_schema) (Python3 ✅)
8cb93a386Sopenharmony_ci  * [checkout](#recipe_modules-checkout) (Python3 ✅)
9cb93a386Sopenharmony_ci  * [docker](#recipe_modules-docker) (Python3 ✅)
10cb93a386Sopenharmony_ci  * [doxygen](#recipe_modules-doxygen) (Python3 ✅)
11cb93a386Sopenharmony_ci  * [env](#recipe_modules-env) (Python3 ✅)
12cb93a386Sopenharmony_ci  * [flavor](#recipe_modules-flavor) (Python3 ✅)
13cb93a386Sopenharmony_ci  * [git](#recipe_modules-git) (Python3 ✅)
14cb93a386Sopenharmony_ci  * [gold_upload](#recipe_modules-gold_upload) (Python3 ✅)
15cb93a386Sopenharmony_ci  * [gsutil](#recipe_modules-gsutil) (Python3 ✅)
16cb93a386Sopenharmony_ci  * [infra](#recipe_modules-infra) (Python3 ✅)
17cb93a386Sopenharmony_ci  * [run](#recipe_modules-run) (Python3 ✅)
18cb93a386Sopenharmony_ci  * [vars](#recipe_modules-vars) (Python3 ✅)
19cb93a386Sopenharmony_ci
20cb93a386Sopenharmony_ci**[Recipes](#Recipes)**
21cb93a386Sopenharmony_ci  * [build:examples/full](#recipes-build_examples_full) (Python3 ✅)
22cb93a386Sopenharmony_ci  * [builder_name_schema:examples/full](#recipes-builder_name_schema_examples_full) (Python3 ✅)
23cb93a386Sopenharmony_ci  * [check_generated_files](#recipes-check_generated_files) (Python3 ✅)
24cb93a386Sopenharmony_ci  * [checkout:examples/full](#recipes-checkout_examples_full) (Python3 ✅)
25cb93a386Sopenharmony_ci  * [compile](#recipes-compile) (Python3 ✅)
26cb93a386Sopenharmony_ci  * [compute_buildstats](#recipes-compute_buildstats) (Python3 ✅)
27cb93a386Sopenharmony_ci  * [docker:examples/full](#recipes-docker_examples_full) (Python3 ✅)
28cb93a386Sopenharmony_ci  * [doxygen:examples/full](#recipes-doxygen_examples_full) (Python3 ✅)
29cb93a386Sopenharmony_ci  * [env:examples/full](#recipes-env_examples_full) (Python3 ✅)
30cb93a386Sopenharmony_ci  * [flavor:examples/full](#recipes-flavor_examples_full) (Python3 ✅)
31cb93a386Sopenharmony_ci  * [git:examples/full](#recipes-git_examples_full) (Python3 ✅)
32cb93a386Sopenharmony_ci  * [gold_upload:examples/full](#recipes-gold_upload_examples_full) (Python3 ✅)
33cb93a386Sopenharmony_ci  * [gsutil:examples/full](#recipes-gsutil_examples_full) (Python3 ✅)
34cb93a386Sopenharmony_ci  * [housekeeper](#recipes-housekeeper) (Python3 ✅)
35cb93a386Sopenharmony_ci  * [infra](#recipes-infra) (Python3 ✅)
36cb93a386Sopenharmony_ci  * [infra:examples/full](#recipes-infra_examples_full) (Python3 ✅)
37cb93a386Sopenharmony_ci  * [perf](#recipes-perf) (Python3 ✅)
38cb93a386Sopenharmony_ci  * [perf_pathkit](#recipes-perf_pathkit) (Python3 ✅)
39cb93a386Sopenharmony_ci  * [perf_skottietrace](#recipes-perf_skottietrace) (Python3 ✅)
40cb93a386Sopenharmony_ci  * [perf_skottiewasm_lottieweb](#recipes-perf_skottiewasm_lottieweb) (Python3 ✅)
41cb93a386Sopenharmony_ci  * [run:examples/full](#recipes-run_examples_full) (Python3 ✅)
42cb93a386Sopenharmony_ci  * [skpbench](#recipes-skpbench) (Python3 ✅)
43cb93a386Sopenharmony_ci  * [sync_and_compile](#recipes-sync_and_compile) (Python3 ✅)
44cb93a386Sopenharmony_ci  * [test](#recipes-test) (Python3 ✅)
45cb93a386Sopenharmony_ci  * [test_canvaskit](#recipes-test_canvaskit) (Python3 ✅)
46cb93a386Sopenharmony_ci  * [test_lottie_web](#recipes-test_lottie_web) (Python3 ✅)
47cb93a386Sopenharmony_ci  * [test_pathkit](#recipes-test_pathkit) (Python3 ✅)
48cb93a386Sopenharmony_ci  * [upload_buildstats_results](#recipes-upload_buildstats_results) (Python3 ✅)
49cb93a386Sopenharmony_ci  * [upload_dm_results](#recipes-upload_dm_results) (Python3 ✅)
50cb93a386Sopenharmony_ci  * [upload_nano_results](#recipes-upload_nano_results) (Python3 ✅)
51cb93a386Sopenharmony_ci  * [vars:examples/full](#recipes-vars_examples_full) (Python3 ✅)
52cb93a386Sopenharmony_ci## Recipe Modules
53cb93a386Sopenharmony_ci
54cb93a386Sopenharmony_ci### *recipe_modules* / [build](/infra/bots/recipe_modules/build)
55cb93a386Sopenharmony_ci
56cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipe_modules/build/__init__.py#7): [depot\_tools/gclient][depot_tools/recipe_modules/gclient], [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/step][recipe_engine/recipe_modules/step], [docker](#recipe_modules-docker), [env](#recipe_modules-env), [infra](#recipe_modules-infra), [run](#recipe_modules-run), [vars](#recipe_modules-vars)
57cb93a386Sopenharmony_ci
58cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
59cb93a386Sopenharmony_ci
60cb93a386Sopenharmony_ciBuild Skia for various platforms.
61cb93a386Sopenharmony_ci
62cb93a386Sopenharmony_ci#### **class [BuildApi](/infra/bots/recipe_modules/build/api.py#21)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
63cb93a386Sopenharmony_ci
64cb93a386Sopenharmony_ci&mdash; **def [\_\_call\_\_](/infra/bots/recipe_modules/build/api.py#51)(self, checkout_root, out_dir):**
65cb93a386Sopenharmony_ci
66cb93a386Sopenharmony_ciCompile the code.
67cb93a386Sopenharmony_ci
68cb93a386Sopenharmony_ci&mdash; **def [copy\_build\_products](/infra/bots/recipe_modules/build/api.py#55)(self, out_dir, dst):**
69cb93a386Sopenharmony_ci
70cb93a386Sopenharmony_ciCopy selected build products to dst.
71cb93a386Sopenharmony_ci### *recipe_modules* / [builder\_name\_schema](/infra/bots/recipe_modules/builder_name_schema)
72cb93a386Sopenharmony_ci
73cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
74cb93a386Sopenharmony_ci
75cb93a386Sopenharmony_ci#### **class [BuilderNameSchemaApi](/infra/bots/recipe_modules/builder_name_schema/api.py#14)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
76cb93a386Sopenharmony_ci
77cb93a386Sopenharmony_ci&mdash; **def [DictForBuilderName](/infra/bots/recipe_modules/builder_name_schema/api.py#32)(self, \*args, \*\*kwargs):**
78cb93a386Sopenharmony_ci
79cb93a386Sopenharmony_ci&mdash; **def [MakeBuilderName](/infra/bots/recipe_modules/builder_name_schema/api.py#29)(self, \*\*kwargs):**
80cb93a386Sopenharmony_ci### *recipe_modules* / [checkout](/infra/bots/recipe_modules/checkout)
81cb93a386Sopenharmony_ci
82cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipe_modules/checkout/__init__.py#7): [depot\_tools/bot\_update][depot_tools/recipe_modules/bot_update], [depot\_tools/gclient][depot_tools/recipe_modules/gclient], [depot\_tools/git][depot_tools/recipe_modules/git], [depot\_tools/tryserver][depot_tools/recipe_modules/tryserver], [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/step][recipe_engine/recipe_modules/step], [run](#recipe_modules-run), [vars](#recipe_modules-vars)
83cb93a386Sopenharmony_ci
84cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
85cb93a386Sopenharmony_ci
86cb93a386Sopenharmony_ci#### **class [CheckoutApi](/infra/bots/recipe_modules/checkout/api.py#13)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
87cb93a386Sopenharmony_ci
88cb93a386Sopenharmony_ci&mdash; **def [assert\_git\_is\_from\_cipd](/infra/bots/recipe_modules/checkout/api.py#20)(self):**
89cb93a386Sopenharmony_ci
90cb93a386Sopenharmony_ciFail if git is not obtained from CIPD.
91cb93a386Sopenharmony_ci
92cb93a386Sopenharmony_ci&mdash; **def [bot\_update](/infra/bots/recipe_modules/checkout/api.py#48)(self, checkout_root, gclient_cache=None, checkout_chromium=False, checkout_flutter=False, extra_gclient_env=None, flutter_android=False):**
93cb93a386Sopenharmony_ci
94cb93a386Sopenharmony_ciRun the steps to obtain a checkout using bot_update.
95cb93a386Sopenharmony_ci
96cb93a386Sopenharmony_ciArgs:
97cb93a386Sopenharmony_ci  checkout_root: Root directory where the code will be synced.
98cb93a386Sopenharmony_ci  gclient_cache: Optional, directory of the gclient cache.
99cb93a386Sopenharmony_ci  checkout_chromium: If True, will check out chromium/src.git in addition
100cb93a386Sopenharmony_ci      to the primary repo.
101cb93a386Sopenharmony_ci  checkout_flutter: If True, will checkout flutter in addition to the
102cb93a386Sopenharmony_ci      primary repo.
103cb93a386Sopenharmony_ci  extra_gclient_env: Map of extra environment variable names to their values
104cb93a386Sopenharmony_ci      to supply while running gclient.
105cb93a386Sopenharmony_ci  flutter_android: Indicates that we're checking out flutter for Android.
106cb93a386Sopenharmony_ci
107cb93a386Sopenharmony_ci&emsp; **@property**<br>&mdash; **def [default\_checkout\_root](/infra/bots/recipe_modules/checkout/api.py#15)(self):**
108cb93a386Sopenharmony_ci
109cb93a386Sopenharmony_ciThe default location for cached persistent checkouts.
110cb93a386Sopenharmony_ci
111cb93a386Sopenharmony_ci&mdash; **def [git](/infra/bots/recipe_modules/checkout/api.py#35)(self, checkout_root):**
112cb93a386Sopenharmony_ci
113cb93a386Sopenharmony_ciRun the steps to perform a pure-git checkout without DEPS.
114cb93a386Sopenharmony_ci### *recipe_modules* / [docker](/infra/bots/recipe_modules/docker)
115cb93a386Sopenharmony_ci
116cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipe_modules/docker/__init__.py#8): [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/step][recipe_engine/recipe_modules/step], [env](#recipe_modules-env), [run](#recipe_modules-run)
117cb93a386Sopenharmony_ci
118cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
119cb93a386Sopenharmony_ci
120cb93a386Sopenharmony_ci#### **class [DockerApi](/infra/bots/recipe_modules/docker/api.py#15)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
121cb93a386Sopenharmony_ci
122cb93a386Sopenharmony_ci&mdash; **def [mount\_out](/infra/bots/recipe_modules/docker/api.py#27)(self):**
123cb93a386Sopenharmony_ci
124cb93a386Sopenharmony_ci&mdash; **def [mount\_src](/infra/bots/recipe_modules/docker/api.py#24)(self):**
125cb93a386Sopenharmony_ci
126cb93a386Sopenharmony_ci&mdash; **def [run](/infra/bots/recipe_modules/docker/api.py#32)(self, name, docker_image, src_dir, out_dir, script, args=None, docker_args=None, copies=None, recursive_read=None, attempts=1, match_directory_structure=False):**
127cb93a386Sopenharmony_ci### *recipe_modules* / [doxygen](/infra/bots/recipe_modules/doxygen)
128cb93a386Sopenharmony_ci
129cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipe_modules/doxygen/__init__.py#7): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/step][recipe_engine/recipe_modules/step], [run](#recipe_modules-run)
130cb93a386Sopenharmony_ci
131cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
132cb93a386Sopenharmony_ci
133cb93a386Sopenharmony_ci#### **class [DoxygenApi](/infra/bots/recipe_modules/doxygen/api.py#9)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
134cb93a386Sopenharmony_ci
135cb93a386Sopenharmony_ci&mdash; **def [generate\_and\_upload](/infra/bots/recipe_modules/doxygen/api.py#10)(self, skia_dir):**
136cb93a386Sopenharmony_ci### *recipe_modules* / [env](/infra/bots/recipe_modules/env)
137cb93a386Sopenharmony_ci
138cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipe_modules/env/__init__.py#7): [recipe\_engine/context][recipe_engine/recipe_modules/context]
139cb93a386Sopenharmony_ci
140cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
141cb93a386Sopenharmony_ci
142cb93a386Sopenharmony_ci#### **class [EnvApi](/infra/bots/recipe_modules/env/api.py#9)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
143cb93a386Sopenharmony_ci### *recipe_modules* / [flavor](/infra/bots/recipe_modules/flavor)
144cb93a386Sopenharmony_ci
145cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipe_modules/flavor/__init__.py#7): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/step][recipe_engine/recipe_modules/step], [docker](#recipe_modules-docker), [env](#recipe_modules-env), [run](#recipe_modules-run), [vars](#recipe_modules-vars)
146cb93a386Sopenharmony_ci
147cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
148cb93a386Sopenharmony_ci
149cb93a386Sopenharmony_ci#### **class [SkiaFlavorApi](/infra/bots/recipe_modules/flavor/api.py#59)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
150cb93a386Sopenharmony_ci
151cb93a386Sopenharmony_ci&mdash; **def [cleanup\_steps](/infra/bots/recipe_modules/flavor/api.py#131)(self):**
152cb93a386Sopenharmony_ci
153cb93a386Sopenharmony_ci&mdash; **def [copy\_directory\_contents\_to\_device](/infra/bots/recipe_modules/flavor/api.py#87)(self, host_dir, device_dir):**
154cb93a386Sopenharmony_ci
155cb93a386Sopenharmony_ci&mdash; **def [copy\_directory\_contents\_to\_host](/infra/bots/recipe_modules/flavor/api.py#90)(self, device_dir, host_dir):**
156cb93a386Sopenharmony_ci
157cb93a386Sopenharmony_ci&mdash; **def [copy\_file\_to\_device](/infra/bots/recipe_modules/flavor/api.py#93)(self, host_path, device_path):**
158cb93a386Sopenharmony_ci
159cb93a386Sopenharmony_ci&mdash; **def [create\_clean\_device\_dir](/infra/bots/recipe_modules/flavor/api.py#99)(self, path):**
160cb93a386Sopenharmony_ci
161cb93a386Sopenharmony_ci&mdash; **def [create\_clean\_host\_dir](/infra/bots/recipe_modules/flavor/api.py#96)(self, path):**
162cb93a386Sopenharmony_ci
163cb93a386Sopenharmony_ci&mdash; **def [device\_path\_join](/infra/bots/recipe_modules/flavor/api.py#84)(self, \*args):**
164cb93a386Sopenharmony_ci
165cb93a386Sopenharmony_ci&mdash; **def [get\_flavor](/infra/bots/recipe_modules/flavor/api.py#60)(self, vars_api, app_name):**
166cb93a386Sopenharmony_ci
167cb93a386Sopenharmony_ciReturn a flavor utils object specific to the given builder.
168cb93a386Sopenharmony_ci
169cb93a386Sopenharmony_ci&mdash; **def [install](/infra/bots/recipe_modules/flavor/api.py#108)(self, skps=False, images=False, lotties=False, svgs=False, resources=False, mskps=False, texttraces=False):**
170cb93a386Sopenharmony_ci
171cb93a386Sopenharmony_ci&mdash; **def [read\_file\_on\_device](/infra/bots/recipe_modules/flavor/api.py#102)(self, path, \*\*kwargs):**
172cb93a386Sopenharmony_ci
173cb93a386Sopenharmony_ci&mdash; **def [remove\_file\_on\_device](/infra/bots/recipe_modules/flavor/api.py#105)(self, path):**
174cb93a386Sopenharmony_ci
175cb93a386Sopenharmony_ci&mdash; **def [setup](/infra/bots/recipe_modules/flavor/api.py#75)(self, app_name):**
176cb93a386Sopenharmony_ci
177cb93a386Sopenharmony_ci&mdash; **def [step](/infra/bots/recipe_modules/flavor/api.py#81)(self, name, cmd, \*\*kwargs):**
178cb93a386Sopenharmony_ci### *recipe_modules* / [git](/infra/bots/recipe_modules/git)
179cb93a386Sopenharmony_ci
180cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipe_modules/git/__init__.py#7): [recipe\_engine/path][recipe_engine/recipe_modules/path], [env](#recipe_modules-env)
181cb93a386Sopenharmony_ci
182cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
183cb93a386Sopenharmony_ci
184cb93a386Sopenharmony_ci#### **class [GitApi](/infra/bots/recipe_modules/git/api.py#9)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
185cb93a386Sopenharmony_ci
186cb93a386Sopenharmony_ci&mdash; **def [env](/infra/bots/recipe_modules/git/api.py#10)(self):**
187cb93a386Sopenharmony_ci
188cb93a386Sopenharmony_ciAdd Git to PATH
189cb93a386Sopenharmony_ci
190cb93a386Sopenharmony_ciRequires the infra/git and infra/tools/git CIPD packages to be installed
191cb93a386Sopenharmony_ciin the 'git' relative path.
192cb93a386Sopenharmony_ci### *recipe_modules* / [gold\_upload](/infra/bots/recipe_modules/gold_upload)
193cb93a386Sopenharmony_ci
194cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipe_modules/gold_upload/__init__.py#7): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/step][recipe_engine/recipe_modules/step], [recipe\_engine/time][recipe_engine/recipe_modules/time], [flavor](#recipe_modules-flavor), [gsutil](#recipe_modules-gsutil), [run](#recipe_modules-run), [vars](#recipe_modules-vars)
195cb93a386Sopenharmony_ci
196cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
197cb93a386Sopenharmony_ci
198cb93a386Sopenharmony_ci#### **class [GoldUploadApi](/infra/bots/recipe_modules/gold_upload/api.py#11)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
199cb93a386Sopenharmony_ci
200cb93a386Sopenharmony_ci&mdash; **def [upload](/infra/bots/recipe_modules/gold_upload/api.py#12)(self):**
201cb93a386Sopenharmony_ci
202cb93a386Sopenharmony_ciAttempt to upload files to Gold.
203cb93a386Sopenharmony_ciThis module assumes setup has occurred for the vars and flavor modules.
204cb93a386Sopenharmony_ci### *recipe_modules* / [gsutil](/infra/bots/recipe_modules/gsutil)
205cb93a386Sopenharmony_ci
206cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipe_modules/gsutil/__init__.py#7): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/step][recipe_engine/recipe_modules/step], [run](#recipe_modules-run), [vars](#recipe_modules-vars)
207cb93a386Sopenharmony_ci
208cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
209cb93a386Sopenharmony_ci
210cb93a386Sopenharmony_ci#### **class [GSUtilApi](/infra/bots/recipe_modules/gsutil/api.py#10)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
211cb93a386Sopenharmony_ci
212cb93a386Sopenharmony_ci&mdash; **def [\_\_call\_\_](/infra/bots/recipe_modules/gsutil/api.py#11)(self, step_name, \*args):**
213cb93a386Sopenharmony_ci
214cb93a386Sopenharmony_ciRun gsutil with the given args.
215cb93a386Sopenharmony_ci
216cb93a386Sopenharmony_ci&mdash; **def [cp](/infra/bots/recipe_modules/gsutil/api.py#17)(self, name, src, dst, extra_args=None, multithread=False):**
217cb93a386Sopenharmony_ci
218cb93a386Sopenharmony_ciAttempt to upload or download files to/from Google Cloud Storage (GCS).
219cb93a386Sopenharmony_ci
220cb93a386Sopenharmony_ciArgs:
221cb93a386Sopenharmony_ci  name: string. Will be used to fill out the step name.
222cb93a386Sopenharmony_ci  src: string. Absolute path for a local file or gcs file (e.g. gs://...)
223cb93a386Sopenharmony_ci  dst: string. Same as src.
224cb93a386Sopenharmony_ci  extra_args: optional list of args to be passed to gsutil. e.g. [-Z] asks
225cb93a386Sopenharmony_ci    all files be compressed with gzip after upload and before download.
226cb93a386Sopenharmony_ci  multi_thread: if the -m argument should be used to copy multiple items
227cb93a386Sopenharmony_ci    at once (e.g. gsutil -m cp foo* gs://bar/dir)
228cb93a386Sopenharmony_ci
229cb93a386Sopenharmony_ciIf the operation fails, it will be retried multiple times.
230cb93a386Sopenharmony_ci### *recipe_modules* / [infra](/infra/bots/recipe_modules/infra)
231cb93a386Sopenharmony_ci
232cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipe_modules/infra/__init__.py#7): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/step][recipe_engine/recipe_modules/step], [run](#recipe_modules-run), [vars](#recipe_modules-vars)
233cb93a386Sopenharmony_ci
234cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
235cb93a386Sopenharmony_ci
236cb93a386Sopenharmony_ci#### **class [InfraApi](/infra/bots/recipe_modules/infra/api.py#14)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
237cb93a386Sopenharmony_ci
238cb93a386Sopenharmony_ci&emsp; **@property**<br>&mdash; **def [go\_bin](/infra/bots/recipe_modules/infra/api.py#19)(self):**
239cb93a386Sopenharmony_ci
240cb93a386Sopenharmony_ci&emsp; **@property**<br>&mdash; **def [go\_env](/infra/bots/recipe_modules/infra/api.py#23)(self):**
241cb93a386Sopenharmony_ci
242cb93a386Sopenharmony_ci&emsp; **@property**<br>&mdash; **def [gopath](/infra/bots/recipe_modules/infra/api.py#33)(self):**
243cb93a386Sopenharmony_ci
244cb93a386Sopenharmony_ci&emsp; **@property**<br>&mdash; **def [goroot](/infra/bots/recipe_modules/infra/api.py#15)(self):**
245cb93a386Sopenharmony_ci### *recipe_modules* / [run](/infra/bots/recipe_modules/run)
246cb93a386Sopenharmony_ci
247cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipe_modules/run/__init__.py#7): [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/step][recipe_engine/recipe_modules/step], [env](#recipe_modules-env), [vars](#recipe_modules-vars)
248cb93a386Sopenharmony_ci
249cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
250cb93a386Sopenharmony_ci
251cb93a386Sopenharmony_ci#### **class [SkiaStepApi](/infra/bots/recipe_modules/run/api.py#14)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
252cb93a386Sopenharmony_ci
253cb93a386Sopenharmony_ci&mdash; **def [\_\_call\_\_](/infra/bots/recipe_modules/run/api.py#69)(self, steptype, name, abort_on_failure=True, fail_build_on_failure=True, \*\*kwargs):**
254cb93a386Sopenharmony_ci
255cb93a386Sopenharmony_ciRun a step. If it fails, keep going but mark the build status failed.
256cb93a386Sopenharmony_ci
257cb93a386Sopenharmony_ci&mdash; **def [\_\_init\_\_](/infra/bots/recipe_modules/run/api.py#16)(self, \*args, \*\*kwargs):**
258cb93a386Sopenharmony_ci
259cb93a386Sopenharmony_ciInitialize the recipe module.
260cb93a386Sopenharmony_ci
261cb93a386Sopenharmony_ci&mdash; **def [asset\_version](/infra/bots/recipe_modules/run/api.py#54)(self, asset_name, skia_dir, test_data=None):**
262cb93a386Sopenharmony_ci
263cb93a386Sopenharmony_ciReturn the contents of VERSION for the given asset as a string.
264cb93a386Sopenharmony_ci
265cb93a386Sopenharmony_ciIf test_data is not specified, reads the property
266cb93a386Sopenharmony_ci'test_<asset_name>_version' or if not present, uses
267cb93a386Sopenharmony_ciTEST_DEFAULT_ASSET_VERSION.
268cb93a386Sopenharmony_ci
269cb93a386Sopenharmony_ci&mdash; **def [check\_failure](/infra/bots/recipe_modules/run/api.py#25)(self):**
270cb93a386Sopenharmony_ci
271cb93a386Sopenharmony_ciRaise an exception if any step failed.
272cb93a386Sopenharmony_ci
273cb93a386Sopenharmony_ci&emsp; **@property**<br>&mdash; **def [failed\_steps](/infra/bots/recipe_modules/run/api.py#31)(self):**
274cb93a386Sopenharmony_ci
275cb93a386Sopenharmony_ci&mdash; **def [readfile](/infra/bots/recipe_modules/run/api.py#40)(self, filename, \*args, \*\*kwargs):**
276cb93a386Sopenharmony_ci
277cb93a386Sopenharmony_ciConvenience function for reading files.
278cb93a386Sopenharmony_ci
279cb93a386Sopenharmony_ci&mdash; **def [rmtree](/infra/bots/recipe_modules/run/api.py#50)(self, path):**
280cb93a386Sopenharmony_ci
281cb93a386Sopenharmony_ciWrapper around api.file.rmtree.
282cb93a386Sopenharmony_ci
283cb93a386Sopenharmony_ci&mdash; **def [run\_once](/infra/bots/recipe_modules/run/api.py#35)(self, fn, \*args, \*\*kwargs):**
284cb93a386Sopenharmony_ci
285cb93a386Sopenharmony_ci&mdash; **def [with\_retry](/infra/bots/recipe_modules/run/api.py#81)(self, steptype, name, attempts, between_attempts_fn=None, abort_on_failure=True, fail_build_on_failure=True, \*\*kwargs):**
286cb93a386Sopenharmony_ci
287cb93a386Sopenharmony_ci&mdash; **def [writefile](/infra/bots/recipe_modules/run/api.py#45)(self, filename, contents):**
288cb93a386Sopenharmony_ci
289cb93a386Sopenharmony_ciConvenience function for writing files.
290cb93a386Sopenharmony_ci### *recipe_modules* / [vars](/infra/bots/recipe_modules/vars)
291cb93a386Sopenharmony_ci
292cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipe_modules/vars/__init__.py#7): [depot\_tools/bot\_update][depot_tools/recipe_modules/bot_update], [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/step][recipe_engine/recipe_modules/step], [builder\_name\_schema](#recipe_modules-builder_name_schema)
293cb93a386Sopenharmony_ci
294cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
295cb93a386Sopenharmony_ci
296cb93a386Sopenharmony_ci#### **class [SkiaVarsApi](/infra/bots/recipe_modules/vars/api.py#16)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
297cb93a386Sopenharmony_ci
298cb93a386Sopenharmony_ci&emsp; **@property**<br>&mdash; **def [is\_linux](/infra/bots/recipe_modules/vars/api.py#88)(self):**
299cb93a386Sopenharmony_ci
300cb93a386Sopenharmony_ci&mdash; **def [setup](/infra/bots/recipe_modules/vars/api.py#18)(self):**
301cb93a386Sopenharmony_ci
302cb93a386Sopenharmony_ciPrepare the variables.
303cb93a386Sopenharmony_ci
304cb93a386Sopenharmony_ci&emsp; **@property**<br>&mdash; **def [swarming\_bot\_id](/infra/bots/recipe_modules/vars/api.py#96)(self):**
305cb93a386Sopenharmony_ci
306cb93a386Sopenharmony_ci&emsp; **@property**<br>&mdash; **def [swarming\_task\_id](/infra/bots/recipe_modules/vars/api.py#108)(self):**
307cb93a386Sopenharmony_ci## Recipes
308cb93a386Sopenharmony_ci
309cb93a386Sopenharmony_ci### *recipes* / [build:examples/full](/infra/bots/recipe_modules/build/examples/full.py)
310cb93a386Sopenharmony_ci
311cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipe_modules/build/examples/full.py#7): [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [build](#recipe_modules-build), [run](#recipe_modules-run), [vars](#recipe_modules-vars)
312cb93a386Sopenharmony_ci
313cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
314cb93a386Sopenharmony_ci
315cb93a386Sopenharmony_ci&mdash; **def [RunSteps](/infra/bots/recipe_modules/build/examples/full.py#18)(api):**
316cb93a386Sopenharmony_ci### *recipes* / [builder\_name\_schema:examples/full](/infra/bots/recipe_modules/builder_name_schema/examples/full.py)
317cb93a386Sopenharmony_ci
318cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipe_modules/builder_name_schema/examples/full.py#7): [builder\_name\_schema](#recipe_modules-builder_name_schema)
319cb93a386Sopenharmony_ci
320cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
321cb93a386Sopenharmony_ci
322cb93a386Sopenharmony_ci&mdash; **def [RunSteps](/infra/bots/recipe_modules/builder_name_schema/examples/full.py#12)(api):**
323cb93a386Sopenharmony_ci### *recipes* / [check\_generated\_files](/infra/bots/recipes/check_generated_files.py)
324cb93a386Sopenharmony_ci
325cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipes/check_generated_files.py#10): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/step][recipe_engine/recipe_modules/step], [build](#recipe_modules-build), [checkout](#recipe_modules-checkout), [infra](#recipe_modules-infra), [run](#recipe_modules-run), [vars](#recipe_modules-vars)
326cb93a386Sopenharmony_ci
327cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
328cb93a386Sopenharmony_ci
329cb93a386Sopenharmony_ci&mdash; **def [RunSteps](/infra/bots/recipes/check_generated_files.py#26)(api):**
330cb93a386Sopenharmony_ci### *recipes* / [checkout:examples/full](/infra/bots/recipe_modules/checkout/examples/full.py)
331cb93a386Sopenharmony_ci
332cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipe_modules/checkout/examples/full.py#7): [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [checkout](#recipe_modules-checkout), [run](#recipe_modules-run), [vars](#recipe_modules-vars)
333cb93a386Sopenharmony_ci
334cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
335cb93a386Sopenharmony_ci
336cb93a386Sopenharmony_ci&mdash; **def [RunSteps](/infra/bots/recipe_modules/checkout/examples/full.py#18)(api):**
337cb93a386Sopenharmony_ci### *recipes* / [compile](/infra/bots/recipes/compile.py)
338cb93a386Sopenharmony_ci
339cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipes/compile.py#10): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/step][recipe_engine/recipe_modules/step], [build](#recipe_modules-build), [checkout](#recipe_modules-checkout), [run](#recipe_modules-run), [vars](#recipe_modules-vars)
340cb93a386Sopenharmony_ci
341cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
342cb93a386Sopenharmony_ci
343cb93a386Sopenharmony_ci&mdash; **def [RunSteps](/infra/bots/recipes/compile.py#26)(api):**
344cb93a386Sopenharmony_ci### *recipes* / [compute\_buildstats](/infra/bots/recipes/compute_buildstats.py)
345cb93a386Sopenharmony_ci
346cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipes/compute_buildstats.py#12): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/step][recipe_engine/recipe_modules/step], [checkout](#recipe_modules-checkout), [env](#recipe_modules-env), [run](#recipe_modules-run), [vars](#recipe_modules-vars)
347cb93a386Sopenharmony_ci
348cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
349cb93a386Sopenharmony_ci
350cb93a386Sopenharmony_ci&mdash; **def [RunSteps](/infra/bots/recipes/compute_buildstats.py#35)(api):**
351cb93a386Sopenharmony_ci
352cb93a386Sopenharmony_ci&mdash; **def [add\_binary\_size\_output\_property](/infra/bots/recipes/compute_buildstats.py#31)(result, source, binary_size):**
353cb93a386Sopenharmony_ci
354cb93a386Sopenharmony_ci&mdash; **def [analyze\_cpp\_lib](/infra/bots/recipes/compute_buildstats.py#167)(api, checkout_root, out_dir, files):**
355cb93a386Sopenharmony_ci
356cb93a386Sopenharmony_ci&mdash; **def [analyze\_flutter\_lib](/infra/bots/recipes/compute_buildstats.py#195)(api, checkout_root, out_dir, files):**
357cb93a386Sopenharmony_ci
358cb93a386Sopenharmony_ci&mdash; **def [analyze\_wasm\_file](/infra/bots/recipes/compute_buildstats.py#234)(api, checkout_root, out_dir, files):**
359cb93a386Sopenharmony_ci
360cb93a386Sopenharmony_ci&mdash; **def [analyze\_web\_file](/infra/bots/recipes/compute_buildstats.py#140)(api, checkout_root, out_dir, files):**
361cb93a386Sopenharmony_ci
362cb93a386Sopenharmony_ci&mdash; **def [keys\_and\_props](/infra/bots/recipes/compute_buildstats.py#116)(api):**
363cb93a386Sopenharmony_ci
364cb93a386Sopenharmony_ci&mdash; **def [make\_treemap](/infra/bots/recipes/compute_buildstats.py#266)(api, checkout_root, out_dir, files):**
365cb93a386Sopenharmony_ci### *recipes* / [docker:examples/full](/infra/bots/recipe_modules/docker/examples/full.py)
366cb93a386Sopenharmony_ci
367cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipe_modules/docker/examples/full.py#7): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step], [docker](#recipe_modules-docker), [vars](#recipe_modules-vars)
368cb93a386Sopenharmony_ci
369cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
370cb93a386Sopenharmony_ci
371cb93a386Sopenharmony_ci&mdash; **def [RunSteps](/infra/bots/recipe_modules/docker/examples/full.py#16)(api):**
372cb93a386Sopenharmony_ci### *recipes* / [doxygen:examples/full](/infra/bots/recipe_modules/doxygen/examples/full.py)
373cb93a386Sopenharmony_ci
374cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipe_modules/doxygen/examples/full.py#7): [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [doxygen](#recipe_modules-doxygen), [vars](#recipe_modules-vars)
375cb93a386Sopenharmony_ci
376cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
377cb93a386Sopenharmony_ci
378cb93a386Sopenharmony_ci&mdash; **def [RunSteps](/infra/bots/recipe_modules/doxygen/examples/full.py#15)(api):**
379cb93a386Sopenharmony_ci### *recipes* / [env:examples/full](/infra/bots/recipe_modules/env/examples/full.py)
380cb93a386Sopenharmony_ci
381cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipe_modules/env/examples/full.py#7): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/step][recipe_engine/recipe_modules/step], [env](#recipe_modules-env)
382cb93a386Sopenharmony_ci
383cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
384cb93a386Sopenharmony_ci
385cb93a386Sopenharmony_ci&mdash; **def [RunSteps](/infra/bots/recipe_modules/env/examples/full.py#14)(api):**
386cb93a386Sopenharmony_ci### *recipes* / [flavor:examples/full](/infra/bots/recipe_modules/flavor/examples/full.py)
387cb93a386Sopenharmony_ci
388cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipe_modules/flavor/examples/full.py#7): [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [flavor](#recipe_modules-flavor), [run](#recipe_modules-run), [vars](#recipe_modules-vars)
389cb93a386Sopenharmony_ci
390cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
391cb93a386Sopenharmony_ci
392cb93a386Sopenharmony_ci&mdash; **def [RunSteps](/infra/bots/recipe_modules/flavor/examples/full.py#32)(api):**
393cb93a386Sopenharmony_ci
394cb93a386Sopenharmony_ci&mdash; **def [test\_exceptions](/infra/bots/recipe_modules/flavor/examples/full.py#17)(api):**
395cb93a386Sopenharmony_ci### *recipes* / [git:examples/full](/infra/bots/recipe_modules/git/examples/full.py)
396cb93a386Sopenharmony_ci
397cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipe_modules/git/examples/full.py#7): [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/step][recipe_engine/recipe_modules/step], [git](#recipe_modules-git)
398cb93a386Sopenharmony_ci
399cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
400cb93a386Sopenharmony_ci
401cb93a386Sopenharmony_ci&mdash; **def [RunSteps](/infra/bots/recipe_modules/git/examples/full.py#14)(api):**
402cb93a386Sopenharmony_ci### *recipes* / [gold\_upload:examples/full](/infra/bots/recipe_modules/gold_upload/examples/full.py)
403cb93a386Sopenharmony_ci
404cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipe_modules/gold_upload/examples/full.py#10): [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/step][recipe_engine/recipe_modules/step], [flavor](#recipe_modules-flavor), [gold\_upload](#recipe_modules-gold_upload), [run](#recipe_modules-run), [vars](#recipe_modules-vars)
405cb93a386Sopenharmony_ci
406cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
407cb93a386Sopenharmony_ci
408cb93a386Sopenharmony_ci&mdash; **def [RunSteps](/infra/bots/recipe_modules/gold_upload/examples/full.py#22)(api):**
409cb93a386Sopenharmony_ci### *recipes* / [gsutil:examples/full](/infra/bots/recipe_modules/gsutil/examples/full.py)
410cb93a386Sopenharmony_ci
411cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipe_modules/gsutil/examples/full.py#10): [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/step][recipe_engine/recipe_modules/step], [gsutil](#recipe_modules-gsutil), [run](#recipe_modules-run), [vars](#recipe_modules-vars)
412cb93a386Sopenharmony_ci
413cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
414cb93a386Sopenharmony_ci
415cb93a386Sopenharmony_ci&mdash; **def [RunSteps](/infra/bots/recipe_modules/gsutil/examples/full.py#21)(api):**
416cb93a386Sopenharmony_ci### *recipes* / [housekeeper](/infra/bots/recipes/housekeeper.py)
417cb93a386Sopenharmony_ci
418cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipes/housekeeper.py#13): [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [checkout](#recipe_modules-checkout), [doxygen](#recipe_modules-doxygen), [run](#recipe_modules-run), [vars](#recipe_modules-vars)
419cb93a386Sopenharmony_ci
420cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
421cb93a386Sopenharmony_ci
422cb93a386Sopenharmony_ci&mdash; **def [RunSteps](/infra/bots/recipes/housekeeper.py#24)(api):**
423cb93a386Sopenharmony_ci### *recipes* / [infra](/infra/bots/recipes/infra.py)
424cb93a386Sopenharmony_ci
425cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipes/infra.py#10): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step], [infra](#recipe_modules-infra), [vars](#recipe_modules-vars)
426cb93a386Sopenharmony_ci
427cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
428cb93a386Sopenharmony_ci
429cb93a386Sopenharmony_ci&mdash; **def [RunSteps](/infra/bots/recipes/infra.py#28)(api):**
430cb93a386Sopenharmony_ci
431cb93a386Sopenharmony_ci&mdash; **def [git\_init](/infra/bots/recipes/infra.py#20)(api, repo_root, env):**
432cb93a386Sopenharmony_ci### *recipes* / [infra:examples/full](/infra/bots/recipe_modules/infra/examples/full.py)
433cb93a386Sopenharmony_ci
434cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipe_modules/infra/examples/full.py#10): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/step][recipe_engine/recipe_modules/step], [infra](#recipe_modules-infra), [run](#recipe_modules-run), [vars](#recipe_modules-vars)
435cb93a386Sopenharmony_ci
436cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
437cb93a386Sopenharmony_ci
438cb93a386Sopenharmony_ci&mdash; **def [RunSteps](/infra/bots/recipe_modules/infra/examples/full.py#23)(api):**
439cb93a386Sopenharmony_ci### *recipes* / [perf](/infra/bots/recipes/perf.py)
440cb93a386Sopenharmony_ci
441cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipes/perf.py#15): [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/step][recipe_engine/recipe_modules/step], [recipe\_engine/time][recipe_engine/recipe_modules/time], [env](#recipe_modules-env), [flavor](#recipe_modules-flavor), [run](#recipe_modules-run), [vars](#recipe_modules-vars)
442cb93a386Sopenharmony_ci
443cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
444cb93a386Sopenharmony_ci
445cb93a386Sopenharmony_ci&mdash; **def [RunSteps](/infra/bots/recipes/perf.py#104)(api):**
446cb93a386Sopenharmony_ci
447cb93a386Sopenharmony_ci&mdash; **def [perf\_steps](/infra/bots/recipes/perf.py#31)(api):**
448cb93a386Sopenharmony_ci
449cb93a386Sopenharmony_ciRun Skia benchmarks.
450cb93a386Sopenharmony_ci### *recipes* / [perf\_pathkit](/infra/bots/recipes/perf_pathkit.py)
451cb93a386Sopenharmony_ci
452cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipes/perf_pathkit.py#9): [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/step][recipe_engine/recipe_modules/step], [checkout](#recipe_modules-checkout), [docker](#recipe_modules-docker), [env](#recipe_modules-env), [infra](#recipe_modules-infra), [run](#recipe_modules-run), [vars](#recipe_modules-vars)
453cb93a386Sopenharmony_ci
454cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
455cb93a386Sopenharmony_ci
456cb93a386Sopenharmony_ci&mdash; **def [RunSteps](/infra/bots/recipes/perf_pathkit.py#28)(api):**
457cb93a386Sopenharmony_ci### *recipes* / [perf\_skottietrace](/infra/bots/recipes/perf_skottietrace.py)
458cb93a386Sopenharmony_ci
459cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipes/perf_skottietrace.py#17): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/step][recipe_engine/recipe_modules/step], [recipe\_engine/time][recipe_engine/recipe_modules/time], [flavor](#recipe_modules-flavor), [run](#recipe_modules-run), [vars](#recipe_modules-vars)
460cb93a386Sopenharmony_ci
461cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
462cb93a386Sopenharmony_ci
463cb93a386Sopenharmony_ci&mdash; **def [RunSteps](/infra/bots/recipes/perf_skottietrace.py#219)(api):**
464cb93a386Sopenharmony_ci
465cb93a386Sopenharmony_ci&mdash; **def [get\_trace\_match](/infra/bots/recipes/perf_skottietrace.py#128)(lottie_filename, is_android):**
466cb93a386Sopenharmony_ci
467cb93a386Sopenharmony_ciReturns the DM regex to match the specified lottie file name.
468cb93a386Sopenharmony_ci
469cb93a386Sopenharmony_ci&mdash; **def [parse\_trace](/infra/bots/recipes/perf_skottietrace.py#143)(trace_json, lottie_filename, api):**
470cb93a386Sopenharmony_ci
471cb93a386Sopenharmony_ciparse_trace parses the specified trace JSON.
472cb93a386Sopenharmony_ci
473cb93a386Sopenharmony_ciParses the trace JSON and calculates the time of a single frame. Frame time is
474cb93a386Sopenharmony_ciconsidered the same as seek time + render time.
475cb93a386Sopenharmony_ciNote: The first seek is ignored because it is a constructor call.
476cb93a386Sopenharmony_ci
477cb93a386Sopenharmony_ciA dictionary is returned that has the following structure:
478cb93a386Sopenharmony_ci{
479cb93a386Sopenharmony_ci  'frame_max_us': 100,
480cb93a386Sopenharmony_ci  'frame_min_us': 90,
481cb93a386Sopenharmony_ci  'frame_avg_us': 95,
482cb93a386Sopenharmony_ci}
483cb93a386Sopenharmony_ci
484cb93a386Sopenharmony_ci&mdash; **def [perf\_steps](/infra/bots/recipes/perf_skottietrace.py#37)(api):**
485cb93a386Sopenharmony_ci
486cb93a386Sopenharmony_ciRun DM on lottie files with tracing turned on and then parse the output.
487cb93a386Sopenharmony_ci### *recipes* / [perf\_skottiewasm\_lottieweb](/infra/bots/recipes/perf_skottiewasm_lottieweb.py)
488cb93a386Sopenharmony_ci
489cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipes/perf_skottiewasm_lottieweb.py#14): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/step][recipe_engine/recipe_modules/step], [recipe\_engine/time][recipe_engine/recipe_modules/time], [checkout](#recipe_modules-checkout), [env](#recipe_modules-env), [flavor](#recipe_modules-flavor), [infra](#recipe_modules-infra), [run](#recipe_modules-run), [vars](#recipe_modules-vars)
490cb93a386Sopenharmony_ci
491cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
492cb93a386Sopenharmony_ci
493cb93a386Sopenharmony_ci&mdash; **def [RunSteps](/infra/bots/recipes/perf_skottiewasm_lottieweb.py#84)(api):**
494cb93a386Sopenharmony_ci
495cb93a386Sopenharmony_ci&mdash; **def [parse\_trace](/infra/bots/recipes/perf_skottiewasm_lottieweb.py#205)(trace_json, lottie_filename, api, renderer):**
496cb93a386Sopenharmony_ci
497cb93a386Sopenharmony_ciparse_trace parses the specified trace JSON.
498cb93a386Sopenharmony_ci
499cb93a386Sopenharmony_ciParses the trace JSON and calculates the time of a single frame.
500cb93a386Sopenharmony_ciA dictionary is returned that has the following structure:
501cb93a386Sopenharmony_ci{
502cb93a386Sopenharmony_ci  'frame_max_us': 100,
503cb93a386Sopenharmony_ci  'frame_min_us': 90,
504cb93a386Sopenharmony_ci  'frame_avg_us': 95,
505cb93a386Sopenharmony_ci}
506cb93a386Sopenharmony_ci### *recipes* / [run:examples/full](/infra/bots/recipe_modules/run/examples/full.py)
507cb93a386Sopenharmony_ci
508cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipe_modules/run/examples/full.py#7): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step], [run](#recipe_modules-run), [vars](#recipe_modules-vars)
509cb93a386Sopenharmony_ci
510cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
511cb93a386Sopenharmony_ci
512cb93a386Sopenharmony_ci&mdash; **def [RunSteps](/infra/bots/recipe_modules/run/examples/full.py#22)(api):**
513cb93a386Sopenharmony_ci
514cb93a386Sopenharmony_ci&mdash; **def [myfunc](/infra/bots/recipe_modules/run/examples/full.py#18)(api, i):**
515cb93a386Sopenharmony_ci### *recipes* / [skpbench](/infra/bots/recipes/skpbench.py)
516cb93a386Sopenharmony_ci
517cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipes/skpbench.py#13): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/step][recipe_engine/recipe_modules/step], [recipe\_engine/time][recipe_engine/recipe_modules/time], [flavor](#recipe_modules-flavor), [run](#recipe_modules-run), [vars](#recipe_modules-vars)
518cb93a386Sopenharmony_ci
519cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
520cb93a386Sopenharmony_ci
521cb93a386Sopenharmony_ci&mdash; **def [RunSteps](/infra/bots/recipes/skpbench.py#163)(api):**
522cb93a386Sopenharmony_ci
523cb93a386Sopenharmony_ci&mdash; **def [skpbench\_steps](/infra/bots/recipes/skpbench.py#42)(api):**
524cb93a386Sopenharmony_ci
525cb93a386Sopenharmony_cibenchmark Skia using skpbench.
526cb93a386Sopenharmony_ci### *recipes* / [sync\_and\_compile](/infra/bots/recipes/sync_and_compile.py)
527cb93a386Sopenharmony_ci
528cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipes/sync_and_compile.py#10): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/step][recipe_engine/recipe_modules/step], [build](#recipe_modules-build), [checkout](#recipe_modules-checkout), [run](#recipe_modules-run), [vars](#recipe_modules-vars)
529cb93a386Sopenharmony_ci
530cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
531cb93a386Sopenharmony_ci
532cb93a386Sopenharmony_ci&mdash; **def [RunSteps](/infra/bots/recipes/sync_and_compile.py#26)(api):**
533cb93a386Sopenharmony_ci### *recipes* / [test](/infra/bots/recipes/test.py)
534cb93a386Sopenharmony_ci
535cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipes/test.py#13): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/step][recipe_engine/recipe_modules/step], [env](#recipe_modules-env), [flavor](#recipe_modules-flavor), [gold\_upload](#recipe_modules-gold_upload), [run](#recipe_modules-run), [vars](#recipe_modules-vars)
536cb93a386Sopenharmony_ci
537cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
538cb93a386Sopenharmony_ci
539cb93a386Sopenharmony_ci&mdash; **def [RunSteps](/infra/bots/recipes/test.py#162)(api):**
540cb93a386Sopenharmony_ci
541cb93a386Sopenharmony_ci&mdash; **def [test\_steps](/infra/bots/recipes/test.py#31)(api):**
542cb93a386Sopenharmony_ci
543cb93a386Sopenharmony_ciRun the DM test.
544cb93a386Sopenharmony_ci### *recipes* / [test\_canvaskit](/infra/bots/recipes/test_canvaskit.py)
545cb93a386Sopenharmony_ci
546cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipes/test_canvaskit.py#9): [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/step][recipe_engine/recipe_modules/step], [checkout](#recipe_modules-checkout), [docker](#recipe_modules-docker), [env](#recipe_modules-env), [flavor](#recipe_modules-flavor), [gold\_upload](#recipe_modules-gold_upload), [infra](#recipe_modules-infra), [run](#recipe_modules-run), [vars](#recipe_modules-vars)
547cb93a386Sopenharmony_ci
548cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
549cb93a386Sopenharmony_ci
550cb93a386Sopenharmony_ci&mdash; **def [RunSteps](/infra/bots/recipes/test_canvaskit.py#29)(api):**
551cb93a386Sopenharmony_ci### *recipes* / [test\_lottie\_web](/infra/bots/recipes/test_lottie_web.py)
552cb93a386Sopenharmony_ci
553cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipes/test_lottie_web.py#9): [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step], [checkout](#recipe_modules-checkout), [docker](#recipe_modules-docker), [env](#recipe_modules-env), [flavor](#recipe_modules-flavor), [gold\_upload](#recipe_modules-gold_upload), [infra](#recipe_modules-infra), [run](#recipe_modules-run), [vars](#recipe_modules-vars)
554cb93a386Sopenharmony_ci
555cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
556cb93a386Sopenharmony_ci
557cb93a386Sopenharmony_ci&mdash; **def [RunSteps](/infra/bots/recipes/test_lottie_web.py#29)(api):**
558cb93a386Sopenharmony_ci### *recipes* / [test\_pathkit](/infra/bots/recipes/test_pathkit.py)
559cb93a386Sopenharmony_ci
560cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipes/test_pathkit.py#9): [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/step][recipe_engine/recipe_modules/step], [checkout](#recipe_modules-checkout), [docker](#recipe_modules-docker), [env](#recipe_modules-env), [flavor](#recipe_modules-flavor), [gold\_upload](#recipe_modules-gold_upload), [infra](#recipe_modules-infra), [run](#recipe_modules-run), [vars](#recipe_modules-vars)
561cb93a386Sopenharmony_ci
562cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
563cb93a386Sopenharmony_ci
564cb93a386Sopenharmony_ci&mdash; **def [RunSteps](/infra/bots/recipes/test_pathkit.py#30)(api):**
565cb93a386Sopenharmony_ci### *recipes* / [upload\_buildstats\_results](/infra/bots/recipes/upload_buildstats_results.py)
566cb93a386Sopenharmony_ci
567cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipes/upload_buildstats_results.py#10): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step], [recipe\_engine/time][recipe_engine/recipe_modules/time], [vars](#recipe_modules-vars)
568cb93a386Sopenharmony_ci
569cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
570cb93a386Sopenharmony_ci
571cb93a386Sopenharmony_ci&mdash; **def [RunSteps](/infra/bots/recipes/upload_buildstats_results.py#21)(api):**
572cb93a386Sopenharmony_ci### *recipes* / [upload\_dm\_results](/infra/bots/recipes/upload_dm_results.py)
573cb93a386Sopenharmony_ci
574cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipes/upload_dm_results.py#13): [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step], [recipe\_engine/time][recipe_engine/recipe_modules/time], [gsutil](#recipe_modules-gsutil), [vars](#recipe_modules-vars)
575cb93a386Sopenharmony_ci
576cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
577cb93a386Sopenharmony_ci
578cb93a386Sopenharmony_ci&mdash; **def [RunSteps](/infra/bots/recipes/upload_dm_results.py#29)(api):**
579cb93a386Sopenharmony_ci### *recipes* / [upload\_nano\_results](/infra/bots/recipes/upload_nano_results.py)
580cb93a386Sopenharmony_ci
581cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipes/upload_nano_results.py#10): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step], [recipe\_engine/time][recipe_engine/recipe_modules/time], [vars](#recipe_modules-vars)
582cb93a386Sopenharmony_ci
583cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
584cb93a386Sopenharmony_ci
585cb93a386Sopenharmony_ci&mdash; **def [RunSteps](/infra/bots/recipes/upload_nano_results.py#21)(api):**
586cb93a386Sopenharmony_ci### *recipes* / [vars:examples/full](/infra/bots/recipe_modules/vars/examples/full.py)
587cb93a386Sopenharmony_ci
588cb93a386Sopenharmony_ci[DEPS](/infra/bots/recipe_modules/vars/examples/full.py#7): [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step], [vars](#recipe_modules-vars)
589cb93a386Sopenharmony_ci
590cb93a386Sopenharmony_ciPYTHON_VERSION_COMPATIBILITY: PY2+3
591cb93a386Sopenharmony_ci
592cb93a386Sopenharmony_ci&mdash; **def [RunSteps](/infra/bots/recipe_modules/vars/examples/full.py#16)(api):**
593cb93a386Sopenharmony_ci
594cb93a386Sopenharmony_ci[depot_tools/recipe_modules/bot_update]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/8a0d05dea6b215cdd68fe2fe8093353baf2b4c22/recipes/README.recipes.md#recipe_modules-bot_update
595cb93a386Sopenharmony_ci[depot_tools/recipe_modules/gclient]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/8a0d05dea6b215cdd68fe2fe8093353baf2b4c22/recipes/README.recipes.md#recipe_modules-gclient
596cb93a386Sopenharmony_ci[depot_tools/recipe_modules/git]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/8a0d05dea6b215cdd68fe2fe8093353baf2b4c22/recipes/README.recipes.md#recipe_modules-git
597cb93a386Sopenharmony_ci[depot_tools/recipe_modules/tryserver]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/8a0d05dea6b215cdd68fe2fe8093353baf2b4c22/recipes/README.recipes.md#recipe_modules-tryserver
598cb93a386Sopenharmony_ci[recipe_engine/recipe_modules/context]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/8ac9cf1c9ff01f9fe1276c8532577127f068d576/README.recipes.md#recipe_modules-context
599cb93a386Sopenharmony_ci[recipe_engine/recipe_modules/file]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/8ac9cf1c9ff01f9fe1276c8532577127f068d576/README.recipes.md#recipe_modules-file
600cb93a386Sopenharmony_ci[recipe_engine/recipe_modules/json]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/8ac9cf1c9ff01f9fe1276c8532577127f068d576/README.recipes.md#recipe_modules-json
601cb93a386Sopenharmony_ci[recipe_engine/recipe_modules/path]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/8ac9cf1c9ff01f9fe1276c8532577127f068d576/README.recipes.md#recipe_modules-path
602cb93a386Sopenharmony_ci[recipe_engine/recipe_modules/platform]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/8ac9cf1c9ff01f9fe1276c8532577127f068d576/README.recipes.md#recipe_modules-platform
603cb93a386Sopenharmony_ci[recipe_engine/recipe_modules/properties]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/8ac9cf1c9ff01f9fe1276c8532577127f068d576/README.recipes.md#recipe_modules-properties
604cb93a386Sopenharmony_ci[recipe_engine/recipe_modules/python]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/8ac9cf1c9ff01f9fe1276c8532577127f068d576/README.recipes.md#recipe_modules-python
605cb93a386Sopenharmony_ci[recipe_engine/recipe_modules/raw_io]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/8ac9cf1c9ff01f9fe1276c8532577127f068d576/README.recipes.md#recipe_modules-raw_io
606cb93a386Sopenharmony_ci[recipe_engine/recipe_modules/step]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/8ac9cf1c9ff01f9fe1276c8532577127f068d576/README.recipes.md#recipe_modules-step
607cb93a386Sopenharmony_ci[recipe_engine/recipe_modules/time]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/8ac9cf1c9ff01f9fe1276c8532577127f068d576/README.recipes.md#recipe_modules-time
608cb93a386Sopenharmony_ci[recipe_engine/wkt/RecipeApi]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/8ac9cf1c9ff01f9fe1276c8532577127f068d576/recipe_engine/recipe_api.py#881
609