ProHoster > Blog > Tsamaiso > Boiphihlelo ba mobile CICD: tekanyetso e le 'ngoe ea fastlane bakeng sa lits'ebetso tse ngata tsa mehala
Boiphihlelo ba mobile CICD: tekanyetso e le 'ngoe ea fastlane bakeng sa lits'ebetso tse ngata tsa mehala
Ke kopa ho bua ka kopanyo e tsoelang pele le thomello ea lisebelisoa tsa mehala tse sebelisang fastlane. Re kenya tšebetsong CI/CD joang lits'ebetsong tsohle tsa mehala, hore na re fihlile joang moo le se etsahetseng qetellong.
Ho se ho ntse ho e-na le boitsebiso bo lekaneng ho marang-rang holim'a sesebelisoa, seo re neng re se na sona qalong, kahoo ka boomo nke ke ka hlalosa sesebelisoa ka botlalo, empa ke tla bua feela ka seo re neng re e-na le sona ka nako eo:
Tharollo ea tekheniki ea ho tsamaisa CI/CD bakeng sa lits'ebetso tsa N
Karolo ea pele ke nostalgia ea matsatsi a khale, 'me ea bobeli ke phihlelo eo u ka e sebelisang ho uena.
Ke kamoo e etsahetseng historing
Selemo 2015
Re sa tsoa qala ho nts'etsapele lits'ebetso tsa mehala, joale re ne re sa tsebe letho ka kopanyo e tsoelang pele, ka DevOps le lintho tse ling tse fesheneng. Nchafatso e 'ngoe le e' ngoe ea kopo e ile ea phatlalatsoa ke moqapi ka boeena ho tsoa mochining oa hae. 'Me haeba bakeng sa Android e bonolo haholo - e kopantsoe, e saennoe .apk mme ra e kenya ho Google Developer Console, ebe bakeng sa iOS sesebelisoa sa kabo sa ka nako eo ka Xcode se re siile mantsiboea a monate - liteko tsa ho khoasolla li-archive hangata li ne li fella ka liphoso mme re ile ra tlameha ho leka hape. Ho ile ha fumaneha hore moqapi ea tsoetseng pele ka ho fetisisa ha a ngole khoutu ka makhetlo a 'maloa ka khoeli, empa ho e-na le hoo o lokolla kopo.
Selemo 2016
Re ile ra hola, re ne re se re ntse re e-na le menahano ea ho lokolla bahlahisi ho tloha letsatsi lohle bakeng sa tokollo, mme kopo ea bobeli e ile ea boela ea hlaha, e ileng ea re sutumelletsa haholoanyane ho ea ho othomathiki. Selemong sona seo, re ile ra kenya Jenkins ka lekhetlo la pele 'me ra ngola mangolo a mangata a tšosang, a tšoanang haholo le ao fastlane a e bontšang litokomaneng tsa eona.
Ka bomalimabe, ho fihlela joale ke bahlahisi ba rona feela ba neng ba tseba hore na mangolo ana a sebetsa joang le hore na ke hobane'ng ha palo ena e sa feleng ea linotlolo e hlokahala, 'me ha ntho e' ngoe e robeha hape, ba ile ba fumana "mantsiboea a monate" bakeng sa ho hlahloba lifate.
Selemo 2017
Selemong sena re ithutile hore ho na le ntho e kang fastlane. Ho ne ho se na tlhahisoleseling e ngata joalo ka hona joale - mokhoa oa ho qala e le 'ngoe, mokhoa oa ho e sebelisa. 'Me sesebelisoa ka boeona se ne se ntse se le litšila ka nako eo: liphoso tse sa khaotseng li ne li re nyahamisa feela' me ho ne ho le thata ho lumela ho othomathike ea boselamose eo ba e tšepisitseng.
Leha ho le joalo, lits'ebeletso tsa mantlha tse kenyellelitsoeng mokokotlong oa fastlane ke gym и pilot, re ile ra khona ho e qala.
Li ntlafalitsoe, haeba feela e se litekanyo tsohle tse hlokahalang bakeng sa xcodebuild, o hloka ho bonts'a - gym e tla utloisisa ka boikemelo hore na e bua ka eng. 'Me bakeng sa tokiso e ntle, o ka bolela linotlolo tse tšoanang le tsa ho xcodebuild, ke mabitso a linotlolo feela a hlakileng haholoanyane.
Lekhetlong lena, ka lebaka la boikoetliso le sebopeho sa xcpretty se hahelletsoeng, likutu tsa kaho li se li le bonolo haholoanyane. Sena se ile sa qala ho boloka nako ea ho lokisa likopano tse robehileng, 'me ka linako tse ling sehlopha sa tokollo se ne se khona ho iketsetsa sona.
Ka bomalimabe, litekanyo tsa lebelo la kopano xcodebuild и gym Ha rea e etsa, empa re tla tšepa litokomane - ho fihla ho 30% ka potlako.
Ts'ebetso e le 'ngoe bakeng sa lits'ebetso tsohle
Selemo sa 2018 le hona joale
Ka 2018, mokhoa oa ho haha le ho tsamaisa likopo o ile oa fallela ka ho feletseng ho Jenkins, bahlahisi ba ile ba khaotsa ho lokolloa ho tloha mechine ea bona, 'me ke sehlopha sa tokollo feela se nang le tokelo ea ho lokolla.
Re ne re se re ntse re batla ho ntlafatsa tlhahiso ea liteko le tlhahlobo e tsitsitseng, 'me mangolo a rona a ile a hōla le ho hōla. Hola le ho fetoha hammoho le likopo tsa rona. Ka nako eo ho ne ho e-na le likopo tse ka bang 10. Ha re nahana hore re na le liforomo tse peli, hoo e ka bang 20 "tse phelang" scripts.
Nako le nako ha re ne re batla ho kenya mohato o mocha ho script, re ne re tlameha ho kopitsa-ho beha likotoana ka har'a likhetla tsohle. Mohlomong re ka be re sebelitse ka hloko haholoanyane, empa hangata liphetoho tse joalo li ile tsa qetella ka ho thaepa, tse ileng tsa fetoha mantsiboea hore sehlopha sa tokollo se lokise mangolo le ho fumana hore na ke mohlankana ofe ea bohlale ea kentseng taelo ena le seo e hlileng e se etsang. Ka kakaretso, ho ke ke ha boleloa hore mangolo a kopano bakeng sa sethala se le seng bonyane a ne a batla a tšoana. Le hoja ka sebele ba ile ba etsa ntho e tšoanang.
Bakeng sa ho qala ts'ebetso ea kopo e ncha, ho ne ho hlokahala ho qeta letsatsi ho khetha mofuta o "ncha" oa mangolo ana, ho e lokisa le ho re "e, ea sebetsa."
Lehlabuleng la 2018, re ile ra boela ra sheba ho fastlane e ntseng e tsoela pele.
Mosebetsi oa #1: akaretsa mehato eohle ea script ebe u e ngola hape ho Fastfile
Ha re qala, mangolo a rona a ne a shebahala joaloka lesela la maoto le nang le litepisi tsohle le lithupa tse ngotsoeng ka khetla e le 'ngoe ho Jenkins. Ha re so fetohele ho lipeipi le karohano ka mothati.
Re shebile seo re nang le sona mme ra tseba mehato e 4 e lumellanang le tlhaloso ea CI/CD ea rona:
haha - ho kenya litšepe, ho bokella polokelo ea litaba,
teko - ho etsa liteko tsa yuniti ea nts'etsopele, ho bala likhatiso,
sonar - e hlahisa li-linters tsohle mme e romela litlaleho ho SonarQube,
deploy - ho romella sets'oants'o sa maiketsetso ho alpha (TestFlight).
'Me haeba u sa kenelle lintlha, u siea linotlolo tse sebelisoang liketsong, u tla fumana Fastfile ena:
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
Ebile, Fastfile ea rona ea pele e ile ea fetoha e nyarosang, ha ho nahanoa ka lithupa tseo re neng re ntse re li hloka le palo ea liparamente tseo re li kentseng sebakeng:
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
Mohlaleng o kaholimo, ke karolo feela ea liparamente tseo re hlokang ho li hlakisa: tsena ke li-parameter tsa kaho - schema, tlhophiso, mabitso a Provisione, hammoho le likarolo tsa kabo - Apple ID ea ak'haonte ea mohlahlami, phasewete, ID ea kopo, joalo-joalo. ho. E le khakanyo ea pele, re beha linotlolo tsena kaofela lifaeleng tse khethehileng - Gymfile, Matchfile и Appfile.
Hona joale ho Jenkins u ka letsetsa litaelo tse khutšoanyane tse sa fifatseng pono 'me li ka baloa habonolo ka leihlo:
U fumane eng? Litaelo tse hlakileng bakeng sa mohato o mong le o mong. Lingoloa tse hloekisitsoeng, tse hlophisitsoeng ka makhethe ka lifaele tsa fastlane. Re thabile, re ile ra mathela ho bahlahisi re ba kopa hore ba kenye lintho tsohle tseo ba li hlokang polokelong ea bona.
Empa re ile ra elelloa ha nako e ntse e ea hore re tla kopana le mathata a tšoanang - re ntse re tla ba le mangolo a kopano a 20 ao ka tsela e 'ngoe a neng a tla qala ho phela bophelo ba bona, ho tla ba thata le ho feta ho a hlophisa, kaha mangolo a ne a tla fallela libakeng tsa polokelo, mme re ne re se na phihlello moo. 'Me, ka kakaretso, ho ke ke ha khoneha ho rarolla bohloko ba rona ka tsela ena.
Mosebetsi oa #2: fumana Fastfile e le 'ngoe bakeng sa lits'ebetso tsa N
Hona joale ho bonahala eka ho rarolla bothata ha ho thata hakaalo - beha mefuta-futa, 'me re tsamaee. E, ha e le hantle, ke kamoo bothata bo ileng ba rarolloa kateng. Empa ka nako eo ha re e senya, re ne re se na tsebo ea fastlane ka boeona, leha e le ho Ruby, moo fastlane e ngotsoeng ho eona, kapa mehlala e sebetsang marang-rang - e mong le e mong ea ngotseng ka fastlane o ne a lekanyelitsoe ho mohlala bakeng sa kopo e le 'ngoe bakeng sa moetsi e mong.
Fastlane e khona ho sebetsana le maemo a fapaneng a tikoloho, 'me re se re lekile sena ka ho beha senotlolo sa Keychain:
ENV['KEYCHAIN_PASSWORD']
Ka mor'a ho sheba mangolo a rona, re khethile likarolo tse tloaelehileng:
#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
Hona joale, e le hore re qale ho sebelisa linotlolo tsena lifaeleng tsa fastlane, re ne re tlameha ho tseba hore na re ka li tsamaisa joang moo. Fastlane e na le tharollo bakeng sa sena: ho kenya mefuta e fapaneng ka dotenv. Litokomane li re haeba ho bohlokoa ho uena ho kenya linotlolo bakeng sa merero e fapaneng, theha lifaele tse 'maloa tsa tlhophiso bukeng ea fastlane. .env, .env.default, .env.development.
Eaba re etsa qeto ea ho sebelisa laebrari ena ka tsela e fapaneng hanyane. Ha re beheng polokelong ea bahlahisi eseng lingoloa tsa fastlane le tlhaiso-leseling ea eona ea meta, empa linotlolo tse ikhethang tsa ts'ebeliso ena faeleng. .env.appName.
Ka boeena Fastfile, Appfile, Matchfile и Gymfile, re ile ra e pata sebakeng se ka thōko sa polokelo. Faele e eketsehileng e nang le linotlolo tsa password tse tsoang lits'ebeletso tse ling e ne e patiloe moo - .env.
O ka bona mohlala mona.
Ho CI, mohala ha o so fetohe haholo; senotlolo sa tlhophiso bakeng sa sesebelisoa se itseng se kentsoe:
E siile tharollo hajoale, leha Fastlane e na le tharollo ea ho jarolla Fastfile ka nke khato e molemoimport_from_git, empa e sebetsa feela bakeng sa Fastfile, empa eseng bakeng sa lifaele tse ling. Haeba u batla "e ntle haholo", u ka ngola ea hau action.
Sete e tšoanang e entsoe bakeng sa lits'ebetso tsa Android le ReactNative, lifaele li sebakeng se le seng sa polokelo, empa makaleng a fapaneng. iOS, android и react_native.
Ha sehlopha sa tokollo se batla ho eketsa mohato o mocha, liphetoho ho script li ngotsoe ka MR ka git, ha ho sa na tlhokahalo ea ho batla batlōli ba mengolo e robehileng, 'me ka kakaretso, joale u tlameha ho leka ho e senya.
Joale ke 'nete
Pejana, re ne re qeta nako re boloka mangolo ohle, re a ntlafatsa le ho lokisa litlamorao tsohle tsa liapdeite. Ho ne ho soabisa haholo ha mabaka a liphoso le nako ea ho theoha ha litokollo e ne e le li-typos tse bonolo tseo ho neng ho le thata haholo ho boloka tlaleho ka har'a moqoqo oa likhetla. Hona joale liphoso tse joalo li fokotsehile ho bonyane. Liphetoho li fetisetsoa lits'ebetsong tsohle ka nako e le 'ngoe. 'Me ho nka metsotso e 15 ho kenya kopo e ncha ts'ebetsong - theha pipeline ea template ho CI' me u kenye linotlolo sebakeng sa polokelo ea moqapi.
Ho bonahala eka ntlha e nang le Fastfile bakeng sa Android le signature ea kopo e lula e sa hlalosoa; haeba sengoloa se khahla, ke tla ngola tsoelopele. Ke tla thabela ho bona lipotso kapa litlhahiso tsa hau "o ka rarolla bothata bona joang" maikutlong kapa ho Telegraph bashkirova.