ProHoster > ΠΠ»ΠΎΠ³ > Maamulka > Waayo-aragnimada CICD ee mobilada: hal halbeeg oo degdeg ah oo loogu talagalay codsiyo badan oo mobilada ah
Waayo-aragnimada CICD ee mobilada: hal halbeeg oo degdeg ah oo loogu talagalay codsiyo badan oo mobilada ah
Waxaan jeclaan lahaa inaan ka hadlo isdhexgalka joogtada ah iyo gaarsiinta abka mobaylada anigoo isticmaalaya fastlane. Sida aan uga hirgelino CI/CD dhammaan codsiyada mobilada, sida aan ku gaadhnay iyo wixii dhacay dhamaadkii.
Waxaa jira qalab ku filan oo ku filan shabakada qalabka, kaas oo aan aad u yareyn bilowgii, markaa si ula kac ah uma sifayn doono qalabka si faahfaahsan, laakiin kaliya waxaan tixraaci doonaa wixii aan haysanay markaa:
Xalka farsamada ee soo saarista CI/CD ee codsiyada N
Qaybta hore waa nostalgia ka badan maalmihii hore, iyo tan labaad waa waayo-aragnimo in aad codsan karto naftaada.
Sidan ayay u dhacday taariikh ahaan
Sannadkii 2015
Waxaan hadda bilownay horumarinta codsiyada moobiilka, ka dib waxba kama naqaano isdhexgalka joogtada ah, oo ku saabsan DevOps iyo waxyaabo kale oo moodada ah. Cusbooneysii codsi kasta waxaa ka soo saaray horumariyaha laftiisa mishiinkiisa. Oo haddii loogu talagalay Android ay aad u fudud tahay - la soo ururiyey, saxeexay .apk oo u soo galiyay Google Developer Console, ka dib iOS qalab qaybinta ka dib Xcode waxay nooga tagtay habeeno aad u wanaagsan - isku dayga lagu soo dejiyo kaydka inta badan waxay ku dhammaatay khaladaad waxaanan isku daynay mar kale. Waxaa soo baxday in horumariyaha ugu horumarsan uusan qorin kood dhowr jeer bishii, laakiin halkii uu sii daayo codsiga.
Sannadkii 2016
Waan koray, waxaan horeyba u haysanay fikrado ku saabsan sida loo xoreeyo horumarinta maalin dhan si loo sii daayo, iyo codsi labaad ayaa sidoo kale soo muuqday, kaas oo kaliya nagu riixay si otomaatig ah. Isla sanadkaas, waxaan ku rakibnay Jenkins markii ugu horeysay oo aan ku qornay farabadan qoraallo cabsi leh, oo aad u la mid ah kuwa fastlane ayaa muujinaya dukumeentigeeda.
Nasiib darro, ilaa hadda kaliya horumariyayaasheena ayaa ogaa sida qoraalladani u shaqeeyaan iyo sababta furayaashan aan dhamaadka lahayn ee loogu baahan yahay, iyo markii ay wax jabeen mar kale, waxay heleen βhabeenkii quruxda badnaaβ ee lagu falanqeeyay diiwaannada.
Sannadkii 2017
Sannadkan waxaan barannay in uu jiro wax la yiraahdo fastlane. Ma jirin macluumaad badan sida hadda jira - sida loo bilaabo mid, sida loo isticmaalo. Qalabkii laftiisana wuxuu ahaa mid cayriin wakhtigaas: khaladaad joogto ah ayaa naga niyad jabiyay oo way adkeyd in la rumaysto otomatiga sixirka ee ay ballanqaadeen.
Si kastaba ha ahaatee, adeegyada ugu muhiimsan ee lagu daro xudunta fastlane waa gym ΠΈ pilot, waxaan ku guuleysanay inaan bilowno.
Sannadkii 2018, habka dhisidda iyo soo-dejinta codsiyada ayaa si buuxda u guuray Jenkins, horumariyayaashu waxay joojiyeen sii-deynta mashiinadooda, oo kaliya kooxda sii-deynta ayaa xaq u leh inay sii daayaan.
Waxaan mar hore rabnay inaan horumarino bilawga imtixaanada iyo falanqaynta taagan, qoraaladayadu way koreen oo koreen. Koray oo la beddeley codsiyadayada. Waqtigaas waxaa jiray ku saabsan codsiyada 10. Iyadoo la tixgelinayo in aan haysanno laba goobood, taasi waxay ku saabsan tahay 20 qoraallada "nool".
Mar kasta oo aan rabno in aan tallaabo cusub ku darno qoraalka, waxa ay ahayd in aan koobiyeynno qaybaha dhammaan qoraallada qolofka. Waxaa laga yaabaa inaan si taxadar leh u shaqeyn karno, laakiin inta badan isbeddellada noocan oo kale ah waxay ku dhammaadeen qoraallo, kuwaas oo u beddelay fiidkii kooxda sii daayo si ay u hagaajiyaan qoraallada oo ay ogaadaan ninka caqliga leh ee ku daray amarkan iyo waxa uu dhab ahaantii sameeyo. Guud ahaan, lama odhan karo qoraallada shirka ee hal madal ayaa ugu yaraan xoogaa isku mid ahaa. Inkasta oo ay xaqiiqdii sameeyeen wax la mid ah.
Si loo bilaabo habraaca codsi cusub, waxay ahayd lagama maarmaan in la qaato maalin si loo doorto nooca "cusub" ee qoraalladan, ka saar oo tiraahdo "haa, way shaqeysaa."
Xagaagii 2018, waxaan mar kale eegnay dhanka xawaaraha sare ee weli soo koraya.
sonar - waxay soo saartaa dhammaan linters waxayna u dirtaa warbixinnada SonarQube,
deploy β diritaanka artifact alfa (TestFlight).
Oo haddii aadan faahfaahinta gelin, ka tegin furayaasha loo isticmaalo falalka, waxaad heli doontaa Fastfile kan:
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
Xaqiiqdii, Fastfile-kii ugu horreeyay wuxuu u rogay inuu noqdo mid bahalnimo ah, anagoo tixgelinayna qaar ka mid ah biraha aan weli u baahanahay iyo tirada cabbirrada aan beddelnay:
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
Tusaalaha kore, kaliya qayb ka mid ah xuduudaha aan u baahanahay inaan sheegno: kuwani waa cabbirrada dhismaha - naqshadaynta, qaabeynta, magacyada Profile-ka, iyo sidoo kale cabbirrada qaybinta - Aqoonsiga Apple ee koontada horumariyaha, erayga sirta ah, aqoonsiga codsiga, iyo wixii la mid ah. on. Qiyaastii koowaad ahaan, dhammaan furayaashan waxaan gelinnay faylal gaar ah - Gymfile, Matchfile ΠΈ Appfile.
Hadda gudaha Jenkins waxaad wici kartaa amarro gaagaaban oo aan dhayalsanaynin aragtida oo ay si fudud isha u akhriyi karaan:
Maxaa helay? U cadee amarrada tallaabo kasta. Qoraallada la nadiifiyey, oo si habsami leh loogu habeeyey faylasha fastlane. Annaga oo faraxsan, ayaanu u orodnay horumariyayaasha inagoo ka codsanayna inay ku daraan wax kasta oo ay u baahan yihiin goobahooda.
Laakiin waxaan ogaanay in waqti in aan la kulmi doono dhibaatooyin isku mid ah - waxaan weli lahaan lahaa 20 qoraallada shirka in si uun ama si kale u bilaabi lahaa in ay ku noolaadaan naftooda u gaar ah, waxay noqon doontaa mid aad u adag in la tafatiro iyaga, tan iyo qoraallada u guuri lahaa kayd, oo annagu ma aanaan helin meeshaas. Iyo, guud ahaan, suurtogal ma noqon doonto in xanuunkayaga sidan lagu xalliyo.
Hawsha #2: hel hal Fastfile ee codsiyada N
Hadda waxay u muuqataa in xallinta dhibaatadu aanay ahayn mid aad u adag - deji doorsoomayaasha, oo aan tagno. Haa, dhab ahaantii, taasi waa sida dhibaatada loo xaliyay. Laakiin wakhtigan xaadirka ah markii aan kor u qaadnay, ma aannaan lahayn khibrad Fastlane lafteeda, ama Ruby, oo ay ku qoran tahay fastlane, ama tusaalayaal faa'iido leh oo ku saabsan shabakada - qof kasta oo wax ka qoray fastlane markaa wuxuu ku koobnaa tusaale hal codsi hal horumariye.
Fastlane waxay xamili kartaa doorsoomayaasha deegaanka, waxaanan mar hore isku daynay tan anagoo dejinayna erayga Keychain:
ENV['KEYCHAIN_PASSWORD']
Ka dib markaan eegno qoraalladayada, waxaan aqoonsannay qaybaha guud:
#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
Hadda, si aan u bilowno isticmaalka furayaashan faylalka fastlane, waxay ahayd inaan ogaano sida loo geeyo halkaas. Fastlane waxay leedahay xal tan: ku shubidda doorsoomayaasha via dotenv. Dukumeentigu wuxuu leeyahay haddii ay muhiim kuu tahay inaad ku shubto furayaasha ujeedooyin kala duwan, ku samee dhowr faylal qaabeyn ah tusaha fastlane .env, .env.default, .env.development.
Kadibna waxaan go'aansanay inaan u isticmaalno maktabadan si ka duwan. Aan dhigno kaydka horumariyayaasha ee ma dhigin qoraallada fastlane iyo macluumaadkeeda meta, laakiin furayaasha gaarka ah ee codsigan ee faylka .env.appName.
Iskood Fastfile, Appfile, Matchfile ΠΈ Gymfile, waxaan ku qarinay meel gooni ah. Fayl dheeri ah oo wata furayaasha sirta ah ee adeegyada kale ayaa lagu qariyay halkaas - .env.
Waxaad arki kartaa tusaale halkan.
On CI, wicitaanku wax badan isma bedelin; furaha qaabeynta codsi gaar ah ayaa lagu daray:
Ka tag xalkan hadda, in kasta oo Fastlane uu leeyahay xal loogu talagalay soo dejinta Fastfile iyada oo loo marayo tallaaboimport_from_git, laakiin waxay u shaqeysaa oo kaliya Fastfile, laakiin uma shaqeyso faylasha kale. Haddii aad rabto "aad u qurux badan", waxaad qori kartaa adigu action.
Qalab la mid ah ayaa loo sameeyay codsiyada Android iyo ReactNative, faylalyadu waxay ku yaalliin isku meel, laakiin waaxyo kala duwan iOS, android ΠΈ react_native.
Marka kooxda sii daayo ay rabaan inay ku daraan qaar ka mid ah tillaabo cusub, isbeddelada qoraalka waxaa lagu duubayaa MR in git, ma jirto baahi loo qabo in la raadiyo dembiilayaasha qoraallada jaban, iyo guud ahaan, hadda waa inaad isku daydaa inaad jebiso.
Hadda taasi waa hubaal
Markii hore, waxaan ku bixinay waqti aan ku ilaalino dhammaan qoraallada, cusbooneysiinta iyo hagaajinta dhammaan cawaaqibka cusbooneysiinta. Waxay ahayd wax aad looga xumaado markii sababaha khaladaadka iyo wakhtiga hoos u dhaca ee sii dayntu ay ahaayeen qoraallo fudud oo aad u adag in lala socdo qulqulka qoraallada qolofka. Hadda khaladaadka noocaas ah waa la dhimay ilaa ugu yaraan. Isbeddellada waxaa lagu soo rogaa dhammaan codsiyada hal mar. Waxayna qaadanaysaa 15 daqiiqo in arji cusub la geliyo hawsha - samee dhuumaha qaab-dhismeedka CI oo ku dar furayaasha kaydka horumariyaha.
Waxay u muuqataa in barta leh Fastfile ee Android iyo saxeexa codsigu uu yahay mid aan la sharraxin; haddii maqaalku xiiso leeyahay, waxaan qori doonaa sii wadida. Waan ku farxi doonaa inaan ku arko su'aalahaaga ama soo jeedinta "sideed u xallin lahayd dhibaatadan" faallooyinka ama Telegramka bashkirova.