Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .ruby-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.4.5
2.5.1
6 changes: 0 additions & 6 deletions config/locales/en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -157,12 +157,6 @@ en:
start: 'Cleaning local Provisioning Profiles...'
delete: 'Delete %{path}'
finish: 'Finish cleaning local Provisionig Profiles'
analyze:
target_bundle_identifier:
prompt: |
Please input your app bundle identifier
Example: com.example.ios
ask: 'Enter your app bundle identifier: '
ios:
build:
error:
Expand Down
4 changes: 2 additions & 2 deletions deploygate.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,9 @@ POST_INSTALL_MESSAGE
spec.add_runtime_dependency 'sentry-raven', '~> 2.8'

# ios build
spec.add_runtime_dependency 'fastlane', '~> 2.115'
spec.add_runtime_dependency 'fastlane', '~> 2.148.1'

spec.add_development_dependency 'bundler', '~> 1.17'
spec.add_development_dependency 'bundler', '>= 2.1.4', '< 3.0'
spec.add_development_dependency 'rake', '~> 12.0'
spec.add_development_dependency 'rspec', '~> 3.5'
spec.add_development_dependency 'webmock', '~> 2.3'
Expand Down
13 changes: 6 additions & 7 deletions lib/deploygate/add_devices_server.rb
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
module DeployGate
class AddDevicesServer

def start(token, owner_name, bundle_id, distribution_key, args, options)
DeployGate::Xcode::MemberCenter.instance
def start(token, owner_name, bundle_id, distribution_key, member_center, args, options)
options.server = false

puts I18n.t('command_builder.add_devices.server.connecting')
Expand All @@ -15,7 +14,7 @@ def start(token, owner_name, bundle_id, distribution_key, args, options)
raise res[:message]
end

websocket_setup(server, bundle_id, push_token, action, args, options) do |socket|
websocket_setup(server, bundle_id, push_token, action, member_center, args, options) do |socket|
puts HighLine.color(I18n.t('command_builder.add_devices.server.start'), HighLine::GREEN)

Workers::PeriodicTimer.new(60) do
Expand All @@ -33,12 +32,12 @@ def start(token, owner_name, bundle_id, distribution_key, args, options)
end
end

def self.build(pool, bunlde_id, iphones, args, options)
def self.build(pool, bunlde_id, iphones, member_center, args, options)
iphones.reject! { |iphone| iphone['is_registered'] } # remove udids if already registered
devices = iphones.map do |iphone|
udid = iphone['udid']
device_name= iphone['device_name']
DeployGate::Xcode::MemberCenters::Device.new(udid, '', device_name)
DeployGate::Xcode::MemberCenters::Device.new(udid, '', device_name, member_center)
end
return if devices.empty?

Expand All @@ -53,7 +52,7 @@ def self.build(pool, bunlde_id, iphones, args, options)

private

