1*bb4ee6a4SAndroid Build Coastguard Worker# Copyright 2022 The ChromiumOS Authors 2*bb4ee6a4SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 3*bb4ee6a4SAndroid Build Coastguard Worker# found in the LICENSE file. 4*bb4ee6a4SAndroid Build Coastguard Worker 5*bb4ee6a4SAndroid Build Coastguard Workerfrom recipe_engine.post_process import Filter 6*bb4ee6a4SAndroid Build Coastguard Worker 7*bb4ee6a4SAndroid Build Coastguard WorkerDEPS = [ 8*bb4ee6a4SAndroid Build Coastguard Worker "crosvm", 9*bb4ee6a4SAndroid Build Coastguard Worker "recipe_engine/file", 10*bb4ee6a4SAndroid Build Coastguard Worker "recipe_engine/buildbucket", 11*bb4ee6a4SAndroid Build Coastguard Worker "recipe_engine/context", 12*bb4ee6a4SAndroid Build Coastguard Worker "recipe_engine/step", 13*bb4ee6a4SAndroid Build Coastguard Worker "depot_tools/gsutil", 14*bb4ee6a4SAndroid Build Coastguard Worker] 15*bb4ee6a4SAndroid Build Coastguard Worker 16*bb4ee6a4SAndroid Build Coastguard WorkerBOOK_URL = "gs://crosvm-dot-dev/book" 17*bb4ee6a4SAndroid Build Coastguard WorkerDOCS_URL = "gs://crosvm-dot-dev/doc" 18*bb4ee6a4SAndroid Build Coastguard Worker 19*bb4ee6a4SAndroid Build Coastguard Worker 20*bb4ee6a4SAndroid Build Coastguard Workerdef RunSteps(api): 21*bb4ee6a4SAndroid Build Coastguard Worker """ 22*bb4ee6a4SAndroid Build Coastguard Worker Builds crosvm mdbook and api docs, then uploads them to GCS. 23*bb4ee6a4SAndroid Build Coastguard Worker 24*bb4ee6a4SAndroid Build Coastguard Worker This recipe requires ambient luci authentication. To test locally run: 25*bb4ee6a4SAndroid Build Coastguard Worker $ luci-auth context ./infra/recipes.py run build_docs 26*bb4ee6a4SAndroid Build Coastguard Worker """ 27*bb4ee6a4SAndroid Build Coastguard Worker with api.crosvm.container_build_context(): 28*bb4ee6a4SAndroid Build Coastguard Worker api.crosvm.step_in_container( 29*bb4ee6a4SAndroid Build Coastguard Worker "Build mdbook", ["mdbook", "build", "docs/book/", "--dest-dir", "../target"] 30*bb4ee6a4SAndroid Build Coastguard Worker ) 31*bb4ee6a4SAndroid Build Coastguard Worker api.crosvm.step_in_container( 32*bb4ee6a4SAndroid Build Coastguard Worker "Run cargo docs", 33*bb4ee6a4SAndroid Build Coastguard Worker ["./tools/cargo-doc", "--target-dir", "docs/target"], 34*bb4ee6a4SAndroid Build Coastguard Worker ) 35*bb4ee6a4SAndroid Build Coastguard Worker 36*bb4ee6a4SAndroid Build Coastguard Worker # Container generated files are root-owned, we need to make sure they will be readable by 37*bb4ee6a4SAndroid Build Coastguard Worker # gsutil (which has to run outside the container to run with proper authentication). 38*bb4ee6a4SAndroid Build Coastguard Worker api.crosvm.step_in_container( 39*bb4ee6a4SAndroid Build Coastguard Worker "Make docs readable by gsutil", 40*bb4ee6a4SAndroid Build Coastguard Worker ["chmod", "-R", "o+r", "docs/target"], 41*bb4ee6a4SAndroid Build Coastguard Worker ) 42*bb4ee6a4SAndroid Build Coastguard Worker 43*bb4ee6a4SAndroid Build Coastguard Worker api.gsutil( 44*bb4ee6a4SAndroid Build Coastguard Worker ["rsync", "-r", "-d", "./docs/target/html", BOOK_URL], 45*bb4ee6a4SAndroid Build Coastguard Worker name="Upload book", 46*bb4ee6a4SAndroid Build Coastguard Worker multithreaded=True, 47*bb4ee6a4SAndroid Build Coastguard Worker ) 48*bb4ee6a4SAndroid Build Coastguard Worker # TODO(b/239255064): Generate the redirect HTML so we can use cleanly mirror here too. 49*bb4ee6a4SAndroid Build Coastguard Worker api.gsutil( 50*bb4ee6a4SAndroid Build Coastguard Worker ["rsync", "-r", "./docs/target/doc", DOCS_URL], 51*bb4ee6a4SAndroid Build Coastguard Worker name="Upload docs", 52*bb4ee6a4SAndroid Build Coastguard Worker multithreaded=True, 53*bb4ee6a4SAndroid Build Coastguard Worker ) 54*bb4ee6a4SAndroid Build Coastguard Worker 55*bb4ee6a4SAndroid Build Coastguard Worker 56*bb4ee6a4SAndroid Build Coastguard Workerdef GenTests(api): 57*bb4ee6a4SAndroid Build Coastguard Worker filter_steps = Filter( 58*bb4ee6a4SAndroid Build Coastguard Worker "Build mdbook", "Run cargo docs", "gsutil Upload book", "gsutil Upload docs" 59*bb4ee6a4SAndroid Build Coastguard Worker ) 60*bb4ee6a4SAndroid Build Coastguard Worker yield ( 61*bb4ee6a4SAndroid Build Coastguard Worker api.test( 62*bb4ee6a4SAndroid Build Coastguard Worker "build_docs", 63*bb4ee6a4SAndroid Build Coastguard Worker api.buildbucket.ci_build(project="crosvm/crosvm"), 64*bb4ee6a4SAndroid Build Coastguard Worker ) 65*bb4ee6a4SAndroid Build Coastguard Worker + api.post_process(filter_steps) 66*bb4ee6a4SAndroid Build Coastguard Worker ) 67