blob: 6f8be2e84cf0159efb7bcd0d05dc7dec71a8bafe [file] [log] [blame]
"""Recipe for running a ota build on the given patch."""
import os
from helpers import branch_utils
from helpers import gcs_utils
from helpers import repo_utils
from slave import base_recipe
from slave.step import gcs_upload_step
from slave.step import gn_check_step
from slave.step import host_tests_step
from slave.step import landmine_step
from slave.step import make_clean_step
from slave.step import ota_build_tests_step
from slave.step import ota_factory_tool_step
from slave.step import ota_fct_step
from slave.step import ota_oss_step
from slave.step import ota_resign_step
from slave.step import ota_step
from slave.step import ota_strip_binaries_step
from slave.step import partner_build_check_step
from slave.test import test_generator
PHOENIX_SCHEMA_BUILDS = [
'elaine-eng', # 1.48_efct
'elaine-user', # 1.48_efct
'gq-eng', # 1.49qfsi
'gq-user', # 1.49qfsi
'newman-eng', # 1.38nf
'newman-user', # 1.38nf
'nq-eng', # 1.49qfsi
'nq-user', # 1.49qfsi
'valens-eng', # 1.41
'valens-user', # 1.41
'vento-eng', # 1.40fsi
'vento-user', # 1.40fsi
]
BUILD_CONFIGS = {
'anchovy-eng': {
'build_flavor':
'release',
'resign':
ota_resign_step.EUREKA_RESIGN,
'partner_bucket': [
'cast-partner-marvell-internal',
'cast-partner-synaptics-internal',
],
},
'anchovy-user': {
'build_flavor':
'release',
'resign':
ota_resign_step.EUREKA_RESIGN,
'partner_bucket': [
'cast-partner-marvell-internal',
'cast-partner-synaptics-internal',
],
},
'assistantdefault-eng': {
'build_flavor': 'release',
'resign': ota_resign_step.ASSISTANTDEFAULT_RESIGN,
'partner_bucket': ['cast-partner-gva'],
'upload_libassisant_arch': 'arm',
},
'assistantdefault-user': {
'build_flavor': 'release',
'resign': ota_resign_step.ASSISTANTDEFAULT_RESIGN,
'partner_bucket': ['cast-partner-gva'],
'upload_libassisant_arch': 'arm',
},
'assistantdefault-1led-eng': {
'build_flavor': 'release',
'resign': ota_resign_step.ASSISTANTDEFAULT_RESIGN,
'partner_bucket': ['cast-partner-gva'],
},
'assistantdefault-1led-user': {
'build_flavor': 'release',
'resign': ota_resign_step.ASSISTANTDEFAULT_RESIGN,
'partner_bucket': ['cast-partner-gva'],
},
'assistantdefault-partner-user': {
'build_flavor': 'release',
'resign': ota_resign_step.ASSISTANTDEFAULT_RESIGN,
'partner_bucket': ['cast-partner-gva'],
'upload_libassisant_arch': 'arm',
},
'audiodefault-eng': {
'build_flavor': 'release',
'partner_bucket': ['cast-partner-gva'],
},
'audiodefault-partner-eng': {
'build_flavor': 'release',
'partner_bucket': ['cast-partner-gva'],
},
'audiodefault-user': {
'build_flavor': 'release',
'partner_bucket': ['cast-partner-gva'],
},
'audiodefault_dynamic-eng': {
'build_flavor': 'release',
'partner_bucket': ['cast-partner-gva'],
},
'audiodefault_dynamic-user': {
'build_flavor': 'release',
'partner_bucket': ['cast-partner-gva'],
},
'biggie-eng': {
'build_flavor': 'release',
'resign': ota_resign_step.BIGGIE_RESIGN,
'factory': ota_resign_step.BIGGIE_FACTORY,
'partner_bucket': ['cast-partner-amlogic-internal'],
'upload_libassisant_arch': 'arm64',
},
'biggie-user': {
'build_flavor': 'release',
'resign': ota_resign_step.BIGGIE_RESIGN,
'partner_bucket': ['cast-partner-amlogic-internal'],
'upload_libassisant_arch': 'arm64',
'branch_extra_params': {
'1.40rd': ['RETAIL_DEMO_BUILD=true'],
},
},
'bowie-eng': {
'build_flavor':
'release',
'board_name':
'bowie-p0',
'resign':
ota_resign_step.BOWIE_RESIGN,
'factory':
ota_resign_step.BOWIE_FACTORY,
'usbstick':
ota_resign_step.BOWIE_USBSTICK,
'test_board_name':
'bowie-p0',
'partner_bucket': [
'cast-partner-marvell-internal',
'cast-partner-synaptics-internal',
],
},
'bowie-user': {
'build_flavor':
'release',
'board_name':
'bowie-p0',
'resign':
ota_resign_step.BOWIE_RESIGN,
'test_board_name':
'bowie-p0',
'partner_bucket': [
'cast-partner-marvell-internal',
'cast-partner-synaptics-internal',
],
},
'brezza-eng': {
'build_flavor': 'release',
'resign': ota_resign_step.BREZZA_RESIGN,
'factory': ota_resign_step.BREZZA_FACTORY,
'factory_tool': ota_resign_step.BREZZA_FACTORY_TOOL,
'usbstick': ota_resign_step.BREZZA_USBSTICK,
'partner_bucket': ['cast-partner-qualcomm-internal'],
'skip_ota_tests': True,
},
'brezza-user': {
'build_flavor': 'release',
'resign': ota_resign_step.BREZZA_RESIGN,
'partner_bucket': ['cast-partner-qualcomm-internal'],
'skip_ota_tests': True,
},
'brezza-partner-eng': {
'build_flavor': 'release',
'resign': ota_resign_step.BREZZA_RESIGN,
'partner_bucket': ['cast-partner-qualcomm-internal'],
'branch_extra_params': {
'master': ['PARTNER_BUILD=true'],
},
'skip_ota_tests': True,
},
'caprica-eng': {
'build_flavor': 'release',
'resign': ota_resign_step.CAPRICA_RESIGN,
'factory': ota_resign_step.CAPRICA_FACTORY,
'usbstick': ota_resign_step.CAPRICA_USBSTICK,
'partner_bucket': ['cast-partner-synaptics-internal'],
},
'caprica-user': {
'build_flavor': 'release',
'resign': ota_resign_step.CAPRICA_RESIGN,
'partner_bucket': ['cast-partner-synaptics-internal'],
},
'caprica-yeti-eng': {
'build_flavor': 'release',
'resign': ota_resign_step.CAPRICA_RESIGN,
'factory': ota_resign_step.CAPRICA_FACTORY,
},
'caprica-yeti-user': {
'build_flavor': 'release',
'resign': ota_resign_step.CAPRICA_RESIGN,
},
'chorizo-eng': {
'build_flavor':
'release',
'resign':
ota_resign_step.CHORIZO_RESIGN,
'partner_bucket': [
'cast-partner-marvell-internal',
'cast-partner-synaptics-internal',
],
},
'chorizo-user': {
'build_flavor':
'release',
'max_ota_size':
104000000,
'resign':
ota_resign_step.CHORIZO_RESIGN,
'partner_bucket': [
'cast-partner-marvell-internal',
'cast-partner-synaptics-internal',
],
},
'chromeos_armv7a-eng': {
'build_flavor': 'release',
'board_name': 'sirocco-b1',
'build_usonia_daemon': True,
'build_thread_telemetry_service_cros': True,
'target_name': 'sirocco-eng',
'skip_ota_tests': True,
},
'chromeos_armv7a-user': {
'build_flavor': 'release',
'board_name': 'sirocco-b1',
'build_usonia_daemon': True,
'build_thread_telemetry_service_cros': True,
'target_name': 'sirocco-user',
'skip_ota_tests': True,
},
'core_runtime-eng': {
'build_flavor': 'release',
'partner_bucket': ['core-runtime-cb-upload'],
},
'core_runtime-user': {
'build_flavor': 'release',
'partner_bucket': ['core-runtime-cb-upload'],
},
'dragonfly-eng': {
'build_flavor': 'release',
'partner_bucket': ['cast-partner-sigmadesign-tv'],
},
'dragonfly-user': {
'build_flavor': 'release',
'partner_bucket': ['cast-partner-sigmadesign-tv'],
},
'elaine-eng': {
'build_flavor': 'release',
'resign': ota_resign_step.ELAINE_RESIGN,
'factory': ota_resign_step.ELAINE_FACTORY,
'usbstick': ota_resign_step.ELAINE_USBSTICK,
'clean_steps': [],
'partner_bucket': [
'cast-partner-amlogic-internal', 'cast-partner-broadcom-internal'
],
'eng_build': True,
},
'elaine-user': {
'build_flavor':
'release',
'resign':
ota_resign_step.ELAINE_RESIGN,
'clean_steps': [],
'partner_bucket': [
'cast-partner-amlogic-internal', 'cast-partner-broadcom-internal'
],
},
'elaine-fuchsia-user': {
'build_flavor': 'release',
'board_name': 'elaine-b3',
'resign': ota_resign_step.ELAINE_FUCHSIA_RESIGN,
'clean_steps': [],
'default_properties': {
'fuchsia_sync': True,
},
},
'estelle-eng': {
'build_flavor':
'release',
'resign':
ota_resign_step.ESTELLE_RESIGN,
'factory':
ota_resign_step.ESTELLE_FACTORY,
'usbstick':
ota_resign_step.ESTELLE_USBSTICK,
'partner_bucket': [
'cast-partner-amlogic-internal', 'cast-partner-broadcom-internal'
],
},
'estelle-health-eng': {
'build_flavor': 'release',
'resign': ota_resign_step.ESTELLE_RESIGN,
'factory': ota_resign_step.ESTELLE_FACTORY,
},
'estelle-health-user': {
'build_flavor': 'release',
'resign': ota_resign_step.ESTELLE_RESIGN,
},
'estelle-ml_framework-eng': {
'build_flavor': 'release',
'resign': ota_resign_step.ESTELLE_RESIGN,
},
'estelle-opal-eng': {
'build_flavor': 'release',
'resign': ota_resign_step.ESTELLE_RESIGN,
'factory': ota_resign_step.ESTELLE_FACTORY,
},
'estelle-opal-user': {
'build_flavor': 'release',
'resign': ota_resign_step.ESTELLE_RESIGN,
},
'estelle-fuchsia-eng': {
'build_flavor': 'release',
'resign': ota_resign_step.ESTELLE_FUCHSIA_RESIGN,
'default_properties': {
'fuchsia_sync': True,
},
},
'estelle-fuchsia-user': {
'build_flavor': 'release',
'resign': ota_resign_step.ESTELLE_FUCHSIA_RESIGN,
'default_properties': {
'fuchsia_sync': True,
},
},
'estelle-sdm-eng': {
'build_flavor': 'release',
'resign': ota_resign_step.ESTELLE_RESIGN,
'factory': ota_resign_step.ESTELLE_FACTORY,
},
'estelle-sdm-user': {
'build_flavor': 'release',
'resign': ota_resign_step.ESTELLE_RESIGN,
},
'estelle-user': {
'build_flavor':
'release',
'max_ota_size':
170000000,
'resign':
ota_resign_step.ESTELLE_RESIGN,
'partner_bucket': [
'cast-partner-amlogic-internal', 'cast-partner-broadcom-internal'
],
},
'korlan-eng': {
'build_flavor': 'release',
'board_name': 'korlan-b1',
'max_ota_size': 43000000,
'resign': ota_resign_step.KORLAN_RESIGN,
'factory': ota_resign_step.KORLAN_FACTORY,
'usbstick': ota_resign_step.KORLAN_USBSTICK,
'factory_tool': ota_resign_step.KORLAN_FACTORY_TOOL,
'partner_bucket': ['cast-partner-amlogic-internal'],
},
'korlan-user': {
'build_flavor': 'release',
'max_ota_size': 40000000,
'resign': ota_resign_step.KORLAN_RESIGN,
'partner_bucket': ['cast-partner-amlogic-internal'],
},
'lumia-eng': {
'build_flavor': 'release',
'resign': ota_resign_step.LUMIA_RESIGN,
'factory': ota_resign_step.LUMIA_FACTORY,
'partner_bucket': ['cast-partner-amlogic-internal'],
},
'lumia-user': {
'build_flavor': 'release',
'resign': ota_resign_step.LUMIA_RESIGN,
'partner_bucket': ['cast-partner-amlogic-internal'],
},
'swift-demo-eng': {
'build_flavor': 'release',
'board_name': 'swift-p2',
'resign': ota_resign_step.SWIFT_RESIGN,
'partner_bucket': ['cast-partner-amlogic-internal'],
},
'swift-demo-user': {
'build_flavor': 'release',
'resign': ota_resign_step.SWIFT_RESIGN,
'partner_bucket': ['cast-partner-amlogic-internal'],
},
'swift-eng': {
'build_flavor': 'release',
'board_name': 'swift-p2',
'resign': ota_resign_step.SWIFT_RESIGN,
'partner_bucket': ['cast-partner-amlogic-internal'],
},
'swift-user': {
'build_flavor': 'release',
'resign': ota_resign_step.SWIFT_RESIGN,
'partner_bucket': ['cast-partner-amlogic-internal'],
},
'goertek-9eh4-partner-eng': {
'build_name': 'swift-partner-eng',
'build_flavor': 'release',
'build_extra_params': ['PARTNER_BUILD=true', 'CORE_DEV_BUILD=true'],
# Disable build accelerator because
# JDM doesn't have the ability to enable RBE.
'enable_build_accelerator': False,
'resign': ota_resign_step.GTK_9EH4_RESIGN,
'factory': ota_resign_step.GTK_9EH4_FACTORY,
'factory_extra_params': [
'CORE_DEV_BUILD=true',
'FCT_DEVICE_DIR=vendor/goertek/swift',
'FCT_FILES_PATH=/home/goertek/bin'
],
'skip_ota_tests': True,
'skip_gncheck': True,
},
'gq-eng': {
'build_flavor': 'release',
'resign': ota_resign_step.GQ_RESIGN,
'factory': ota_resign_step.GQ_FACTORY,
'usbstick': ota_resign_step.GQ_USBSTICK,
'partner_bucket': ['cast-partner-amlogic-internal'],
'branch_extra_params': {
'1.49qfsi_retail': ['RETAIL_DEMO_BUILD=true'],
},
'check_camera_targets': True,
'eng_build': True,
},
'gq-skip_gncheck-eng': {
'build_name': 'gq-eng',
'build_flavor': 'release',
'resign': ota_resign_step.GQ_RESIGN,
'factory': ota_resign_step.GQ_FACTORY,
'usbstick': ota_resign_step.GQ_USBSTICK,
'partner_bucket': ['cast-partner-amlogic-internal'],
'branch_extra_params': {
'1.49qfsi_retail': ['RETAIL_DEMO_BUILD=true'],
},
'check_camera_targets': True,
'eng_build': True,
'skip_gncheck': True,
'build_extra_params': ['ENABLE_GN_CHECK=1'],
},
'gq-user': {
'build_flavor': 'release',
'resign': ota_resign_step.GQ_RESIGN,
'partner_bucket': ['cast-partner-amlogic-internal'],
'branch_extra_params': {
'1.49qfsi_retail': ['RETAIL_DEMO_BUILD=true'],
},
'check_camera_targets': True,
},
'mozart-eng': {
'build_flavor': 'release',
'partner_bucket': ['cast-partner-mediatek-audio'],
},
'mushroom-eng': {
'build_flavor': 'release',
'max_ota_size': 115000000,
'resign': ota_resign_step.MUSHROOM_RESIGN,
'factory': ota_resign_step.MUSHROOM_FACTORY,
'usbstick': ota_resign_step.MUSHROOM_USBSTICK,
'partner_bucket': ['cast-partner-synaptics-internal'],
},
'mushroom-sdm-eng': {
'build_flavor': 'release',
'resign': ota_resign_step.MUSHROOM_RESIGN,
'factory': ota_resign_step.MUSHROOM_FACTORY,
},
'mushroom-sdm-user': {
'build_flavor': 'release',
'resign': ota_resign_step.MUSHROOM_RESIGN,
},
'mushroom-user': {
'build_flavor': 'release',
'max_ota_size': 115000000,
'resign': ota_resign_step.MUSHROOM_RESIGN,
'partner_bucket': ['cast-partner-synaptics-internal'],
'branch_extra_params': {
'1.40rd': ['RETAIL_DEMO_BUILD=true'],
},
},
'newman-eng': {
'build_flavor': 'release',
'board_name': 'newman-b3',
'resign': ota_resign_step.NEWMAN_RESIGN_ENG,
'factory': ota_resign_step.NEWMAN_FACTORY,
'usbstick': ota_resign_step.NEWMAN_USBSTICK,
'partner_bucket': [
'cast-partner-amlogic-internal', 'cast-partner-broadcom-internal'
],
'test_board_name': 'newman-b3',
},
'newman-eng_legacy': {
'build_flavor': 'release',
'board_name': 'newman-b3',
'resign': ota_resign_step.NEWMAN_RESIGN_ENG,
'factory': ota_resign_step.NEWMAN_FACTORY,
'partner_bucket': [
'cast-partner-amlogic-internal', 'cast-partner-broadcom-internal'
],
'test_board_name': 'newman-b3',
},
'newman-fuchsia-user': {
'build_flavor': 'release',
'board_name': 'newman-b3',
'resign': ota_resign_step.NEWMAN_FUCHSIA_RESIGN,
'default_properties': {
'fuchsia_sync': True,
},
'test_board_name': 'newman-b3',
},
'newman-fuchsia_rev-eng': {
'build_flavor': 'release',
'board_name': 'newman-b3',
'resign': ota_resign_step.NEWMAN_FUCHSIA_RESIGN,
'default_properties': {
'fuchsia_sync': True,
},
'test_board_name': 'newman-b3',
},
'newman-fuchsia_rev-user': {
'build_flavor': 'release',
'board_name': 'newman-b3',
'resign': ota_resign_step.NEWMAN_FUCHSIA_RESIGN,
'default_properties': {
'fuchsia_sync': True,
},
'test_board_name': 'newman-b3',
},
'newman-user': {
'build_flavor': 'release',
'board_name': 'newman-b3',
'resign': ota_resign_step.NEWMAN_RESIGN,
'partner_bucket': [
'cast-partner-amlogic-internal', 'cast-partner-broadcom-internal'
],
'test_board_name': 'newman-b3',
},
'newman-modular_comms-user': {
'build_flavor': 'release',
'board_name': 'newman-b3',
'resign': ota_resign_step.NEWMAN_RESIGN,
'test_board_name': 'newman-b3',
},
'nq-eng': {
'build_flavor': 'release',
'resign': ota_resign_step.NQ_RESIGN,
'factory': ota_resign_step.NQ_FACTORY,
'usbstick': ota_resign_step.NQ_USBSTICK,
'partner_bucket': ['cast-partner-amlogic-internal'],
'check_camera_targets': True,
'eng_build': True,
},
'nq-skip_gncheck-eng': {
'build_name': 'nq-eng',
'build_flavor': 'release',
'resign': ota_resign_step.NQ_RESIGN,
'factory': ota_resign_step.NQ_FACTORY,
'usbstick': ota_resign_step.NQ_USBSTICK,
'partner_bucket': ['cast-partner-amlogic-internal'],
'check_camera_targets': True,
'eng_build': True,
'skip_gncheck': True,
'build_extra_params': ['ENABLE_GN_CHECK=1'],
},
'nq-user': {
'build_flavor': 'release',
'resign': ota_resign_step.NQ_RESIGN,
'partner_bucket': ['cast-partner-amlogic-internal'],
'check_camera_targets': True,
},
'np8340-eng': {
'build_flavor': 'release',
},
'np8340-user': {
'build_flavor': 'release',
},
'pepperoni-eng': {
'build_flavor':
'release',
'resign':
ota_resign_step.PEPPERONI_RESIGN,
'partner_bucket': [
'cast-partner-marvell-internal',
'cast-partner-synaptics-internal',
],
},
'pepperoni-user': {
'build_flavor':
'release',
'resign':
ota_resign_step.PEPPERONI_RESIGN,
'partner_bucket': [
'cast-partner-marvell-internal',
'cast-partner-synaptics-internal',
],
},
'pineapple-eng': {
'build_flavor':
'release',
'max_ota_size':
115000000,
'resign':
ota_resign_step.PINEAPPLE_RESIGN,
'factory':
ota_resign_step.PINEAPPLE_FACTORY,
'usbstick':
ota_resign_step.PINEAPPLE_USBSTICK,
'partner_bucket': [
'cast-partner-marvell-internal',
'cast-partner-synaptics-internal',
],
},
'pineapple-user': {
'build_flavor': 'release',
'max_ota_size': 115000000,
'resign': ota_resign_step.PINEAPPLE_RESIGN,
'partner_bucket': [
'cast-partner-marvell-internal',
'cast-partner-synaptics-internal',
],
'branch_extra_params': {
'1.40rd': ['RETAIL_DEMO_BUILD=true'],
},
},
'pineapple-sdm-eng': {
'build_flavor': 'release',
'resign': ota_resign_step.PINEAPPLE_RESIGN,
'factory': ota_resign_step.PINEAPPLE_FACTORY,
},
'pineapple-sdm-user': {
'build_flavor': 'release',
'resign': ota_resign_step.PINEAPPLE_RESIGN,
},
'prince-demo-eng': {
'build_flavor': 'release',
'board_name': 'prince-p2',
'resign': ota_resign_step.PRINCE_RESIGN,
'test_board_name': 'prince-p2',
},
'prince-demo-user': {
'build_flavor': 'release',
'board_name': 'prince-p2',
'resign': ota_resign_step.PRINCE_RESIGN,
'test_board_name': 'prince-p2',
},
'prince-iot_cast-eng': {
'build_flavor':
'release',
'board_name':
'prince-p2',
'resign':
ota_resign_step.PRINCE_RESIGN,
'factory':
ota_resign_step.PRINCE_FACTORY,
'usbstick':
ota_resign_step.PRINCE_USBSTICK,
'factory_tool':
ota_resign_step.PRINCE_FACTORY_TOOL,
'test_board_name':
'prince-p2',
'partner_bucket': [
'cast-partner-marvell-internal',
'cast-partner-synaptics-internal',
],
'make_clean': True,
},
'prince-iot_cast-user': {
'build_flavor':
'release',
'board_name':
'prince-p2',
'resign':
ota_resign_step.PRINCE_RESIGN,
'test_board_name':
'prince-p2',
'partner_bucket': [
'cast-partner-marvell-internal',
'cast-partner-synaptics-internal',
],
'make_clean': True,
},
'prince-eng': {
'build_flavor':
'release',
'board_name':
'prince-p2',
'resign':
ota_resign_step.PRINCE_RESIGN,
'factory':
ota_resign_step.PRINCE_FACTORY,
'usbstick':
ota_resign_step.PRINCE_USBSTICK,
'factory_tool':
ota_resign_step.PRINCE_FACTORY_TOOL,
'test_board_name':
'prince-p2',
'partner_bucket': [
'cast-partner-marvell-internal',
'cast-partner-synaptics-internal',
],
},
'prince-user': {
'build_flavor':
'release',
'board_name':
'prince-p2',
'resign':
ota_resign_step.PRINCE_RESIGN,
'test_board_name':
'prince-p2',
'partner_bucket': [
'cast-partner-marvell-internal',
'cast-partner-synaptics-internal',
],
},
'salami-eng': {
'build_flavor':
'release',
'resign':
ota_resign_step.SALAMI_RESIGN,
'partner_bucket': [
'cast-partner-marvell-internal',
'cast-partner-synaptics-internal',
],
},
'salami-user': {
'build_flavor':
'release',
'resign':
ota_resign_step.SALAMI_RESIGN,
'partner_bucket': [
'cast-partner-marvell-internal',
'cast-partner-synaptics-internal',
],
},
'sirocco-eng': {
'build_flavor': 'release',
'resign': ota_resign_step.SIROCCO_RESIGN,
'factory': ota_resign_step.SIROCCO_FACTORY,
'usbstick': ota_resign_step.SIROCCO_USBSTICK,
'factory_tool': ota_resign_step.SIROCCO_FACTORY_TOOL,
'partner_bucket': ['cast-partner-qualcomm-internal'],
'skip_ota_tests': True,
},
'sirocco-user': {
'build_flavor': 'release',
'resign': ota_resign_step.SIROCCO_RESIGN,
'partner_bucket': ['cast-partner-qualcomm-internal'],
'skip_ota_tests': True,
},
'sirocco-partner-eng': {
'build_flavor': 'release',
'resign': ota_resign_step.SIROCCO_RESIGN,
'partner_bucket': ['cast-partner-qualcomm-internal'],
'branch_extra_params': {
'master': ['PARTNER_BUILD=true'],
},
'skip_ota_tests': True,
},
'spencer-eng': {
'build_flavor': 'release',
'resign': ota_resign_step.SPENCER_RESIGN,
'factory': ota_resign_step.SPENCER_FACTORY,
'usbstick': ota_resign_step.SPENCER_USBSTICK,
'factory_tool': ota_resign_step.SPENCER_FACTORY_TOOL,
'partner_bucket': ['cast-partner-amlogic-internal'],
'check_camera_targets': True,
'eng_build': True,
},
'spencer-skip_gncheck-eng': {
'build_name': 'spencer-eng',
'build_flavor': 'release',
'resign': ota_resign_step.SPENCER_RESIGN,
'factory': ota_resign_step.SPENCER_FACTORY,
'usbstick': ota_resign_step.SPENCER_USBSTICK,
'factory_tool': ota_resign_step.SPENCER_FACTORY_TOOL,
'partner_bucket': ['cast-partner-amlogic-internal'],
'check_camera_targets': True,
'eng_build': True,
'skip_gncheck': True,
'build_extra_params': ['ENABLE_GN_CHECK=1'],
},
'spencer-user': {
'build_flavor': 'release',
'resign': ota_resign_step.SPENCER_RESIGN,
'partner_bucket': ['cast-partner-amlogic-internal'],
'check_camera_targets': True,
},
'a049-eng': {
'build_flavor': 'release',
'resign': ota_resign_step.A049_RESIGN,
'factory': ota_resign_step.A049_FACTORY,
'usbstick': ota_resign_step.A049_USBSTICK,
'factory_tool': ota_resign_step.A049_FACTORY_TOOL,
'partner_bucket': ['cast-partner-amlogic-internal'],
'check_camera_targets': True,
'eng_build': True,
},
'a049-user': {
'build_flavor': 'release',
'resign': ota_resign_step.A049_RESIGN,
'partner_bucket': ['cast-partner-amlogic-internal'],
'check_camera_targets': True,
},
'sprinkles-eng': {
'build_flavor': 'release',
'board_name': 'sprinkles-korlan',
'max_ota_size': 43000000,
'resign': ota_resign_step.SPRINKLES_RESIGN,
'factory': ota_resign_step.SPRINKLES_FACTORY,
'usbstick': ota_resign_step.SPRINKLES_USBSTICK,
'factory_tool': ota_resign_step.SPRINKLES_FACTORY_TOOL,
'partner_bucket': ['cast-partner-amlogic-internal'],
},
'sprinkles-user': {
'build_flavor': 'release',
'resign': ota_resign_step.SPRINKLES_RESIGN,
'partner_bucket': ['cast-partner-amlogic-internal'],
},
'steak-eng': {
'build_flavor':
'release',
'resign':
ota_resign_step.STEAK_RESIGN,
'factory':
ota_resign_step.STEAK_FACTORY,
'usbstick':
ota_resign_step.STEAK_USBSTICK,
'partner_bucket': [
'cast-partner-marvell-internal',
'cast-partner-synaptics-internal',
],
},
'steak-user': {
'build_flavor':
'release',
'max_ota_size':
104000000,
'resign':
ota_resign_step.STEAK_RESIGN,
'partner_bucket': [
'cast-partner-marvell-internal',
'cast-partner-synaptics-internal',
],
},
'steak-yeti-eng': {
'build_flavor': 'release',
'resign': ota_resign_step.STEAK_RESIGN,
'factory': ota_resign_step.STEAK_FACTORY,
},
'steak-yeti-user': {
'build_flavor': 'release',
'resign': ota_resign_step.STEAK_RESIGN,
},
'tvdefault-eng': {
'build_flavor': 'release',
},
'tvdefault-user': {
'build_flavor': 'release',
},
'valens-iot_cast-eng': {
'build_flavor':
'release',
'board_name':
'valens-b1',
'max_ota_size':
155000000,
'resign':
ota_resign_step.VALENS_RESIGN,
'factory':
ota_resign_step.VALENS_FACTORY,
'unand':
ota_resign_step.VALENS_UNAND,
'usbstick':
ota_resign_step.VALENS_USBSTICK,
'test_board_name':
'valens-b1',
'partner_bucket': [
'cast-partner-marvell-internal',
'cast-partner-synaptics-internal',
],
'make_clean': True,
},
'valens-iot_cast-user': {
'build_flavor':
'release',
'board_name':
'valens-b1',
'max_ota_size':
130000000,
'resign':
ota_resign_step.VALENS_RESIGN,
'test_board_name':
'valens-b1',
'partner_bucket': [
'cast-partner-marvell-internal',
'cast-partner-synaptics-internal',
],
'make_clean': True,
},
'valens-eng': {
'build_flavor':
'release',
'board_name':
'valens-b1',
'max_ota_size':
155000000,
'resign':
ota_resign_step.VALENS_RESIGN,
'factory':
ota_resign_step.VALENS_FACTORY,
'unand':
ota_resign_step.VALENS_UNAND,
'usbstick':
ota_resign_step.VALENS_USBSTICK,
'test_board_name':
'valens-b1',
'partner_bucket': [
'cast-partner-marvell-internal',
'cast-partner-synaptics-internal',
],
},
'valens-modular_comms-eng': {
'build_flavor': 'release',
'board_name': 'valens-b1',
'max_ota_size': 155000000,
'resign': ota_resign_step.VALENS_RESIGN,
'test_board_name': 'valens-b1',
},
'valens-user': {
'build_flavor':
'release',
'board_name':
'valens-b1',
'max_ota_size':
130000000,
'resign':
ota_resign_step.VALENS_RESIGN,
'test_board_name':
'valens-b1',
'partner_bucket': [
'cast-partner-marvell-internal',
'cast-partner-synaptics-internal',
],
},
'vento-eng': {
'build_flavor':
'release',
'board_name':
'vento-b3',
'max_ota_size':
158000000,
'factory':
ota_resign_step.VENTO_FACTORY,
'unand':
ota_resign_step.VENTO_UNAND,
'resign':
ota_resign_step.VENTO_RESIGN,
'test_board_name':
'vento-b3',
'partner_bucket': [
'cast-partner-qca-wireless',
'cast-partner-synaptics-internal',
],
},
'vento-user': {
'build_flavor':
'release',
'board_name':
'vento-b3',
'max_ota_size':
133000000,
'resign':
ota_resign_step.VENTO_RESIGN,
'test_board_name':
'vento-b3',
'partner_bucket': [
'cast-partner-qca-wireless',
'cast-partner-synaptics-internal',
],
},
'venus-eng': {
'build_flavor': 'release',
'resign': ota_resign_step.VENUS_RESIGN,
'factory': ota_resign_step.VENUS_FACTORY,
'factory_tool': ota_resign_step.VENUS_FACTORY_TOOL,
'usbstick': ota_resign_step.VENUS_USBSTICK,
'partner_bucket': ['cast-partner-amlogic-internal'],
'check_camera_targets': True,
'eng_build': True,
},
'venus-skip_gncheck-eng': {
'build_name': 'venus-eng',
'build_flavor': 'release',
'resign': ota_resign_step.VENUS_RESIGN,
'factory': ota_resign_step.VENUS_FACTORY,
'factory_tool': ota_resign_step.VENUS_FACTORY_TOOL,
'usbstick': ota_resign_step.VENUS_USBSTICK,
'partner_bucket': ['cast-partner-amlogic-internal'],
'check_camera_targets': True,
'eng_build': True,
'skip_gncheck': True,
'build_extra_params': ['ENABLE_GN_CHECK=1'],
},
'venus-user': {
'build_flavor': 'release',
'resign': ota_resign_step.VENUS_RESIGN,
'partner_bucket': ['cast-partner-amlogic-internal'],
'check_camera_targets': True,
},
'bsv3-eng': {
'build_flavor': 'release',
'resign': ota_resign_step.BSV3_RESIGN,
'factory': ota_resign_step.BSV3_FACTORY,
'factory_tool': ota_resign_step.BSV3_FACTORY_TOOL,
'usbstick': ota_resign_step.BSV3_USBSTICK,
'partner_bucket': ['cast-partner-amlogic-internal'],
'check_camera_targets': True,
'eng_build': True,
},
'bsv3-user': {
'build_flavor': 'release',
'resign': ota_resign_step.BSV3_RESIGN,
'partner_bucket': ['cast-partner-amlogic-internal'],
'check_camera_targets': True,
},
'bla4-partner-eng': {
'build_flavor': 'release',
'build_extra_params': ['PARTNER_BUILD=true', 'CORE_DEV_BUILD=true'],
'resign': ota_resign_step.BLA4_RESIGN,
# make clean before build bla4 targets.
# It's because the toolchain is different from other products.
# Therefore, make clean to avoid using the same intermediate artifacts.
'partner_bucket': ['cast-partner-amlogic-internal'],
'skip_ota_tests': True,
},
'bla4-eng': {
'build_flavor': 'release',
'resign': ota_resign_step.BLA4_RESIGN,
'partner_bucket': ['cast-partner-amlogic-internal'],
},
'bla4-user': {
'build_flavor': 'release',
'resign': ota_resign_step.BLA4_RESIGN,
'partner_bucket': ['cast-partner-amlogic-internal'],
},
'2rs4-partner-eng': {
'build_flavor': 'release',
'build_extra_params': ['PARTNER_BUILD=true', 'CORE_DEV_BUILD=true'],
'resign': ota_resign_step._2RS4_RESIGN,
'partner_bucket': ['cast-partner-amlogic-internal'],
'skip_ota_tests': True,
},
'2rs4-eng': {
'build_flavor': 'release',
'resign': ota_resign_step._2RS4_RESIGN,
'partner_bucket': ['cast-partner-amlogic-internal'],
},
'2rs4-user': {
'build_flavor': 'release',
'resign': ota_resign_step._2RS4_RESIGN,
'partner_bucket': ['cast-partner-amlogic-internal'],
},
'xua4-partner-eng': {
'build_flavor': 'release',
'build_extra_params': ['PARTNER_BUILD=true', 'CORE_DEV_BUILD=true'],
'resign': ota_resign_step.XUA4_RESIGN,
'partner_bucket': ['cast-partner-amlogic-internal'],
'skip_ota_tests': True,
},
'xua4-eng': {
'build_flavor': 'release',
'resign': ota_resign_step.XUA4_RESIGN,
'partner_bucket': ['cast-partner-amlogic-internal'],
},
'xua4-user': {
'build_flavor': 'release',
'resign': ota_resign_step.XUA4_RESIGN,
'partner_bucket': ['cast-partner-amlogic-internal'],
},
'amlogic-bla4-partner-eng': {
'build_name': 'bla4-partner-eng',
'build_flavor': 'release',
'build_extra_params': ['PARTNER_BUILD=true', 'CORE_DEV_BUILD=true'],
# Disable build accelerator because
# JDM doesn't have the ability to enable RBE.
'enable_build_accelerator': False,
'resign': ota_resign_step.BLA4_RESIGN,
'skip_ota_tests': True,
'skip_gncheck': True,
},
'infineon-bla4-partner-eng': {
'build_name': 'bla4-partner-eng',
'build_flavor': 'release',
'build_extra_params': ['PARTNER_BUILD=true', 'CORE_DEV_BUILD=true'],
# Disable build accelerator because
# JDM doesn't have the ability to enable RBE.
'enable_build_accelerator': False,
'resign': ota_resign_step.BLA4_RESIGN,
'skip_ota_tests': True,
'skip_gncheck': True,
},
'sercomm-bla4-partner-eng': {
'build_name': 'bla4-partner-eng',
'build_flavor': 'release',
'build_extra_params': ['PARTNER_BUILD=true', 'CORE_DEV_BUILD=true'],
# Disable build accelerator because
# JDM doesn't have the ability to enable RBE.
'enable_build_accelerator': False,
'resign': ota_resign_step.BLA4_RESIGN,
'factory': ota_resign_step.BLA4_FACTORY,
'factory_extra_params': ['CORE_DEV_BUILD=true', 'FCT_DEVICE_DIR=vendor/sercomm/bla4', 'FCT_FILES_PATH=/home/sercomm/bin'],
'skip_ota_tests': True,
'skip_gncheck': True,
},
'amlogic-2rs4-partner-eng': {
'build_name': '2rs4-partner-eng',
'build_flavor': 'release',
'build_extra_params': ['PARTNER_BUILD=true', 'CORE_DEV_BUILD=true'],
# Disable build accelerator because
# JDM doesn't have the ability to enable RBE.
'enable_build_accelerator': False,
'resign': ota_resign_step._2RS4_RESIGN,
'skip_ota_tests': True,
'skip_gncheck': True,
},
'infineon-2rs4-partner-eng': {
'build_name': '2rs4-partner-eng',
'build_flavor': 'release',
'build_extra_params': ['PARTNER_BUILD=true', 'CORE_DEV_BUILD=true'],
# Disable build accelerator because
# JDM doesn't have the ability to enable RBE.
'enable_build_accelerator': False,
'resign': ota_resign_step._2RS4_RESIGN,
'skip_ota_tests': True,
'skip_gncheck': True,
},
'sercomm-2rs4-partner-eng': {
'build_name': '2rs4-partner-eng',
'build_flavor': 'release',
'build_extra_params': ['PARTNER_BUILD=true', 'CORE_DEV_BUILD=true'],
# Disable build accelerator because
# JDM doesn't have the ability to enable RBE.
'enable_build_accelerator': False,
'resign': ota_resign_step._2RS4_RESIGN,
'factory': ota_resign_step._2RS4_FACTORY,
'factory_extra_params': ['CORE_DEV_BUILD=true', 'FCT_DEVICE_DIR=vendor/sercomm/2rs4', 'FCT_FILES_PATH=/home/sercomm/bin'],
'skip_ota_tests': True,
'skip_gncheck': True,
},
'amlogic-xua4-partner-eng': {
'build_name': 'xua4-partner-eng',
'build_flavor': 'release',
'build_extra_params': ['PARTNER_BUILD=true', 'CORE_DEV_BUILD=true'],
# Disable build accelerator because
# JDM doesn't have the ability to enable RBE.
'enable_build_accelerator': False,
'resign': ota_resign_step.XUA4_RESIGN,
'skip_ota_tests': True,
'skip_gncheck': True,
},
'infineon-xua4-partner-eng': {
'build_name': 'xua4-partner-eng',
'build_flavor': 'release',
'build_extra_params': ['PARTNER_BUILD=true', 'CORE_DEV_BUILD=true'],
# Disable build accelerator because
# JDM doesn't have the ability to enable RBE.
'enable_build_accelerator': False,
'resign': ota_resign_step.XUA4_RESIGN,
'skip_ota_tests': True,
'skip_gncheck': True,
},
'sercomm-xua4-partner-eng': {
'build_name': 'xua4-partner-eng',
'build_flavor': 'release',
'build_extra_params': ['PARTNER_BUILD=true', 'CORE_DEV_BUILD=true'],
# Disable build accelerator because
# JDM doesn't have the ability to enable RBE.
'enable_build_accelerator': False,
'resign': ota_resign_step.XUA4_RESIGN,
'factory': ota_resign_step.XUA4_FACTORY,
'factory_extra_params': ['CORE_DEV_BUILD=true', 'FCT_DEVICE_DIR=vendor/sercomm/xua4', 'FCT_FILES_PATH=/home/sercomm/bin'],
'skip_ota_tests': True,
'skip_gncheck': True,
},
}
SKIP_OTA_TESTS_BRANCH = [
'1.55sfsi',
'1.57q',
]
for phoenix_schema_build in PHOENIX_SCHEMA_BUILDS:
BUILD_CONFIGS[phoenix_schema_build.replace('-', ota_step.GANETI_TAG)] = (
BUILD_CONFIGS[phoenix_schema_build])
# TODO(b/117437843) Remove prod after migtation completion
PARTNER_ARCHIVE_BUCKET_STAGING_BUCKET = {
'prod': 'cast-partner-staging',
'staging': 'cast-partner-staging',
'dev': 'cast-partner-dev',
}
PARTNER_BUILDS = {'audiodefault-eng'}
OSS_SUPPORT_MIN_BRANCH = '1.10'
OSS_SUPPORT_BUILDER_PREFIX_WHITELIST = 'combined-sdk-kernel-bootloader'
FACTORY_SUPPORT_MIN_BRANCH = '1.21'
FACTORY_TOOL_SUPPORT_MIN_BRANCH = '1.37'
CAMERA_TARGET_CHECK_MIN_BRANCH = '1.57'
USONIA_DAEMON_CHECK_MIN_BRANCH = '1.61'
THREAD_TELEMETRY_SERVICE_CROS_CHECK_MIN_BRANCH = '1.61'
def GetValidBuildNames():
return list(BUILD_CONFIGS.keys())
def CreateRecipe(build_name: str, **kwargs):
"""Builds a recipe object."""
return OtaRecipe(build_name, BUILD_CONFIGS[build_name], **kwargs)
class OtaRecipe(base_recipe.BaseRecipe):
"""Recipe to run an ota build."""
def __init__(self, build_name, build_config, **kwargs):
self._build_name = build_name
self._build_config = build_config
enable_build_accelerator = True
if 'enable_build_accelerator' in self._build_config:
enable_build_accelerator = \
self._build_config['enable_build_accelerator']
base_recipe.BaseRecipe.__init__(
self, enable_build_accelerator=enable_build_accelerator, **kwargs)
# Extracts default_properties from build config and adds it to the overall
# properties.
default_properties = build_config.get('default_properties', {})
self._step_kwargs['properties'] = dict(
list(default_properties.items()) +
list(self._step_kwargs.get('properties', {}).items()))
self._skip_landmine = self.build_system == 'catabuilder'
if self.build_system == 'catabuilder':
self._skip_gncheck = True
elif 'skip_gncheck' in self._build_config:
self._skip_gncheck = self._build_config['skip_gncheck']
else:
self._skip_gncheck = False
if 'make_clean' in self._build_config:
self._make_clean = self._build_config['make_clean']
if 'build_name' in self._build_config:
self._build_name = self._build_config['build_name']
def _oss_run_condition(self):
if self.build_system != 'catabuilder':
return False
if self._builds_usonia_daemon():
return False
if self._build_name.startswith(OSS_SUPPORT_BUILDER_PREFIX_WHITELIST):
return True
if not self._build_name.endswith('-user'):
return False
# Here we check whether the existing branch is > the
# OSS_SUPPORT_MIN_BRANCH which has support for OSS on the
# dev side. If there is non-dot-release branch or we are less
# than this supported branch, trivially return.
return (branch_utils.is_release_branch(self._manifest_branch) and
branch_utils.is_branch_equal_to_or_later_than(
self._manifest_branch, OSS_SUPPORT_MIN_BRANCH))
def _fct_run_condition(self):
if 'factory' not in self._build_config:
return False
return branch_utils.is_branch_equal_to_or_later_than(
self._manifest_branch, FACTORY_SUPPORT_MIN_BRANCH)
def _usbstick_run_condition(self):
if 'usbstick' not in self._build_config:
return False
return branch_utils.is_branch_equal_to_or_later_than(
self._manifest_branch, FACTORY_SUPPORT_MIN_BRANCH)
def _factory_tool_run_condition(self):
if 'factory_tool' not in self._build_config:
return False
return branch_utils.is_branch_equal_to_or_later_than(
self._manifest_branch, FACTORY_TOOL_SUPPORT_MIN_BRANCH)
def _ota_extra_params(self):
return self._build_config.get(
'build_extra_params', []
) + self._build_config.get('branch_extra_params', {}).get(
self._manifest_branch, []
)
def _fct_extra_params(self):
return self._build_config.get(
'factory_extra_params', []
)
def get_clean_steps(self):
"""Builds a list of all clean steps that should be executed by this recipe.
Returns:
List of slave.base_step.BaseStep commands to be executed.
"""
return [make_clean_step.MakeCleanStep(**self._step_kwargs)]
def _camera_target_check_condition(self):
return (self._build_config.get('check_camera_targets', False)
and branch_utils.is_branch_equal_to_or_later_than(
self._manifest_branch, CAMERA_TARGET_CHECK_MIN_BRANCH))
def _builds_usonia_daemon(self):
return (self._build_config.get('build_usonia_daemon', False)
and branch_utils.is_branch_equal_to_or_later_than(
self._manifest_branch, USONIA_DAEMON_CHECK_MIN_BRANCH))
def _builds_thread_telemetry_service_cros(self):
return (self._build_config.get(
'build_thread_telemetry_service_cros', False) and
branch_utils.is_branch_equal_to_or_later_than(
self._manifest_branch, USONIA_DAEMON_CHECK_MIN_BRANCH))
def get_steps(self):
steps = []
if not self._skip_landmine:
steps.append(landmine_step.LandmineStep(**self._step_kwargs))
if not self._skip_gncheck and not self._builds_usonia_daemon() \
and not self._builds_thread_telemetry_service_cros():
steps.append(
gn_check_step.GnCheckForOta(self._build_name, **self._step_kwargs))
board_name = self._build_config.get('board_name')
apply_dev_signing = self.build_system == 'catabuilder'
max_ota_size = self._build_config.get('max_ota_size')
target_name = self._build_config.get('target_name')
steps.append(
ota_step.OtaStep(
self._build_name,
board_name=board_name,
extra_params=self._ota_extra_params(),
fct_extra_params=self._fct_extra_params(),
halt_on_failure=True,
max_ota_size=max_ota_size,
target_name=target_name,
**self._step_kwargs))
if self._camera_target_check_condition():
product_name, variant = self._build_name.split('-')
is_eng_build = self._build_config.get('eng_build', False)
steps.append(
ota_step.OtaCameraTargetsStep(product_name, variant, is_eng_build,
**self._step_kwargs))
if self._builds_usonia_daemon():
steps.append(
ota_step.OtaUsoniaDaemonStep(self._build_name, **self._step_kwargs))
if self._builds_thread_telemetry_service_cros():
steps.append(
ota_step.ThreadTelemetryServiceCrosStep(
build_name=self._build_name, **self._step_kwargs))
if self.build_system == 'catabuilder':
steps.append(ota_step.OtaPropStep(**self._step_kwargs))
if self._oss_run_condition():
steps.append(
ota_oss_step.OtaOssStep(
self._build_name, halt_on_failure=True, **self._step_kwargs))
# factory_tools have their own makefiles for compiling
if self._factory_tool_run_condition():
steps.append(
ota_factory_tool_step.CompileFactoryToolStep(
self._build_name,
self._build_config.get('factory_tool', {}),
halt_on_failure=True,
**self._step_kwargs))
if self._fct_run_condition():
steps.append(
ota_fct_step.OtaFctCompileStep(
self._build_name,
self._build_config.get('factory', {}),
fct_extra_params=self._fct_extra_params(),
halt_on_failure=True,
**self._step_kwargs))
# Generation of image/board specific FCT images performed by the same
# resign script but from different intermediate source binaries
steps.extend(
ota_resign_step.get_resign_steps(
self._build_name,
resign_config=self._build_config.get('factory'),
build_branch=self._manifest_branch,
apply_dev_signing=apply_dev_signing,
halt_on_failure=True,
**self._step_kwargs))
steps.extend(
ota_resign_step.get_resign_steps(
self._build_name,
resign_config=self._build_config.get('unand'),
build_branch=self._manifest_branch,
apply_dev_signing=apply_dev_signing,
halt_on_failure=True,
**self._step_kwargs))
if self._usbstick_run_condition():
steps.append(
ota_fct_step.OtaFctCompileStep(
self._build_name,
self._build_config.get('usbstick', {}),
name='build usbstick images',
fct_extra_params=self._fct_extra_params(),
halt_on_failure=True,
**self._step_kwargs))
steps.extend(
ota_resign_step.get_resign_steps(
self._build_name,
resign_config=self._build_config.get('usbstick'),
build_branch=self._manifest_branch,
apply_dev_signing=apply_dev_signing,
halt_on_failure=True,
**self._step_kwargs))
steps.extend(
ota_resign_step.get_resign_steps(
self._build_name,
resign_config=self._build_config.get('resign'),
build_branch=self._manifest_branch,
apply_dev_signing=apply_dev_signing,
halt_on_failure=True,
**self._step_kwargs))
if ((not self._build_config.get('skip_ota_tests')) and
(self._manifest_branch not in SKIP_OTA_TESTS_BRANCH)):
test_board_name = self._build_config.get('test_board_name')
steps.extend([
ota_build_tests_step.OtaBuildTestsStep(
self._build_name,
board_name=test_board_name,
extra_params=self._ota_extra_params(),
halt_on_failure=True,
**self._step_kwargs),
host_tests_step.RunHostTestsStep(**self._step_kwargs),
ota_strip_binaries_step.OtaStripBinariesStep(
halt_on_failure=True, **self._step_kwargs),
])
# if this is a partner build, we need to do additional checks
if self._build_name in PARTNER_BUILDS:
build_flavor = self._build_config.get('build_flavor', 'release')
steps.append(
partner_build_check_step.PartnerBuildCheckStep(
self._build_name, build_flavor, **self._step_kwargs))
# TODO(b/118514002) remove once copy to partners service will be available
if self.build_system == 'catabuilder':
steps.extend(self._partner_upload_steps())
return steps
# TODO(b/118514002) remove once copy to partners service will be available
def _partner_upload_steps(self):
steps = []
gcs_path = self._get_partner_gcs_path()
gclient_out_path = '/tmp/{}_{}_gclient_out.json'.format(
self._build_name, self.build_number)
# TODO(b/117437843) Remove recipe_ check after migtation completion
for partner_bucket in self._build_config.get('partner_bucket', []):
build_env = self._properties.get('build_env', 'dev')
if build_env != 'prod' or self._build_name.startswith('recipe_'):
upload_bucket = PARTNER_ARCHIVE_BUCKET_STAGING_BUCKET[build_env]
upload_path = os.path.join(partner_bucket, gcs_path + '/')
else:
upload_bucket = partner_bucket
upload_path = gcs_path + '/'
# Upload gclient_out.json file
if os.path.isfile(gclient_out_path):
steps.append(
gcs_upload_step.GcsUploadStep(
upload_bucket,
upload_path,
name='gclient_out.json upload to {}'.format(partner_bucket),
src_path=gclient_out_path,
result_property='gcs_output_{}'.format(partner_bucket),
**self._step_kwargs))
steps.append(
gcs_upload_step.GcsUploadStep(
upload_bucket,
upload_path,
name='upload to {}'.format(partner_bucket),
result_property='gcs_output_{}'.format(partner_bucket),
**self._step_kwargs))
return steps
def _get_partner_gcs_path(self):
"""Construct the gcs relative path within a bucket for specified build."""
gcs_path = [
self._properties['repo_alias'],
self._properties['manifest_branch'],
self._properties['buildername'],
self._properties['buildset'],
]
return '/'.join(str(i) for i in gcs_path)