| [ |
| { |
| "cmd": [ |
| "python3", |
| "-u", |
| "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py", |
| "--", |
| "RECIPE_REPO[depot_tools]/gsutil.py", |
| "----", |
| "cp", |
| "gs://dart-archive/channels/stable/release/3.2.0/api-docs/dartdocs-gen-api.zip", |
| "[CLEANUP]/dartdocs-gen-api.zip" |
| ], |
| "infra_step": true, |
| "name": "gsutil download dartdocs-gen-api.zip" |
| }, |
| { |
| "cmd": [ |
| "python3", |
| "-u", |
| "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py", |
| "--", |
| "RECIPE_REPO[depot_tools]/gsutil.py", |
| "----", |
| "cp", |
| "gs://dart-archive/channels/stable/release/3.2.0/api-docs/dartdocs-gen-api.zip.intoto.jsonl", |
| "[CLEANUP]/dartdocs-gen-api.zip.intoto.jsonl" |
| ], |
| "infra_step": true, |
| "name": "gsutil download dartdocs-gen-api.zip provenance" |
| }, |
| { |
| "cmd": [ |
| "luci-auth", |
| "token", |
| "-scopes", |
| "https://www.googleapis.com/auth/bcid_verify https://www.googleapis.com/auth/cloud-platform", |
| "-lifetime", |
| "3m" |
| ], |
| "infra_step": true, |
| "name": "get access token for default account" |
| }, |
| { |
| "cmd": [ |
| "vpython3", |
| "-u", |
| "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", |
| "--json-output", |
| "/path/to/tmp/json", |
| "file_hash", |
| "[CLEANUP]/dartdocs-gen-api.zip" |
| ], |
| "infra_step": true, |
| "name": "Compute file hash", |
| "~followup_annotations": [ |
| "@@@STEP_TEXT@Hash calculated: 6dba06aaac636739d8e0fbc213589b47569a6d40cb424ffec6b424d09b7e8e49@@@" |
| ] |
| }, |
| { |
| "cmd": [ |
| "vpython3", |
| "-u", |
| "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", |
| "--json-output", |
| "/path/to/tmp/json", |
| "copy", |
| "[CLEANUP]/dartdocs-gen-api.zip.intoto.jsonl", |
| "/path/to/tmp/" |
| ], |
| "infra_step": true, |
| "name": "read dartdocs-gen-api.zip provenance", |
| "~followup_annotations": [ |
| "@@@STEP_LOG_END@dartdocs-gen-api.zip.intoto.jsonl@@@" |
| ] |
| }, |
| { |
| "cmd": [ |
| "vpython3", |
| "-u", |
| "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", |
| "--json-output", |
| "/path/to/tmp/json", |
| "copy", |
| "Authorization: Bearer extra.secret.token.should.not.be.logged\n", |
| "[CLEANUP]/authorization" |
| ], |
| "infra_step": true, |
| "name": "write authorization" |
| }, |
| { |
| "cmd": [ |
| "vpython3", |
| "-u", |
| "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", |
| "--json-output", |
| "/path/to/tmp/json", |
| "copy", |
| "{\"resourceToVerify\": \"misc_software://dart/apidocs\", \"artifactInfo\": {\"digests\": {\"sha256\": \"6dba06aaac636739d8e0fbc213589b47569a6d40cb424ffec6b424d09b7e8e49\"}, \"attestations\": [\"\"]}}", |
| "[CLEANUP]/request" |
| ], |
| "infra_step": true, |
| "name": "write request", |
| "~followup_annotations": [ |
| "@@@STEP_LOG_LINE@request@{\"resourceToVerify\": \"misc_software://dart/apidocs\", \"artifactInfo\": {\"digests\": {\"sha256\": \"6dba06aaac636739d8e0fbc213589b47569a6d40cb424ffec6b424d09b7e8e49\"}, \"attestations\": [\"\"]}}@@@", |
| "@@@STEP_LOG_END@request@@@" |
| ] |
| }, |
| { |
| "cmd": [ |
| "curl", |
| "-H", |
| "@[CLEANUP]/authorization", |
| "-H", |
| "Content-Type: application/json", |
| "-d", |
| "@[CLEANUP]/request", |
| "https://bcidsoftwareverifier-pa.googleapis.com/v1/software-artifact-verification-requests" |
| ], |
| "name": "verify dartdocs-gen-api.zip provenance", |
| "~followup_annotations": [ |
| "@@@STEP_LOG_LINE@raw_io.output_text@{\"allowed\": true,\"verificationSummary\":\"{\\\"payload\\\": \\\"\\\"}\"}@@@", |
| "@@@STEP_LOG_END@raw_io.output_text@@@" |
| ] |
| }, |
| { |
| "cmd": [ |
| "vpython3", |
| "-u", |
| "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", |
| "--json-output", |
| "/path/to/tmp/json", |
| "remove", |
| "[CLEANUP]/authorization" |
| ], |
| "infra_step": true, |
| "name": "delete authorization" |
| }, |
| { |
| "cmd": [ |
| "vpython3", |
| "-u", |
| "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", |
| "--json-output", |
| "/path/to/tmp/json", |
| "remove", |
| "[CLEANUP]/request" |
| ], |
| "infra_step": true, |
| "name": "delete request" |
| }, |
| { |
| "cmd": [ |
| "vpython3", |
| "-u", |
| "RECIPE_MODULE[recipe_engine::archive]/resources/extract.py", |
| "--json-input", |
| "{\"archive_file\": \"[CLEANUP]/dartdocs-gen-api.zip\", \"include_files\": [], \"output\": \"[CLEANUP]\", \"safe_mode\": true}", |
| "--json-output", |
| "/path/to/tmp/json" |
| ], |
| "name": "extract dartdocs-gen-api.zip", |
| "~followup_annotations": [ |
| "@@@STEP_TEXT@<br/>extracted 1337 files - 50159.75 MB@@@", |
| "@@@STEP_LOG_LINE@json.output@{@@@", |
| "@@@STEP_LOG_LINE@json.output@ \"extracted\": {@@@", |
| "@@@STEP_LOG_LINE@json.output@ \"bytes\": 50159747054,@@@", |
| "@@@STEP_LOG_LINE@json.output@ \"filecount\": 1337@@@", |
| "@@@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", |
| "----", |
| "-m", |
| "cp", |
| "-r", |
| "[CLEANUP]/gen-dartdocs", |
| "gs://dartlang-api-docs/gen-dartdocs/stable/3.2.0" |
| ], |
| "infra_step": true, |
| "name": "gsutil publish dartdocs to gs://dartlang-api-docs/gen-dartdocs/stable/3.2.0" |
| }, |
| { |
| "cmd": [ |
| "python3", |
| "-u", |
| "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py", |
| "--", |
| "RECIPE_REPO[depot_tools]/gsutil.py", |
| "----", |
| "-m", |
| "cp", |
| "-r", |
| "[CLEANUP]/gen-dartdocs", |
| "gs://dart-api-documentation/stable/3.2.0" |
| ], |
| "infra_step": true, |
| "name": "gsutil publish dartdocs to gs://dart-api-documentation/stable/3.2.0" |
| }, |
| { |
| "cmd": [ |
| "python3", |
| "-u", |
| "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py", |
| "--", |
| "RECIPE_REPO[depot_tools]/gsutil.py", |
| "----", |
| "ls", |
| "gs://dart-api-documentation/stable/" |
| ], |
| "infra_step": true, |
| "name": "gsutil list stable versions", |
| "~followup_annotations": [ |
| "@@@STEP_LOG_LINE@raw_io.output_text@gs://dart-api-documentation/stable/2.17.2/@@@", |
| "@@@STEP_LOG_LINE@raw_io.output_text@gs://dart-api-documentation/stable/3.1.0/@@@", |
| "@@@STEP_LOG_LINE@raw_io.output_text@gs://dart-api-documentation/stable/2.17.0/@@@", |
| "@@@STEP_LOG_LINE@raw_io.output_text@gs://dart-api-documentation/stable/1.0.5/@@@", |
| "@@@STEP_LOG_LINE@raw_io.output_text@gs://dart-api-documentation/stable/latest/@@@", |
| "@@@STEP_LOG_LINE@raw_io.output_text@gs://dart-api-documentation/stable/2.0.0/@@@", |
| "@@@STEP_LOG_END@raw_io.output_text@@@" |
| ] |
| }, |
| { |
| "cmd": [ |
| "python3", |
| "-u", |
| "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py", |
| "--", |
| "RECIPE_REPO[depot_tools]/gsutil.py", |
| "----", |
| "-m", |
| "cp", |
| "-r", |
| "[CLEANUP]/gen-dartdocs", |
| "gs://dart-api-documentation/stable/latest" |
| ], |
| "infra_step": true, |
| "name": "gsutil publish dartdocs to gs://dart-api-documentation/stable/latest" |
| }, |
| { |
| "cmd": [ |
| "python3", |
| "-u", |
| "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py", |
| "--", |
| "RECIPE_REPO[depot_tools]/gsutil.py", |
| "----", |
| "ls", |
| "gs://dartlang-api-docs/channels/stable/latest.txt" |
| ], |
| "infra_step": true, |
| "name": "gsutil check for stable dartdoc latest.txt" |
| }, |
| { |
| "cmd": [ |
| "python3", |
| "-u", |
| "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py", |
| "--", |
| "RECIPE_REPO[depot_tools]/gsutil.py", |
| "----", |
| "cp", |
| "gs://dartlang-api-docs/channels/stable/latest.txt", |
| "[CLEANUP]/latest.txt" |
| ], |
| "infra_step": true, |
| "name": "gsutil download latest.txt" |
| }, |
| { |
| "cmd": [ |
| "vpython3", |
| "-u", |
| "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", |
| "--json-output", |
| "/path/to/tmp/json", |
| "copy", |
| "[CLEANUP]/latest.txt", |
| "/path/to/tmp/" |
| ], |
| "infra_step": true, |
| "name": "read latest.txt", |
| "~followup_annotations": [ |
| "@@@STEP_LOG_LINE@latest.txt@3.1.0@@@", |
| "@@@STEP_LOG_END@latest.txt@@@" |
| ] |
| }, |
| { |
| "cmd": [ |
| "vpython3", |
| "-u", |
| "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", |
| "--json-output", |
| "/path/to/tmp/json", |
| "copy", |
| "3.2.0", |
| "[CLEANUP]/latest.txt" |
| ], |
| "infra_step": true, |
| "name": "write dartdoc latest.txt", |
| "~followup_annotations": [ |
| "@@@STEP_LOG_LINE@latest.txt@3.2.0@@@", |
| "@@@STEP_LOG_END@latest.txt@@@" |
| ] |
| }, |
| { |
| "cmd": [ |
| "python3", |
| "-u", |
| "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py", |
| "--", |
| "RECIPE_REPO[depot_tools]/gsutil.py", |
| "----", |
| "cp", |
| "[CLEANUP]/latest.txt", |
| "gs://dartlang-api-docs/channels/stable/latest.txt" |
| ], |
| "infra_step": true, |
| "name": "gsutil upload dartdocs latest.txt" |
| }, |
| { |
| "cmd": [ |
| "vpython3", |
| "-u", |
| "RECIPE_MODULE[recipe_engine::url]/resources/pycurl.py", |
| "--url", |
| "https://api.dart.dev/docs/releases/latest/?force_reload=true", |
| "--status-json", |
| "/path/to/tmp/json", |
| "--outfile", |
| "/path/to/tmp/" |
| ], |
| "name": "reload api.dart.dev" |
| }, |
| { |
| "name": "$result" |
| } |
| ] |