Code Monkey home page Code Monkey logo

fastlane's Introduction

fastlane Logo

Twitter: @FastlaneTools License Gem Homebrew Build Status PRs welcome!

fastlane is a tool for iOS and Android developers to automate tedious tasks like generating screenshots, dealing with provisioning profiles, and releasing your application.


All fastlane docs were moved to docs.fastlane.tools


Need Help?

Before submitting a new GitHub issue, please make sure to

If the above doesn't help, please submit an issue on GitHub and provide information about your setup, in particular the output of the fastlane env command.

Note: If you want to report a regression in fastlane (something that has worked before, but broke with a new release), please mark your issue title as such using [Regression] Your title here. This enables us to quickly detect and fix regressions.

fastlane team

Aaron Brager

Satoshi Namai

Łukasz Grabowski

Luka Mirosevic

Daniel Jankowski

Jorge Revuelta H

Fumiya Nakamura

Manu Wallner

Joshua Liebowitz

Roger Oba

Stefan Natchev

Olivier Halligon

Josh Holtz

Iulian Onofrei

Manish Rathi

Jérôme Lacoste

Felix Krause

Kohki Miki

Jan Piotrowski

Helmut Januschka

Maksym Grebenets

Andrew McBurney

Jimmy Dee

Max Ott

Matthew Ellis

Danielle Tomlinson

Special thanks to all contributors for extending and improving fastlane.

Contribute to fastlane

Check out CONTRIBUTING.md for more information on how to help with fastlane.

Code of Conduct

Help us keep fastlane open and inclusive. Please read and follow our Code of Conduct.

Metrics

fastlane tracks a few key metrics to understand how developers are using the tool and to help us know what areas need improvement. No personal/sensitive information is ever collected. Metrics that are collected include:

  • The number of fastlane runs
  • A salted hash of the app identifier or package name, which helps us anonymously identify unique usage of fastlane

You can easily opt-out of metrics collection by adding opt_out_usage at the top of your Fastfile or by setting the environment variable FASTLANE_OPT_OUT_USAGE. Check out the metrics code on GitHub

License

This project is licensed under the terms of the MIT license. See the LICENSE file.

This project and all fastlane tools are in no way affiliated with Apple Inc. This project is open source under the MIT license, which means you have full access to the source code and can modify it to fit your own needs. All fastlane tools run on your own computer or server, so your credentials or other sensitive information will never leave your own computer. You are responsible for how you use fastlane tools.


All fastlane docs were moved to docs.fastlane.tools


fastlane's People

Contributors

KrauseFx avatar joshdholtz avatar mfurtak avatar ohayon avatar taquitos avatar crazymanish avatar lacostej avatar janpio avatar hjanuschka avatar snatchev avatar milch avatar mpirri avatar revolter avatar lmirosevic avatar asfalcone avatar rogerluan avatar almassapargali avatar JaniJegoroff avatar nafu avatar jinjorge avatar RishabhTayal avatar mathcarignani avatar mollyIV avatar Liquidsoul avatar dtrenz avatar giginet avatar ainame avatar vpolouchkine avatar bartoszj avatar squarefrog avatar

Stargazers

Nikolay Gonchakenko avatar Fernando Jorge Mota avatar  avatar dafiger avatar Bambang Widyatmoko avatar  avatar  avatar XuZiHao avatar Artem Smirnov avatar Dmitriy Pushkov avatar GradleGrads avatar leewoobin789 avatar Gábor Siklósi avatar  avatar Tim Robbins avatar FlawlessCode avatar  avatar Leandro Monaco avatar  avatar  avatar Siqing Mu avatar YC_Lin avatar Will Connelly avatar Michael Amos avatar  avatar Israel Madueme avatar Andrew Lin avatar Eric Sun avatar  avatar  avatar Mars avatar mcgrady avatar Neil Ryan avatar Henry avatar  avatar Luke Mason avatar Connor McLaughlin avatar Oliver avatar Joe Chip avatar Rahim Packir Saibo avatar Nikolai Evseev avatar Shin avatar  avatar Tommy K Lee avatar Brandon Welsch avatar Bharath S avatar Sai Marpaka avatar  avatar Micha avatar Harish Kumar avatar  avatar Thiago Ferolla avatar Chase Carlson avatar Thamires Falbo avatar  avatar Alborzone avatar Tom avatar  avatar  avatar  avatar Sellasie  avatar  avatar rogerogers avatar Suresh Subramanian avatar  avatar  avatar Gaëtan DUHAMEL avatar Pasquale Boemio avatar Blockchain Chad avatar João Victor Vieira avatar ar avatar Alberto Giancarlo Ferrario avatar Ahmad Subhan avatar Sherry avatar  avatar  avatar  avatar 555 avatar Neno Arisma avatar asmodeus avatar  avatar  avatar lmatt avatar  avatar  avatar  avatar  avatar Navin avatar edison avatar  avatar  avatar  avatar Ope avatar Mike Oertli avatar techBRO.D avatar  avatar  avatar  avatar Saverio Cannone avatar  avatar

Watchers

