More Related Content Similar to Travis and fastlane (20) Travis and fastlane2. % git add
% git commit
% git push
Service hook
Mac VM
Xcode
• Build
• Test
• Deploy
• Notify
4. Setup
% gem install travis
% vim .travis.yml
language: objective-c
script:
- make
notifications:
email: false
6. Code Sign
• Encrypt your keys, certificates, and provisioning
profiles.
• Commit encrypted files to github
• Decrypt and install before build
7. % openssl aes-256-cbc -k "foo" -in certs/dist.cer -out certs/dist.cer.enc -a
% openssl aes-256-cbc -k "foo" -in certs/dist.p12 -out certs/dist.p12.enc -a
% openssl aes-256-cbc -k "foo" -in certs/dev.cer -out certs/dev.cer.enc -a
% openssl aes-256-cbc -k "foo" -in certs/dev.p12 -out certs/dev.p12.enc -a
% openssl aes-256-cbc -k “foo” -in certs/AppStore.mobileprovision -out certs/AppStore.mobileprovision.enc -a
% openssl aes-256-cbc -k “foo” -in certs/AdHoc.mobileprovision -out certs/AdHoc.mobileprovision.enc -a
before_script:
- openssl aes-256-cbc -k "$SECRET" -in certs/AdHoc.mobileprovision.enc -d -a -out certs/AdHoc.mobileprovision
- openssl aes-256-cbc -k "$SECRET" -in certs/AppStore.mobileprovision.enc -d -a -out certs/AppStore.mobileprovision
- openssl aes-256-cbc -k "$SECRET" -in certs/dist.cer.enc -d -a -out certs/dist.cer
- openssl aes-256-cbc -k "$SECRET" -in certs/dist.p12.enc -d -a -out certs/dist.p12
- openssl aes-256-cbc -k "$SECRET" -in certs/dist.cer.enc -d -a -out certs/dist.cer
- openssl aes-256-cbc -k "$SECRET" -in certs/dist.p12.enc -d -a -out certs/dist.p12
Encrypt
Decrypt
Export
8. % travis encrypt “SECRET=foo” --add
env:
global:
- secure: eLo92Sw8KejuadMDTgY
+bMAPow3D4zqkhBqXm8oUDctZn3qOJ5iJgMrNxfhSUx+AX/
jiT07+U0vicHWRjGtkIGBeZJ8FVJL7NZQbIbqa80g0+MT4CNk4bumUphY0
w+OOzsY8V4OKR90mUmzz3bVN8/ROFBZygeYBdiLnmhoQ93E=
- secure: fGoTHN29GtCiux/
aGJ2wm3NYtbyIRh0vnfoJafYdzWC6lj0PWrv0KVF31rHA56f7wPVLFnLrx
2UhNzZHfMaavD9QSGVYNOcE2AVXuaRWnMrKmCjAkCW/7qnePwxcgcQTV
+zQJTV523G4nDbWQMoQ9wugzTsxhj+Ob+ZF0cGEXUA=
Use command line
9. #!/bin/sh
# create keychain
security create-keychain -p travis ios-build.keychain
security default-keychain -s ios-build.keychain
security unlock-keychain -p travis ios-build.keychain
security set-keychain-settings -t 3600 -l ~/Library/Keychains/ios-
build.keychain
# Certificate & Private key
security import ./certs/cert.cer -k ~/Library/Keychains/ios-
build.keychain -T /usr/bin/codesign
security import ./certs/key.p12 -k ~/Library/Keychains/ios-
build.keychain -P "$KEY_PASSWORD" -T /usr/bin/codesign
# Provisioning profiles
mkdir -p ~/Library/MobileDevice/Provisioning Profiles
cp "./certs/AppStore.mobileprovision" ~/Library/MobileDevice/
Provisioning Profiles/
cp "./certs/AdHoc.mobileprovision" ~/Library/MobileDevice/
Provisioning Profiles/
10. language: objective-c
osx_image: xcode6.4
before_install:
- gem install fastlane
before_script:
- openssl aes-256-cbc -k "$SECRET" -in certs/EMQAppStore.mobileprovision.enc -d -a -out certs/
EMQAppStore.mobileprovision
- openssl aes-256-cbc -k "$SECRET" -in certs/EMQDev.mobileprovision.enc -d -a -out certs/
EMQDev.mobileprovision
- openssl aes-256-cbc -k "$SECRET" -in certs/cert.cer.enc -d -a -out certs/cert.cer
- openssl aes-256-cbc -k "$SECRET" -in certs/dev-cert.cer.enc -d -a -out certs/dev-cert.cer
- openssl aes-256-cbc -k "$SECRET" -in certs/key.p12.enc -d -a -out certs/key.p12
- openssl aes-256-cbc -k "$SECRET" -in certs/dev-key.p12.enc -d -a -out certs/dev-key.p12
- sh ./certs/install-keys.sh
script:
- make
podfile: iOSApp/Podfile
notifications:
email: false
slack: emq-inc:kPgGUXItHsgRsNtc77Fz3f3P
env:
global:
- secure: OqyOY/I8QoucKb4uWY9xu9pkXgFoTahqiRl3BLOCJEbgKMKoUyDnk7N/ALktHp2S/NuB4zj5PNA50Lhb/
zAnI7cTgZT0qEDJv2yDIM/j0wQFEHbKQafEHDWj2vAnook8OBpXiiykqWIb1dKgXCjzcEDjxhSo5V6V5IsdFHVAAew=
- secure: gAw0juDvfHolj0zg93f2qnCFBxetvFIBTsMCgHMzStk0DyKrsh4IV
+1x2CCqSFWo5q4EbXmsKKeyQKqfreIbbQTmZkAmXjIiVg70LDVgsqk5COWUTRgn21pUGWUFosxAkSZZghEf0o3Z62jA6FgeJkCkP
cSLszuE0Qlbiq0SFSw=
- secure: eLo92Sw8KejuadMDTgY+bMAPow3D4zqkhBqXm8oUDctZn3qOJ5iJgMrNxfhSUx+AX/
jiT07+U0vicHWRjGtkIGBeZJ8FVJL7NZQbIbqa80g0+MT4CNk4bumUphY0w+OOzsY8V4OKR90mUmzz3bVN8/
ROFBZygeYBdiLnmhoQ93E=
- secure: fGoTHN29GtCiux/
aGJ2wm3NYtbyIRh0vnfoJafYdzWC6lj0PWrv0KVF31rHA56f7wPVLFnLrx2UhNzZHfMaavD9QSGVYNOcE2AVXuaRWnMrKmCjAkCW
/7qnePwxcgcQTV+zQJTV523G4nDbWQMoQ9wugzTsxhj+Ob+ZF0cGEXUA=
14. Setup
% sudo gem install fastlane
% fastlane init
% vim fastlane/Appfile
% vim fastlane/Fastfile
15. def unit_test
xctest(
workspace: 'EMQ.xcworkspace',
scheme: 'EMQ-Demo',
configuration: 'Demo',
sdk: "iphonesimulator",
arch: "i386",
reports:[{
report: 'html',
output: './test-report.html'
}]
)
slack(
message: 'EMQ iOS App Unit Test',
channel: '#dev-ios',
default_payloads: [:test_result, :git_branch, :git_author, :last_git_commit],
)
end
before_all do
ENV["SLACK_URL"] = "https://hooks.slack.com/services/ABCDEFG/ABCDEFG/ABCDEFG"
clean_build_artifacts
cocoapods
end
16. lane :deliver_demo do
#increment_build_number
sigh
xcodebuild(
workspace: 'EMQ.xcworkspace',
configuration: 'Demo',
scheme: 'EMQ-Demo',
identity: 'iPhone Distribution: EMQ Limited (28HUT34N52)',
clean: true
)
unit_test
xcarchive(
workspace: 'EMQ.xcworkspace',
configuration: 'Demo',
scheme: 'EMQ-Demo',
embed: '../certs/EMQAppStore.mobileprovision',
identity: 'iPhone Distribution: EMQ Limited (28HUT34N52)'
)
xcexport
resign(
ipa: 'EMQ-Demo.ipa',
signing_identity: 'iPhone Distribution: EMQ Limited (28HUT34N52)',
provisioning_profile: '../certs/EMQAppStore.mobileprovision',
)
testflight(skip_deploy: true)
end
19. xcodebuild -arch "i386" -configuration
"Debug" -sdk "iphonesimulator" build |
xcpretty
fastlane build
Trouble shooting
21. • Easy setup
• No maintenance
• Github integration
• Bad for trouble shooting
• Automate your flows
• Flexible, customizable
• Life saver
• Great for CI