Skip to content

Commit 8125ca3

Browse files
authored
[Pipeline] optimize for batch run in pipeline (Azure#40213)
* optimize for batch run * update * update * add log * fix
1 parent 8b96068 commit 8125ca3

File tree

3 files changed

+23
-4
lines changed

3 files changed

+23
-4
lines changed

scripts/automation_init.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ pip install setuptools==78.1.0 > /dev/null
99

1010
# install tsp-client globally (local install may interfere with tooling)
1111
echo Install tsp-client
12-
sudo npm install -g @azure-tools/typespec-client-generator-cli > /dev/null
12+
sudo npm install -g @azure-tools/typespec-client-generator-cli@0.20.0 > /dev/null
1313

1414
echo "{}" >> $2
1515
echo "[Generate] init success!!!"

tools/azure-sdk-tools/packaging_tools/generate_utils.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -416,13 +416,31 @@ def generate_ci(template_path: Path, folder_path: Path, package_name: str) -> No
416416
file_out.writelines(content)
417417

418418

419-
def gen_typespec(typespec_relative_path: str, spec_folder: str, head_sha: str, rest_repo_url: str) -> Dict[str, Any]:
419+
def gen_typespec(
420+
typespec_relative_path: str,
421+
spec_folder: str,
422+
head_sha: str,
423+
rest_repo_url: str,
424+
run_in_pipeline: bool,
425+
) -> Dict[str, Any]:
420426
typespec_python = "@azure-tools/typespec-python"
421427
# call scirpt to generate sdk
422428
try:
423429
tsp_dir = (Path(spec_folder) / typespec_relative_path).resolve()
424430
repo_url = rest_repo_url.replace("https://github.com/", "")
425-
cmd = f"tsp-client init --tsp-config {tsp_dir} --local-spec-repo {tsp_dir} --commit {head_sha} --repo {repo_url} --debug"
431+
cmd = (
432+
f"tsp-client init --tsp-config {tsp_dir} --local-spec-repo {tsp_dir} --commit {head_sha} --repo {repo_url}"
433+
)
434+
if run_in_pipeline:
435+
emitter_name = "@azure-tools/typespec-python"
436+
if not os.path.exists(f"node_modules/{emitter_name}"):
437+
_LOGGER.info("install dependencies only for the first run")
438+
check_output("tsp-client install-dependencies", stderr=STDOUT, shell=True)
439+
else:
440+
_LOGGER.info(f"skip install since {emitter_name} is already installed")
441+
cmd += " --skip-install --debug"
442+
else:
443+
cmd += " --debug"
426444
_LOGGER.info(f"generation cmd: {cmd}")
427445
output = check_output(cmd, stderr=STDOUT, shell=True)
428446
except CalledProcessError as e:

tools/azure-sdk-tools/packaging_tools/sdk_generator.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,7 @@ def main(generate_input, generate_output):
221221
python_tag = data.get("python_tag")
222222
package_total = set()
223223
readme_and_tsp = data.get("relatedReadmeMdFiles", []) + data.get("relatedTypeSpecProjectFolder", [])
224+
run_in_pipeline = data.get("runMode") is not None
224225
for readme_or_tsp in readme_and_tsp:
225226
_LOGGER.info(f"[CODEGEN]({readme_or_tsp})codegen begin")
226227
try:
@@ -245,7 +246,7 @@ def main(generate_input, generate_output):
245246
config = gen_dpg(readme_or_tsp, data.get("autorestConfig", ""), dpg_relative_folder(spec_folder))
246247
else:
247248
del_outdated_generated_files(str(Path(spec_folder, readme_or_tsp)))
248-
config = gen_typespec(readme_or_tsp, spec_folder, data["headSha"], data["repoHttpsUrl"])
249+
config = gen_typespec(readme_or_tsp, spec_folder, data["headSha"], data["repoHttpsUrl"], run_in_pipeline)
249250
_LOGGER.info(f"code generation cost time: {int(time.time() - code_generation_start_time)} seconds")
250251
except Exception as e:
251252
_LOGGER.error(f"fail to generate sdk for {readme_or_tsp}: {str(e)}")

0 commit comments

Comments
 (0)