Charleno Pires avatar Satish Kr Chauhan avatar Phil Adams avatar arden avatar Jaime Chen avatar Stig Kleppe-Jørgensen avatar Richie Adomako avatar Todd Huss avatar jimi bandrix avatar Jerome Lacoste avatar Gary Wright avatar Lev Panov avatar Markus Kirschner avatar  avatar Albert So avatar Patrik Sjöberg avatar Justin Brown avatar Anatoly Sharifulin avatar Imran Ansari avatar yuanhong avatar Panayiotis Tzagkarakis avatar German Blejman avatar Daan Poron avatar IceStar avatar Alexandre Magno avatar Joe Nguyen avatar  avatar ROHITHA DASSANAYAKE avatar Chen, Chih Han avatar Christian Bönning avatar Chinedu Okonkwo avatar Jimmy Dee avatar 大鹏 avatar Daniel Rech avatar San Chen avatar  avatar Johnny Goldsmith avatar wei avatar davidwei_001 avatar Mads Aalund Nielsen avatar Dan Cong avatar evandrix avatar kissthink avatar  avatar Markus Bürgler avatar Patrick Wilson avatar Sergey Simonov avatar Flori avatar Chip Aubry avatar Jamie avatar greysun avatar Manu Wallner avatar Kobkrit Viriyayudhakorn avatar Taisuke Hori avatar ngn999 avatar  avatar keepallsimple avatar  avatar Qiwen Zhao avatar Noritaka Kamiya avatar Simon X. L. avatar  avatar Joan Barros avatar Marc Schipperheyn avatar Chanintorn Asavavichairoj avatar Nuttapol Wilailuk avatar AKKAWEB avatar Marco avatar Hai avatar  avatar Joey Carmello avatar  avatar mayulu avatar David Hagerty avatar  avatar Eric avatar gsho avatar maksa avatar Yann avatar Kris Rott avatar 鲁蒙 avatar Ernest Semerda avatar  avatar nguyenlamzx avatar Oswaldo Rubio avatar  avatar Chris Graham avatar Jose L Pimienta avatar Salvatore Ferranti avatar Andre Lohmann avatar Nicos Belo Karalis avatar Antonio Paola avatar HoNooD avatar  avatar uli niggemann avatar Two Bit Labs avatar Jack avatar Akifumi Fukaya avatar Ian Marsh avatar dcn01 avatar

fastlane's Issues

Error in json-1.8.2.gem building

Here is the trace

Fetching: json-1.8.2.gem (100%)
Building native extensions. This could take a while...
ERROR: Error installing fastlane:
ERROR: Failed to build gem native extension.

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb

creating Makefile

make "DESTDIR="
compiling generator.c
In file included from generator.c:1:
In file included from ./../fbuffer/fbuffer.h:5:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0/ruby.h:33:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0/ruby/ruby.h:24:10: fatal error: 'ruby/config.h' file not found

include "ruby/config.h"

     ^

1 error generated.
make: *** [generator.o] Error 1

Gem files will remain installed in /Library/Ruby/Gems/2.0.0/gems/json-1.8.2 for inspection.
Results logged to /Library/Ruby/Gems/2.0.0/gems/json-1.8.2/ext/json/ext/generator/gem_make.out

sigh 0.2.2 update breaks fastlane

FATAL [2015-02-04 21:53:16.42]: uninitialized constant Sigh::DeveloperCenter::Phantomjs
FATAL [2015-02-04 21:53:16.42]: fastlane finished with errors
/Library/Ruby/Gems/2.0.0/gems/sigh-0.2.2/lib/sigh/developer_center.rb:45:in `block in initialize': uninitialized constant Sigh::DeveloperCenter::Phantomjs (NameError)
    from /Library/Ruby/Gems/2.0.0/gems/capybara-2.4.4/lib/capybara/session.rb:79:in `call'
    from /Library/Ruby/Gems/2.0.0/gems/capybara-2.4.4/lib/capybara/session.rb:79:in `driver'
    from /Library/Ruby/Gems/2.0.0/gems/sigh-0.2.2/lib/sigh/developer_center.rb:52:in `initialize'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.6/lib/fastlane/actions/sigh.rb:21:in `new'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.6/lib/fastlane/actions/sigh.rb:21:in `run'
    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):21: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.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/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 `<main>'

[Refactor] Provide a fastlane wide app chooser

Right now it's still mixed across all tools. Almost every tool needs a specific app ID.

Move all the into fastlane_core and also provide a selection of available bundle identifiers. This should be possible by accessing the iTunes Search API and filter by Artist ID.

Reference XCode variable in actions

I used to have run script created in build phase which reference XCode variable like $INFOPLIST_FILE. If I want to move this code to custom action, can I still reference these variable?

Issues with password

Setting up the Deliverfile, I encountered the following error. It appeared after I entered the the wrong iTunes Connect credentials (I was asked wether I wanted to reenter my credentials, which I answered with yes).

You will have to re-run the recent command to use the new username/password.
DEBUG [2015-02-11 11:15:12.40]: [Transporter Output]: DBG-X: The error code is: -20101
FATAL [2015-02-11 11:15:12.40]: Transporter transfer failed.
WARN [2015-02-11 11:15:12.40]: 
ERROR [2015-02-11 11:15:12.40]: Your Apple ID or password was entered incorrectly. (-20101)
FATAL [2015-02-11 11:15:12.40]: Return status of iTunes Transporter was 1: Your Apple ID or password was entered incorrectly. (-20101)
ERROR [2015-02-11 11:15:12.40]: Your Apple ID or password was entered incorrectly. (-20101)
Return status of iTunes Transporter was 1: Your Apple ID or password was entered incorrectly. (-20101)
FATAL [2015-02-11 11:15:12.40]: Could not download metadata from iTunes Connect. Do you have special characters in your password (Like ' or ")?
FATAL [2015-02-11 11:15:12.40]: Error occured with the setup program! Reverting changes now!
INFO [2015-02-11 11:15:12.40]: Deleting the 'fastlane' folder

/usr/local/lib/ruby/gems/2.2.0/gems/deliver-0.7.6/lib/deliver/app_metadata.rb:302:in `read': No such file or directory @ rb_sysopen - /tmp/527216534.itmsp//metadata.xml (Errno::ENOENT)
    from /usr/local/lib/ruby/gems/2.2.0/gems/deliver-0.7.6/lib/deliver/app_metadata.rb:302:in `parse_package'
    from /usr/local/lib/ruby/gems/2.2.0/gems/deliver-0.7.6/lib/deliver/app_metadata.rb:66:in `initialize'
    from /usr/local/lib/ruby/gems/2.2.0/gems/deliver-0.7.6/lib/deliver/app.rb:113:in `new'
    from /usr/local/lib/ruby/gems/2.2.0/gems/deliver-0.7.6/lib/deliver/app.rb:113:in `metadata'
    from /usr/local/lib/ruby/gems/2.2.0/gems/deliver-0.7.6/lib/deliver/deliverfile/deliverfile_creator.rb:59:in `create_based_on_identifier'
    from /usr/local/lib/ruby/gems/2.2.0/gems/deliver-0.7.6/lib/deliver/deliverfile/deliverfile_creator.rb:30:in `create'
    from /usr/local/lib/ruby/gems/2.2.0/gems/fastlane-0.1.7/lib/fastlane/setup.rb:82:in `ask_to_enable_other_tools'
    from /usr/local/lib/ruby/gems/2.2.0/gems/fastlane-0.1.7/lib/fastlane/setup.rb:17:in `run'
    from /usr/local/lib/ruby/gems/2.2.0/gems/fastlane-0.1.7/bin/fastlane:44: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 `<main>'

Documenation - add list of fastlane terminology

I think so far fastlane makes an excellent job of using good terminology for their APIs and documentations. But fastlane also uses several terms that could be understood or are understood differently in other projects. Maybe a list of words, on an extra page, could help a little to define how some terms are understood (differently) in the fastlane universe. Nothing long. But one sentence about what a term means for fastlane. No links, simple definitions.

Proposal for fastlane terminology list

  • action
  • extensions
  • deliver
  • produce
  • snapshot
  • codes
  • lanes
  • frames
  • ...

Please feel free to extend/discuss this list to see if this request makes sense.

[HOW-TO] Some explanations on signing/certs/provisioning are needed

Hi there.
Tried fastlane today, read all possible docs :) Maybe not enough, and I missed somethings
So here's few questions I want to clear out:
Let's say we want to submit an app in the AppStore

  1. Should we create an .ipa first, and then resign in by using sigh ?
  2. Now in provided example https://github.com/KrauseFx/fastlane-example/blob/master/fastlane/Fastfile#L50-L54 we have next code:
lane :deploy do
  sigh
  deliver :skip_deploy
end

So sigh will get provision profile. When this profile will be used? Will it be used by default on deliver action?
3. What about signing identity? Should I specify it somewhere or there's a way when it will be resolved by cert/sigh? How should I pass those resolved params to other actions?
4. Is there's a way to force Shenzhen(ipa) using team-id/provisioning/signing from Appfile/sigh resul, instead of Xcode?

Thanks. Maybe more real-world examples of fastlane usages/schemes will help :)

Support for different Apple Developer and iTunes Connect accounts

It seems that fastlane is having problems when iTC and developer's AppleID accounts are different. That happened in my case because my AppleID is assigned to multiple teams, but iTC doesn't support more that one account per email. fastlane tries to log in my AppleID email to iTC and fails because passwords don't match (even if they did it wouldn't work because that account is for different apps).

I have tried setting SIGH_USERNAME and DELIVER_USER to different emails but it seems that the latter is used all the time if present.

It seems that the problem might be because SIGH_USERNAME environment variable is read only when sigh is launched from command line:
https://github.com/KrauseFx/sigh/blob/master/bin/sigh#L59

but it falls back to DELIVER_USER from CredentialsManager if the class is instantiated directly:
https://github.com/KrauseFx/sigh/blob/master/lib/sigh/developer_center.rb#L72

My ruby knowledge is a bit limited and it might need updating several libs at the same time to make it work...

Just in case, the corresponding lane in Fastlane is (using floatsign to resign the .ipa):

