Assert valid tag and release_channel combo in release MPA workflow.
In order to add an additional layer of validation, this change adds a regex match to ensure that for each release channel (i.e.g 'stable' or 'beta') there is a tag which is formatted appropriately.
After an issue of a tag malformed for the release channel on which it was pushed, this change will make the release workflow fail if the combination is incorrect, and will clearly show the assertion error of the tag not being valid.
Github issue link: https://github.com/flutter/flutter/issues/128792
Change-Id: I59b86e4b0db45666dabc29e8ea8196d9ba05660f
Reviewed-on: https://flutter-review.googlesource.com/c/recipes/+/46000
Reviewed-by: Casey Hillers <chillers@google.com>
Commit-Queue: Jesse Seales <jseales@google.com>
Reviewed-by: Keyong Han <keyonghan@google.com>
diff --git a/recipes/release/release_publish.expected/flutter-2.8-candidate.9_1.2.3-4.5.pre_stableFalse.json b/recipes/release/release_publish.expected/flutter-2.8-candidate.9_1.2.3-4.5.pre_stableFalse.json
index 01ae027..66bf56b 100644
--- a/recipes/release/release_publish.expected/flutter-2.8-candidate.9_1.2.3-4.5.pre_stableFalse.json
+++ b/recipes/release/release_publish.expected/flutter-2.8-candidate.9_1.2.3-4.5.pre_stableFalse.json
@@ -1,568 +1,21 @@
[
{
"cmd": [],
- "name": "checkout flutter release branch"
- },
- {
- "cmd": [],
- "name": "checkout flutter release branch.Checkout flutter/flutter",
+ "name": "RECIPE CRASH (Uncaught exception)",
"~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
+ "@@@STEP_EXCEPTION@@@",
+ "The recipe has crashed at point 'Uncaught exception'!",
+ "",
+ "Traceback (most recent call last):",
+ " File \"RECIPE_REPO[flutter]/recipes/release/release_publish.py\", line 65, in RunSteps",
+ " assert isValidTag(tag, release_channel)",
+ "AssertionError()"
]
},
{
- "cmd": [
- "python3",
- "-u",
- "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py",
- "--path",
- "[START_DIR]/flutter",
- "--url",
- "https://github.com/flutter/flutter"
- ],
- "name": "checkout flutter release branch.Checkout flutter/flutter.git setup",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "fetch",
- "origin",
- "flutter-2.8-candidate.9",
- "--recurse-submodules",
- "--progress",
- "--tags"
- ],
- "cwd": "[START_DIR]/flutter",
- "env": {
- "PATH": "RECIPE_REPO[depot_tools]:<PATH>"
+ "failure": {
+ "humanReason": "Uncaught Exception: AssertionError()"
},
- "infra_step": true,
- "name": "checkout flutter release branch.Checkout flutter/flutter.git fetch",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "checkout",
- "-f",
- "FETCH_HEAD"
- ],
- "cwd": "[START_DIR]/flutter",
- "infra_step": true,
- "name": "checkout flutter release branch.Checkout flutter/flutter.git checkout",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "rev-parse",
- "HEAD"
- ],
- "cwd": "[START_DIR]/flutter",
- "infra_step": true,
- "name": "checkout flutter release branch.Checkout flutter/flutter.read revision",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@",
- "@@@SET_BUILD_PROPERTY@got_revision@\"deadbeef\"@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "clean",
- "-f",
- "-d",
- "-x"
- ],
- "cwd": "[START_DIR]/flutter",
- "infra_step": true,
- "name": "checkout flutter release branch.Checkout flutter/flutter.git clean",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "submodule",
- "sync"
- ],
- "cwd": "[START_DIR]/flutter",
- "infra_step": true,
- "name": "checkout flutter release branch.Checkout flutter/flutter.submodule sync",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "submodule",
- "update",
- "--init",
- "--recursive"
- ],
- "cwd": "[START_DIR]/flutter",
- "infra_step": true,
- "name": "checkout flutter release branch.Checkout flutter/flutter.submodule update",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [],
- "name": "checkout engine release branch"
- },
- {
- "cmd": [],
- "name": "checkout engine release branch.Checkout flutter/engine",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "python3",
- "-u",
- "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py",
- "--path",
- "[START_DIR]/engine",
- "--url",
- "https://github.com/flutter/engine"
- ],
- "name": "checkout engine release branch.Checkout flutter/engine.git setup",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "fetch",
- "origin",
- "flutter-2.8-candidate.9",
- "--recurse-submodules",
- "--progress",
- "--tags"
- ],
- "cwd": "[START_DIR]/engine",
- "env": {
- "PATH": "RECIPE_REPO[depot_tools]:<PATH>"
- },
- "infra_step": true,
- "name": "checkout engine release branch.Checkout flutter/engine.git fetch",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "checkout",
- "-f",
- "FETCH_HEAD"
- ],
- "cwd": "[START_DIR]/engine",
- "infra_step": true,
- "name": "checkout engine release branch.Checkout flutter/engine.git checkout",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "rev-parse",
- "HEAD"
- ],
- "cwd": "[START_DIR]/engine",
- "infra_step": true,
- "name": "checkout engine release branch.Checkout flutter/engine.read revision",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@",
- "@@@SET_BUILD_PROPERTY@got_revision@\"deadbeef\"@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "clean",
- "-f",
- "-d",
- "-x"
- ],
- "cwd": "[START_DIR]/engine",
- "infra_step": true,
- "name": "checkout engine release branch.Checkout flutter/engine.git clean",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "submodule",
- "sync"
- ],
- "cwd": "[START_DIR]/engine",
- "infra_step": true,
- "name": "checkout engine release branch.Checkout flutter/engine.submodule sync",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "submodule",
- "update",
- "--init",
- "--recursive"
- ],
- "cwd": "[START_DIR]/engine",
- "infra_step": true,
- "name": "checkout engine release branch.Checkout flutter/engine.submodule update",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "rev-parse",
- "HEAD"
- ],
- "cwd": "[START_DIR]/flutter",
- "infra_step": true,
- "name": "git rev-parse"
- },
- {
- "cmd": [
- "chmod",
- "755",
- "RECIPE[flutter::release/release_publish].resources/push_release.sh"
- ],
- "infra_step": true,
- "name": "Set execute permission"
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[START_DIR]/cloudkms",
- "-ensure-file",
- "infra/tools/luci/cloudkms/${platform} latest",
- "-max-threads",
- "0",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "cwd": "[START_DIR]/flutter",
- "env": {
- "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
- "GIT_BRANCH": "flutter-2.8-candidate.9",
- "LUCI_BRANCH": "",
- "LUCI_CI": "True",
- "LUCI_PR": "",
- "OS": "linux",
- "PUB_CACHE": "[START_DIR]/.pub-cache",
- "REVISION": "12345abcde12345abcde12345abcde12345abcde",
- "SDK_CHECKOUT_PATH": "[START_DIR]/flutter"
- },
- "env_prefixes": {
- "PATH": [
- "[START_DIR]/flutter/bin",
- "[START_DIR]/flutter/bin/cache/dart-sdk/bin"
- ]
- },
- "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-latest----------\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/cloudkms/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": [
- "python3",
- "-u",
- "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
- "--",
- "RECIPE_REPO[depot_tools]/gsutil.py",
- "----",
- "cp",
- "gs://flutter_configs/flutter-release-github-token.encrypted",
- "[CLEANUP]/flutter-release-github-token.encrypted"
- ],
- "cwd": "[START_DIR]/flutter",
- "env": {
- "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
- "GIT_BRANCH": "flutter-2.8-candidate.9",
- "LUCI_BRANCH": "",
- "LUCI_CI": "True",
- "LUCI_PR": "",
- "OS": "linux",
- "PUB_CACHE": "[START_DIR]/.pub-cache",
- "REVISION": "12345abcde12345abcde12345abcde12345abcde",
- "SDK_CHECKOUT_PATH": "[START_DIR]/flutter"
- },
- "env_prefixes": {
- "PATH": [
- "[START_DIR]/flutter/bin",
- "[START_DIR]/flutter/bin/cache/dart-sdk/bin"
- ]
- },
- "infra_step": true,
- "name": "gsutil download"
- },
- {
- "cmd": [
- "[START_DIR]/cloudkms/cloudkms",
- "decrypt",
- "-input",
- "[CLEANUP]/flutter-release-github-token.encrypted",
- "-output",
- "[CLEANUP]/token.txt",
- "projects/flutter-infra-staging/locations/global/keyRings/luci/cryptoKeys/flutter-infra"
- ],
- "cwd": "[START_DIR]/flutter",
- "env": {
- "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
- "GIT_BRANCH": "flutter-2.8-candidate.9",
- "LUCI_BRANCH": "",
- "LUCI_CI": "True",
- "LUCI_PR": "",
- "OS": "linux",
- "PUB_CACHE": "[START_DIR]/.pub-cache",
- "REVISION": "12345abcde12345abcde12345abcde12345abcde",
- "SDK_CHECKOUT_PATH": "[START_DIR]/flutter"
- },
- "env_prefixes": {
- "PATH": [
- "[START_DIR]/flutter/bin",
- "[START_DIR]/flutter/bin/cache/dart-sdk/bin"
- ]
- },
- "name": "cloudkms get key"
- },
- {
- "cmd": [
- "RECIPE[flutter::release/release_publish].resources/push_release.sh"
- ],
- "cwd": "[START_DIR]/flutter",
- "env": {
- "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
- "FORCE_FLAG": "--force",
- "GITHUB_USER": "fluttergithubbot",
- "GIT_BRANCH": "flutter-2.8-candidate.9",
- "LUCI_BRANCH": "",
- "LUCI_CI": "True",
- "LUCI_PR": "",
- "OS": "linux",
- "PUB_CACHE": "[START_DIR]/.pub-cache",
- "RELEASE_CHANNEL": "stable",
- "REL_HASH": "deadbeef",
- "REPO": "flutter",
- "REVISION": "12345abcde12345abcde12345abcde12345abcde",
- "SDK_CHECKOUT_PATH": "[START_DIR]/flutter",
- "TAG": "1.2.3-4.5.pre",
- "TOKEN_PATH": "[CLEANUP]/token.txt"
- },
- "env_prefixes": {
- "PATH": [
- "[START_DIR]/flutter/bin",
- "[START_DIR]/flutter/bin/cache/dart-sdk/bin",
- "[START_DIR]/flutter/bin",
- "[START_DIR]/flutter/bin/cache/dart-sdk/bin"
- ]
- },
- "name": "Tag and push release on flutter/flutter"
- },
- {
- "cmd": [
- "vpython3",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[START_DIR]/flutter/bin/internal/engine.version",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "read engine hash",
- "~followup_annotations": [
- "@@@STEP_LOG_END@engine.version@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[START_DIR]/cloudkms",
- "-ensure-file",
- "infra/tools/luci/cloudkms/${platform} latest",
- "-max-threads",
- "0",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "cwd": "[START_DIR]/engine",
- "env": {
- "ANDROID_HOME": "[START_DIR]/engine/src/third_party/android_tools/sdk",
- "ANDROID_SDK_HOME": "[CLEANUP]/tmp_tmp_1",
- "ANDROID_USER_HOME": "[CLEANUP]/tmp_tmp_1/.android",
- "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
- "ENGINE_CHECKOUT_PATH": "[START_DIR]/engine",
- "GIT_BRANCH": "flutter-2.8-candidate.9",
- "LUCI_BRANCH": "",
- "LUCI_CI": "True",
- "LUCI_PR": "",
- "LUCI_WORKDIR": "[START_DIR]",
- "OS": "linux",
- "REVISION": ""
- },
- "env_prefixes": {
- "PATH": [
- "[START_DIR]/engine/src/third_party/dart/tools/sdks/dart-sdk/bin"
- ]
- },
- "name": "ensure_installed (2)",
- "~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-latest----------\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/cloudkms/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": [
- "python3",
- "-u",
- "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
- "--",
- "RECIPE_REPO[depot_tools]/gsutil.py",
- "----",
- "cp",
- "gs://flutter_configs/flutter-release-github-token.encrypted",
- "[CLEANUP]/flutter-release-github-token.encrypted"
- ],
- "cwd": "[START_DIR]/engine",
- "env": {
- "ANDROID_HOME": "[START_DIR]/engine/src/third_party/android_tools/sdk",
- "ANDROID_SDK_HOME": "[CLEANUP]/tmp_tmp_1",
- "ANDROID_USER_HOME": "[CLEANUP]/tmp_tmp_1/.android",
- "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
- "ENGINE_CHECKOUT_PATH": "[START_DIR]/engine",
- "GIT_BRANCH": "flutter-2.8-candidate.9",
- "LUCI_BRANCH": "",
- "LUCI_CI": "True",
- "LUCI_PR": "",
- "LUCI_WORKDIR": "[START_DIR]",
- "OS": "linux",
- "REVISION": ""
- },
- "env_prefixes": {
- "PATH": [
- "[START_DIR]/engine/src/third_party/dart/tools/sdks/dart-sdk/bin"
- ]
- },
- "infra_step": true,
- "name": "gsutil download (2)"
- },
- {
- "cmd": [
- "[START_DIR]/cloudkms/cloudkms",
- "decrypt",
- "-input",
- "[CLEANUP]/flutter-release-github-token.encrypted",
- "-output",
- "[CLEANUP]/token.txt",
- "projects/flutter-infra-staging/locations/global/keyRings/luci/cryptoKeys/flutter-infra"
- ],
- "cwd": "[START_DIR]/engine",
- "env": {
- "ANDROID_HOME": "[START_DIR]/engine/src/third_party/android_tools/sdk",
- "ANDROID_SDK_HOME": "[CLEANUP]/tmp_tmp_1",
- "ANDROID_USER_HOME": "[CLEANUP]/tmp_tmp_1/.android",
- "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
- "ENGINE_CHECKOUT_PATH": "[START_DIR]/engine",
- "GIT_BRANCH": "flutter-2.8-candidate.9",
- "LUCI_BRANCH": "",
- "LUCI_CI": "True",
- "LUCI_PR": "",
- "LUCI_WORKDIR": "[START_DIR]",
- "OS": "linux",
- "REVISION": ""
- },
- "env_prefixes": {
- "PATH": [
- "[START_DIR]/engine/src/third_party/dart/tools/sdks/dart-sdk/bin"
- ]
- },
- "name": "cloudkms get key (2)"
- },
- {
- "cmd": [
- "RECIPE[flutter::release/release_publish].resources/push_release.sh"
- ],
- "cwd": "[START_DIR]/engine",
- "env": {
- "ANDROID_HOME": "[START_DIR]/engine/src/third_party/android_tools/sdk",
- "ANDROID_SDK_HOME": "[CLEANUP]/tmp_tmp_1",
- "ANDROID_USER_HOME": "[CLEANUP]/tmp_tmp_1/.android",
- "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
- "ENGINE_CHECKOUT_PATH": "[START_DIR]/engine",
- "FORCE_FLAG": "--force",
- "GITHUB_USER": "fluttergithubbot",
- "GIT_BRANCH": "flutter-2.8-candidate.9",
- "LUCI_BRANCH": "",
- "LUCI_CI": "True",
- "LUCI_PR": "",
- "LUCI_WORKDIR": "[START_DIR]",
- "OS": "linux",
- "RELEASE_CHANNEL": "stable",
- "REL_HASH": "",
- "REPO": "engine",
- "REVISION": "",
- "TAG": "1.2.3-4.5.pre",
- "TOKEN_PATH": "[CLEANUP]/token.txt"
- },
- "env_prefixes": {
- "PATH": [
- "[START_DIR]/engine/src/third_party/dart/tools/sdks/dart-sdk/bin",
- "[START_DIR]/engine/src/third_party/dart/tools/sdks/dart-sdk/bin"
- ]
- },
- "name": "Tag and push release on flutter/engine"
- },
- {
"name": "$result"
}
]
\ No newline at end of file
diff --git a/recipes/release/release_publish.expected/flutter-2.8-candidate.9_1.2.3-4.5.pre_stable_force.json b/recipes/release/release_publish.expected/flutter-2.8-candidate.9_1.2.3-4.5.pre_stable_force.json
index 01ae027..66bf56b 100644
--- a/recipes/release/release_publish.expected/flutter-2.8-candidate.9_1.2.3-4.5.pre_stable_force.json
+++ b/recipes/release/release_publish.expected/flutter-2.8-candidate.9_1.2.3-4.5.pre_stable_force.json
@@ -1,568 +1,21 @@
[
{
"cmd": [],
- "name": "checkout flutter release branch"
- },
- {
- "cmd": [],
- "name": "checkout flutter release branch.Checkout flutter/flutter",
+ "name": "RECIPE CRASH (Uncaught exception)",
"~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
+ "@@@STEP_EXCEPTION@@@",
+ "The recipe has crashed at point 'Uncaught exception'!",
+ "",
+ "Traceback (most recent call last):",
+ " File \"RECIPE_REPO[flutter]/recipes/release/release_publish.py\", line 65, in RunSteps",
+ " assert isValidTag(tag, release_channel)",
+ "AssertionError()"
]
},
{
- "cmd": [
- "python3",
- "-u",
- "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py",
- "--path",
- "[START_DIR]/flutter",
- "--url",
- "https://github.com/flutter/flutter"
- ],
- "name": "checkout flutter release branch.Checkout flutter/flutter.git setup",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "fetch",
- "origin",
- "flutter-2.8-candidate.9",
- "--recurse-submodules",
- "--progress",
- "--tags"
- ],
- "cwd": "[START_DIR]/flutter",
- "env": {
- "PATH": "RECIPE_REPO[depot_tools]:<PATH>"
+ "failure": {
+ "humanReason": "Uncaught Exception: AssertionError()"
},
- "infra_step": true,
- "name": "checkout flutter release branch.Checkout flutter/flutter.git fetch",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "checkout",
- "-f",
- "FETCH_HEAD"
- ],
- "cwd": "[START_DIR]/flutter",
- "infra_step": true,
- "name": "checkout flutter release branch.Checkout flutter/flutter.git checkout",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "rev-parse",
- "HEAD"
- ],
- "cwd": "[START_DIR]/flutter",
- "infra_step": true,
- "name": "checkout flutter release branch.Checkout flutter/flutter.read revision",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@",
- "@@@SET_BUILD_PROPERTY@got_revision@\"deadbeef\"@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "clean",
- "-f",
- "-d",
- "-x"
- ],
- "cwd": "[START_DIR]/flutter",
- "infra_step": true,
- "name": "checkout flutter release branch.Checkout flutter/flutter.git clean",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "submodule",
- "sync"
- ],
- "cwd": "[START_DIR]/flutter",
- "infra_step": true,
- "name": "checkout flutter release branch.Checkout flutter/flutter.submodule sync",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "submodule",
- "update",
- "--init",
- "--recursive"
- ],
- "cwd": "[START_DIR]/flutter",
- "infra_step": true,
- "name": "checkout flutter release branch.Checkout flutter/flutter.submodule update",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [],
- "name": "checkout engine release branch"
- },
- {
- "cmd": [],
- "name": "checkout engine release branch.Checkout flutter/engine",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "python3",
- "-u",
- "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py",
- "--path",
- "[START_DIR]/engine",
- "--url",
- "https://github.com/flutter/engine"
- ],
- "name": "checkout engine release branch.Checkout flutter/engine.git setup",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "fetch",
- "origin",
- "flutter-2.8-candidate.9",
- "--recurse-submodules",
- "--progress",
- "--tags"
- ],
- "cwd": "[START_DIR]/engine",
- "env": {
- "PATH": "RECIPE_REPO[depot_tools]:<PATH>"
- },
- "infra_step": true,
- "name": "checkout engine release branch.Checkout flutter/engine.git fetch",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "checkout",
- "-f",
- "FETCH_HEAD"
- ],
- "cwd": "[START_DIR]/engine",
- "infra_step": true,
- "name": "checkout engine release branch.Checkout flutter/engine.git checkout",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "rev-parse",
- "HEAD"
- ],
- "cwd": "[START_DIR]/engine",
- "infra_step": true,
- "name": "checkout engine release branch.Checkout flutter/engine.read revision",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@",
- "@@@SET_BUILD_PROPERTY@got_revision@\"deadbeef\"@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "clean",
- "-f",
- "-d",
- "-x"
- ],
- "cwd": "[START_DIR]/engine",
- "infra_step": true,
- "name": "checkout engine release branch.Checkout flutter/engine.git clean",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "submodule",
- "sync"
- ],
- "cwd": "[START_DIR]/engine",
- "infra_step": true,
- "name": "checkout engine release branch.Checkout flutter/engine.submodule sync",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "submodule",
- "update",
- "--init",
- "--recursive"
- ],
- "cwd": "[START_DIR]/engine",
- "infra_step": true,
- "name": "checkout engine release branch.Checkout flutter/engine.submodule update",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "rev-parse",
- "HEAD"
- ],
- "cwd": "[START_DIR]/flutter",
- "infra_step": true,
- "name": "git rev-parse"
- },
- {
- "cmd": [
- "chmod",
- "755",
- "RECIPE[flutter::release/release_publish].resources/push_release.sh"
- ],
- "infra_step": true,
- "name": "Set execute permission"
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[START_DIR]/cloudkms",
- "-ensure-file",
- "infra/tools/luci/cloudkms/${platform} latest",
- "-max-threads",
- "0",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "cwd": "[START_DIR]/flutter",
- "env": {
- "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
- "GIT_BRANCH": "flutter-2.8-candidate.9",
- "LUCI_BRANCH": "",
- "LUCI_CI": "True",
- "LUCI_PR": "",
- "OS": "linux",
- "PUB_CACHE": "[START_DIR]/.pub-cache",
- "REVISION": "12345abcde12345abcde12345abcde12345abcde",
- "SDK_CHECKOUT_PATH": "[START_DIR]/flutter"
- },
- "env_prefixes": {
- "PATH": [
- "[START_DIR]/flutter/bin",
- "[START_DIR]/flutter/bin/cache/dart-sdk/bin"
- ]
- },
- "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-latest----------\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/cloudkms/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": [
- "python3",
- "-u",
- "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
- "--",
- "RECIPE_REPO[depot_tools]/gsutil.py",
- "----",
- "cp",
- "gs://flutter_configs/flutter-release-github-token.encrypted",
- "[CLEANUP]/flutter-release-github-token.encrypted"
- ],
- "cwd": "[START_DIR]/flutter",
- "env": {
- "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
- "GIT_BRANCH": "flutter-2.8-candidate.9",
- "LUCI_BRANCH": "",
- "LUCI_CI": "True",
- "LUCI_PR": "",
- "OS": "linux",
- "PUB_CACHE": "[START_DIR]/.pub-cache",
- "REVISION": "12345abcde12345abcde12345abcde12345abcde",
- "SDK_CHECKOUT_PATH": "[START_DIR]/flutter"
- },
- "env_prefixes": {
- "PATH": [
- "[START_DIR]/flutter/bin",
- "[START_DIR]/flutter/bin/cache/dart-sdk/bin"
- ]
- },
- "infra_step": true,
- "name": "gsutil download"
- },
- {
- "cmd": [
- "[START_DIR]/cloudkms/cloudkms",
- "decrypt",
- "-input",
- "[CLEANUP]/flutter-release-github-token.encrypted",
- "-output",
- "[CLEANUP]/token.txt",
- "projects/flutter-infra-staging/locations/global/keyRings/luci/cryptoKeys/flutter-infra"
- ],
- "cwd": "[START_DIR]/flutter",
- "env": {
- "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
- "GIT_BRANCH": "flutter-2.8-candidate.9",
- "LUCI_BRANCH": "",
- "LUCI_CI": "True",
- "LUCI_PR": "",
- "OS": "linux",
- "PUB_CACHE": "[START_DIR]/.pub-cache",
- "REVISION": "12345abcde12345abcde12345abcde12345abcde",
- "SDK_CHECKOUT_PATH": "[START_DIR]/flutter"
- },
- "env_prefixes": {
- "PATH": [
- "[START_DIR]/flutter/bin",
- "[START_DIR]/flutter/bin/cache/dart-sdk/bin"
- ]
- },
- "name": "cloudkms get key"
- },
- {
- "cmd": [
- "RECIPE[flutter::release/release_publish].resources/push_release.sh"
- ],
- "cwd": "[START_DIR]/flutter",
- "env": {
- "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
- "FORCE_FLAG": "--force",
- "GITHUB_USER": "fluttergithubbot",
- "GIT_BRANCH": "flutter-2.8-candidate.9",
- "LUCI_BRANCH": "",
- "LUCI_CI": "True",
- "LUCI_PR": "",
- "OS": "linux",
- "PUB_CACHE": "[START_DIR]/.pub-cache",
- "RELEASE_CHANNEL": "stable",
- "REL_HASH": "deadbeef",
- "REPO": "flutter",
- "REVISION": "12345abcde12345abcde12345abcde12345abcde",
- "SDK_CHECKOUT_PATH": "[START_DIR]/flutter",
- "TAG": "1.2.3-4.5.pre",
- "TOKEN_PATH": "[CLEANUP]/token.txt"
- },
- "env_prefixes": {
- "PATH": [
- "[START_DIR]/flutter/bin",
- "[START_DIR]/flutter/bin/cache/dart-sdk/bin",
- "[START_DIR]/flutter/bin",
- "[START_DIR]/flutter/bin/cache/dart-sdk/bin"
- ]
- },
- "name": "Tag and push release on flutter/flutter"
- },
- {
- "cmd": [
- "vpython3",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[START_DIR]/flutter/bin/internal/engine.version",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "read engine hash",
- "~followup_annotations": [
- "@@@STEP_LOG_END@engine.version@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[START_DIR]/cloudkms",
- "-ensure-file",
- "infra/tools/luci/cloudkms/${platform} latest",
- "-max-threads",
- "0",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "cwd": "[START_DIR]/engine",
- "env": {
- "ANDROID_HOME": "[START_DIR]/engine/src/third_party/android_tools/sdk",
- "ANDROID_SDK_HOME": "[CLEANUP]/tmp_tmp_1",
- "ANDROID_USER_HOME": "[CLEANUP]/tmp_tmp_1/.android",
- "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
- "ENGINE_CHECKOUT_PATH": "[START_DIR]/engine",
- "GIT_BRANCH": "flutter-2.8-candidate.9",
- "LUCI_BRANCH": "",
- "LUCI_CI": "True",
- "LUCI_PR": "",
- "LUCI_WORKDIR": "[START_DIR]",
- "OS": "linux",
- "REVISION": ""
- },
- "env_prefixes": {
- "PATH": [
- "[START_DIR]/engine/src/third_party/dart/tools/sdks/dart-sdk/bin"
- ]
- },
- "name": "ensure_installed (2)",
- "~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-latest----------\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/cloudkms/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": [
- "python3",
- "-u",
- "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
- "--",
- "RECIPE_REPO[depot_tools]/gsutil.py",
- "----",
- "cp",
- "gs://flutter_configs/flutter-release-github-token.encrypted",
- "[CLEANUP]/flutter-release-github-token.encrypted"
- ],
- "cwd": "[START_DIR]/engine",
- "env": {
- "ANDROID_HOME": "[START_DIR]/engine/src/third_party/android_tools/sdk",
- "ANDROID_SDK_HOME": "[CLEANUP]/tmp_tmp_1",
- "ANDROID_USER_HOME": "[CLEANUP]/tmp_tmp_1/.android",
- "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
- "ENGINE_CHECKOUT_PATH": "[START_DIR]/engine",
- "GIT_BRANCH": "flutter-2.8-candidate.9",
- "LUCI_BRANCH": "",
- "LUCI_CI": "True",
- "LUCI_PR": "",
- "LUCI_WORKDIR": "[START_DIR]",
- "OS": "linux",
- "REVISION": ""
- },
- "env_prefixes": {
- "PATH": [
- "[START_DIR]/engine/src/third_party/dart/tools/sdks/dart-sdk/bin"
- ]
- },
- "infra_step": true,
- "name": "gsutil download (2)"
- },
- {
- "cmd": [
- "[START_DIR]/cloudkms/cloudkms",
- "decrypt",
- "-input",
- "[CLEANUP]/flutter-release-github-token.encrypted",
- "-output",
- "[CLEANUP]/token.txt",
- "projects/flutter-infra-staging/locations/global/keyRings/luci/cryptoKeys/flutter-infra"
- ],
- "cwd": "[START_DIR]/engine",
- "env": {
- "ANDROID_HOME": "[START_DIR]/engine/src/third_party/android_tools/sdk",
- "ANDROID_SDK_HOME": "[CLEANUP]/tmp_tmp_1",
- "ANDROID_USER_HOME": "[CLEANUP]/tmp_tmp_1/.android",
- "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
- "ENGINE_CHECKOUT_PATH": "[START_DIR]/engine",
- "GIT_BRANCH": "flutter-2.8-candidate.9",
- "LUCI_BRANCH": "",
- "LUCI_CI": "True",
- "LUCI_PR": "",
- "LUCI_WORKDIR": "[START_DIR]",
- "OS": "linux",
- "REVISION": ""
- },
- "env_prefixes": {
- "PATH": [
- "[START_DIR]/engine/src/third_party/dart/tools/sdks/dart-sdk/bin"
- ]
- },
- "name": "cloudkms get key (2)"
- },
- {
- "cmd": [
- "RECIPE[flutter::release/release_publish].resources/push_release.sh"
- ],
- "cwd": "[START_DIR]/engine",
- "env": {
- "ANDROID_HOME": "[START_DIR]/engine/src/third_party/android_tools/sdk",
- "ANDROID_SDK_HOME": "[CLEANUP]/tmp_tmp_1",
- "ANDROID_USER_HOME": "[CLEANUP]/tmp_tmp_1/.android",
- "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
- "ENGINE_CHECKOUT_PATH": "[START_DIR]/engine",
- "FORCE_FLAG": "--force",
- "GITHUB_USER": "fluttergithubbot",
- "GIT_BRANCH": "flutter-2.8-candidate.9",
- "LUCI_BRANCH": "",
- "LUCI_CI": "True",
- "LUCI_PR": "",
- "LUCI_WORKDIR": "[START_DIR]",
- "OS": "linux",
- "RELEASE_CHANNEL": "stable",
- "REL_HASH": "",
- "REPO": "engine",
- "REVISION": "",
- "TAG": "1.2.3-4.5.pre",
- "TOKEN_PATH": "[CLEANUP]/token.txt"
- },
- "env_prefixes": {
- "PATH": [
- "[START_DIR]/engine/src/third_party/dart/tools/sdks/dart-sdk/bin",
- "[START_DIR]/engine/src/third_party/dart/tools/sdks/dart-sdk/bin"
- ]
- },
- "name": "Tag and push release on flutter/engine"
- },
- {
"name": "$result"
}
]
\ No newline at end of file
diff --git a/recipes/release/release_publish.expected/flutter-2.8-candidate.9_1.2.3_betaFalse.json b/recipes/release/release_publish.expected/flutter-2.8-candidate.9_1.2.3_betaFalse.json
index 168bd09..66bf56b 100644
--- a/recipes/release/release_publish.expected/flutter-2.8-candidate.9_1.2.3_betaFalse.json
+++ b/recipes/release/release_publish.expected/flutter-2.8-candidate.9_1.2.3_betaFalse.json
@@ -1,568 +1,21 @@
[
{
"cmd": [],
- "name": "checkout flutter release branch"
- },
- {
- "cmd": [],
- "name": "checkout flutter release branch.Checkout flutter/flutter",
+ "name": "RECIPE CRASH (Uncaught exception)",
"~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
+ "@@@STEP_EXCEPTION@@@",
+ "The recipe has crashed at point 'Uncaught exception'!",
+ "",
+ "Traceback (most recent call last):",
+ " File \"RECIPE_REPO[flutter]/recipes/release/release_publish.py\", line 65, in RunSteps",
+ " assert isValidTag(tag, release_channel)",
+ "AssertionError()"
]
},
{
- "cmd": [
- "python3",
- "-u",
- "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py",
- "--path",
- "[START_DIR]/flutter",
- "--url",
- "https://github.com/flutter/flutter"
- ],
- "name": "checkout flutter release branch.Checkout flutter/flutter.git setup",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "fetch",
- "origin",
- "flutter-2.8-candidate.9",
- "--recurse-submodules",
- "--progress",
- "--tags"
- ],
- "cwd": "[START_DIR]/flutter",
- "env": {
- "PATH": "RECIPE_REPO[depot_tools]:<PATH>"
+ "failure": {
+ "humanReason": "Uncaught Exception: AssertionError()"
},
- "infra_step": true,
- "name": "checkout flutter release branch.Checkout flutter/flutter.git fetch",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "checkout",
- "-f",
- "FETCH_HEAD"
- ],
- "cwd": "[START_DIR]/flutter",
- "infra_step": true,
- "name": "checkout flutter release branch.Checkout flutter/flutter.git checkout",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "rev-parse",
- "HEAD"
- ],
- "cwd": "[START_DIR]/flutter",
- "infra_step": true,
- "name": "checkout flutter release branch.Checkout flutter/flutter.read revision",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@",
- "@@@SET_BUILD_PROPERTY@got_revision@\"deadbeef\"@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "clean",
- "-f",
- "-d",
- "-x"
- ],
- "cwd": "[START_DIR]/flutter",
- "infra_step": true,
- "name": "checkout flutter release branch.Checkout flutter/flutter.git clean",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "submodule",
- "sync"
- ],
- "cwd": "[START_DIR]/flutter",
- "infra_step": true,
- "name": "checkout flutter release branch.Checkout flutter/flutter.submodule sync",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "submodule",
- "update",
- "--init",
- "--recursive"
- ],
- "cwd": "[START_DIR]/flutter",
- "infra_step": true,
- "name": "checkout flutter release branch.Checkout flutter/flutter.submodule update",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [],
- "name": "checkout engine release branch"
- },
- {
- "cmd": [],
- "name": "checkout engine release branch.Checkout flutter/engine",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "python3",
- "-u",
- "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py",
- "--path",
- "[START_DIR]/engine",
- "--url",
- "https://github.com/flutter/engine"
- ],
- "name": "checkout engine release branch.Checkout flutter/engine.git setup",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "fetch",
- "origin",
- "flutter-2.8-candidate.9",
- "--recurse-submodules",
- "--progress",
- "--tags"
- ],
- "cwd": "[START_DIR]/engine",
- "env": {
- "PATH": "RECIPE_REPO[depot_tools]:<PATH>"
- },
- "infra_step": true,
- "name": "checkout engine release branch.Checkout flutter/engine.git fetch",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "checkout",
- "-f",
- "FETCH_HEAD"
- ],
- "cwd": "[START_DIR]/engine",
- "infra_step": true,
- "name": "checkout engine release branch.Checkout flutter/engine.git checkout",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "rev-parse",
- "HEAD"
- ],
- "cwd": "[START_DIR]/engine",
- "infra_step": true,
- "name": "checkout engine release branch.Checkout flutter/engine.read revision",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@",
- "@@@SET_BUILD_PROPERTY@got_revision@\"deadbeef\"@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "clean",
- "-f",
- "-d",
- "-x"
- ],
- "cwd": "[START_DIR]/engine",
- "infra_step": true,
- "name": "checkout engine release branch.Checkout flutter/engine.git clean",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "submodule",
- "sync"
- ],
- "cwd": "[START_DIR]/engine",
- "infra_step": true,
- "name": "checkout engine release branch.Checkout flutter/engine.submodule sync",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "submodule",
- "update",
- "--init",
- "--recursive"
- ],
- "cwd": "[START_DIR]/engine",
- "infra_step": true,
- "name": "checkout engine release branch.Checkout flutter/engine.submodule update",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "rev-parse",
- "HEAD"
- ],
- "cwd": "[START_DIR]/flutter",
- "infra_step": true,
- "name": "git rev-parse"
- },
- {
- "cmd": [
- "chmod",
- "755",
- "RECIPE[flutter::release/release_publish].resources/push_release.sh"
- ],
- "infra_step": true,
- "name": "Set execute permission"
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[START_DIR]/cloudkms",
- "-ensure-file",
- "infra/tools/luci/cloudkms/${platform} latest",
- "-max-threads",
- "0",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "cwd": "[START_DIR]/flutter",
- "env": {
- "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
- "GIT_BRANCH": "flutter-2.8-candidate.9",
- "LUCI_BRANCH": "",
- "LUCI_CI": "True",
- "LUCI_PR": "",
- "OS": "linux",
- "PUB_CACHE": "[START_DIR]/.pub-cache",
- "REVISION": "12345abcde12345abcde12345abcde12345abcde",
- "SDK_CHECKOUT_PATH": "[START_DIR]/flutter"
- },
- "env_prefixes": {
- "PATH": [
- "[START_DIR]/flutter/bin",
- "[START_DIR]/flutter/bin/cache/dart-sdk/bin"
- ]
- },
- "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-latest----------\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/cloudkms/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": [
- "python3",
- "-u",
- "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
- "--",
- "RECIPE_REPO[depot_tools]/gsutil.py",
- "----",
- "cp",
- "gs://flutter_configs/flutter-release-github-token.encrypted",
- "[CLEANUP]/flutter-release-github-token.encrypted"
- ],
- "cwd": "[START_DIR]/flutter",
- "env": {
- "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
- "GIT_BRANCH": "flutter-2.8-candidate.9",
- "LUCI_BRANCH": "",
- "LUCI_CI": "True",
- "LUCI_PR": "",
- "OS": "linux",
- "PUB_CACHE": "[START_DIR]/.pub-cache",
- "REVISION": "12345abcde12345abcde12345abcde12345abcde",
- "SDK_CHECKOUT_PATH": "[START_DIR]/flutter"
- },
- "env_prefixes": {
- "PATH": [
- "[START_DIR]/flutter/bin",
- "[START_DIR]/flutter/bin/cache/dart-sdk/bin"
- ]
- },
- "infra_step": true,
- "name": "gsutil download"
- },
- {
- "cmd": [
- "[START_DIR]/cloudkms/cloudkms",
- "decrypt",
- "-input",
- "[CLEANUP]/flutter-release-github-token.encrypted",
- "-output",
- "[CLEANUP]/token.txt",
- "projects/flutter-infra-staging/locations/global/keyRings/luci/cryptoKeys/flutter-infra"
- ],
- "cwd": "[START_DIR]/flutter",
- "env": {
- "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
- "GIT_BRANCH": "flutter-2.8-candidate.9",
- "LUCI_BRANCH": "",
- "LUCI_CI": "True",
- "LUCI_PR": "",
- "OS": "linux",
- "PUB_CACHE": "[START_DIR]/.pub-cache",
- "REVISION": "12345abcde12345abcde12345abcde12345abcde",
- "SDK_CHECKOUT_PATH": "[START_DIR]/flutter"
- },
- "env_prefixes": {
- "PATH": [
- "[START_DIR]/flutter/bin",
- "[START_DIR]/flutter/bin/cache/dart-sdk/bin"
- ]
- },
- "name": "cloudkms get key"
- },
- {
- "cmd": [
- "RECIPE[flutter::release/release_publish].resources/push_release.sh"
- ],
- "cwd": "[START_DIR]/flutter",
- "env": {
- "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
- "FORCE_FLAG": "--force",
- "GITHUB_USER": "fluttergithubbot",
- "GIT_BRANCH": "flutter-2.8-candidate.9",
- "LUCI_BRANCH": "",
- "LUCI_CI": "True",
- "LUCI_PR": "",
- "OS": "linux",
- "PUB_CACHE": "[START_DIR]/.pub-cache",
- "RELEASE_CHANNEL": "beta",
- "REL_HASH": "deadbeef",
- "REPO": "flutter",
- "REVISION": "12345abcde12345abcde12345abcde12345abcde",
- "SDK_CHECKOUT_PATH": "[START_DIR]/flutter",
- "TAG": "1.2.3",
- "TOKEN_PATH": "[CLEANUP]/token.txt"
- },
- "env_prefixes": {
- "PATH": [
- "[START_DIR]/flutter/bin",
- "[START_DIR]/flutter/bin/cache/dart-sdk/bin",
- "[START_DIR]/flutter/bin",
- "[START_DIR]/flutter/bin/cache/dart-sdk/bin"
- ]
- },
- "name": "Tag and push release on flutter/flutter"
- },
- {
- "cmd": [
- "vpython3",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[START_DIR]/flutter/bin/internal/engine.version",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "read engine hash",
- "~followup_annotations": [
- "@@@STEP_LOG_END@engine.version@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[START_DIR]/cloudkms",
- "-ensure-file",
- "infra/tools/luci/cloudkms/${platform} latest",
- "-max-threads",
- "0",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "cwd": "[START_DIR]/engine",
- "env": {
- "ANDROID_HOME": "[START_DIR]/engine/src/third_party/android_tools/sdk",
- "ANDROID_SDK_HOME": "[CLEANUP]/tmp_tmp_1",
- "ANDROID_USER_HOME": "[CLEANUP]/tmp_tmp_1/.android",
- "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
- "ENGINE_CHECKOUT_PATH": "[START_DIR]/engine",
- "GIT_BRANCH": "flutter-2.8-candidate.9",
- "LUCI_BRANCH": "",
- "LUCI_CI": "True",
- "LUCI_PR": "",
- "LUCI_WORKDIR": "[START_DIR]",
- "OS": "linux",
- "REVISION": ""
- },
- "env_prefixes": {
- "PATH": [
- "[START_DIR]/engine/src/third_party/dart/tools/sdks/dart-sdk/bin"
- ]
- },
- "name": "ensure_installed (2)",
- "~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-latest----------\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/cloudkms/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": [
- "python3",
- "-u",
- "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
- "--",
- "RECIPE_REPO[depot_tools]/gsutil.py",
- "----",
- "cp",
- "gs://flutter_configs/flutter-release-github-token.encrypted",
- "[CLEANUP]/flutter-release-github-token.encrypted"
- ],
- "cwd": "[START_DIR]/engine",
- "env": {
- "ANDROID_HOME": "[START_DIR]/engine/src/third_party/android_tools/sdk",
- "ANDROID_SDK_HOME": "[CLEANUP]/tmp_tmp_1",
- "ANDROID_USER_HOME": "[CLEANUP]/tmp_tmp_1/.android",
- "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
- "ENGINE_CHECKOUT_PATH": "[START_DIR]/engine",
- "GIT_BRANCH": "flutter-2.8-candidate.9",
- "LUCI_BRANCH": "",
- "LUCI_CI": "True",
- "LUCI_PR": "",
- "LUCI_WORKDIR": "[START_DIR]",
- "OS": "linux",
- "REVISION": ""
- },
- "env_prefixes": {
- "PATH": [
- "[START_DIR]/engine/src/third_party/dart/tools/sdks/dart-sdk/bin"
- ]
- },
- "infra_step": true,
- "name": "gsutil download (2)"
- },
- {
- "cmd": [
- "[START_DIR]/cloudkms/cloudkms",
- "decrypt",
- "-input",
- "[CLEANUP]/flutter-release-github-token.encrypted",
- "-output",
- "[CLEANUP]/token.txt",
- "projects/flutter-infra-staging/locations/global/keyRings/luci/cryptoKeys/flutter-infra"
- ],
- "cwd": "[START_DIR]/engine",
- "env": {
- "ANDROID_HOME": "[START_DIR]/engine/src/third_party/android_tools/sdk",
- "ANDROID_SDK_HOME": "[CLEANUP]/tmp_tmp_1",
- "ANDROID_USER_HOME": "[CLEANUP]/tmp_tmp_1/.android",
- "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
- "ENGINE_CHECKOUT_PATH": "[START_DIR]/engine",
- "GIT_BRANCH": "flutter-2.8-candidate.9",
- "LUCI_BRANCH": "",
- "LUCI_CI": "True",
- "LUCI_PR": "",
- "LUCI_WORKDIR": "[START_DIR]",
- "OS": "linux",
- "REVISION": ""
- },
- "env_prefixes": {
- "PATH": [
- "[START_DIR]/engine/src/third_party/dart/tools/sdks/dart-sdk/bin"
- ]
- },
- "name": "cloudkms get key (2)"
- },
- {
- "cmd": [
- "RECIPE[flutter::release/release_publish].resources/push_release.sh"
- ],
- "cwd": "[START_DIR]/engine",
- "env": {
- "ANDROID_HOME": "[START_DIR]/engine/src/third_party/android_tools/sdk",
- "ANDROID_SDK_HOME": "[CLEANUP]/tmp_tmp_1",
- "ANDROID_USER_HOME": "[CLEANUP]/tmp_tmp_1/.android",
- "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
- "ENGINE_CHECKOUT_PATH": "[START_DIR]/engine",
- "FORCE_FLAG": "--force",
- "GITHUB_USER": "fluttergithubbot",
- "GIT_BRANCH": "flutter-2.8-candidate.9",
- "LUCI_BRANCH": "",
- "LUCI_CI": "True",
- "LUCI_PR": "",
- "LUCI_WORKDIR": "[START_DIR]",
- "OS": "linux",
- "RELEASE_CHANNEL": "beta",
- "REL_HASH": "",
- "REPO": "engine",
- "REVISION": "",
- "TAG": "1.2.3",
- "TOKEN_PATH": "[CLEANUP]/token.txt"
- },
- "env_prefixes": {
- "PATH": [
- "[START_DIR]/engine/src/third_party/dart/tools/sdks/dart-sdk/bin",
- "[START_DIR]/engine/src/third_party/dart/tools/sdks/dart-sdk/bin"
- ]
- },
- "name": "Tag and push release on flutter/engine"
- },
- {
"name": "$result"
}
]
\ No newline at end of file
diff --git a/recipes/release/release_publish.expected/flutter-2.8-candidate.9_1.2.3_beta_force.json b/recipes/release/release_publish.expected/flutter-2.8-candidate.9_1.2.3_beta_force.json
index 168bd09..66bf56b 100644
--- a/recipes/release/release_publish.expected/flutter-2.8-candidate.9_1.2.3_beta_force.json
+++ b/recipes/release/release_publish.expected/flutter-2.8-candidate.9_1.2.3_beta_force.json
@@ -1,568 +1,21 @@
[
{
"cmd": [],
- "name": "checkout flutter release branch"
- },
- {
- "cmd": [],
- "name": "checkout flutter release branch.Checkout flutter/flutter",
+ "name": "RECIPE CRASH (Uncaught exception)",
"~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
+ "@@@STEP_EXCEPTION@@@",
+ "The recipe has crashed at point 'Uncaught exception'!",
+ "",
+ "Traceback (most recent call last):",
+ " File \"RECIPE_REPO[flutter]/recipes/release/release_publish.py\", line 65, in RunSteps",
+ " assert isValidTag(tag, release_channel)",
+ "AssertionError()"
]
},
{
- "cmd": [
- "python3",
- "-u",
- "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py",
- "--path",
- "[START_DIR]/flutter",
- "--url",
- "https://github.com/flutter/flutter"
- ],
- "name": "checkout flutter release branch.Checkout flutter/flutter.git setup",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "fetch",
- "origin",
- "flutter-2.8-candidate.9",
- "--recurse-submodules",
- "--progress",
- "--tags"
- ],
- "cwd": "[START_DIR]/flutter",
- "env": {
- "PATH": "RECIPE_REPO[depot_tools]:<PATH>"
+ "failure": {
+ "humanReason": "Uncaught Exception: AssertionError()"
},
- "infra_step": true,
- "name": "checkout flutter release branch.Checkout flutter/flutter.git fetch",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "checkout",
- "-f",
- "FETCH_HEAD"
- ],
- "cwd": "[START_DIR]/flutter",
- "infra_step": true,
- "name": "checkout flutter release branch.Checkout flutter/flutter.git checkout",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "rev-parse",
- "HEAD"
- ],
- "cwd": "[START_DIR]/flutter",
- "infra_step": true,
- "name": "checkout flutter release branch.Checkout flutter/flutter.read revision",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@",
- "@@@SET_BUILD_PROPERTY@got_revision@\"deadbeef\"@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "clean",
- "-f",
- "-d",
- "-x"
- ],
- "cwd": "[START_DIR]/flutter",
- "infra_step": true,
- "name": "checkout flutter release branch.Checkout flutter/flutter.git clean",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "submodule",
- "sync"
- ],
- "cwd": "[START_DIR]/flutter",
- "infra_step": true,
- "name": "checkout flutter release branch.Checkout flutter/flutter.submodule sync",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "submodule",
- "update",
- "--init",
- "--recursive"
- ],
- "cwd": "[START_DIR]/flutter",
- "infra_step": true,
- "name": "checkout flutter release branch.Checkout flutter/flutter.submodule update",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [],
- "name": "checkout engine release branch"
- },
- {
- "cmd": [],
- "name": "checkout engine release branch.Checkout flutter/engine",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "python3",
- "-u",
- "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py",
- "--path",
- "[START_DIR]/engine",
- "--url",
- "https://github.com/flutter/engine"
- ],
- "name": "checkout engine release branch.Checkout flutter/engine.git setup",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "fetch",
- "origin",
- "flutter-2.8-candidate.9",
- "--recurse-submodules",
- "--progress",
- "--tags"
- ],
- "cwd": "[START_DIR]/engine",
- "env": {
- "PATH": "RECIPE_REPO[depot_tools]:<PATH>"
- },
- "infra_step": true,
- "name": "checkout engine release branch.Checkout flutter/engine.git fetch",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "checkout",
- "-f",
- "FETCH_HEAD"
- ],
- "cwd": "[START_DIR]/engine",
- "infra_step": true,
- "name": "checkout engine release branch.Checkout flutter/engine.git checkout",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "rev-parse",
- "HEAD"
- ],
- "cwd": "[START_DIR]/engine",
- "infra_step": true,
- "name": "checkout engine release branch.Checkout flutter/engine.read revision",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@",
- "@@@SET_BUILD_PROPERTY@got_revision@\"deadbeef\"@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "clean",
- "-f",
- "-d",
- "-x"
- ],
- "cwd": "[START_DIR]/engine",
- "infra_step": true,
- "name": "checkout engine release branch.Checkout flutter/engine.git clean",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "submodule",
- "sync"
- ],
- "cwd": "[START_DIR]/engine",
- "infra_step": true,
- "name": "checkout engine release branch.Checkout flutter/engine.submodule sync",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "submodule",
- "update",
- "--init",
- "--recursive"
- ],
- "cwd": "[START_DIR]/engine",
- "infra_step": true,
- "name": "checkout engine release branch.Checkout flutter/engine.submodule update",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "git",
- "rev-parse",
- "HEAD"
- ],
- "cwd": "[START_DIR]/flutter",
- "infra_step": true,
- "name": "git rev-parse"
- },
- {
- "cmd": [
- "chmod",
- "755",
- "RECIPE[flutter::release/release_publish].resources/push_release.sh"
- ],
- "infra_step": true,
- "name": "Set execute permission"
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[START_DIR]/cloudkms",
- "-ensure-file",
- "infra/tools/luci/cloudkms/${platform} latest",
- "-max-threads",
- "0",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "cwd": "[START_DIR]/flutter",
- "env": {
- "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
- "GIT_BRANCH": "flutter-2.8-candidate.9",
- "LUCI_BRANCH": "",
- "LUCI_CI": "True",
- "LUCI_PR": "",
- "OS": "linux",
- "PUB_CACHE": "[START_DIR]/.pub-cache",
- "REVISION": "12345abcde12345abcde12345abcde12345abcde",
- "SDK_CHECKOUT_PATH": "[START_DIR]/flutter"
- },
- "env_prefixes": {
- "PATH": [
- "[START_DIR]/flutter/bin",
- "[START_DIR]/flutter/bin/cache/dart-sdk/bin"
- ]
- },
- "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-latest----------\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/cloudkms/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": [
- "python3",
- "-u",
- "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
- "--",
- "RECIPE_REPO[depot_tools]/gsutil.py",
- "----",
- "cp",
- "gs://flutter_configs/flutter-release-github-token.encrypted",
- "[CLEANUP]/flutter-release-github-token.encrypted"
- ],
- "cwd": "[START_DIR]/flutter",
- "env": {
- "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
- "GIT_BRANCH": "flutter-2.8-candidate.9",
- "LUCI_BRANCH": "",
- "LUCI_CI": "True",
- "LUCI_PR": "",
- "OS": "linux",
- "PUB_CACHE": "[START_DIR]/.pub-cache",
- "REVISION": "12345abcde12345abcde12345abcde12345abcde",
- "SDK_CHECKOUT_PATH": "[START_DIR]/flutter"
- },
- "env_prefixes": {
- "PATH": [
- "[START_DIR]/flutter/bin",
- "[START_DIR]/flutter/bin/cache/dart-sdk/bin"
- ]
- },
- "infra_step": true,
- "name": "gsutil download"
- },
- {
- "cmd": [
- "[START_DIR]/cloudkms/cloudkms",
- "decrypt",
- "-input",
- "[CLEANUP]/flutter-release-github-token.encrypted",
- "-output",
- "[CLEANUP]/token.txt",
- "projects/flutter-infra-staging/locations/global/keyRings/luci/cryptoKeys/flutter-infra"
- ],
- "cwd": "[START_DIR]/flutter",
- "env": {
- "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
- "GIT_BRANCH": "flutter-2.8-candidate.9",
- "LUCI_BRANCH": "",
- "LUCI_CI": "True",
- "LUCI_PR": "",
- "OS": "linux",
- "PUB_CACHE": "[START_DIR]/.pub-cache",
- "REVISION": "12345abcde12345abcde12345abcde12345abcde",
- "SDK_CHECKOUT_PATH": "[START_DIR]/flutter"
- },
- "env_prefixes": {
- "PATH": [
- "[START_DIR]/flutter/bin",
- "[START_DIR]/flutter/bin/cache/dart-sdk/bin"
- ]
- },
- "name": "cloudkms get key"
- },
- {
- "cmd": [
- "RECIPE[flutter::release/release_publish].resources/push_release.sh"
- ],
- "cwd": "[START_DIR]/flutter",
- "env": {
- "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
- "FORCE_FLAG": "--force",
- "GITHUB_USER": "fluttergithubbot",
- "GIT_BRANCH": "flutter-2.8-candidate.9",
- "LUCI_BRANCH": "",
- "LUCI_CI": "True",
- "LUCI_PR": "",
- "OS": "linux",
- "PUB_CACHE": "[START_DIR]/.pub-cache",
- "RELEASE_CHANNEL": "beta",
- "REL_HASH": "deadbeef",
- "REPO": "flutter",
- "REVISION": "12345abcde12345abcde12345abcde12345abcde",
- "SDK_CHECKOUT_PATH": "[START_DIR]/flutter",
- "TAG": "1.2.3",
- "TOKEN_PATH": "[CLEANUP]/token.txt"
- },
- "env_prefixes": {
- "PATH": [
- "[START_DIR]/flutter/bin",
- "[START_DIR]/flutter/bin/cache/dart-sdk/bin",
- "[START_DIR]/flutter/bin",
- "[START_DIR]/flutter/bin/cache/dart-sdk/bin"
- ]
- },
- "name": "Tag and push release on flutter/flutter"
- },
- {
- "cmd": [
- "vpython3",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[START_DIR]/flutter/bin/internal/engine.version",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "read engine hash",
- "~followup_annotations": [
- "@@@STEP_LOG_END@engine.version@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[START_DIR]/cloudkms",
- "-ensure-file",
- "infra/tools/luci/cloudkms/${platform} latest",
- "-max-threads",
- "0",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "cwd": "[START_DIR]/engine",
- "env": {
- "ANDROID_HOME": "[START_DIR]/engine/src/third_party/android_tools/sdk",
- "ANDROID_SDK_HOME": "[CLEANUP]/tmp_tmp_1",
- "ANDROID_USER_HOME": "[CLEANUP]/tmp_tmp_1/.android",
- "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
- "ENGINE_CHECKOUT_PATH": "[START_DIR]/engine",
- "GIT_BRANCH": "flutter-2.8-candidate.9",
- "LUCI_BRANCH": "",
- "LUCI_CI": "True",
- "LUCI_PR": "",
- "LUCI_WORKDIR": "[START_DIR]",
- "OS": "linux",
- "REVISION": ""
- },
- "env_prefixes": {
- "PATH": [
- "[START_DIR]/engine/src/third_party/dart/tools/sdks/dart-sdk/bin"
- ]
- },
- "name": "ensure_installed (2)",
- "~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-latest----------\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/cloudkms/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": [
- "python3",
- "-u",
- "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
- "--",
- "RECIPE_REPO[depot_tools]/gsutil.py",
- "----",
- "cp",
- "gs://flutter_configs/flutter-release-github-token.encrypted",
- "[CLEANUP]/flutter-release-github-token.encrypted"
- ],
- "cwd": "[START_DIR]/engine",
- "env": {
- "ANDROID_HOME": "[START_DIR]/engine/src/third_party/android_tools/sdk",
- "ANDROID_SDK_HOME": "[CLEANUP]/tmp_tmp_1",
- "ANDROID_USER_HOME": "[CLEANUP]/tmp_tmp_1/.android",
- "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
- "ENGINE_CHECKOUT_PATH": "[START_DIR]/engine",
- "GIT_BRANCH": "flutter-2.8-candidate.9",
- "LUCI_BRANCH": "",
- "LUCI_CI": "True",
- "LUCI_PR": "",
- "LUCI_WORKDIR": "[START_DIR]",
- "OS": "linux",
- "REVISION": ""
- },
- "env_prefixes": {
- "PATH": [
- "[START_DIR]/engine/src/third_party/dart/tools/sdks/dart-sdk/bin"
- ]
- },
- "infra_step": true,
- "name": "gsutil download (2)"
- },
- {
- "cmd": [
- "[START_DIR]/cloudkms/cloudkms",
- "decrypt",
- "-input",
- "[CLEANUP]/flutter-release-github-token.encrypted",
- "-output",
- "[CLEANUP]/token.txt",
- "projects/flutter-infra-staging/locations/global/keyRings/luci/cryptoKeys/flutter-infra"
- ],
- "cwd": "[START_DIR]/engine",
- "env": {
- "ANDROID_HOME": "[START_DIR]/engine/src/third_party/android_tools/sdk",
- "ANDROID_SDK_HOME": "[CLEANUP]/tmp_tmp_1",
- "ANDROID_USER_HOME": "[CLEANUP]/tmp_tmp_1/.android",
- "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
- "ENGINE_CHECKOUT_PATH": "[START_DIR]/engine",
- "GIT_BRANCH": "flutter-2.8-candidate.9",
- "LUCI_BRANCH": "",
- "LUCI_CI": "True",
- "LUCI_PR": "",
- "LUCI_WORKDIR": "[START_DIR]",
- "OS": "linux",
- "REVISION": ""
- },
- "env_prefixes": {
- "PATH": [
- "[START_DIR]/engine/src/third_party/dart/tools/sdks/dart-sdk/bin"
- ]
- },
- "name": "cloudkms get key (2)"
- },
- {
- "cmd": [
- "RECIPE[flutter::release/release_publish].resources/push_release.sh"
- ],
- "cwd": "[START_DIR]/engine",
- "env": {
- "ANDROID_HOME": "[START_DIR]/engine/src/third_party/android_tools/sdk",
- "ANDROID_SDK_HOME": "[CLEANUP]/tmp_tmp_1",
- "ANDROID_USER_HOME": "[CLEANUP]/tmp_tmp_1/.android",
- "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
- "ENGINE_CHECKOUT_PATH": "[START_DIR]/engine",
- "FORCE_FLAG": "--force",
- "GITHUB_USER": "fluttergithubbot",
- "GIT_BRANCH": "flutter-2.8-candidate.9",
- "LUCI_BRANCH": "",
- "LUCI_CI": "True",
- "LUCI_PR": "",
- "LUCI_WORKDIR": "[START_DIR]",
- "OS": "linux",
- "RELEASE_CHANNEL": "beta",
- "REL_HASH": "",
- "REPO": "engine",
- "REVISION": "",
- "TAG": "1.2.3",
- "TOKEN_PATH": "[CLEANUP]/token.txt"
- },
- "env_prefixes": {
- "PATH": [
- "[START_DIR]/engine/src/third_party/dart/tools/sdks/dart-sdk/bin",
- "[START_DIR]/engine/src/third_party/dart/tools/sdks/dart-sdk/bin"
- ]
- },
- "name": "Tag and push release on flutter/engine"
- },
- {
"name": "$result"
}
]
\ No newline at end of file
diff --git a/recipes/release/release_publish.py b/recipes/release/release_publish.py
index b146a12..69ff254 100644
--- a/recipes/release/release_publish.py
+++ b/recipes/release/release_publish.py
@@ -23,11 +23,12 @@
stableTagRegex = r'^(\d+)\.(\d+)\.(\d+)$'
betaTagRegex = r'^(\d+)\.(\d+)\.(\d+)-(\d+)\.(\d+)\.pre$'
-
-def isValidTag(tag):
+def isValidTag(tag, release_channel):
stable = re.search(stableTagRegex, tag)
- development = re.search(betaTagRegex, tag)
- return stable or development
+ beta = re.search(betaTagRegex, tag)
+ if release_channel=='stable':
+ return stable
+ return beta
"""
@@ -61,7 +62,7 @@
engine_git_url = 'https://github.com/flutter/engine'
# Validate the given tag is correctly formatted for either stable or latest
- assert isValidTag(tag)
+ assert isValidTag(tag, release_channel)
# This recipe is only able to be triggered on linux, and the other platforms
# are not necessary
@@ -147,6 +148,19 @@
for tag in ('1.2.3-4.5.pre', '1.2.3'):
for release_channel in ('stable', 'beta'):
for force in ('True', 'False'):
+ if ((tag == '1.2.3-4.5.pre' and release_channel=='stable') or (tag == '1.2.3' and release_channel=='beta')):
+ # These are invalid combinations of tag and release_channel.
+ # Expect assertion errors for these combinations
+ post_processing = [api.expect_exception('AssertionError')]
+ else:
+ # Remaining tag combinations of tag and release channel are valid.
+ post_processing = [api.post_process(
+ post_process.MustRun, 'Tag and push release on flutter/flutter'
+ ),
+ api.post_process(
+ post_process.MustRun, 'Tag and push release on flutter/engine'
+ ),
+ api.post_process(post_process.StatusSuccess)]
test = api.test(
'%s_%s_%s%s' % (
'flutter-2.8-candidate.9', tag, release_channel,
@@ -160,12 +174,6 @@
force=force
),
api.repo_util.flutter_environment_data(checkout_dir=checkout_path),
- api.post_process(
- post_process.MustRun, 'Tag and push release on flutter/flutter'
- ),
- api.post_process(
- post_process.MustRun, 'Tag and push release on flutter/engine'
- ),
- api.post_process(post_process.StatusSuccess),
+ *post_processing
)
yield test