ProHoster > Блог > Nchịkwa > Ahụmịhe CICD mkpanaaka: otu ọkọlọtọ fastlane maka ọtụtụ ngwa mkpanaka
Ahụmịhe CICD mkpanaaka: otu ọkọlọtọ fastlane maka ọtụtụ ngwa mkpanaka
Ọ ga-amasị m ikwu maka njikọta na nnyefe na-aga n'ihu maka ngwa mkpanaka site na iji fastlane. Otu esi etinye CI/CD na ngwa mkpanaka niile, otu anyị siri ruo ebe ahụ na ihe mere na njedebe.
Enweelarị ihe zuru oke na netwọkụ dị na ngwaọrụ ahụ, nke anyị enweghị na mbido, yabụ na m ga-ama ụma akọwaghị ngwaọrụ ahụ n'ụzọ zuru ezu, mana m ga-ezo aka na ihe anyị nwere mgbe ahụ:
Akụkụ nke mbụ bụ ọtụtụ agụụ maka oge ochie, nke abụọ bụ ahụmịhe nke ị nwere ike itinye n'ọrụ n'onwe gị.
Otú a ka o si mee n'akụkọ ihe mere eme
Afọ 2015
Anyị malitere ịmalite ngwa mkpanaka, mgbe ahụ anyị amaghị ihe ọ bụla gbasara ntinye aka na-aga n'ihu, gbasara DevOps na ihe ndị ọzọ ejiji. Onye nrụpụta n'onwe ya wepụrụ mmelite ngwa ọ bụla site na igwe ya. Ma ọ bụrụ na maka gam akporo ọ dị mfe - gbakọtara, bịanyere aka na ya .apk wee bulite ya na Google Developer Console, mgbe ahụ maka iOS ngwa nkesa nkesa site na Xcode mere ka anyị nwee ọmarịcha mgbede - mbọ iji budata ebe a na-edebe ihe ochie na-ejedebe na njehie na anyị ga-anwale ọzọ. Ọ tụgharịrị na onye nrụpụta kachasị elu anaghị ede koodu ọtụtụ ugboro n'ọnwa, kama na-ewepụta ngwa ahụ.
Afọ 2016
Anyị tolitere, anyị enweelarị echiche banyere otu esi eme ka ndị mmepe nweere onwe ha otu ụbọchị dum maka ntọhapụ, ngwa nke abụọ pụtakwara, nke mere ka anyị nwekwuo ike kwupụta akpaaka. N'otu afọ ahụ, anyị wụnye Jenkins na nke mbụ wee dee ụyọkọ nke edemede egwu, yiri nke fastlane na-egosi na akwụkwọ ya.
N'ụzọ dị mwute, ruo ugbu a, ọ bụ naanị ndị mmepe anyị maara ka edemede ndị a si arụ ọrụ na ihe kpatara mkpa igodo a na-adịghị agwụ agwụ, na mgbe ihe mebiri ọzọ, ha nwetara "anyasị mara mma" maka nyochaa ndekọ.
Afọ 2017
N'afọ a, anyị mụtara na e nwere ihe dị ka fastlane. Enweghị ozi dị ukwuu dịka enwere ugbu a - otu esi amalite otu, otu esi eji ya. Na ngwá ọrụ n'onwe ya ka crude n'oge ahụ: mgbe niile njehie na-emechu anyị ihu na o siri ike ikwere na kpokọtara akpaaka na ha kwere nkwa.
Agbanyeghị, akụrụngwa ndị bụ isi gụnyere na isi fastlane bụ gym и pilot, anyị jisiri ike malite ya.
Ha na-emeziwanye, ma ọ bụrụ na naanị n'ihi na ọ bụghị ihe niile parameters dị mkpa maka xcodebuild, mkpa ka ị gosi - gym ga-enwere onwe ya ịghọta ebe na ihe ụgha. Maka imeziwanye nke ọma, ị nwere ike ịkọwa otu igodo dị na ya xcodebuild, naanị aha igodo ahụ ka doro anya.
Oge a, ekele maka mgbatị ahụ yana usoro xcpretty arụnyere n'ime ya, ndekọ ihe nrụpụta abụrụla nke a na-ahụ anya nke ukwuu. Nke a malitere ichekwa oge iji dozie mgbakọ ndị mebiri emebi, mgbe ụfọdụ ndị otu ntọhapụ nwere ike ịchọpụta ya n'onwe ha.
N'ụzọ dị mwute, mgbakọ ọsọ nha xcodebuild и gym Anyị emeghị ya, mana anyị ga-atụkwasị akwụkwọ ahụ obi - ruo 30% speedup.
Otu usoro maka ngwa niile
Afọ 2018 na ugbu a
Ka ọ na-erule 2018, usoro nke iwulite na iwepụta ngwa na-aga kpamkpam na Jenkins, ndị mmepe kwụsịrị ịhapụ igwe ha, naanị ndị otu ntọhapụ nwere ikike ịhapụ.
Anyị chọburu imeziwanye mmalite nke ule na nyocha static, na edemede anyị toro ma tolite. Gree wee gbanwee yana ngwa anyị. N'oge ahụ, e nwere ihe dị ka ngwa 10. N'iburu n'uche na anyị nwere ikpo okwu abụọ, nke ahụ bụ ihe dịka 20 edemede "dị ndụ".
Oge ọ bụla anyị chọrọ itinye nzọụkwụ ọhụrụ na edemede ahụ, anyị ga-edegharị-mado iberibe ahụ n'ime edemede shei niile. Ikekwe anyị gaara arụ ọrụ nke ọma karị, ma ọtụtụ mgbe mgbanwe ndị dị otú ahụ na-ejedebe na typos, nke ghọrọ mgbede maka ndị otu ntọhapụ iji dozie edemede ma chọpụta onye smart guy gbakwunyere iwu a na ihe ọ na-eme n'ezie. N'ozuzu, a pụghị ikwu na ihe odide maka mgbakọ maka otu ikpo okwu dị ma ọ dịkarịa ala yiri nke ahụ. Ọ bụ ezie na ha mere otu ihe ahụ n'ezie.
Iji malite usoro maka ngwa ọhụrụ, ọ dị mkpa iji otu ụbọchị họrọ ụdị "ọhụrụ" nke scripts ndị a, wepụ ya wee kwuo na "ee, ọ na-arụ ọrụ."
Ọrụ #1: chịkọta usoro edemede niile wee degharịa ha na Fastfile
Mgbe anyị malitere, script anyị dị ka akwa ukwu nke nwere steepụ niile na crutches n'otu mkpụrụedemede shei na Jenkins. Anyị agbanyebeghị na pipeline na nkewa site na ọkwa.
Anyị lere anya n'ihe anyị nwere wee chọpụta usoro 4 dabara na nkọwa nke CI/CD anyị:
wuo - ịwụnye ihe ndabere, na-achịkọta ebe nchekwa,
ule - na-agba ọsọ ule otu onye nrụpụta, ịgbakọ mkpuchi,
sonar - na-ewepụta linters niile wee ziga akụkọ na SonarQube,
deploy — iziga artifact na alfa (TestFlight).
Ma ọ bụrụ na ịgaghị n'ime nkọwa, na-ewepụ igodo ndị ejiri mee ihe, ị ga-enweta Fastfile a:
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
N'ezie, Fastfile mbụ anyị tụgharịrị bụrụ ihe jọgburu onwe ya, na-atụle ụfọdụ n'ime crutches anyị ka chọrọ yana ọnụọgụ paramita anyị dochiri:
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
N'ihe atụ dị n'elu, naanị akụkụ nke paramita ndị anyị kwesịrị ịkọwapụta: ndị a bụ ihe nrụpụta - atụmatụ, nhazi, aha Profaịlụ, yana nkesa nkesa - Apple ID nke akaụntụ onye nrụpụta, paswọọdụ, ID ngwa, na ndị ọzọ. na. Dị ka nke mbụ, anyị na-etinye igodo ndị a niile na faịlụ pụrụ iche - Gymfile, Matchfile и Appfile.
Ugbu a na Jenkins ị nwere ike ịkpọ iwu dị mkpirikpi nke na-adịghị eme ka anya dị mfe ma anya na-agụ ya:
Kedu ihe ị nwetara? Kpochapụ iwu maka nzọụkwụ ọ bụla. Ederede emechara, hazie nke ọma na faịlụ fastlane. N'ịṅụrị ọṅụ, anyị gbagara ndị mmepe na-arịọ ha ka ha tinye ihe niile ha chọrọ na ebe nchekwa ha.
Ma anyị ghọtara na oge na anyị ga-ezute otu ihe isi ike - anyị ka ga-enwe 20 mgbakọ scripts nke ga-otu ụzọ ma ọ bụ ọzọ na-amalite ibi ndụ nke onwe ha, ọ ga-esi ike karị idezi ha, ebe ọ bụ na script ga-akwaga repositories. anyị enweghịkwa ohere ebe ahụ. Na, n'ozuzu, ọ gaghị ekwe omume idozi ihe mgbu anyị n'ụzọ dị otú a.
Ọrụ #2: nweta otu Fastfile maka ngwa N
Ugbu a, ọ dị ka idozi nsogbu ahụ abụghị ihe siri ike - dozie mgbanwe ndị ahụ, ka anyị gaa. Ee, n'ezie, nke ahụ bụ otú e si dozie nsogbu ahụ. Mana n'oge anyị na-agbagharị ya, anyị enweghị nka na fastlane n'onwe ya, ma ọ bụ na Ruby, nke edere fastlane, ma ọ bụ ọmụmaatụ bara uru na netwọkụ - onye ọ bụla dere banyere fastlane mgbe ahụ bụ naanị ihe atụ maka otu ngwa. maka otu onye nrụpụta.
Fastlane nwere ike ijikwa mgbanwe gburugburu ebe obibi, anyị anwalela nke a site na ịtọ paswọọdụ Keychain:
ENV['KEYCHAIN_PASSWORD']
Mgbe anyị lechara anya n'edemede anyị, anyị chọpụtara akụkụ ndị a na-ahụkarị:
#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
Ugbu a, ka ịmalite iji igodo ndị a na faịlụ fastlane, anyị ga-achọpụta otu esi ebufe ha ebe ahụ. Fastlane nwere ngwọta maka nke a: na-ebugharị mgbanwe site na dotenv. Akwụkwọ ahụ na-ekwu na ọ bụrụ na ọ dị mkpa ka ị na-ebu igodo maka ebumnuche dị iche iche, mepụta faịlụ nhazi dị iche iche na ndekọ fastlane. .env, .env.default, .env.development.
Ma anyị kpebiri iji ọbá akwụkwọ a dịtụ iche. Ka anyị tinye na ebe nchekwa ndị mmepe ọ bụghị script fastlane na ozi meta ya, kama igodo pụrụ iche nke ngwa a na faịlụ ahụ. .env.appName.
Onwe Ha Fastfile, Appfile, Matchfile и Gymfile, anyị zoro ya na ebe nchekwa dị iche. Ezochiri faịlụ agbakwunyere nwere igodo paswọọdụ sitere na ọrụ ndị ọzọ ebe ahụ - .env.
Ị nwere ike ịhụ ihe atụ ebe a.
Na CI, oku agbanwebeghị nke ukwuu; agbakwunyere igodo nhazi maka otu ngwa:
Hapụ ngwọta a ugbu a, ọ bụ ezie na Fastlane nwere ngwọta maka nbudata Fastfile site na edinamimport_from_git, mana ọ na-arụ ọrụ naanị maka Fastfile, mana ọ bụghị maka faịlụ ndị ọzọ. Ọ bụrụ na ịchọrọ "ezigbo mara mma", ị nwere ike ide nke gị action.
Emere otu ihe yiri nke ahụ maka ngwa gam akporo na ReactNative, faịlụ ndị ahụ dị n'otu ebe nchekwa, mana na alaka dị iche iche. iOS, android и react_native.
Mgbe ndị otu ntọhapụ chọrọ ịgbakwunye nzọụkwụ ọhụrụ, a na-edekọ mgbanwe na edemede site na MR na git, ọ dịghịzi mkpa ịchọ ndị na-eme ihe ọjọọ nke edemede ndị gbajiri agbaji, na n'ozuzu, ugbu a ị ga-agbalị imebi ya.
Ugbu a nke ahụ bụ n'ezie
Na mbụ, anyị na-etinye oge na-edobe edemede niile, na-emelite ha na idozi nsonaazụ niile nke mmelite. Ọ bụ ihe na-akụda mmụọ nke ukwuu mgbe ihe kpatara njehie na oge nkwụsị na mwepụta bụ ụdị typos dị mfe nke siri ike idobe n'ọgba aghara nke scripts shei. Ugbu a njehie dị otú ahụ na-ebelata ka opekempe. A na-atụgharị mgbanwe na ngwa niile n'otu oge. Ọ na-ewe nkeji iri na ise iji tinye ngwa ọhụrụ n'ime usoro a - guzobe pipeline template na CI ma tinye igodo na ebe nchekwa onye nrụpụta.
Ọ dị ka isi ihe dị na Fastfile maka gam akporo na mbinye aka ngwa ka enweghị nkọwa; ọ bụrụ na akụkọ ahụ na-atọ ụtọ, m ga-ede n'ihu. Ọ ga-atọ m ụtọ ịhụ ajụjụ gị ma ọ bụ aro gị "kedu ka ị ga-esi dozie nsogbu a" na nkwupụta ma ọ bụ na Telegram bashkirova.