lane :internal do
  sigh :adhoc
  system("ipa build -c \"AdHoc\" -w ../<AppName>.xcworkspace -s '<AppName>'")
  system("./floatsign.sh <AppName>.ipa \"iPhone Distribution: <team>" -b 'some.bundle.id' -p #{Actions.lane_context[Actions::SharedValues::SIGH_PROFILE_PATH]} <AppName>AdHoc.ipa")
  sigh
  system("./floatsign.sh <AppName>.ipa \"iPhone Distribution: <team>" -b 'some.bundle.id' -p #{Actions.lane_context[Actions::SharedValues::SIGH_PROFILE_PATH]} <AppName>AppStore.ipa")
  hockey({
    api_token: '<api_token>',
    ipa: 'fastlane/<AppName>AdHoc.ipa',
    dsym: 'fastlane/<AppName>.app.dSYM.zip'
    # notes: ""
  })
  deliver :skip_deploy, :beta
  increment_build_number
end

sigh action ignores :skip_install parameter

In my use of fastlane, I don't want the provisioning profile to be installed (or even opened).

I'll be submitting a pull request to skip the Actions.sh() call at the end of sigh.rb if the fastfile has :skip_install.

undefined method `[]' for nil:NilClass

I just update to 0.1.2 and i think something is broken with slack gem.

This is my Fastfile:

before_all do
  ENV["SLACK_URL"] = "https://hooks.slack.com/..."
  increment_build_number
  cocoapods
end

lane :crashlytics do
  sigh :skip_install, :adhoc
  system("cd ..; ipa build --verbose --configuration adhoc")
  system("cd ..; ipa distribute:crashlytics -c ./pathToFramework/Crashlytics.framework -a *** -s ***")
end

after_all do |lane|
  slack({
    message: "App successfully released!",
    success: true
    })
end


error do |lane, exception|
  slack({
    message: "#{exception}",
    success: false
    })
end

But I have this message in the shell:

Build successfully uploaded to Crashlytics
INFO [2015-01-30 10:28:59.75]: Step: slack
INFO [2015-01-30 10:28:59.75]: Step: slack
INFO [2015-01-30 10:28:59.75]: Variable Dump:
INFO [2015-01-30 10:28:59.75]: {:LANE_NAME=>:crashlytics, :BUILD_NUMBER=>54, :SIGH_PROFILE_PATH=>"/path/AdHoc_com.app.mobileprovision"}
FATAL [2015-01-30 10:28:59.75]: undefined method `[]' for nil:NilClass
FATAL [2015-01-30 10:28:59.76]: fastlane finished with errors
/Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.2/lib/fastlane/actions/slack.rb:29:in `run': undefined method `[]' for nil:NilClass (NoMethodError)
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.2/lib/fastlane/fast_file.rb:81:in `block (2 levels) in method_missing'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.2/lib/fastlane/actions/actions_helper.rb:28:in `execute_action'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.2/lib/fastlane/fast_file.rb:80:in `block in method_missing'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.2/lib/fastlane/fast_file.rb:79:in `chdir'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.2/lib/fastlane/fast_file.rb:79:in `method_missing'
    from (eval):41:in `block (2 levels) in parse'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.2/lib/fastlane/runner.rb:27:in `call'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.2/lib/fastlane/runner.rb:27:in `rescue in execute'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.2/lib/fastlane/runner.rb:5:in `execute'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.2/lib/fastlane/lane_manager.rb:15:in `block in cruise_lanes'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.2/lib/fastlane/lane_manager.rb:14:in `each'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.2/lib/fastlane/lane_manager.rb:14:in `cruise_lanes'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.2/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.2/bin/fastlane:59:in `run'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.2/bin/fastlane:63:in `<top (required)>'
    from /usr/bin/fastlane:23:in `load'
    from /usr/bin/fastlane:23:in `<main>'

For additional information, I'm using Bundler with this dependencies:

source 'https://rubygems.org'

gem "fastlane", '0.1.2'
gem "slack-notifier", '1.0.0'

Deploy to Crashlytics Beta fails.

It appears that some fatal error happens when the Crashlytics plugin is initialized, but I can't seem to figure out anything else based on this error & stack dump. Help is greatly appreciated.

image

Missing parameters for snapshot action in fastlane

Hi!

I can't seem to find a way to tell snapshot which Snapfile to use inside a lane, like $ snapshot --snapfile Snapfile1
After looking at the action code, I think there is no way to do it. I'm tempted to try the sh action to do it.
Using a environment var would work too.

EDIT: sh works 😀

Extension Support

I finally got to getting fasten setup for my Xcode project properly. However when I have the following lane defined:

lane :beta do  
   cert
   sigh :force
   ipa({
        workspace: "DemoApp.xcworkspace",
        configuration: "Release",
        scheme: "DemoApp",
    })
  deliver :skip_deploy, :force  #skip_deploy => don't submit the app for review (works with both App Store and beta builds)
end

Sigh does not download and install the provisioning profiles for my Today View Extension. I had to manually set up the provisioning profile for it and then it would build with fastlane on my local machine.

Is this expected behavior and is it possible to have fastlane make sigh download the provisioning profiles for an app extension?

Select Xcode Version

With all the latest Xcode betas it would be great if we could have an option to select the Xcode version to use.

You have to pass a valid version number using the Deliver file. (e.g. 'version "1.0"')

I'm trying to send version to TestFlight (iTunes Connect) with this lane:

lane :appstore do
  sigh :skip_install
  system("cd ..; ipa build --verbose --configuration AppStore")
  deliver :skip_deploy, :force, ipa: "../jobandtalent.ipa"
end

And this Deliverfile:

########################################
# App Metadata
########################################

# The app identifier is required
app_identifier "mycompany.identifier"
apple_id "*****"


# This folder has to include one folder for each language
# More information about automatic screenshot upload:
# https://github.com/KrauseFx/deliver#upload-screenshots-to-itunes-connect
screenshots_path "./deliver/screenshots/"


# version '1.2' # you can pass this if you want to verify the version number with the ipa file

config_json_folder './deliver'

success do
  system("say 'Successfully deployed a new version.'")
end

error do |exception|
  # custom exception handling here
  raise "Something went wrong: #{exception}"
end

A few days ago I could upload version without problems ...Now is required to specified the version in Deliverfile?

Execution fails on fastlane-0.1.14

I installed the gem without any issues, but executing the fastlane command would fail with this message:

/Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.14/bin/fastlane:12:in class:FastlaneApplication': uninitialized constant Commander::Methods (NameError)
from /Library/Ruby/Gems/2.0.0/gems/fastlane-0.1.14/bin/fastlane:11:in <top (required)>' from /usr/bin/fastlane:23:in load'
from /usr/bin/fastlane:23:in <main>'

After doing a "gem install commander" it worked, so it seems this commander thing is missing in the dependencies.

Fastlane init: password starting with a dash is interpreted as a command option

Noticed this while playing around with fastlane and running fastlane init as described in the GUIDE.

I have an iTunesConnect password that starts with a dash, and got the following warning after which the process stopped:

[Transporter Warning Output]: The following option was specified but is not recognized:<-my-password-starting-with-a-dash>

undefined method `classify' for custom action

module Fastlane
  module Actions
    module SharedValues
      ARCHIVE_DIR = :ARCHIVE_DIR
    end

    class ArchiveAction
      def self.run(params)
        raise "Workspace is not set".red unless ENV['WORKSPACE']
        raise "Scheme is not set".red unless ENV['SCHEME']

        Actions.sh("xcodebuild -workspace #{ENV['WORKSPACE']} -scheme #{ENV['SCHEME']} -configuration Debug -destination generic/platform=iOS archive -archivePath #{ENV['SCHEME']}.xcarchive | xcpretty -c")
        Actions.sh("xcodebuild -exportArchive -archivePath #{ENV['SCHEME']}.xcarchive -exportPath #{ENV['SCHEME']} -exportFormat ipa | xcpretty -c")

        ipa_file = "./#{ENV['SCHEME']}.ipa"

        raise "No ipa file found in #{ipa_file}".red unless File.exist?(ipa_file)

        Actions.lane_context[SharedValues::ARCHIVE_DIR] = ipa_file
      end
    end
  end
end

After update to latest fasten, I got this:

lib/fastlane/actions/actions_helper.rb:93:in `block in load_external_actions': undefined method `classify' for "archive":String (NoMethodError)

Multiple target support

First of all, thank you for the great job.

I have an Xcode proj with 8 targets, each apps has its bundleid, appid and languages. In that case, time saved thanks to fastlane would be even more important for me but how to handle this ? For now I have my custom script and I'm thinking to migrate if there is built-in support in fastlane.

I'd like to create some configuration in a centralized file "Appfile" contening all the necessary information and be able to directly call the required one (Note: Appfile and Deliverfile for now look to share some duplicate information like app_identifier).

I found this issue fastlane-old/deliver#67, it is a tips but It won't work for the multiple appstore metadata I think and it is not an official support in "fastlane".

Would you think about such an architecture support ?

Thanks for your help !

[Important] Improve passing of parameters for all tools

Some tools, like sigh can only be passed some of the available command like options, not all of them.

Also, sometimes users want to have a parameter for a tool, for which there is already an environment variable available (fastlane-old/sigh#45)

There needs to be a more unified way:

There are 5 ways to pass configuration to the individual fastlane tools (ordered):

  • Command line parameter (e.g. deliver -u [email protected])
  • Passing options with fastlane
  • Configuration file (only for snapshot and deliver)
  • Environment variables
  • Asking for information if missing

The user should be able to set every option in all 5 ways.

Any other ideas? Concerns?

deliver cannot generate ipa due to wrong path

I've forked fastlane trying to integrate Crashlytics distribution action but I am not able to test it because seems that deliver cannot find the proper path to the project:

Miguels-MacBook-Air-6:chicisimo miguel$ ../Desktop/fastlane/bin/fastlane beta --trace
INFO [2015-01-22 00:12:08.57]: Driving the lane 'beta'
INFO [2015-01-22 00:12:08.57]: Step: sigh
INFO [2015-01-22 00:12:11.50]: Login into iOS Developer Center
INFO [2015-01-22 00:12:26.90]: Login successful
INFO [2015-01-22 00:12:27.79]: Fetching all available provisioning profiles...
INFO [2015-01-22 00:12:28.80]: Checking if profile is available. (15 profiles found)
INFO [2015-01-22 00:12:36.85]: Downloading profile...
INFO [2015-01-22 00:12:38.08]: Successfully downloaded provisioning profile
INFO [2015-01-22 00:12:38.08]: Exported provisioning profile to '/path/to/certificate.mobileprovision'
INFO [2015-01-22 00:12:38.08]: [SHELL COMMAND]: open '/path/to/certificate.mobileprovision'
INFO [2015-01-22 00:12:38.15]: Step: deliver
error: The directory /Users/miguel/chicisimo/fastlane does not contain an Xcode project or workspace.. Use --trace to view backtrace

The project is in /Users/miguel/chicisimo and I don't see any configuration to change this. Can you bring some light?

Thanks!

Fastlane init: snapshots directory is messed probably

I've had SnapFile setup properly before I decided to move to Fastlane.
on init step I've seen such lines:

Successfully created new Deliverfile at './fastlane//Deliverfile'
INFO [2015-02-05 17:08:43.24]: The 'screenshots' folder inside the 'deliver' folder will not be used.
INFO [2015-02-05 17:08:43.24]: Instead the 'screenshots' folder inside the 'fastlane' folder will be used.
INFO [2015-02-05 17:08:43.24]: Click Enter to confirm

But I've found that snapshots directory remains ./deliver/snapshots instead of .snapshots when I open Deliverfile.

I'm not sure whenever it is a bug or not, but looks like this line should be changed.

Wrong new lines on ipa action

Hi!

I'm doing sh "ipa…" on fastlane and I'm getting weird wrapping on the logs… not sure what could be happening…

I am using joshdholtz's pull request but I have my doubts that he touched on print code… also I am aware that you've added an ipa command to Fastfile but the pull request hasn't been updated… anyway, something seems weird with sh and I thought you might have some ideas…
Thanks

Colour codes included in slack message

Looks like exception message comes through with colour codes. See [33m and [0m in the screenshot:

fastlane-slack-color-code

Can we somehow prevent it so that STDOUT prints are still coloured?

Steps to reproduce
Given I have following Fastfile defined:

before_all do
  ENV['SLACK_URL'] = <my-slack-hook>
end

lane :preview do
  deliver :skip_deploy
end

error do |lane, exception|
  slack({
    message: exception.message,
    success: false,
    channel: <my-slack-channel>
  })
end

When I execute bundle exec fastlane preview
And I answer n to Does the PDF on path '/tmp/1424100823.pdf' look okay for you? (blue = updated) (y/n)
Then I should receive slack message without colour codes:
fastlane-slack-no-color-code

Workaround
Right now I have workaround in Fastfile which does the job:

error do |lane, exception|
  slack({
      message: exception.message.gsub(/\033\[\d+m/, ''),
      success: false,
      channel: <my-slack-channel>
    })
end

[Refactor] Remove fastlane context and replace it with environment variables

Since the environment variables are not passed from fastlane to the parent process after execution, we could easily use the ENV to store the lane context.

Big advantage is, that all values inside ENV are also accessible for all actions. Disadvantages are possible naming conflicts and not being able to store complex objects, but only strings.

lane must fail if ipa action fails

2015-02-17 22:33:05.154 xcodebuild[25360:1017915] Xcode_beginning_of_line failed to launch :(
** BUILD FAILED **


The following build commands failed:
    Check dependencies
(1 failure)
** ARCHIVE FAILED **


The following build commands failed:
    Check dependencies
(1 failure)
INFO [2015-02-17 22:34:37.94]: Step: snapshot

Flexible bundle id config

I need to be able to switch bundle id (depends on whether I'm doing an internal testing build or a client distribution build, ie.: our developer account vs theirs). Right now the bundle id can only be set through the Appfile. I would have to modify the file before using fastlane, losing the "one command to deploy".

fastlane init might be missing dependency multi_json (?)

When running fastlane-0.1.1 'fastlane init' the first time I had a gem error. After installing multi_json gem it worked.

/Users/hannes/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/dependency.rb:315:in `to_specs': Could not find 'multi_json' (~> 1.0) among 75 total gem(s) (Gem::LoadError)
Checked in 'GEM_PATH=/Users/hannes/.rvm/gems/ruby-2.1.5:/Users/hannes/.rvm/gems/[email protected]', execute `gem env` for more information
    from /Users/hannes/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/specification.rb:1313:in `block in activate_dependencies'
    from /Users/hannes/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/specification.rb:1302:in `each'
    from /Users/hannes/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/specification.rb:1302:in `activate_dependencies'
    from /Users/hannes/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/specification.rb:1284:in `activate'
    from /Users/hannes/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/specification.rb:1316:in `block in activate_dependencies'
    from /Users/hannes/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/specification.rb:1302:in `each'
    from /Users/hannes/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/specification.rb:1302:in `activate_dependencies'
    from /Users/hannes/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/specification.rb:1284:in `activate'
    from /Users/hannes/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/specification.rb:1316:in `block in activate_dependencies'
    from /Users/hannes/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/specification.rb:1302:in `each'
    from /Users/hannes/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/specification.rb:1302:in `activate_dependencies'
    from /Users/hannes/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/specification.rb:1284:in `activate'
    from /Users/hannes/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_gem.rb:60:in `block in gem'
    from /Users/hannes/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_gem.rb:59:in `synchronize'
    from /Users/hannes/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_gem.rb:59:in `gem'
    from /Users/hannes/.rvm/rubies/ruby-2.1.5/bin/fastlane:22:in `<main>'
    from /Users/hannes/.rvm/gems/ruby-2.1.5/bin/ruby_executable_hooks:15:in `eval'
    from /Users/hannes/.rvm/gems/ruby-2.1.5/bin/ruby_executable_hooks:15:in `<main>'

Where should I keep sensitive data?

If I want to use hipchat integration which required ENV["HIPCHAT_API_TOKEN"] set in before_all what is the proper way to do this? Hardcode in Fastfile would be security issue right if I commit this into git.

Failed to build gem native extension / libiconv is missing

Before being able to install fastlane, I had to manually install nokogiri using the following command:

sudo gem install nokogiri -- --use-system-libraries --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/libxml2

--use-system-libraries allows the install to use the OS X version of libiconv.
--with-xml2= tells it where to find libxml2

Other solutions I found online involved installing homebrew, which I didn't want to do.

sigh timeout

Running fastlane beta results in a timeout on a sigh step. Is there a way of overriding the timeout setting? Weird error, the dev portal works fine in the browser...

Wojciechs-MacBook-Pro:src wojtek$ fastlane beta
INFO [2015-01-26 13:58:27.69]: Driving the lane 'beta'
INFO [2015-01-26 13:58:27.69]: Step: increment_build_number
INFO [2015-01-26 13:58:27.69]: [SHELL COMMAND]: agvtool next-version -all
INFO [2015-01-26 13:58:27.89]: [SHELL OUTPUT]: Setting version of project X to:
INFO [2015-01-26 13:58:27.89]: [SHELL OUTPUT]: 13.
INFO [2015-01-26 13:58:27.89]: [SHELL OUTPUT]:
INFO [2015-01-26 13:58:27.90]: [SHELL OUTPUT]: Also setting CFBundleVersion key (assuming it exists)
INFO [2015-01-26 13:58:27.90]: [SHELL OUTPUT]:
INFO [2015-01-26 13:58:27.91]: [SHELL OUTPUT]: Updating CFBundleVersion in Info.plist(s)...
INFO [2015-01-26 13:58:27.91]: [SHELL OUTPUT]:
INFO [2015-01-26 13:58:27.92]: [SHELL OUTPUT]: Updated CFBundleVersion in "X.xcodeproj/../X/Info.plist" to 13
INFO [2015-01-26 13:58:27.93]: [SHELL OUTPUT]: Updated CFBundleVersion in "X.xcodeproj/../XTests/Info.plist" to 13
INFO [2015-01-26 13:58:27.93]: [SHELL OUTPUT]:
INFO [2015-01-26 13:58:27.93]: [SHELL OUTPUT]:
INFO [2015-01-26 13:58:28.12]: Step: cocoapods
INFO [2015-01-26 13:58:28.12]: [SHELL COMMAND]: pod install
INFO [2015-01-26 13:58:28.36]: [SHELL OUTPUT]: Analyzing dependencies
INFO [2015-01-26 13:58:31.52]: [SHELL OUTPUT]:
INFO [2015-01-26 13:58:31.52]: [SHELL OUTPUT]: CocoaPods 0.36.0.beta.1 is available.
INFO [2015-01-26 13:58:31.52]: [SHELL OUTPUT]: To update use: gem install cocoapods --pre
INFO [2015-01-26 13:58:31.52]: [SHELL OUTPUT]: [!] This is a test version we'd love you to try.
INFO [2015-01-26 13:58:31.52]: [SHELL OUTPUT]:
INFO [2015-01-26 13:58:31.52]: [SHELL OUTPUT]: For more information see http://blog.cocoapods.org
INFO [2015-01-26 13:58:31.52]: [SHELL OUTPUT]: and the CHANGELOG for this version http://git.io/BaH8pQ.
INFO [2015-01-26 13:58:31.52]: [SHELL OUTPUT]:
INFO [2015-01-26 13:58:32.31]: [SHELL OUTPUT]: Downloading dependencies
INFO [2015-01-26 13:58:32.31]: [SHELL OUTPUT]: Using GTMHTTPFetcher (1.141)
INFO [2015-01-26 13:58:32.31]: [SHELL OUTPUT]: Using GZIP (1.0.3)
INFO [2015-01-26 13:58:32.31]: [SHELL OUTPUT]: Using JDStatusBarNotification (1.5.0)
INFO [2015-01-26 13:58:32.31]: [SHELL OUTPUT]: Using Mixpanel (2.6.2)
INFO [2015-01-26 13:58:32.31]: [SHELL OUTPUT]: Using NSDate+TimeAgo (1.0.3)
INFO [2015-01-26 13:58:32.31]: [SHELL OUTPUT]: Using OpenSSL-Universal (1.0.1.k)
INFO [2015-01-26 13:58:32.31]: [SHELL OUTPUT]: Using SZTextView (1.1.10)
INFO [2015-01-26 13:58:32.31]: [SHELL OUTPUT]: Using SlackTextViewController (1.4.1)
INFO [2015-01-26 13:58:32.31]: [SHELL OUTPUT]: Using Tweaks (1.1.0)
INFO [2015-01-26 13:58:32.31]: [SHELL OUTPUT]: Using gtm-oauth2 (0.1.0)
INFO [2015-01-26 13:58:32.31]: [SHELL OUTPUT]: Using mailcore2 (0.4.7)
INFO [2015-01-26 13:58:32.31]: [SHELL OUTPUT]: Generating Pods project
INFO [2015-01-26 13:58:33.10]: [SHELL OUTPUT]: Integrating client projects
INFO [2015-01-26 13:58:33.63]: [SHELL OUTPUT]:
INFO [2015-01-26 13:58:33.63]: [SHELL OUTPUT]: [!] GTMHTTPFetcher has been deprecated in favor of gtm-http-fetcher
INFO [2015-01-26 13:58:33.63]: [SHELL OUTPUT]:
INFO [2015-01-26 13:58:33.63]: [SHELL OUTPUT]: [!] mailcore2 has been deprecated in favor of mailcore2-ios
INFO [2015-01-26 13:58:33.65]: Step: sigh
INFO [2015-01-26 13:58:35.15]: Login into iOS Developer Center
The file /Users/wojtek/Workspace/x-ios/src/Error1422280745.png does not exist.
INFO [2015-01-26 13:59:05.18]: Variable Dump:
INFO [2015-01-26 13:59:05.18]: {:LANE_NAME=>:beta, :BUILD_NUMBER=>13}
FATAL [2015-01-26 13:59:05.18]: Capybara::Poltergeist::TimeoutError
FATAL [2015-01-26 13:59:05.18]: fastlane finished with errors

Hockey upload fails to find dSYM.zip file if there is a space in the filename

I have a generated dSYM zip file called

./MyAppName Beta.app.dSYM.zip

(note the space in the name)

However, during Hockey upload I get this error:

Symbols not found on path /Users/eric/my-apps-directory/MyAppNameBeta.app.dSYM.zip. Crashes won't be symbolicated properly

(note the lack of a space in the error's description of the filename)

The .dSYM.zip gets generated just fine. I checked the datestamp, unzipped the archive, etc. It just has a space in the name, so the Hockey upload of the dSYM fails.

Permission denied - fork failed

Trying to run my own custom shell script and I'm getting permission denied:

INFO [2015-02-06 11:43:31.74]: Variable Dump:
INFO [2015-02-06 11:43:31.74]: {:LANE_NAME=>:beta, :START_TIME=>2015-02-06 11:42:01 -0700, :BUILD_NUMBER=>0, :SIGH_PROFILE_PATH=>"path/to/app.mobileprovision"}
FATAL [2015-02-06 11:43:31.74]: Permission denied - fork failed
FATAL [2015-02-06 11:43:31.75]: fastlane finished with errors

What am I doing wrong?

[Feature] Add dependencies between actions

  sigh
  cert

or

  ipa
  sigh

should raise an exception, since it's obviously the wrong order of tools. I think there should be a new command, which you can put on the top of the Fastfile, something like

skip_checking_dependencies

which will not raise an exception (in case you have some complex nested calls)

The exception should be raised when running the script and entering the sigh action, which sees, ipa was already run.

Therefore, fastlane should keep a record of executed commands and store it in the lane context.

Increment Build Number Git

Right now, the version bump is not commited and pushed.

How can we improve this? One solution is to use the Jenkins Build Number. The problem with this is when you migrate to a new Jenkins, it will be lower than the previous build.

Move out all shared code

Move all shared code into its own gem:

  • Init Poltergeist
  • iTunes Connect Login
  • Apple Dev Portal Login and Team Selection
  • Update Manager
  • Available languages (deliver and snapshot)
  • Helper class

Submit existing iTC builds to Review instead of uploading a new one

So when looking at the Fastane configuration, i am not sure if it makes sense with the new Apple TestFlight. The new Apple Testflight lets you take a beta build and then make it the live build.

I propose the beta flow uploads the correct metadata for what the new version will be, with the snapshots and all. And then the App Store flow would basically just auto mark the beta upload to be the live version.

Thoughts, ideas?

Reduce size of HipChat icon image.

Using the HipChat action, the messages sent include the fastlane icon. This icon is huge and often much larger than the contents of a message, excluding errors with long stack traces. It'd be great to reduce the size of the image used for this to more cleanly fit with more average-sized messages.

fastlane_hipchat_icon

update_project_code_signing

ended up tracking this down: File.write(path, p.gsub(/PROVISIONING_PROFILE = ".*";/, "PROVISIONING_PROFILE = \"#{udid}\";"))

If no profile is selected this line won't exist

Thoughts on improving this?

Multiple "Branded" Targets of same underlying App

My first solution was to setup a separate Fastfile for each branded target....but I'm not seeing a way to specify the Fastfile to use with fastlane.

I'll be integrating shortly with Jenkins (just trying to get a manual process working first).

So, what would be your recommendation as to the best way to setup and utilitize fastlane?

Thanks in advance...

Appfile template

Hey - I've accidentally messed up my Appfile and I didn't have a previous version commited.

Can someone give me the template of the appfile with the app ide, bundle etc. so I can set my values and carry on? thanks

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.