Support Xcode-managed codesigning and update build instructions

This commit is contained in:
Ali
2023-04-10 17:55:46 +04:00
parent cdc32a8910
commit a7eee63c54
16 changed files with 172 additions and 77 deletions

View File

@@ -12,14 +12,15 @@ import glob
from BuildEnvironment import resolve_executable, call_executable, run_executable_with_output, BuildEnvironment
from ProjectGeneration import generate
from BazelLocation import locate_bazel
from BuildConfiguration import CodesigningSource, GitCodesigningSource, DirectoryCodesigningSource, BuildConfiguration, build_configuration_from_json
from BuildConfiguration import CodesigningSource, GitCodesigningSource, DirectoryCodesigningSource, XcodeManagedCodesigningSource, BuildConfiguration, build_configuration_from_json
import RemoteBuild
import GenerateProfiles
class ResolvedCodesigningData:
def __init__(self, aps_environment):
def __init__(self, aps_environment, use_xcode_managed_codesigning):
self.aps_environment = aps_environment
self.use_xcode_managed_codesigning = use_xcode_managed_codesigning
class BazelCommandLine:
@@ -446,11 +447,9 @@ def resolve_codesigning(arguments, base_path, build_configuration, provisioning_
always_fetch=not arguments.gitCodesigningUseCurrent
)
elif arguments.codesigningInformationPath is not None:
profile_source = DirectoryCodesigningSource(
directory_path=arguments.codesigningInformationPath,
team_id=build_configuration.team_id,
bundle_id=build_configuration.bundle_id
)
profile_source = DirectoryCodesigningSource()
elif arguments.xcodeManagedCodesigning is not None and arguments.xcodeManagedCodesigning == True:
profile_source = XcodeManagedCodesigningSource()
elif arguments.noCodesigning is not None:
return ResolvedCodesigningData(aps_environment='production')
else:
@@ -467,7 +466,10 @@ def resolve_codesigning(arguments, base_path, build_configuration, provisioning_
profile_source.copy_profiles_to_destination(destination_path=additional_codesigning_output_path + '/profiles')
profile_source.copy_certificates_to_destination(destination_path=additional_codesigning_output_path + '/certs')
return ResolvedCodesigningData(aps_environment=profile_source.resolve_aps_environment())
return ResolvedCodesigningData(
aps_environment=profile_source.resolve_aps_environment(),
use_xcode_managed_codesigning=profile_source.use_xcode_managed_codesigning()
)
def resolve_configuration(base_path, bazel_command_line: BazelCommandLine, arguments, additional_codesigning_output_path):
@@ -499,7 +501,7 @@ def resolve_configuration(base_path, bazel_command_line: BazelCommandLine, argum
sys.exit(1)
if bazel_command_line is not None:
build_configuration.write_to_variables_file(bazel_path=bazel_command_line.bazel, aps_environment=codesigning_data.aps_environment, path=configuration_repository_path + '/variables.bzl')
build_configuration.write_to_variables_file(bazel_path=bazel_command_line.bazel, use_xcode_managed_codesigning=codesigning_data.use_xcode_managed_codesigning, aps_environment=codesigning_data.aps_environment, path=configuration_repository_path + '/variables.bzl')
provisioning_profile_files = []
for file_name in os.listdir(provisioning_path):
@@ -549,6 +551,8 @@ def generate_project(bazel, arguments):
disable_extensions = arguments.disableExtensions
if arguments.disableProvisioningProfiles is not None:
disable_provisioning_profiles = arguments.disableProvisioningProfiles
if arguments.xcodeManagedCodesigning is not None and arguments.xcodeManagedCodesigning == True:
disable_extensions = True
if arguments.generateDsym is not None:
generate_dsym = arguments.generateDsym
if arguments.target is not None:
@@ -688,12 +692,11 @@ def add_codesigning_common_arguments(current_parser: argparse.ArgumentParser):
metavar='command'
)
codesigning_group.add_argument(
'--noCodesigning',
type=bool,
'--xcodeManagedCodesigning',
action='store_true',
help='''
Use signing certificates and provisioning profiles from a local directory.
Let Xcode manage your certificates and provisioning profiles.
''',
metavar='command'
)
current_parser.add_argument(