[sdk] Use rsync instead of cp to upload dartdoc (main branch)
gsutil cp behaves differently if the directory already exists causing
the latest folder to have a gen-dartdocs subfolder instead of being
replaced.
gsutil rsync doesn't have this problem and also removes extra files.
Similar to https://dart-review.googlesource.com/c/recipes/+/373700 but for the main branch.
Bug: b/320447980
Change-Id: Ie75576dda469352c962075de95e822fbfc62e275
Reviewed-on: https://dart-review.googlesource.com/c/recipes/+/373702
Commit-Queue: Alexander Thomas <athom@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Auto-Submit: Alexander Thomas <athom@google.com>
diff --git a/recipes/release/sdk.expected/dart-sdk-win-main.json b/recipes/release/sdk.expected/dart-sdk-win-main.json
index 5f5d9a2..a8bb7ed 100644
--- a/recipes/release/sdk.expected/dart-sdk-win-main.json
+++ b/recipes/release/sdk.expected/dart-sdk-win-main.json
@@ -1896,7 +1896,8 @@
"RECIPE_REPO[depot_tools]\\gsutil.py",
"----",
"-m",
- "cp",
+ "rsync",
+ "-d",
"-r",
"[START_DIR]\\sdk\\out\\ReleaseX64\\gen-dartdocs",
"gs://dartlang-api-docs/gen-dartdocs/main/18df0aae67183931b1b6d5d12cc04d89f7137919"
@@ -1926,7 +1927,8 @@
"RECIPE_REPO[depot_tools]\\gsutil.py",
"----",
"-m",
- "cp",
+ "rsync",
+ "-d",
"-r",
"[START_DIR]\\sdk\\out\\ReleaseX64\\gen-dartdocs",
"gs://dart-api-documentation/main/18df0aae67183931b1b6d5d12cc04d89f7137919"
@@ -1956,7 +1958,8 @@
"RECIPE_REPO[depot_tools]\\gsutil.py",
"----",
"-m",
- "cp",
+ "rsync",
+ "-d",
"-r",
"[START_DIR]\\sdk\\out\\ReleaseX64\\gen-dartdocs",
"gs://dart-api-documentation/main/latest"
diff --git a/recipes/release/sdk.py b/recipes/release/sdk.py
index fac37b5..f7a5cd0 100644
--- a/recipes/release/sdk.py
+++ b/recipes/release/sdk.py
@@ -199,9 +199,10 @@
name=f'upload VERSION ({subdir})')
-def _publish_dartdoc(api, commit, channel, dartdocs_path, base):
- dartdocs_gs_dir = f'{base}/{channel}/{commit}'
- api.gsutil(['-m', 'cp', '-r', dartdocs_path, dartdocs_gs_dir],
+def _publish_main_dartdoc(api, commit, dartdocs_path, base):
+ assert (commit)
+ dartdocs_gs_dir = f'{base}/main/{commit}'
+ api.gsutil(['-m', 'rsync', '-d', '-r', dartdocs_path, dartdocs_gs_dir],
name='publish dartdoc')
@@ -246,10 +247,9 @@
out_path = sdk_dir.join(_build_root(api)).join(_build_conf(api, arch))
dartdocs_path = out_path.join('gen-dartdocs')
if properties.dartdoc_arch and version.channel == 'main':
- _publish_dartdoc(api, commit, channel, dartdocs_path,
- DARTDOC_LEGACY_BASE_URL)
- _publish_dartdoc(api, commit, channel, dartdocs_path, DARTDOC_BASE_URL)
- _publish_dartdoc(api, 'latest', channel, dartdocs_path, DARTDOC_BASE_URL)
+ _publish_main_dartdoc(api, commit, dartdocs_path, DARTDOC_LEGACY_BASE_URL)
+ _publish_main_dartdoc(api, commit, dartdocs_path, DARTDOC_BASE_URL)
+ _publish_main_dartdoc(api, 'latest', dartdocs_path, DARTDOC_BASE_URL)
latest_path = sdk_dir.join('latest.txt')
api.file.write_text('write dartdoc latest.txt', latest_path, commit)
api.gsutil.upload(