Ndinoda kutaura nezve kuenderera mberi kwekubatanidza uye kuendesa kune nharembozha uchishandisa fastlane. Mashandisiro atinoita CI/CD pane ese nharembozha, kuti takasvika sei uye chii chakaitika kumagumo.
Patova nezvakakwana panetiweki pane chishandiso, icho isu takashaya pakutanga, saka ini nemaune handisi kuzotsanangura chishandiso zvakadzama, asi ndinongo tarisa kune zvataive nazvo panguva iyoyo:
Official fastlane zvinyorwa Mienzaniso kubva kune mamwe makambani Isu tinogadzirisa kuungana kweiOS zvikumbiro tichishandisa Fastlane
Chinyorwa chine zvikamu zviviri:
- Kumashure kwekubuda kwe mobile CI / CD mukambani
- Tekinoroji mhinduro yekuburitsa CI/CD yeN-maapplication
Chikamu chekutanga chishuwo chemazuva ekare, uye chechipiri chiitiko chaunogona kuzvishandisa iwe pachako.
Izvi ndizvo zvakaitika munhoroondo
Mwaka 2015
Isu takangotanga kugadzira nharembozha, saka isu takanga tisingazive chero chinhu nezvekuenderera mberi kwekubatanidzwa, nezveDevOps nezvimwe zvinhu zvefashoni. Yega yega yekuvandudza application yakatenderedzwa nemugadziri pachake kubva pamushini wake. Uye kana ye Android iri nyore - yakaunganidzwa, yakasainwa .apk
ndokuiisa kuGoogle Developer Console, ipapo yeIOS iyo yekugovera chishandiso kuburikidza neXcode yakatisiya nemanheru makuru - kuyedza kudhawunirodha chengetedzo yaiwanzopera mukukanganisa uye taifanira kuedza zvakare. Zvakazoitika kuti mugadziri wepamberi haanyore kodhi kakawanda pamwedzi, asi anoburitsa application.
Mwaka 2016
Isu takakura, takanga tatova nepfungwa dzekusunungura vagadziri kubva zuva rose kuti vasunungurwe, uye yechipiri application yakaonekwa, iyo yakangotisundidzira zvakanyanya kune otomatiki. Gore rimwe chetero, takaisa Jenkins kekutanga uye takanyora magwaro akawanda anotyisa, akafanana chaizvo neaya anoratidza fastlane muzvinyorwa zvayo.
$ xcodebuild clean archive -archivePath build/MyApp
-scheme MyApp
$ xcodebuild -exportArchive
-exportFormat ipa
-archivePath "build/MyApp.xcarchive"
-exportPath "build/MyApp.ipa"
-exportProvisioningProfile "ProvisioningProfileName"
$ cd /Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/
$ ./altool βupload-app
-f {abs path to your project}/build/{release scheme}.ipa
-u "[email protected]"
-p "PASS_APPLE_ID"
Nehurombo, kusvika parizvino vagadziri vedu chete ndivo vaiziva mashandiro anoita zvinyorwa izvi uye nei iyi isingaperi murwi wemakiyi ichidikanwa, uye kana chimwe chinhu chaputsika zvakare, vakawana "manheru akanaka" ekuongorora matanda.
Mwaka 2017
Gore rino takadzidza kuti kune chinhu chinonzi fastlane. Pakanga pasina ruzivo rwakawanda sezviripo iye zvino - kutanga sei, kuishandisa sei. Uye chishandiso pachacho chaive chichiri chisina kuchena panguva iyoyo: zvikanganiso zvenguva dzose zvakangotiodza mwoyo uye zvaive zvakaoma kutenda mumashiripiti otomatiki avakavimbisa.
Nekudaro, izvo zvakakosha zvinoshandiswa zvinosanganisirwa mufastlane musimboti ndizvo gym
ΠΈ pilot
, takakwanisa kuzvitanga.
Zvinyorwa zvedu zvakavandudzwa zvishoma.
$ fastlane gym β-workspace "Example.xcworkspace"
--scheme "AppName"
β-buildlog_path "/tmp"
-βclean
Iwo akagadziridzwa, kana chete nekuti kwete ese ma paramita anodiwa xcodebuild
, unofanira kuratidza - gym
achazvimiririra kunzwisisa kuti kupi uye chii chiripo. Uye kune zvimwe zvakanaka-tuning, unogona kutsanangura makiyi akafanana neari mukati xcodebuild
, kungodudza mazita emakiyi ndiko kujeka.
Panguva ino, nekuda kwejimu uye yakavakirwa-mukati xcpretty fomati, matanda ekuvaka ave akanyanya kunyoreka. Izvi zvakatanga kuchengetedza nguva pakugadzirisa magungano akaputsika, uye dzimwe nguva timu yekuburitsa yaigona kuzvionera yega.
Sezvineiwo, gungano kumhanya zviyero xcodebuild
ΠΈ gym
Hatina kuzviita, asi isu tichavimba nemagwaro - kusvika ku30% kukurumidza.
Single process kune ese maapplication
Gore ra2018 uye ikozvino
Pakazosvika 2018, maitiro ekuvaka uye kuburitsa zvikumbiro zvakatamira zvachose kuJenkins, vagadziri vakamira kuburitsa kubva kumashini avo, uye chete timu yekuburitsa yaive nekodzero yekuburitsa.
Isu tanga tichida kuvandudza kuvhurwa kwebvunzo uye static ongororo, uye zvinyorwa zvedu zvakakura nekukura. Yakakura uye yakachinja pamwe chete nemaapplication edu. Panguva iyoyo, pakanga pane zvikumbiro zve 10. Tichifunga kuti tine mapuratifomu maviri, iyo inenge makumi maviri "mapenyu" zvinyorwa.
Pese pataida kuwedzera nhanho nyowani kune script, taifanira kukopa-namira zvimedu muzvinyorwa zvese zvegoko. Zvichida tingadai takashanda zvakanyatsonaka, asi kazhinji shanduko dzakadaro dzakaguma mumataipi, ayo akachinja kuva manheru kuti timu yekuburitsa igadzirise zvinyorwa uye kuona kuti ndeupi murume akangwara akawedzera uyu murairo uye zvaanonyatsoita. Kazhinji, hazvigone kutaurwa kuti zvinyorwa zvekusangana kwepuratifomu imwe zvaive zvakada kufanana. Kunyange zvazvo ivo zvirokwazvo vakaita chinhu chimwe chetecho.
Kuti utange hurongwa hwekushandisa kutsva, zvaive zvakafanira kupedza zuva kusarudza "itsva" vhezheni yezvinyorwa izvi, gadzirisa uye uti "hongu, inoshanda."
Muzhizha ra2018, takatarisa zvakare kune ichiri kusimukira fastlane.
Basa #1: pfupikisa ese script nhanho uye nyora zvakare muFastfile
Patakatanga, zvinyorwa zvedu zvaiita sejira retsoka rine nhanho dzose uye madondoro mune imwe shell script muJenkins. Hatisati tachinja papipeline uye division by stage.
Takatarisa zvatinazvo tikaona matanho mana anoenderana nerondedzero yeCI/CD yedu:
- kuvaka - kuisa zvinotsamira, kuunganidza iyo archive,
- bvunzo - inomhanyisa yekuvandudza unit bvunzo, kuverenga kuvharwa,
- sonar - inotangisa zvese linters uye inotumira mishumo kuSonarQube,
- deploy - kutumira artifact kune alpha (TestFlight).
Uye kana ukasapinda mune zvakadzama, uchisiya makiyi anoshandiswa muzviito, iwe unowana iyi Fastfile:
default_platform(:ios)
platform :ios do
before_all do
unlock
end
desc "Build stage"
lane :build do
match
prepare_build
gym
end
desc "Prepare build stage: carthage and cocoapods"
lane :prepare_build do
pathCartfile = ""
Dir.chdir("..") do
pathCartfile = File.join(Dir.pwd, "/Cartfile")
end
if File.exist?(pathCartfile)
carthage
end
pathPodfile = ""
Dir.chdir("..") do
pathPodfile = File.join(Dir.pwd, "/Podfile")
end
if File.exist?(pathPodfile)
cocoapods
end
end
desc "Test stage"
lane :test do
scan
xcov
end
desc "Sonar stage (after run test!)"
lane :run_sonar do
slather
lizard
swiftlint
sonar
end
desc "Deploy to testflight stage"
lane :deploy do
pilot
end
desc "Unlock keychain"
private_lane :unlock do
pass = ENV['KEYCHAIN_PASSWORD']
unlock_keychain(
password: pass
)
end
end
Muchokwadi, yedu yekutanga Fastfile yakave yakashata, tichifunga nezvemamwe madondoro atakanga tichiri kuda uye huwandu hwema paramita atakatsiva:
lane :build do
carthage(
command: "update",
use_binaries: false,
platform: "ios",
cache_builds: true)
cocoapods(
clean: true,
podfile: "./Podfile",
use_bundle_exec: false)
gym(
workspace: "MyApp.xcworkspace",
configuration: "Release",
scheme: "MyApp",
clean: true,
output_directory: "/build",
output_name: "my-app.ipa")
end
lane :deploy do
pilot(
username: "[email protected]",
app_identifier: "com.example.app",
dev_portal_team_id: "TEAM_ID_NUMBER_DEV",
team_id: "ITS_TEAM_ID")
end
Mumuenzaniso uri pamusoro, chikamu chete chema parameter atinoda kutsanangura: aya ndiwo maparamendi ekuvaka - schema, gadziriso, Provision Profile mazita, pamwe nekugovera paramita - Apple ID yeakaundi yekuvandudza, password, application ID, zvichingodaro. on. Sekufungidzira kwekutanga, tinoisa makiyi ese aya mumafaira akakosha - Gymfile
, Matchfile
ΠΈ Appfile
.
Iye zvino muJenkins unogona kudana mirairo mipfupi iyo isingasvibise maonero uye inoverengeka nyore neziso:
# fastlane ios <lane_name>
$ fastlane ios build
$ fastlane ios test
$ fastlane ios run_sonar
$ fastlane ios deploy
Hurray, tiri vakuru
Chii chawawana? Mirairo yakajeka padanho rega rega. Manyoro akacheneswa, akarongwa zvakanaka mufastlane mafaera. Tichifara, takamhanyira kuvagadziri tichivakumbira kuti vawedzere zvese zvavaida kumatura avo.
Asi takaona nekufamba kwenguva kuti taizosangana nematambudziko akafanana - taizoramba tine zvinyorwa zvemagungano makumi maviri zvekuti neimwe nzira kana imwe nzira yaizotanga kurarama hupenyu hwavo, zvaizonetsa kuagadzirisa, sezvo zvinyorwa zvaizoenda kunzvimbo dzekuchengetedza, uye takanga tisina nzira yokusvika ikoko. Uye, kazhinji, hazvizogoneki kugadzirisa marwadzo edu nenzira iyi.
Basa #2: tora imwe Fastfile yeN application
Iye zvino zvinoratidzika kuti kugadzirisa dambudziko hakuna kunyanya kuoma - gadzirisa zvinoshanduka, uye ngatiende. Hongu, chaizvoizvo, ndiyo nzira iyo dambudziko rakagadziriswa. Asi panguva iyoyo patakanga tichizviputira, isu takanga tisina hunyanzvi mufastlane pachayo, kana muRuby, umo makanyorwa fastlane, kana mienzaniso inobatsira pane network - wese akanyora nezve fastlane ipapo akaganhurirwa kumuenzaniso kune imwe application. kune mumwe mugadziri.
Fastlane inogona kubata nharaunda dzakasiyana, uye isu takatoedza izvi nekuisa Keychain password:
ENV['KEYCHAIN_PASSWORD']
Mushure mekutarisa zvinyorwa zvedu, takaona zvikamu zvakajairika:
#for build, test and deploy
APPLICATION_SCHEME_NAME=appScheme
APPLICATION_PROJECT_NAME=app.xcodeproj
APPLICATION_WORKSPACE_NAME=app.xcworkspace
APPLICATION_NAME=appName
OUTPUT_IPA_NAME=appName.ipa
#app info
APP_BUNDLE_IDENTIFIER=com.example.appName
[email protected]
TEAM_ID=ABCD1234
FASTLANE_ITC_TEAM_ID=123456789
Zvino, kuti titange kushandisa makiyi aya mumafaera efastlane, taifanira kufunga kuti toaendesa sei ikoko. Fastlane ine mhinduro yeizvi: .env
, .env.default
, .env.development
.
Zvino takafunga kushandisa raibhurari iyi zvishoma zvakasiyana. Ngatiise munzvimbo yevagadziri kwete zvinyorwa zvefastlane uye ruzivo rwayo rwemeta, asi makiyi akasarudzika echishandiso ichi mufaira. .env.appName
.
Ivo pachavo Fastfile
, Appfile
, Matchfile
ΠΈ Gymfile
, takaiviga mune imwe nzvimbo inochengeterwa zvinhu. Rimwe faira rine makiyi epassword kubva kune mamwe masevhisi rakavigwa ipapo - .env
.
Unogona kuona muenzaniso
PaCI, kufona hakuna kuchinja zvakanyanya; kiyi yekumisikidza yeimwe application yakawedzerwa:
# fastlane ios <lane_name> --env appName
$ fastlane ios build --env appName
$ fastlane ios test --env appName
$ fastlane ios run_sonar --env appName
$ fastlane ios deploy --env appName
Tisati tashandisa mirairo, tinoisa repository yedu nemagwaro. Hazvina kutaridzika zvakanaka:
git clone [email protected]/FastlaneCICD.git fastlane_temp
cp ./fastlane_temp/fastlane/* ./fastlane/
cp ./fastlane_temp/fastlane/.env fastlane/.env
Kusiya iyi mhinduro ikozvino, kunyangwe Fastlane ine mhinduro yekurodha Fastfile kuburikidza import_from_git
, asi inongoshanda kuFastfile, asi kwete kune mamwe mafaera. Kana iwe uchida "zvakanaka chaizvo", unogona kunyora iwe pachako action
.
Seti yakafanana yakagadzirirwa Android application uye ReactNative, mafaera ari mune imwechete repository, asi mumapazi akasiyana. iOS
, android
ΠΈ react_native
.
Kana boka rekusunungura richida kuwedzera imwe nhanho itsva, shanduko mune script yakanyorwa kuburikidza neMR mu git, hapasisina chikonzero chekutsvaga vatadzi vezvinyorwa zvakaputsika, uye kazhinji, ikozvino unofanira kuedza kuiputsa.
Zvino ndizvo zvazviri
Kare, takapedza nguva tichichengetedza zvinyorwa zvese, tichizvivandudza nekugadzirisa zvese zvinokonzeresa. Zvaive zvinoodza moyo apo zvikonzero zvekukanganisa uye kuderera mukuburitswa zvaive nyore typos izvo zvaive zvakaoma kuchengeta track yejumble yegoko script. Iye zvino zvikanganiso zvakadaro zvakaderedzwa kusvika zvishoma. Shanduko dzinoendeswa kune ese maapplication kamwechete. Uye zvinotora maminetsi gumi neshanu kuisa application nyowani mukuita - gadza pombi yetemplate paCI uye wedzera makiyi kune inogadziridza repository.
Zvinoita sekunge iyo poindi ine Fastfile ye Android uye siginecha yekushandisa inoramba isina kutsanangurwa; kana chinyorwa ichi chinonakidza, ini ndichanyora kuenderera. Ini ndichafara kuona mibvunzo yako kana mazano "ungagadzirisa sei dambudziko iri" mune zvakataurwa kana paTeregiramu
Source: www.habr.com