fastlane-old / sigh Goto Github PK
View Code? Open in Web Editor NEWBecause you would rather spend your time building stuff than fighting provisioning
Home Page: https://fastlane.tools
Because you would rather spend your time building stuff than fighting provisioning
Home Page: https://fastlane.tools
Are there any plans for a Mac app store version of these tools? For the most part just changing the paths from /ios/ to /mac/ would do the trick. I just tried that on the Nomad Cupertino tools and got those to working with the Mac app store without too much trouble.
Crashes with the current stacktrace:
/usr/local/Cellar/ruby/2.2.0/lib/ruby/2.2.0/json/common.rb:155:in `initialize': no implicit conversion of nil into String (TypeError)
from /usr/local/Cellar/ruby/2.2.0/lib/ruby/2.2.0/json/common.rb:155:in `new'
from /usr/local/Cellar/ruby/2.2.0/lib/ruby/2.2.0/json/common.rb:155:in `parse'
from /usr/local/lib/ruby/gems/2.2.0/gems/sigh-0.2.1/lib/sigh/developer_center.rb:430:in `post_ajax'
from /usr/local/lib/ruby/gems/2.2.0/gems/sigh-0.2.1/lib/sigh/developer_center.rb:354:in `profile_details'
from /usr/local/lib/ruby/gems/2.2.0/gems/sigh-0.2.1/lib/sigh/developer_center.rb:212:in `block in maintain_app_certificate'
from /usr/local/lib/ruby/gems/2.2.0/gems/sigh-0.2.1/lib/sigh/developer_center.rb:199:in `each'
from /usr/local/lib/ruby/gems/2.2.0/gems/sigh-0.2.1/lib/sigh/developer_center.rb:199:in `maintain_app_certificate'
from /usr/local/lib/ruby/gems/2.2.0/gems/sigh-0.2.1/lib/sigh/developer_center.rb:238:in `maintain_app_certificate'
from /usr/local/lib/ruby/gems/2.2.0/gems/sigh-0.2.1/lib/sigh/developer_center.rb:171:in `run'
from /usr/local/lib/ruby/gems/2.2.0/gems/sigh-0.2.1/bin/sigh:46:in `block (2 levels) in run'
from /usr/local/lib/ruby/gems/2.2.0/gems/commander-4.2.1/lib/commander/command.rb:180:in `call'
from /usr/local/lib/ruby/gems/2.2.0/gems/commander-4.2.1/lib/commander/command.rb:180:in `call'
from /usr/local/lib/ruby/gems/2.2.0/gems/commander-4.2.1/lib/commander/command.rb:155:in `run'
from /usr/local/lib/ruby/gems/2.2.0/gems/commander-4.2.1/lib/commander/runner.rb:421:in `run_active_command'
from /usr/local/lib/ruby/gems/2.2.0/gems/commander-4.2.1/lib/commander/runner.rb:81:in `run!'
from /usr/local/lib/ruby/gems/2.2.0/gems/commander-4.2.1/lib/commander/delegates.rb:8:in `run!'
from /usr/local/lib/ruby/gems/2.2.0/gems/sigh-0.2.1/bin/sigh:61:in `run'
from /usr/local/lib/ruby/gems/2.2.0/gems/sigh-0.2.1/bin/sigh:81:in `<top (required)>'
from /usr/local/bin/sigh:23:in `load'
from /usr/local/bin/sigh:23:in `<main>'
This happens once about a hundred times. Not reproducable on the same app.
Continue good work. The project is fantastic.
There seems to be a bug when using the :force
option of sigh inside fastlane. Without :force
it works fine.
This Fastfile will trigger the issue:
lane :crashlytics do
cert
sigh :adhoc, :force
end
Console output:
Ivy:VLC Remote iOS lm$ fastlane crashlytics
INFO [2015-03-05 18:09:00.52]: Driving the lane 'crashlytics'
INFO [2015-03-05 18:09:00.52]: ------------------
INFO [2015-03-05 18:09:00.52]: --- Step: cert ---
INFO [2015-03-05 18:09:00.52]: ------------------
INFO [2015-03-05 18:09:03.76]: Login into iOS Developer Center
INFO [2015-03-05 18:09:15.28]: Login successful
INFO [2015-03-05 18:09:17.80]: Downloading URL: 'https://developer.apple.com/account/ios/certificate/certificateContentDownload.action?displayId=XXXXXXXXXX&type=XXXXXXXXXX'
INFO [2015-03-05 18:09:19.19]: Found the certificate XXXXXXXXXX-XXXXXXXXXX which is installed on the local machine. Using this one.
INFO [2015-03-05 18:09:19.62]: Use signing certificate 'XXXXXXXXXX' from now on!
INFO [2015-03-05 18:09:19.62]: ------------------
INFO [2015-03-05 18:09:19.62]: --- Step: sigh ---
INFO [2015-03-05 18:09:19.62]: ------------------
INFO [2015-03-05 18:09:20.26]: Login into iOS Developer Center
INFO [2015-03-05 18:09:21.77]: Fetching all available provisioning profiles...
INFO [2015-03-05 18:09:22.62]: Checking if profile is available. (4 profiles found)
INFO [2015-03-05 18:09:26.90]: Certificate ID 'XXXXXXXXXX' with name 'Luka Mirosevic' located
INFO [2015-03-05 18:09:26.90]: Renewing provisioning profile 'XXXXXXXXXX' using URL 'https://developer.apple.com/account/ios/profile/profileEdit.action?type=&provisioningProfileId=XXXXXXXXXX'
INFO [2015-03-05 18:09:27.27]: Using certificate ID 'XXXXXXXXXX' from 'Luka Mirosevic'
DEBUG [2015-03-05 18:09:50.90]: ["/Users/lm/.rvm/gems/ruby-2.1.4/gems/fastlane_core-0.2.1/lib/fastlane_core/developer_center/developer_center_helper.rb:63:in `wait_for_elements'", "/Users/lm/.rvm/gems/ruby-2.1.4/gems/sigh-1.3.5/lib/sigh/developer_center.rb:200:in `renew_profile'", "/Users/lm/.rvm/gems/ruby-2.1.4/gems/sigh-1.3.5/lib/sigh/developer_center.rb:67:in `block in maintain_app_certificate'", "/Users/lm/.rvm/gems/ruby-2.1.4/gems/sigh-1.3.5/lib/sigh/developer_center.rb:52:in `each'", "/Users/lm/.rvm/gems/ruby-2.1.4/gems/sigh-1.3.5/lib/sigh/developer_center.rb:52:in `maintain_app_certificate'", "/Users/lm/.rvm/gems/ruby-2.1.4/gems/sigh-1.3.5/lib/sigh/developer_center.rb:15:in `run'", "/Users/lm/.rvm/gems/ruby-2.1.4/gems/fastlane-0.1.15/lib/fastlane/actions/sigh.rb:24:in `run'", "/Users/lm/.rvm/gems/ruby-2.1.4/gems/fastlane-0.1.15/lib/fastlane/fast_file.rb:83:in `block (2 levels) in method_missing'", "/Users/lm/.rvm/gems/ruby-2.1.4/gems/fastlane-0.1.15/lib/fastlane/actions/actions_helper.rb:29:in `execute_action'", "/Users/lm/.rvm/gems/ruby-2.1.4/gems/fastlane-0.1.15/lib/fastlane/fast_file.rb:82:in `block in method_missing'", "/Users/lm/.rvm/gems/ruby-2.1.4/gems/fastlane-0.1.15/lib/fastlane/fast_file.rb:81:in `chdir'", "/Users/lm/.rvm/gems/ruby-2.1.4/gems/fastlane-0.1.15/lib/fastlane/fast_file.rb:81:in `method_missing'", "(eval):3:in `block (2 levels) in parse'", "/Users/lm/.rvm/gems/ruby-2.1.4/gems/fastlane-0.1.15/lib/fastlane/runner.rb:18:in `call'", "/Users/lm/.rvm/gems/ruby-2.1.4/gems/fastlane-0.1.15/lib/fastlane/runner.rb:18:in `block in execute'", "/Users/lm/.rvm/gems/ruby-2.1.4/gems/fastlane-0.1.15/lib/fastlane/runner.rb:12:in `chdir'", "/Users/lm/.rvm/gems/ruby-2.1.4/gems/fastlane-0.1.15/lib/fastlane/runner.rb:12:in `execute'", "/Users/lm/.rvm/gems/ruby-2.1.4/gems/fastlane-0.1.15/lib/fastlane/lane_manager.rb:29:in `block in cruise_lanes'", "/Users/lm/.rvm/gems/ruby-2.1.4/gems/fastlane-0.1.15/lib/fastlane/lane_manager.rb:28:in `each'", "/Users/lm/.rvm/gems/ruby-2.1.4/gems/fastlane-0.1.15/lib/fastlane/lane_manager.rb:28:in `cruise_lanes'", "/Users/lm/.rvm/gems/ruby-2.1.4/gems/fastlane-0.1.15/bin/fastlane:32:in `block (2 levels) in run'", "/Users/lm/.rvm/gems/ruby-2.1.4@global/gems/commander-4.3.0/lib/commander/command.rb:179:in `call'", "/Users/lm/.rvm/gems/ruby-2.1.4@global/gems/commander-4.3.0/lib/commander/command.rb:179:in `call'", "/Users/lm/.rvm/gems/ruby-2.1.4@global/gems/commander-4.3.0/lib/commander/command.rb:154:in `run'", "/Users/lm/.rvm/gems/ruby-2.1.4@global/gems/commander-4.3.0/lib/commander/runner.rb:421:in `run_active_command'", "/Users/lm/.rvm/gems/ruby-2.1.4@global/gems/commander-4.3.0/lib/commander/runner.rb:81:in `run!'", "/Users/lm/.rvm/gems/ruby-2.1.4@global/gems/commander-4.3.0/lib/commander/delegates.rb:15:in `run!'", "/Users/lm/.rvm/gems/ruby-2.1.4/gems/fastlane-0.1.15/bin/fastlane:60:in `run'", "/Users/lm/.rvm/gems/ruby-2.1.4/gems/fastlane-0.1.15/bin/fastlane:64:in `<top (required)>'", "/Users/lm/.rvm/gems/ruby-2.1.4/bin/fastlane:23:in `load'", "/Users/lm/.rvm/gems/ruby-2.1.4/bin/fastlane:23:in `<main>'", "/Users/lm/.rvm/gems/ruby-2.1.4/bin/ruby_executable_hooks:15:in `eval'", "/Users/lm/.rvm/gems/ruby-2.1.4/bin/ruby_executable_hooks:15:in `<main>'"]
INFO [2015-03-05 18:09:51.17]: Variable Dump:
INFO [2015-03-05 18:09:51.17]: {:ENVIRONMENT=>nil, :LANE_NAME=>:crashlytics, :CERT_FILE_PATH=>"/tmp/fastlane_core/XXXXXXXXXX-XXXXXXXXXX.cer", :CERT_CERTIFICATE_ID=>"XXXXXXXXXX"}
FATAL [2015-03-05 18:09:51.17]: Couldn't find '.row-details' after waiting for quite some time
FATAL [2015-03-05 18:09:51.17]: fastlane finished with errors
/Users/lm/.rvm/gems/ruby-2.1.4/gems/fastlane_core-0.2.1/lib/fastlane_core/developer_center/developer_center_helper.rb:54:in `wait_for': Couldn't find '.row-details' after waiting for quite some time (FastlaneCore::DeveloperCenter::DeveloperCenterGeneralError)
from /Users/lm/.rvm/gems/ruby-2.1.4/gems/fastlane_core-0.2.1/lib/fastlane_core/developer_center/developer_center_helper.rb:63:in `wait_for_elements'
from /Users/lm/.rvm/gems/ruby-2.1.4/gems/sigh-1.3.5/lib/sigh/developer_center.rb:200:in `renew_profile'
from /Users/lm/.rvm/gems/ruby-2.1.4/gems/sigh-1.3.5/lib/sigh/developer_center.rb:67:in `block in maintain_app_certificate'
from /Users/lm/.rvm/gems/ruby-2.1.4/gems/sigh-1.3.5/lib/sigh/developer_center.rb:52:in `each'
from /Users/lm/.rvm/gems/ruby-2.1.4/gems/sigh-1.3.5/lib/sigh/developer_center.rb:52:in `maintain_app_certificate'
from /Users/lm/.rvm/gems/ruby-2.1.4/gems/sigh-1.3.5/lib/sigh/developer_center.rb:15:in `run'
from /Users/lm/.rvm/gems/ruby-2.1.4/gems/fastlane-0.1.15/lib/fastlane/actions/sigh.rb:24:in `run'
from /Users/lm/.rvm/gems/ruby-2.1.4/gems/fastlane-0.1.15/lib/fastlane/fast_file.rb:83:in `block (2 levels) in method_missing'
from /Users/lm/.rvm/gems/ruby-2.1.4/gems/fastlane-0.1.15/lib/fastlane/actions/actions_helper.rb:29:in `execute_action'
from /Users/lm/.rvm/gems/ruby-2.1.4/gems/fastlane-0.1.15/lib/fastlane/fast_file.rb:82:in `block in method_missing'
from /Users/lm/.rvm/gems/ruby-2.1.4/gems/fastlane-0.1.15/lib/fastlane/fast_file.rb:81:in `chdir'
from /Users/lm/.rvm/gems/ruby-2.1.4/gems/fastlane-0.1.15/lib/fastlane/fast_file.rb:81:in `method_missing'
from (eval):3:in `block (2 levels) in parse'
from /Users/lm/.rvm/gems/ruby-2.1.4/gems/fastlane-0.1.15/lib/fastlane/runner.rb:18:in `call'
from /Users/lm/.rvm/gems/ruby-2.1.4/gems/fastlane-0.1.15/lib/fastlane/runner.rb:18:in `block in execute'
from /Users/lm/.rvm/gems/ruby-2.1.4/gems/fastlane-0.1.15/lib/fastlane/runner.rb:12:in `chdir'
from /Users/lm/.rvm/gems/ruby-2.1.4/gems/fastlane-0.1.15/lib/fastlane/runner.rb:12:in `execute'
from /Users/lm/.rvm/gems/ruby-2.1.4/gems/fastlane-0.1.15/lib/fastlane/lane_manager.rb:29:in `block in cruise_lanes'
from /Users/lm/.rvm/gems/ruby-2.1.4/gems/fastlane-0.1.15/lib/fastlane/lane_manager.rb:28:in `each'
from /Users/lm/.rvm/gems/ruby-2.1.4/gems/fastlane-0.1.15/lib/fastlane/lane_manager.rb:28:in `cruise_lanes'
from /Users/lm/.rvm/gems/ruby-2.1.4/gems/fastlane-0.1.15/bin/fastlane:32:in `block (2 levels) in run'
from /Users/lm/.rvm/gems/ruby-2.1.4@global/gems/commander-4.3.0/lib/commander/command.rb:179:in `call'
from /Users/lm/.rvm/gems/ruby-2.1.4@global/gems/commander-4.3.0/lib/commander/command.rb:179:in `call'
from /Users/lm/.rvm/gems/ruby-2.1.4@global/gems/commander-4.3.0/lib/commander/command.rb:154:in `run'
from /Users/lm/.rvm/gems/ruby-2.1.4@global/gems/commander-4.3.0/lib/commander/runner.rb:421:in `run_active_command'
from /Users/lm/.rvm/gems/ruby-2.1.4@global/gems/commander-4.3.0/lib/commander/runner.rb:81:in `run!'
from /Users/lm/.rvm/gems/ruby-2.1.4@global/gems/commander-4.3.0/lib/commander/delegates.rb:15:in `run!'
from /Users/lm/.rvm/gems/ruby-2.1.4/gems/fastlane-0.1.15/bin/fastlane:60:in `run'
from /Users/lm/.rvm/gems/ruby-2.1.4/gems/fastlane-0.1.15/bin/fastlane:64:in `<top (required)>'
from /Users/lm/.rvm/gems/ruby-2.1.4/bin/fastlane:23:in `load'
from /Users/lm/.rvm/gems/ruby-2.1.4/bin/fastlane:23:in `<main>'
from /Users/lm/.rvm/gems/ruby-2.1.4/bin/ruby_executable_hooks:15:in `eval'
from /Users/lm/.rvm/gems/ruby-2.1.4/bin/ruby_executable_hooks:15:in `<main>'
The -i
option does not work.
If I use --signing_identity
it does work.
Asks for id:
sigh resign -i "iPhone Distribution: Company Name" -p "some.mobileprovision" "ipaFileName.ipa"
Does not Ask for id:
sigh resign --signing_identity "iPhone Distribution: Company Name" --provisioning_profile "some.mobileprovision" "ipaFileName.ipa"
Hi,
I am getting following error while using "sigh" command.
sigh --development -c "Username"
Below is error log :
Login successful
INFO [2015-02-11 19:48:22.81]: Fetching all available provisioning profiles...
INFO [2015-02-11 19:48:24.84]: Checking if profile is available. (XX profiles found)
INFO [2015-02-11 19:49:10.73]: Certificate ID 'XXXXXXXX' with name 'Dev Name' located
INFO [2015-02-11 19:49:10.73]: Renewing provisioning profile 'XXXXXXXX' using URL 'https://developer.apple.com/account/ios/profile/profileEdit.action?type=&provisioningProfileId=XXXXXXX'
INFO [2015-02-11 19:49:11.24]: Using certificate ID 'XXXXXXXXX' from 'Dev Name'
INFO [2015-02-11 19:49:11.24]: Looking for certificate: { Certificate info goes here }. Found: #<Capybara::Result:0x007fdd7a84cba0>
The file /private/etc/Error1423664351.png does not exist.
/Library/Ruby/Gems/2.0.0/gems/sigh-0.3.2/lib/sigh/developer_center.rb:340:in `renew_profile': Could not find certificate in the list of available certificates. (RuntimeError)
from /Library/Ruby/Gems/2.0.0/gems/sigh-0.3.2/lib/sigh/developer_center.rb:217:in `block in maintain_app_certificate'
from /Library/Ruby/Gems/2.0.0/gems/sigh-0.3.2/lib/sigh/developer_center.rb:197:in `each'
from /Library/Ruby/Gems/2.0.0/gems/sigh-0.3.2/lib/sigh/developer_center.rb:197:in `maintain_app_certificate'
from /Library/Ruby/Gems/2.0.0/gems/sigh-0.3.2/lib/sigh/developer_center.rb:168:in `run'
from /Library/Ruby/Gems/2.0.0/gems/sigh-0.3.2/bin/sigh:52:in `block (2 levels) in run'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/command.rb:180:in `call'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/command.rb:180:in `call'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/command.rb:155:in `run'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/runner.rb:421:in `run_active_command'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/runner.rb:81:in `run!'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/delegates.rb:8:in `run!'
from /Library/Ruby/Gems/2.0.0/gems/sigh-0.3.2/bin/sigh:83:in `run'
from /Library/Ruby/Gems/2.0.0/gems/sigh-0.3.2/bin/sigh:103:in `<top (required)>'
from /usr/bin/sigh:23:in `load'
from /usr/bin/sigh:23:in `<main>'
Is that a way to choose which certificate is used in renewing the provisioning profile?
Sometimes the certificate is downloaded as https://gist.github.com/anonymous/7ac7392a9bbfbb8c895b
Looks like you download an html page instead.
Similiar issue in PEM: fastlane-old/pem#11
I need to run sigh via sudo.
I can pass the username to sigh by the -u option.
How do I pass the password to the sigh command?
I tried putting it in environment var DELIVER_PASSWORD but I stil get a password prompt....
Any tips?
During installation of fastlane a dependency error occurred caused by a new commander version (4.3.0) specified in sigh's gemspec. Please, change commander version in other fastlane components (produce, pem, fameit, etc) or fallback to previous version of commander in sigh's gemspec. Thank you.
Our iOS team portal is split on two teams and each has their own Certificate to release to AppStore.
It would be nice for sigh
to be able to differ, which certificate to choose when generating a profile instead of the first one.
If I resign an app from ADHOC
profile (which does not contain the beta-reports-active
) to APPSTORE
profile (which does contain the beta-reports-active
) flag, the entitlement info embedded in the application binary does not end up containing beta-reports-active
flag, even of the resigned embedded.mobileprovision
file does contain the flag. It seems that sigh
needs to update this flag in the binary as part of the process otherwise resigned apps won't be eligible for Apple's TestFlight beta testing.
Hello! Congrats for the tool!
I have a problem trying to download a Wildcard Provisioning Profile.
How can I specify the APP_ID if the provisioning profile is WILDCARD(*)?
Thanks ๐
This is an edge case scenario but something that could happen.
If a user tries to generate provisioning profiles with an account that needs to be renewed.
Doesn't matter if the user is on single or multiple teams because this will happen after team selection (if any) and right now it will crash with a credentials error
.
Don't know if this is something worth to code and instead throw another type of exception, output to the user that they need to renew or simply leave it as it is since is not that important.
Running sigh --help
says that the username can be set by SIGH_USERNAME
. However if I try to set that, it's ignored.
$ DELIVER_USER="" SIGH_USERNAME="juanperex" sigh
INFO [2015-03-09 10:50:22.35]: Login into iOS Developer Center
No username or password given. You can set environment variables:
DELIVER_USER, DELIVER_PASSWORD
It's not clear from the documentation, and am looking for a way to verify that a command ran successfully.
Is it being installed in ~/Library/MobileDevices/Provisioning Profiles
? What's the logic for deciding on the filename?
Thanks for an awesome product!
When renewing an existing provisioning profile, if the flag is set, all devices should be added. Otherwise, the current devices should be left as is. This would be very helpful when adding a new device to the portal and having to update all Ad Hoc profiles.
Since sigh adds all devices when a new profile is created, the current workaround is to delete the profiles and recreate them, but that changes the name (which is not a big deal).
In my opinion, if the -force
flag is set, that's the only time this new flag should be considered when renewing a profile (because if -force is not set, then the profile is not touched, just downloaded, right?)
After upgrading from 0.3.5 to 0.4.1, if a new provisioning profile needed to be made, the process would stop with a prompt asking for "the name of the generated certificate file" which would then become the name of the provisioning file (and as this is on an unattended build server, this prevents the build from completing). This behavior happened whether the -f flag was set and/or cert was previously run. I backed sigh to 0.3.5 and the behavior went away ... so is this a defect or change in how sigh must be configured?
INFO [2015-03-07 10:21:08.95]: Could not find existing profile. Trying to create a new one.
INFO [2015-03-07 10:21:08.95]: Creating new profile for app 'com.app.name' for type 'AppStore'.
INFO [2015-03-07 10:21:13.64]: Using certificates: ["CompanyName (SDFGSDFH)"]
The name of the generated certificate file:
I belong to different teams in the dev portal. As part of my automated process right now I have to set SIGH_TEAM_ID
before calling sigh and unset it after. It would make it easier if I can just construct the command line parameters with a new parameter for the Team ID.
Similar crash fastlane-old/pem#13
INFO [2014-12-02 13:33:04.43]: Login into iOS Developer Center
INFO [2014-12-02 13:33:17.48]: Login successful
INFO [2014-12-02 13:33:18.34]: Fetching all available provisioning profiles...
INFO [2014-12-02 13:33:19.30]: Checking if profile is available. (73 profiles found)
INFO [2014-12-02 13:33:22.26]: Downloading profile...
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/open-uri.rb:223:in `open_loop': redirection forbidden: https://developer.apple.com/account/ios/profile/profileContentDownload.action?displayId=SPMF4U75DG -> http://developer.apple.com/account/selectTeam.action (RuntimeError)
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/open-uri.rb:149:in `open_uri'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/open-uri.rb:689:in `open'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/open-uri.rb:34:in `open'
from /Library/Ruby/Gems/2.0.0/gems/sigh-0.1.1/lib/sigh/developer_center.rb:363:in `download_file'
from /Library/Ruby/Gems/2.0.0/gems/sigh-0.1.1/lib/sigh/developer_center.rb:290:in `download_profile'
from /Library/Ruby/Gems/2.0.0/gems/sigh-0.1.1/lib/sigh/developer_center.rb:188:in `block in maintain_app_certificate'
from /Library/Ruby/Gems/2.0.0/gems/sigh-0.1.1/lib/sigh/developer_center.rb:172:in `each'
from /Library/Ruby/Gems/2.0.0/gems/sigh-0.1.1/lib/sigh/developer_center.rb:172:in `maintain_app_certificate'
from /Library/Ruby/Gems/2.0.0/gems/sigh-0.1.1/lib/sigh/developer_center.rb:146:in `run'
from /Library/Ruby/Gems/2.0.0/gems/sigh-0.1.1/bin/sigh:45:in `block (2 levels) in <top (required)>'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.0/lib/commander/command.rb:180:in `call'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.0/lib/commander/command.rb:180:in `call'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.0/lib/commander/command.rb:155:in `run'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.0/lib/commander/runner.rb:421:in `run_active_command'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.0/lib/commander/runner.rb:81:in `run!'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.0/lib/commander/delegates.rb:8:in `run!'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.0/lib/commander/import.rb:10:in `block in <top (required)>'
Similar to fastlane-old/pem#10
-o /path
While running sign on an app that has 2 extensions (one traditional, one Watchkit), I noticed that it only downloaded the dev / adhoc / store profile for the parent application. I'd expect sigh would download the profiles for all targets.
This tool looks very promising - thanks for putting it out here.
I'm curious about the workflow of using this tool from within multiple projects on a Jenkins server.
Form the perspective of downloading updated AdHoc provisioning profiles during the build phase, I'd like the ability to have a step in my project's Rakefile
that can be used to call sigh
and update provisioning profiles.
Thanks,
Hey some other gems that interact with portal allow you to specify team or even list teams if you don't supply one you then choose and it remembers.
Any support to add this ? I'm adding this to a tool I am using :) I would love to show you very soon.
When the developer account has a lot of profiles (250+) the process of generating a new profiles takes increasingly a lot of time.
4 minutes for 250+ profiles on the page.
Most time consuming parts are when the logs are displayed:
Checking if profile is available. (260 profiles found)
This is done twice, before generation and after generation if the generation was successful.
It would be a good optimization opportunity
Would be interesting if we could get sigh to suggest possible bundle identifiers based on the current directory.
Typically I'm in a project folder that I'd like to run sigh against. I understand it can be difficult to pick the right bundle id if there are multiple...
thoughts?
Playing around with some commands to get bundle id's here:
.plist
files with a bundle identifiergrep -l -r -i --include \*.plist --exclude-dir \*.framework CFBundleIdentifier .
/usr/libexec/PlistBuddy -c "Print CFBundleIdentifier"
grep -l -r -i --include \*.plist --exclude-dir \*.framework CFBundleIdentifier . | xargs /usr/libexec/PlistBuddy -c "Print CFBundleIdentifier"
Hello
first of all thanks for making our lives a lot easier with your tools.All of them.
Quick question. I tried to run the command below to get an App-Store provisioning profile but it failed.
sigh -a com.company.appname
The error is below:
i also get a screenshot saying: an unspecified error occured.Please refresh and try again
INFO [2015-02-17 10:56:52.35]: Login successful
INFO [2015-02-17 10:56:52.36]: Fetching all available provisioning profiles...
INFO [2015-02-17 10:56:53.31]: Checking if profile is available. (5 profiles found)
INFO [2015-02-17 10:56:53.31]: Could not find existing profile. Trying to create a new one.
INFO [2015-02-17 10:56:53.31]: Creating new profile for app 'com.company.appname' for type 'AppStore'.
/Library/Ruby/Gems/2.0.0/gems/poltergeist-1.5.1/lib/capybara/poltergeist/node.rb:23:in `rescue in command': Firing a click at co-ordinates [737, 641] failed. Poltergeist detected another element with CSS selector 'html body.developer-portal div.ui-widget-overlay' at this position. It may be overlapping the element you are trying to interact with. If you don't care about overlapping elements, try using node.trigger('click'). (Capybara::Poltergeist::MouseEventFailed)
from /Library/Ruby/Gems/2.0.0/gems/poltergeist-1.5.1/lib/capybara/poltergeist/node.rb:17:in `command'
from /Library/Ruby/Gems/2.0.0/gems/poltergeist-1.5.1/lib/capybara/poltergeist/node.rb:108:in `click'
from /Library/Ruby/Gems/2.0.0/gems/capybara-2.4.4/lib/capybara/node/element.rb:133:in `block in click'
from /Library/Ruby/Gems/2.0.0/gems/capybara-2.4.4/lib/capybara/node/base.rb:84:in `synchronize'
from /Library/Ruby/Gems/2.0.0/gems/capybara-2.4.4/lib/capybara/node/element.rb:133:in `click'
from /Library/Ruby/Gems/2.0.0/gems/sigh-0.3.2/lib/sigh/developer_center.rb:465:in `click_next'
from /Library/Ruby/Gems/2.0.0/gems/sigh-0.3.2/lib/sigh/developer_center.rb:273:in `create_profile'
from /Library/Ruby/Gems/2.0.0/gems/sigh-0.3.2/lib/sigh/developer_center.rb:227:in `maintain_app_certificate'
from /Library/Ruby/Gems/2.0.0/gems/sigh-0.3.2/lib/sigh/developer_center.rb:168:in `run'
from /Library/Ruby/Gems/2.0.0/gems/sigh-0.3.2/bin/sigh:52:in `block (2 levels) in run'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.3.0/lib/commander/command.rb:179:in `call'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.3.0/lib/commander/command.rb:179:in `call'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.3.0/lib/commander/command.rb:154:in `run'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.3.0/lib/commander/runner.rb:421:in `run_active_command'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.3.0/lib/commander/runner.rb:81:in `run!'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.3.0/lib/commander/delegates.rb:15:in `run!'
from /Library/Ruby/Gems/2.0.0/gems/sigh-0.3.2/bin/sigh:83:in `run'
from /Library/Ruby/Gems/2.0.0/gems/sigh-0.3.2/bin/sigh:103:in `<top (required)>'
from /usr/bin/sigh:23:in `load'
from /usr/bin/sigh:23:in `<main>'
when team_id is set in Appfile. Sigh version is sigh-0.4.5.
I am trying to sign my ipa with a distribution certificate and an inHouse profile. The signing identity is stored in the keychain. The provisioning profile is lying in the file system.
I am passing both values to the command, but it always wants me to select a signing identity from the keychain... See yourself:
sigh resign app.ipa -i "iPhone Distribution: XXX GmbH" -p App_Enterprise.mobileprovision
ERROR [2015-03-19 21:33:13.67]: Couldn't find signing identity ''.
INFO [2015-03-19 21:33:13.94]: Available identities:
iPhone Distribution: XXX GmbH
iPhone Developer: John Doe (6SDSEWS28E)
iPhone Developer: John Doe (4K3TGWSK5D)
Signing Identity:
The command doesn't seem to pick up the argument correctly:
Couldn't find signing identity ''
Any idea? Thanks in advance.
Right now the app doesn't take into consideration if a user is on multiple teams.
Haven't tried it myself just yet but I'm assuming app would hang(?).
Edit: I just tried and can confirm that the app hangs waiting for the profiles gridlist and then throws a timeout
I have a question related to certificates and profiles. I have two iPhone developer programs, an enterprise account and a company account. There are different profiles and certs for each. My question is how do you handle installing the appropriate certificates for signing? Or is this out of scope and I would need to manually install the certs and private keys to the box doing the build?
You already support AppStore, AdHoc, Development, In-House was left out :(
When running sigh within a fastlane lane, I get the error in the below traceback. I'm using the most recent versions of fastlane, sigh, and deliver.
INFO [2015-02-04 19:28:04.95]: Step: sigh
INFO [2015-02-04 19:28:10.43]: Login into iOS Developer Center
INFO [2015-02-04 19:28:20.15]: Login successful
INFO [2015-02-04 19:28:20.15]: Variable Dump:
INFO [2015-02-04 19:28:20.15]: {:LANE_NAME=>:beta, :START_TIME=>2015-02-04 19:28:01 -0500, :BUILD_NUMBER=>78}
FATAL [2015-02-04 19:28:20.15]: wrong number of arguments (2 for 4..5)
FATAL [2015-02-04 19:28:20.15]: fastlane finished with errors
/usr/local/lib/ruby/gems/2.2.0/gems/sigh-0.2.3/lib/sigh/developer_center.rb:172:in run': wrong number of arguments (2 for 4..5) (ArgumentError) from /usr/local/lib/ruby/gems/2.2.0/gems/fastlane-0.1.7/lib/fastlane/actions/sigh.rb:21:in
run'
from /usr/local/lib/ruby/gems/2.2.0/gems/fastlane-0.1.7/lib/fastlane/fast_file.rb:81:in block (2 levels) in method_missing' from /usr/local/lib/ruby/gems/2.2.0/gems/fastlane-0.1.7/lib/fastlane/actions/actions_helper.rb:29:in
execute_action'
from /usr/local/lib/ruby/gems/2.2.0/gems/fastlane-0.1.7/lib/fastlane/fast_file.rb:80:in block in method_missing' from /usr/local/lib/ruby/gems/2.2.0/gems/fastlane-0.1.7/lib/fastlane/fast_file.rb:79:in
chdir'
from /usr/local/lib/ruby/gems/2.2.0/gems/fastlane-0.1.7/lib/fastlane/fast_file.rb:79:in method_missing' from (eval):24:in
block (2 levels) in parse'
from /usr/local/lib/ruby/gems/2.2.0/gems/fastlane-0.1.7/lib/fastlane/runner.rb:18:in call' from /usr/local/lib/ruby/gems/2.2.0/gems/fastlane-0.1.7/lib/fastlane/runner.rb:18:in
block in execute'
from /usr/local/lib/ruby/gems/2.2.0/gems/fastlane-0.1.7/lib/fastlane/runner.rb:12:in chdir' from /usr/local/lib/ruby/gems/2.2.0/gems/fastlane-0.1.7/lib/fastlane/runner.rb:12:in
execute'
from /usr/local/lib/ruby/gems/2.2.0/gems/fastlane-0.1.7/lib/fastlane/lane_manager.rb:15:in block in cruise_lanes' from /usr/local/lib/ruby/gems/2.2.0/gems/fastlane-0.1.7/lib/fastlane/lane_manager.rb:14:in
each'
from /usr/local/lib/ruby/gems/2.2.0/gems/fastlane-0.1.7/lib/fastlane/lane_manager.rb:14:in cruise_lanes' from /usr/local/lib/ruby/gems/2.2.0/gems/fastlane-0.1.7/bin/fastlane:31:in
block (2 levels) in run'
from /usr/local/lib/ruby/gems/2.2.0/gems/commander-4.2.1/lib/commander/command.rb:180:in call' from /usr/local/lib/ruby/gems/2.2.0/gems/commander-4.2.1/lib/commander/command.rb:180:in
call'
from /usr/local/lib/ruby/gems/2.2.0/gems/commander-4.2.1/lib/commander/command.rb:155:in run' from /usr/local/lib/ruby/gems/2.2.0/gems/commander-4.2.1/lib/commander/runner.rb:421:in
run_active_command'
from /usr/local/lib/ruby/gems/2.2.0/gems/commander-4.2.1/lib/commander/runner.rb:81:in run!' from /usr/local/lib/ruby/gems/2.2.0/gems/commander-4.2.1/lib/commander/delegates.rb:8:in
run!'
from /usr/local/lib/ruby/gems/2.2.0/gems/fastlane-0.1.7/bin/fastlane:59:in run' from /usr/local/lib/ruby/gems/2.2.0/gems/fastlane-0.1.7/bin/fastlane:63:in
<top (required)>'
from /usr/local/bin/fastlane:23:in load' from /usr/local/bin/fastlane:23:in
Hi, I'm trying to use sign with Travis CI, I successfully download the provisioning profile but my build get stuck on:
INFO [2015-01-20 17:14:39.30]: Successfully downloaded provisioning profile
before install script:
brew update && brew install phantomjs # sigh dependecy
sudo gem install sigh
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
sigh -a 'com.mobile.CompanyName.*' --adhoc -o ~/Library/MobileDevice/Provisioning\ Profiles/
Will there be a tool to generate App Ids?
It seems that setting SIGH_TEAM_ID on a multiple-team account is not working. It is just showing a screenshot of team choosing page. Without SIGH_TEAM_ID set it asks to choose a team from a list normally.
Yesterday I did a successful test of sigh. It renewed a provisioning profile for me.
Today I wanted to experiment a bit further so I could integrate sigh into our CI process wo we always would have a provisioning profile with the max lifetime.
However, after running the command below, it's only downloading the profile. It's not renewing before download. What am I doing wrong?
sigh renew -a com.organisation.app -u [email protected]
If I want to do a full, clean refresh of all the profiles, it seems like I have to enter in the command 3 times, once with each of the flag configurations (ad hoc, development, and none). It would be nice to download them all at once, e.g. by allowing multiple flags ("--adhoc --development") or an --all flag.
Also, I have 2 ad hoc provisioning profiles, and it only downloads one of them. It would be nice for it to download all ad hoc provisioning profiles.
I've updated the gem and my builds stopped working . I had to downgrade it to run everything smoothly again.
/Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.6/lib/fastlane/actions/sigh.rb:12:in run': uninitialized constant Sigh::DeveloperCenter (NameError) from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.6/lib/fastlane/fast_file.rb:81:in
block (2 levels) in method_missing'
from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.6/lib/fastlane/actions/actions_helper.rb:28:in execute_action' from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.6/lib/fastlane/fast_file.rb:80:in
block in method_missing'
from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.6/lib/fastlane/fast_file.rb:79:in chdir' from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.6/lib/fastlane/fast_file.rb:79:in
method_missing'
from (eval):11:in block (2 levels) in parse' from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.6/lib/fastlane/runner.rb:17:in
call'
from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.6/lib/fastlane/runner.rb:17:in block in execute' from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.6/lib/fastlane/runner.rb:11:in
chdir'
from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.6/lib/fastlane/runner.rb:11:in execute' from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.6/lib/fastlane/lane_manager.rb:15:in
block in cruise_lanes'
from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.6/lib/fastlane/lane_manager.rb:14:in each' from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.6/lib/fastlane/lane_manager.rb:14:in
cruise_lanes'
from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.6/bin/fastlane:31:in block (2 levels) in run' from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/command.rb:180:in
call'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/command.rb:180:in call' from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/command.rb:155:in
run'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/runner.rb:421:in run_active_command' from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/runner.rb:81:in
run!'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/delegates.rb:8:in run!' from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.6/bin/fastlane:59:in
run'
from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.6/bin/fastlane:63:in <top (required)>' from /usr/bin/fastlane:23:in
load'
from /usr/bin/fastlane:23:in `
When the iPhone Configuration Utility app is installed, using the open
command to install provisioning profiles on a CI node (e.g. Jenkins) a prompt comes up requiring user interaction. This is obviously an issue for a CI machine.
I recommend that sigh install provisioning profiles the same way Xcode does, in "/Library/MobileDevice/Provisioning Profiles" by UUID (e.g."/Library/MobileDevice/Provisioning Profiles ef3d7190-5839-4429-ad81-c82cf90e444a.mobileprovision").
The UUID can be retrieved using PlistBuddy
. More useful info, here: http://stackoverflow.com/a/11167851/1765753
Even more info: http://stackoverflow.com/questions/10398456/can-an-xcode-mobileprovision-file-be-installed-from-the-command-line
Sigh is very cool.
Do you have this working as part of an automated Build/CI process?
Whenever I run the sigh command in a terminal while I'm logged in, I get a popup alert from iPhone Configuration Utility saying "Add to Library?..." where I have to click OK to finish the installation of the provisioning profile.
When this is done as part of a Team City build running under a Launch Daemon (which I believe is running as root), I get this message in the output that "You have to install phantomjs to use sigh". If I set it to run with my user profile I'm afraid I'd just get that same popup blocking progress when no one is around to click OK.
INFO [2014-11-26 07:48:50.45]: Login successful
INFO [2014-11-26 07:48:50.79]: Fetching all available provisioning profiles...
INFO [2014-11-26 07:48:50.93]: Checking if profile is available. (24 profiles found)
INFO [2014-11-26 07:48:51.39]: Could not find existing profile. Trying to create a new one.
INFO [2014-11-26 07:48:51.39]: Creating new profile for app 'com.pyspuc.masi' for type 'AdHoc'.
/Library/Ruby/Gems/2.0.0/gems/sigh-0.1.0/lib/sigh/developer_center.rb:197:in create_profile': undefined method
select_option' for nil:NilClass (NoMethodError)
from /Library/Ruby/Gems/2.0.0/gems/sigh-0.1.0/lib/sigh/developer_center.rb:169:in maintain_app_certificate' from /Library/Ruby/Gems/2.0.0/gems/sigh-0.1.0/lib/sigh/developer_center.rb:115:in
run'
from /Library/Ruby/Gems/2.0.0/gems/sigh-0.1.0/bin/sigh:45:in block (2 levels) in <top (required)>' from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/command.rb:180:in
call'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/command.rb:180:in call' from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/command.rb:155:in
run'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/runner.rb:421:in run_active_command' from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/runner.rb:81:in
run!'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/delegates.rb:8:in run!' from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/import.rb:10:in
block in <top (required)>'
Could your add an option to set the name of generated profile. Not just the name of certificate file, but the name of profile itself. I want to see something like this in Xcode and DevCenter:
Instead of "com.myCompany.MyApp AdHoc"
Hi,
you used the command line option -a twice , is this a bug or a feature? :-)
-a, --adhoc Setting this flag will generate AdHoc profiles instead of App Store Profiles (SIGH_AD_HOC)
-a, --app_identifier STRING The bundle identifier of your app (SIGH_APP_IDENTIFIER)
best regards
As requested, I am opening a new request on this.
Please add the ability to repair/renew/download all profiles at once.
I have 280 profiles, half created by Xcode automatically. It would be nice to repair all the ones invalid/expired.
Thanks
I have phantomjs 2.0.0, is sigh compatible with that?
/Library/Ruby/Gems/2.0.0/gems/cliver-0.3.2/lib/cliver/dependency.rb:151:in `raise_version_mismatch!': Could not find an executable 'phantomjs' that matched the requirements '~> 1.8', '>= 1.8.1'. Found versions were {"/usr/local/bin/phantomjs"=>"2.0.0"}. (Cliver::Dependency::VersionMismatch)
from /Library/Ruby/Gems/2.0.0/gems/cliver-0.3.2/lib/cliver/dependency.rb:117:in `detect!'
from /Library/Ruby/Gems/2.0.0/gems/cliver-0.3.2/lib/cliver.rb:24:in `detect!'
from /Library/Ruby/Gems/2.0.0/gems/poltergeist-1.5.1/lib/capybara/poltergeist/client.rb:36:in `initialize'
from /Library/Ruby/Gems/2.0.0/gems/poltergeist-1.5.1/lib/capybara/poltergeist/client.rb:14:in `new'
from /Library/Ruby/Gems/2.0.0/gems/poltergeist-1.5.1/lib/capybara/poltergeist/client.rb:14:in `start'
from /Library/Ruby/Gems/2.0.0/gems/poltergeist-1.5.1/lib/capybara/poltergeist/driver.rb:42:in `client'
from /Library/Ruby/Gems/2.0.0/gems/poltergeist-1.5.1/lib/capybara/poltergeist/driver.rb:25:in `browser'
from /Library/Ruby/Gems/2.0.0/gems/poltergeist-1.5.1/lib/capybara/poltergeist/driver.rb:190:in `headers='
from /Library/Ruby/Gems/2.0.0/gems/sigh-0.2.1/lib/sigh/developer_center.rb:51:in `initialize'
from /Library/Ruby/Gems/2.0.0/gems/sigh-0.2.1/bin/sigh:46:in `new'
from /Library/Ruby/Gems/2.0.0/gems/sigh-0.2.1/bin/sigh:46:in `block (2 levels) in run'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/command.rb:180:in `call'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/command.rb:180:in `call'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/command.rb:155:in `run'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/runner.rb:421:in `run_active_command'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/runner.rb:81:in `run!'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/delegates.rb:8:in `run!'
from /Library/Ruby/Gems/2.0.0/gems/sigh-0.2.1/bin/sigh:61:in `run'
from /Library/Ruby/Gems/2.0.0/gems/sigh-0.2.1/bin/sigh:81:in `<top (required)>'
from /usr/bin/sigh:23:in `load'
from /usr/bin/sigh:23:in `<main>'
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.