def websocket_setup(server, bundle_id, push_token, target_action, args, options, &block)
def websocket_setup(server, bundle_id, push_token, target_action, member_center, args, options, &block)
socket = SocketIO::Client::Simple.connect server
socket.on :connect do
socket.emit :subscribe, push_token
Expand All @@ -72,7 +71,7 @@ def websocket_setup(server, bundle_id, push_token, target_action, args, options,
data = JSON.parse(push_data['data'])

iphones = data['iphones']
DeployGate::AddDevicesServer.build(pool, bundle_id, iphones, args, options)
DeployGate::AddDevicesServer.build(pool, bundle_id, iphones, member_center, args, options)
end
end
end
Expand Down
2 changes: 1 addition & 1 deletion lib/deploygate/command_builder.rb
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ def error_handling(command, error)
tags[:xcode_version] = version if version.present?

puts ''
puts error_report(error, version, dg_version)
puts error_report(error, dg_version, version)
if HighLine.agree(I18n.t('command_builder.error_handling.agree')) {|q| q.default = "y"}
tags = {
command: command,
Expand Down
45 changes: 20 additions & 25 deletions lib/deploygate/commands/add_devices.rb
Original file line number Diff line number Diff line change
Expand Up @@ -21,30 +21,35 @@ def run(args, options)
distribution_key = options.distribution_key
server = options.server

bundle_id = bundle_id(work_dir, options.configuration)
root_path = DeployGate::Xcode::Ios.project_root_path(work_dir)
workspaces = DeployGate::Xcode::Ios.find_workspaces(root_path)
analyze = DeployGate::Xcode::Analyze.new(workspaces, options.configuration)
bundle_id = analyze.target_bundle_identifier
developer_team = analyze.developer_team
member_center = DeployGate::Xcode::MemberCenter.new(developer_team)

if server
run_server(session, owner, bundle_id, distribution_key, args, options)
run_server(session, owner, bundle_id, distribution_key, member_center, args, options)
else
device_register(session, owner, udid, device_name, bundle_id, args, options)
device_register(session, owner, udid, device_name, bundle_id, member_center, args, options)
end
end

def run_server(session, owner, bundle_id, distribution_key, args, options)
DeployGate::AddDevicesServer.new().start(session.token, owner, bundle_id, distribution_key, args, options)
def run_server(session, owner, bundle_id, distribution_key, member_center, args, options)
DeployGate::AddDevicesServer.new().start(session.token, owner, bundle_id, distribution_key, member_center, args, options)
end

def device_register(session, owner, udid, device_name, bundle_id, args, options)
def device_register(session, owner, udid, device_name, bundle_id, member_center, args, options)
if udid.nil? && device_name.nil?
devices = fetch_devices(session.token, owner, bundle_id)
devices = fetch_devices(session.token, owner, bundle_id, member_center)
select_devices = select_devices(devices)
not_device if select_devices.empty?

register!(select_devices)
else
register_udid = udid || HighLine.ask(I18n.t('commands.add_devices.input_udid'))
register_device_name = device_name || HighLine.ask(I18n.t('commands.add_devices.input_device_name'))
device = DeployGate::Xcode::MemberCenters::Device.new(register_udid, '', register_device_name)
device = DeployGate::Xcode::MemberCenters::Device.new(register_udid, '', register_device_name, member_center)

puts device.to_s
if HighLine.agree(I18n.t('commands.add_devices.device_register_confirm')) {|q| q.default = "y"}
Expand All @@ -54,7 +59,7 @@ def device_register(session, owner, udid, device_name, bundle_id, args, options)
end
end

build!(bundle_id, args, options)
build!(bundle_id, member_center, args, options)
end

def register!(devices)
Expand All @@ -64,18 +69,18 @@ def register!(devices)
end
end

def build!(bundle_id, args, options)
app = DeployGate::Xcode::MemberCenters::App.new(bundle_id)
def build!(bundle_id, member_center, args, options)
app = DeployGate::Xcode::MemberCenters::App.new(bundle_id, member_center)
app.create! unless app.created?

DeployGate::Xcode::MemberCenters::ProvisioningProfile.new(bundle_id).create!
team = DeployGate::Xcode::MemberCenter.instance.team
DeployGate::Xcode::MemberCenters::ProvisioningProfile.new(bundle_id, member_center).create!
team = member_center.team
DeployGate::Xcode::Export.clean_provisioning_profiles(bundle_id, team)

DeployGate::Commands::Deploy::Build.run(args, options)
end

def fetch_devices(token, owner, bundle_id)
def fetch_devices(token, owner, bundle_id, member_center)
res = DeployGate::API::V1::Users::App.not_provisioned_udids(token, owner, bundle_id)
if res[:error]
case res[:message]
Expand All @@ -89,21 +94,11 @@ def fetch_devices(token, owner, bundle_id)
end

results = res[:results]
devices = results.map{|r| DeployGate::Xcode::MemberCenters::Device.new(r[:udid], r[:user_name], r[:device_name])}
devices = results.map{|r| DeployGate::Xcode::MemberCenters::Device.new(r[:udid], r[:user_name], r[:device_name], member_center)}

devices
end

# @param [String] work_dir
# @param [String] build_configuration
# @return [String]
def bundle_id(work_dir, build_configuration)
root_path = DeployGate::Xcode::Ios.project_root_path(work_dir)
workspaces = DeployGate::Xcode::Ios.find_workspaces(root_path)
analyze = DeployGate::Xcode::Analyze.new(workspaces, build_configuration)
analyze.target_bundle_identifier
end

# @param [Array]
# @return [Array]
def select_devices(devices)
Expand Down
42 changes: 11 additions & 31 deletions lib/deploygate/commands/deploy/build.rb
Original file line number Diff line number Diff line change
Expand Up @@ -38,44 +38,24 @@ def ios(workspaces, options)
analyze = DeployGate::Xcode::Analyze.new(workspaces, build_configuration, target_scheme)
target_scheme = analyze.scheme

# TODO: Support export method option (ex: --method adhoc)
codesigning_identity= nil
provisioning_style = analyze.provisioning_style
provisioning_profile_info = nil
if (!over_xcode?(8) && provisioning_style == nil) ||
provisioning_style == DeployGate::Xcode::Analyze::PROVISIONING_STYLE_MANUAL

# Only run Provisioning Style is Manual or nil
bundle_identifier = analyze.target_bundle_identifier
xcode_provisioning_profile_uuid = analyze.target_xcode_setting_provisioning_profile_uuid
provisioning_team = analyze.provisioning_team
target_provisioning_profile = DeployGate::Xcode::Export.provisioning_profile(
bundle_identifier,
xcode_provisioning_profile_uuid,
provisioning_team
)

method = DeployGate::Xcode::Export.method(target_provisioning_profile)
codesigning_identity = DeployGate::Xcode::Export.codesigning_identity(target_provisioning_profile)

profile = FastlaneCore::ProvisioningProfile.parse(target_provisioning_profile)
provisioning_profile_info = {
provisioningProfiles: {
"#{bundle_identifier}" => profile['Name']
}
}
else
method = select_method
code_sign_identity = nil
project_profile_info = nil
allow_provisioning_updates = true
if analyze.code_sign_style == Xcode::Analyze::PROVISIONING_STYLE_MANUAL
code_sign_identity = analyze.code_sign_identity
project_profile_info = analyze.project_profile_info
end

method = Xcode::Export.method(analyze.target_provisioning_profile) || select_method

ipa_path = DeployGate::Xcode::Ios.build(
analyze,
target_scheme,
codesigning_identity,
provisioning_profile_info,
code_sign_identity,
project_profile_info,
build_configuration,
method,
over_xcode?(9) && codesigning_identity.nil?
allow_provisioning_updates
)
Push.upload([ipa_path], options)
end
Expand Down
2 changes: 1 addition & 1 deletion lib/deploygate/version.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
module DeployGate
VERSION = '0.7.0'
VERSION = '0.8.0'
end
Loading