[beta] Make the docker recipe channel agnostic
* Use the latest stable Dart SDK CIPD package to run Dart scripts.
* Remove the build.git dependency.
https://github.com/dart-lang/sdk/issues/40991
Change-Id: I3261a6a30d83d476f3ecb3d7a184835a8e62a42d
Reviewed-on: https://dart-review.googlesource.com/c/recipes/+/142001
Reviewed-by: William Hesse <whesse@google.com>
diff --git a/README.recipes.md b/README.recipes.md
index 2f1b46e..c151a89 100644
--- a/README.recipes.md
+++ b/README.recipes.md
@@ -107,9 +107,9 @@
— **def [RunSteps](/recipes/dart/chocolatey.py#25)(api):**
### *recipes* / [dart/docker](/recipes/dart/docker.py)
-[DEPS](/recipes/dart/docker.py#7): [build/zip][build/recipe_modules/zip], [dart](#recipe_modules-dart), [depot\_tools/git][depot_tools/recipe_modules/git], [depot\_tools/gsutil][depot_tools/recipe_modules/gsutil], [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/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/step][recipe_engine/recipe_modules/step]
+[DEPS](/recipes/dart/docker.py#7): [dart](#recipe_modules-dart), [depot\_tools/git][depot_tools/recipe_modules/git], [recipe\_engine/cipd][recipe_engine/recipe_modules/cipd], [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]
-— **def [RunSteps](/recipes/dart/docker.py#20)(api):**
+— **def [RunSteps](/recipes/dart/docker.py#17)(api):**
### *recipes* / [dart/external](/recipes/dart/external.py)
[DEPS](/recipes/dart/external.py#7): [recipe\_engine/buildbucket][recipe_engine/recipe_modules/buildbucket], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step]
@@ -188,7 +188,6 @@
[build/recipe_modules/goma]: https://chromium.googlesource.com/chromium/tools/build.git/+/8827cc89dad01326ba2f94fd47262f156ba852a2/scripts/slave/README.recipes.md#recipe_modules-goma
[build/recipe_modules/swarming_client]: https://chromium.googlesource.com/chromium/tools/build.git/+/8827cc89dad01326ba2f94fd47262f156ba852a2/scripts/slave/README.recipes.md#recipe_modules-swarming_client
-[build/recipe_modules/zip]: https://chromium.googlesource.com/chromium/tools/build.git/+/8827cc89dad01326ba2f94fd47262f156ba852a2/scripts/slave/README.recipes.md#recipe_modules-zip
[depot_tools/recipe_modules/bot_update]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/06101933267d1eadc3daa6b5d2ea736a9f7181a6/recipes/README.recipes.md#recipe_modules-bot_update
[depot_tools/recipe_modules/depot_tools]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/06101933267d1eadc3daa6b5d2ea736a9f7181a6/recipes/README.recipes.md#recipe_modules-depot_tools
[depot_tools/recipe_modules/gclient]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/06101933267d1eadc3daa6b5d2ea736a9f7181a6/recipes/README.recipes.md#recipe_modules-gclient
diff --git a/recipes/dart/docker.expected/dev.json b/recipes/dart/docker.expected/dev.json
deleted file mode 100644
index c1eb6d7..0000000
--- a/recipes/dart/docker.expected/dev.json
+++ /dev/null
@@ -1,21 +0,0 @@
-[
- {
- "cmd": [
- "python",
- "-u",
- "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
- "--",
- "RECIPE_REPO[depot_tools]/gsutil.py",
- "----",
- "cp",
- "gs://dart-archive/channels/dev/release/2.0.0-dev.51.0/sdk/dartsdk-linux-x64-release.zip",
- "[CLEANUP]/dartsdk-linux-x64-release.zip"
- ],
- "cwd": "[CLEANUP]",
- "env": {
- "DOCKER_CONFIG": "[CLEANUP]/.docker"
- },
- "infra_step": true,
- "name": "gsutil download dart sdk"
- }
-]
\ No newline at end of file
diff --git a/recipes/dart/docker.expected/release.json b/recipes/dart/docker.expected/release.json
index ab98eac..f912d7a 100644
--- a/recipes/dart/docker.expected/release.json
+++ b/recipes/dart/docker.expected/release.json
@@ -86,35 +86,29 @@
},
{
"cmd": [
- "python",
- "-u",
- "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
- "--",
- "RECIPE_REPO[depot_tools]/gsutil.py",
- "----",
- "cp",
- "gs://dart-archive/channels/stable/release/1.24.3/sdk/dartsdk-linux-x64-release.zip",
- "[CLEANUP]/dartsdk-linux-x64-release.zip"
+ "cipd",
+ "ensure",
+ "-root",
+ "[CLEANUP]/sdk",
+ "-ensure-file",
+ "dart/dart-sdk/${platform} stable",
+ "-json-output",
+ "/path/to/tmp/json"
],
- "cwd": "[CLEANUP]",
- "env": {
- "DOCKER_CONFIG": "[CLEANUP]/.docker"
- },
- "infra_step": true,
- "name": "gsutil download dart sdk"
- },
- {
- "cmd": [
- "python",
- "-u",
- "RECIPE_MODULE[build::zip]/resources/unzip.py"
- ],
- "cwd": "[CLEANUP]",
- "env": {
- "DOCKER_CONFIG": "[CLEANUP]/.docker"
- },
- "name": "unzip sdk",
- "stdin": "{\"output\": \"[CLEANUP]/sdk\", \"quiet\": false, \"zip_file\": \"[CLEANUP]/dartsdk-linux-x64-release.zip\"}"
+ "name": "ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-stable----------\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"dart/dart-sdk/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
},
{
"cmd": [
@@ -131,7 +125,7 @@
"env": {
"DOCKER_CONFIG": "[CLEANUP]/.docker"
},
- "name": "ensure_installed",
+ "name": "ensure_installed (2)",
"~followup_annotations": [
"@@@STEP_LOG_LINE@json.output@{@@@",
"@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
diff --git a/recipes/dart/docker.py b/recipes/dart/docker.py
index 26e106e..ba779ae 100644
--- a/recipes/dart/docker.py
+++ b/recipes/dart/docker.py
@@ -5,34 +5,26 @@
from recipe_engine.post_process import Filter
DEPS = [
- 'dart',
- 'depot_tools/git',
- 'depot_tools/gsutil',
- 'recipe_engine/context',
- 'recipe_engine/file',
- 'recipe_engine/path',
- 'recipe_engine/properties',
- 'recipe_engine/raw_io',
- 'recipe_engine/step',
- 'build/zip',
+ 'dart',
+ 'depot_tools/git',
+ 'recipe_engine/cipd',
+ 'recipe_engine/context',
+ 'recipe_engine/path',
+ 'recipe_engine/properties',
+ 'recipe_engine/step',
]
def RunSteps(api):
version = api.properties.get('version')
- channel = 'dev' if '-dev' in version else 'stable'
-
api.git.checkout(url='https://github.com/dart-lang/dart_docker.git')
+ cipd_ensure_file = api.cipd.EnsureFile()
+ cipd_ensure_file.add_package('dart/dart-sdk/${platform}', 'stable')
+ api.cipd.ensure(api.path['cleanup'].join('sdk'), cipd_ensure_file)
env = {
'DOCKER_CONFIG': api.path['cleanup'].join('.docker'),
}
with api.context(cwd=api.path['cleanup'], env=env):
- sdk = 'channels/%s/release/%s/sdk/dartsdk-linux-x64-release.zip' % (
- channel, version)
- sdk_zip = api.path['cleanup'].join('dartsdk-linux-x64-release.zip')
- api.gsutil.download('dart-archive', sdk, sdk_zip, name='download dart sdk')
- api.zip.unzip('unzip sdk', sdk_zip, api.path['cleanup'].join('sdk'))
-
dockerhub_key = api.dart.get_secret('dockerhub')
login = [
'/bin/bash',
@@ -55,8 +47,3 @@
'release',
api.properties.generic(version='1.24.3'),
)
- yield api.test(
- 'dev',
- api.properties.generic(version='2.0.0-dev.51.0'),
- api.post_process(Filter('gsutil download dart sdk')),
- )