Commit d22bada2 authored by jinzhu's avatar jinzhu

fastlane

parent c44baa7d
......@@ -23,7 +23,7 @@ DerivedData
.bundle
Carthage
fastlane/*
#fastlane/*
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
......
app_identifier "org.cocoapods.demo.GMPhobos-Example" # The bundle identifier of your app
app_identifier "" # The bundle identifier of your app
apple_id "wanmeizhensuo@gmail.com" # Your Apple email address
team_id "86R4V3XFLU" # Developer Portal Team ID
# you can even provide different app identifiers, Apple IDs and team names per lane:
# More information: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
# More information: https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Appfile.md
import_from_git(url: 'git@git.gengmei.cc:mobile/JaguarTemplate.git',
path: 'fastlane/ios_fastfile')
\ No newline at end of file
fastlane_version "2.85.0"
default_platform :ios
ENV["FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT"] = "30"
ENV["FASTLANE_XCODEBUILD_SETTINGS_RETRIES"] = "20"
platform :ios do
MASTER_PATH = "https://github.com/CocoaPods/Specs"
PRIVATE_PATH = "git@git.wanmeizhensuo.com:gengmeiios/GMSpecs.git"
PRIVATE_SPEC = "wanmeizhensuo-gmspecs"
SOURCES = [MASTER_PATH, PRIVATE_PATH]
desc 'Deploy a new version to the App Store'
lane :do_publish_prod do |options|
app_identifier = options[:ios_app_identifier]
scheme = options[:ios_scheme]
version = options[:version]
build = options[:build_number] || Time.now.strftime('%Y%m%d%H%M')
output_directory = options[:ios_output_directory]
output_name = options[:ios_output_name]
plist = options[:ios_plist_file]
branch = options[:git_branch]
git_pull_and_pod
update_build_number(version: build, plist: plist)
gym(scheme: scheme, configuration:'AppStore', clean: true, output_directory: output_directory, output_name: output_name, export_method: 'app-store', silent: true, suppress_xcode_output:true,
export_options: {
provisioningProfiles: {
"com.wanmeizhensuo.ZhengXing" => "user-appstore"
}
})
deliver(force: false, skip_screenshots: true, skip_metadata: true)
git_add(path: '.')
git_commit(path: '.', message: "Update build number to #{build} and upload to itunesconnect")
git_pull
git_push(branch: branch)
end
desc "Release new private pod version"
lane :do_publish_lib do |options|
target_version = options[:version]
podspec_path = options[:ios_podspec_path]
git_pull
pod_repo_update(repo: PRIVATE_SPEC)
#pod_install(repo: PRIVATE_SPEC)
pod_lib_lint(verbose: false, allow_warnings: true, sources: SOURCES, use_bundle_exec: true, fail_fast: true)
version_bump_podspec(path: podspec_path, version_number: target_version) # 更新 podspec
git_commit_all(message: "Bump version to #{target_version}") # 提交版本号修改
add_git_tag(tag: target_version) # 设置 tag
push_to_git_remote # 推送到 git 仓库
pod_push(path: podspec_path, repo: PRIVATE_SPEC, allow_warnings: true, sources: SOURCES) # 提交到 CocoaPods
pod_repo_update(repo: PRIVATE_SPEC)
end
desc 'Publish a beta version'
lane :do_publish_beta do |options|
scheme = options[:ios_scheme]
output_directory = options[:ios_output_directory]
output_name = options[:ios_output_name]
sh('USE_APPSTORE_PODS=true pod install')
gym(scheme: scheme, configuration:'Release', output_directory: output_directory, output_name: output_name, export_method: 'ad-hoc', silent: true, suppress_xcode_output:true, clean: true)
end
desc 'Publish a test version'
lane :do_publish_test do |options|
scheme = options[:ios_scheme]
bundle_identifier = options[:ios_bundle_identifier]
output_directory = options[:ios_output_directory]
output_name = options[:ios_output_name]
version = options[:version]
#git_pull_and_pod
sh('pwd')
sh('git fetch')
sh('git status')
sh('git merge origin/test')
pod_repo_update(repo: PRIVATE_SPEC)
pod_repo_update(repo: "gengmei-gmspecs")
pod_repo_update(repo: "gengmei-gengmeiios-gmspecs")
sh('USE_APPSTORE_PODS=true pod install')
sigh(adhoc: true, username: ENV['FASTLANE_USER'], app_identifier: bundle_identifier)
gym(scheme: scheme, configuration:'Release', output_directory: output_directory, output_name: output_name, export_method: 'ad-hoc', silent: true, suppress_xcode_output:true)
end
private_lane :git_pull_and_pod do |options|
sh('git pull')
pod_repo_update(repo: PRIVATE_SPEC)
pod_repo_update(repo: "gengmei-gmspecs")
pod_repo_update(repo: "gengmei-gengmeiios-gmspecs")
#cocoapods
sh('USE_APPSTORE_PODS=true pod install')
end
error do |lane, exception|
UI.message(exception.message)
end
end
fastlane documentation
================
# Installation
Make sure you have the latest version of the Xcode command line tools installed:
```
xcode-select --install
```
Install _fastlane_ using
```
sudo gem install fastlane
[sudo] gem install fastlane -NV
```
or alternatively using `brew cask install fastlane`
# Available Actions
## iOS
### ios do_deliver_app
### ios do_publish_prod
```
fastlane ios do_deliver_app
fastlane ios do_publish_prod
```
Deploy a new version to the App Store
### ios do_release_lib
### ios do_publish_lib
```
fastlane ios do_release_lib
fastlane ios do_publish_lib
```
Release new private pod version
### ios do_monkey_test
### ios do_publish_beta
```
fastlane ios do_publish_beta
```
Publish a beta version
### ios do_publish_test
```
fastlane ios do_monkey_test
fastlane ios do_publish_test
```
UI automation test
Publish a test version
----
This README.md is auto-generated and will be re-generated every time [fastlane](https://fastlane.tools) is run.
More information about fastlane can be found on [https://fastlane.tools](https://fastlane.tools).
The documentation of fastlane can be found on [GitHub](https://github.com/fastlane/fastlane/tree/master/fastlane).
More information about fastlane can be found on [fastlane.tools](https://fastlane.tools).
The documentation of fastlane can be found on [docs.fastlane.tools](https://docs.fastlane.tools).
module Fastlane
module Actions
class GitCommitAllAction < Action
def self.run(params)
Actions.sh "git commit -am \"#{params[:message]}\""
end
#####################################################
# @!group Documentation
#####################################################
def self.description
"Commit all unsaved changes to git."
end
def self.available_options
[
FastlaneCore::ConfigItem.new(key: :message,
env_name: "FL_GIT_COMMIT_ALL",
description: "The git message for the commit",
is_string: true)
]
end
def self.authors
# So no one will ever forget your contribution to fastlane :) You are awesome btw!
["thierry"]
end
def self.is_supported?(platform)
true
end
end
end
end
module Fastlane
module Actions
class PodInstallAction < Action
def self.run(params)
Actions.sh "cd Example && pod install"
Helper.log.info "Successfully pod install ⬆️ ".green
end
#####################################################
# @!group Documentation
#####################################################
def self.description
"Update all pods"
end
def self.details
"Update all pods"
end
def self.authors
["thierry"]
end
def self.is_supported?(platform)
true
end
end
end
end
module Fastlane
module Actions
# Updates the local clone of the spec-repo
class PodRepoUpdateAction < Action
def self.run(params)
cmd = []
repo = params[:repo]
result = Actions.sh("pod repo update #{repo}")
UI.success("Successfully pod repo update 💾.")
return result
end
#####################################################
# @!group Documentation
#####################################################
def self.description
"Updates the local clone of the spec-repo `NAME`. If `NAME` is omitted this will update all spec-repos in `~/.cocoapods/repos`."
end
def self.details
# Optional:
# this is your chance to provide a more detailed description of this action
"You can use this action to do cool things..."
end
def self.available_options
# Define all options your action supports.
[
FastlaneCore::ConfigItem.new(key: :repo,
description: "Repo",
is_string: false,
verify_block: proc do |value|
end),
]
end
def self.output
# Define the shared values you are going to provide
# Example
[
['POD_REPO_UPDATE_CUSTOM_VALUE', 'A description of what this value contains']
]
end
def self.return_value
# If you method provides a return value, you can describe here what it does
end
def self.authors
# So no one will ever forget your contribution to fastlane :) You are awesome btw!
["thierryxing"]
end
def self.is_supported?(platform)
platform == :ios
end
end
end
end
module Fastlane
module Actions
module SharedValues
BUILD_NUMBER = :BUILD_NUMBER
end
class SyncBuildNumberToGitAction < Action
def self.is_git?
Actions.sh 'git rev-parse HEAD'
return true
rescue
return false
end
def self.run(params)
if is_git?
command = 'git rev-list HEAD --count'
else
raise "Not in a git repository."
end
build_number = (Actions.sh command).strip
Fastlane::Actions::IncrementBuildNumberAction.run(build_number: build_number)
Actions.lane_context[SharedValues::BUILD_NUMBER] = build_number
end
def self.output
[
['BUILD_NUMBER', 'The new build number']
]
end
#####################################################
# @!group Documentation
#####################################################
def self.description
"Set the build version of your project to the same number of your total git commit count"
end
def self.authors
["thierry"]
end
def self.is_supported?(platform)
[:ios].include? platform
end
end
end
end
......@@ -2,78 +2,60 @@
<testsuites>
<testsuite name="fastlane.lanes">
<testcase classname="fastlane.lanes" name="0: Verifying required fastlane version" time="0.000561">
</testcase>
<testcase classname="fastlane.lanes" name="1: default_platform" time="0.000262">
</testcase>
<testcase classname="fastlane.lanes" name="2: import_from_git" time="0.576125">
</testcase>
<testcase classname="fastlane.lanes" name="3: hipchat" time="0.04935">
</testcase>
<testcase classname="fastlane.lanes" name="4: git_pull" time="1.057824">
<testcase classname="fastlane.lanes" name="00: Verifying fastlane version" time="0.006236">
</testcase>
<testcase classname="fastlane.lanes" name="5: ensure_git_branch" time="0.006838">
<testcase classname="fastlane.lanes" name="01: default_platform" time="0.00096">
</testcase>
<testcase classname="fastlane.lanes" name="6: pod_install" time="14.856944">
<testcase classname="fastlane.lanes" name="02: git_pull" time="1.381934">
</testcase>
<testcase classname="fastlane.lanes" name="7: pod_lib_lint" time="28.55106">
<testcase classname="fastlane.lanes" name="03: pod_repo_update" time="1.659551">
</testcase>
<testcase classname="fastlane.lanes" name="8: version_bump_podspec" time="0.001244">
<testcase classname="fastlane.lanes" name="04: pod_lib_lint" time="9.628186">
</testcase>
<testcase classname="fastlane.lanes" name="9: git_commit_all" time="0.086962">
<testcase classname="fastlane.lanes" name="05: version_bump_podspec" time="0.00243">
</testcase>
<testcase classname="fastlane.lanes" name="10: add_git_tag" time="0.011892">
<testcase classname="fastlane.lanes" name="06: git_commit_all" time="0.025476">
</testcase>
<testcase classname="fastlane.lanes" name="11: push_to_git_remote" time="1.034166">
<testcase classname="fastlane.lanes" name="07: add_git_tag" time="0.015294">
</testcase>
<testcase classname="fastlane.lanes" name="12: pod_push" time="16.108675">
<testcase classname="fastlane.lanes" name="08: push_to_git_remote" time="0.933966">
</testcase>
<testcase classname="fastlane.lanes" name="13: pod_repo_update" time="1.448015">
<testcase classname="fastlane.lanes" name="09: pod_push" time="53.669874">
</testcase>
<testcase classname="fastlane.lanes" name="14: hipchat" time="0.525092">
<testcase classname="fastlane.lanes" name="10: pod_repo_update" time="2.298588">
</testcase>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment