ProHoster > Блог > Whakahaerenga > Te wheako CICD pūkoro: kotahi te paerewa tereina mo te maha o nga tono pūkoro
Te wheako CICD pūkoro: kotahi te paerewa tereina mo te maha o nga tono pūkoro
Kei te pirangi au ki te korero mo te whakauru tonu me te tuku mo nga taupānga waea ma te whakamahi tere tere. Me pehea te whakatinana i te CI/CD ki runga i nga tono pūkoro katoa, me pehea i tae atu ai ki reira me te aha i puta i te mutunga.
He nui nga rauemi kei runga i te whatunga i runga i te taputapu, he iti nei i a maatau i te timatanga, no reira ka kore ahau e whakaahua taipitopito i te taputapu, engari ka korero noa ki nga mea i a maatau:
He papamuri mo te putanga o te CI/CD pūkoro i roto i te kamupene
He otinga hangarau mo te huri i te CI/CD mo nga tono-N
Ko te waahanga tuatahi he nui ake te nostalgia mo nga ra o mua, ko te tuarua he wheako ka taea e koe te tono ki a koe.
Koinei te ahuatanga o nga korero o mua
Tau 2015
I timata matou ki te whakawhanake i nga tono pūkoro, katahi kare matou i mohio mo te whakauru tonu, mo DevOps me etahi atu mea huatau. Ko ia whakahou tono i tukuna e te kaiwhakawhanake mai i tana miihini. A ki te mea mo te Android he tino ngawari - kua huihuia, kua hainatia .apk ka tukuna atu ki te Google Developer Console, na mo iOS ko te taputapu tohatoha ma te Xcode i mahue mai i a matou i nga ahiahi pai - ko nga ngana ki te tango i te purongo ka mutu nga hapa me te whakamatau ano. I puta mai ko te kaiwhakawhanake tino matatau kaore i te tuhi waehere i nga wa maha i te marama, engari ka tukuna te tono.
Tau 2016
I tipu ake matou, kua whai whakaaro matou me pehea te tuku i nga kaiwhakawhanake mai i te ra katoa mo te tukunga, ka puta mai ano he tono tuarua, na reira i kaha ake ai taatau ki te mahi automation. I taua tau ano, i whakauruhia e matou a Jenkins mo te wa tuatahi ka tuhia e matou nga momo tuhinga whakamataku, he rite tonu ki era e whakaatuhia ana e te tere tere i roto i ana tuhinga.
Heoi ano, tae noa mai ki naianei ko o maatau kaiwhakawhanake anake te mohio ki te mahi o enei tuhinga me te aha e hiahiatia ai tenei puranga mutunga kore o nga ki, a ka pakaru ano tetahi mea, ka whiwhi ratou i nga "poi ataahua" mo te tarai i nga raarangi.
Tau 2017
I tenei tau i ako matou he mea penei te tererangi. He iti noa nga korero penei i naianei - me pehea te tiimata, me pehea te whakamahi. A ko te taputapu ano he kino tonu i tera wa: ko nga hapa tonu i whakama noa i a maatau, he uaua ki te whakapono ki te miihini makutu i oatihia e ratou.
Heoi, ko nga taputapu matua kei roto i te matua tere tere gym и pilot, i taea e matou te timata.
Kua pai ake, mena na te mea kaore nga tawhā katoa e tika ana mo xcodebuild, me tohu koe - gym ka mohio takitahi kei hea, he aha te takoto. A, mo te whakatikatika pai ake, ka taea e koe te tohu i nga taviri rite ki roto xcodebuild, ko te whakaingoatanga o nga taviri he maamaa ake.
I tenei wa, he mihi ki te whare takaro me te whakatakotoranga xcpretty i hangaia, kua tino marama ake nga raarangi hanga. I timata tenei ki te whakaora i te wa ki te whakatika i nga huihuinga pakaru, a i etahi wa ka taea e te roopu tuku te whakatau i a raatau ano.
Kia aroha mai, inenga tere hui xcodebuild и gym Kaore matou i mahi, engari ka whakawhirinaki matou ki nga tuhinga - tae atu ki te 30% te tere.
He tukanga kotahi mo nga tono katoa
Tau 2018 me tenei wa
I te tau 2018, kua neke katoa te tukanga o te hanga me te huri i nga tono ki Jenkins, ka mutu nga kaiwhakawhanake i te tuku mai i a raatau miihini, a ko te roopu tuku anake te mana ki te tuku.
Kua pirangi matou ki te whakapai ake i te whakarewatanga o nga whakamatautau me te tātaritanga pateko, a ka tipu haere a maatau tuhinga. I tipu me te whakarereke me o maatau tono. I tera wa e 10 pea nga tono I runga i te whakaaro kei a matou e rua nga papaahi, e 20 nga tuhinga "ora".
I nga wa katoa e hiahia ana matou ki te taapiri i tetahi taahiraa hou ki te tuhinga, me kape-whakapiri nga pihi ki nga tuhinga anga katoa. Akene pea i kaha ake taatau ki te mahi, engari i te nuinga o nga wa ka mutu enei huringa ki te hapa, ka huri hei ahiahi mo te roopu tuku ki te whakatika i nga tuhinga me te mohio ko wai te tangata mohio i tapiri atu i tenei whakahau me te aha. I te nuinga o te waa, kaore e taea te kii he ahua rite nga tuhinga mo te huihuinga mo te papa kotahi. Ahakoa he rite tonu ta ratou mahi.
Hei timata i tetahi tukanga mo te tono hou, me whakapau he ra ki te kowhiri i tetahi putanga "hou" o enei tuhinga, patuiro me te kii "ae, kei te mahi."
I te raumati o te tau 2018, i titiro ano matou ki te huarahi tere tere.
Tūmahi #1: whakarāpopotohia ngā kaupae hōtuhi katoa ka tuhi anō ki te Fastfile
I te wa i timata ai matou, he rite te ahua o a matou tuhinga ki te kakahu waewae kei roto katoa nga hikoi me nga tootoo i roto i te tuhinga anga kotahi i Jenkins. Kaore ano matou kia huri ki te paipa me te wehewehe ma te atamira.
I titiro matou ki nga mea kei a matou me te tautuhi i nga waahanga e 4 e pai ana ki te whakaahuatanga o to maatau CI/CD:
hanga - te whakauru i nga whakawhirinaki, te whakahiato i te puranga,
te whakamatautau - te whakahaere i nga whakamatautau waeine kaiwhakawhanake, te tatau i te kapinga,
sonar - ka whakarewahia nga rarangi katoa me te tuku purongo ki SonarQube,
tohatoha — te tuku taonga ki te alpha (TestFlight).
A, ki te kore koe e uru ki nga korero, me te whakakore i nga taviri e whakamahia ana i roto i nga mahi, ka whiwhi koe i tenei 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
Inaa, ko ta maatau Fastfile tuatahi he tino whakamataku, me te whakaaro ki etahi o nga tootoo e hiahiatia ana e matou me te maha o nga tawhā i whakakapihia e matou:
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
I roto i te tauira i runga ake nei, he waahanga noa iho o nga tawhā e hiahia ana matou ki te tohu: koinei nga tawhā hanga - te kaupapa, te whirihoranga, nga ingoa Provision Profile, me nga tawhā tohatoha - Apple ID o te putea kaiwhakawhanake, kupuhipa, ID tono, me era atu i runga. Hei tata tuatahi, ka hoatu e matou enei ki katoa ki roto i nga konae motuhake - Gymfile, Matchfile и Appfile.
Inaianei kei Jenkins ka taea e koe te karanga i nga whakahau poto e kore e whakapouri i te tirohanga ka ngawari te panui e te kanohi:
He aha i whiwhi koe? Ūkui whakahau mō ia kaupae. Kua horoia nga tuhinga, kua whakaritea i roto i nga konae tere. I te harikoa, ka oma matou ki nga kaiwhakawhanake me te tono kia taapirihia nga mea katoa e hiahiatia ana ki o raatau putunga.
Engari i te wa ka mohio matou ka raru ano matou - ka 20 tonu nga tuhinga huihuinga ka timata ki te ora i o raatau ake oranga, he uaua ake te whakatika, na te mea ka neke nga tuhinga ki nga whare pupuri. a kaore matou i whai waahi ki reira. A, i te nuinga o te waa, kaore e taea te whakaoti i o tatou mamae i tenei huarahi.
Tūmahi #2: tikina he Fastfile kotahi mo nga tono N
Inaianei te ahua nei ehara i te mea uaua te whakaoti rapanga - whakaritea nga taurangi, ka haere. Ae, i roto i te meka, koinei te huarahi i whakatauhia ai te raruraru. Engari i te wa i takahia ai e matou, kaore o matou tohungatanga mo te tere tere ake, me Ruby ranei, i tuhia ai te tere tere, me nga tauira whaihua i runga i te whatunga - ko nga tangata katoa i tuhi mo te fastlane he iti noa ki tetahi tauira mo te tono kotahi mo kotahi kaiwhakawhanake.
Ka taea e Fastlane te whakahaere i nga taurangi taiao, a kua whakamatauria e matou tenei ma te tautuhi i te kupuhipa Keychain:
ENV['KEYCHAIN_PASSWORD']
I muri i te titiro ki o maatau tuhinga, i kitea e matou nga waahanga noa:
#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
Inaianei, hei timata ki te whakamahi i enei taviri i roto i nga konae tererangi, me ata whakaaro me pehea te tuku atu ki reira. He otinga a Fastlane mo tenei: te uta i nga taurangi ma te dotenv. E kii ana te tuhinga mena he mea nui ki a koe te uta i nga taviri mo nga kaupapa rereke, hanga etahi konae whirihoranga ki te raarangi tereina. .env, .env.default, .env.development.
Na ka whakatau matou ki te whakamahi i tenei whare pukapuka he paku rereke. Me tuu ki roto i te putunga o nga kaiwhakawhanake kaua ko nga tuhinga tere tere me ona korero meta, engari ko nga taviri ahurei o tenei tono kei roto i te konae. .env.appName.
Ko ratou Fastfile, Appfile, Matchfile и Gymfile, i hunahia e matou ki roto i tetahi putunga motuhake. He konae taapiri me nga taviri kupuhipa mai i etahi atu ratonga i huna ki reira - .env.
Ka kite koe i tetahi tauira konei.
I runga i te CI, kaore i nui te rereke o te piiraa he taviri whirihoranga mo tetahi tono motuhake:
Waiho tenei otinga mo naianei, ahakoa he otinga a Fastlane mo te tango i a Fastfile ma te mahiimport_from_git, engari ka mahi anake mo Fastfile, engari kaua mo etahi atu konae. Mena kei te hiahia koe ki te "tino ataahua", ka taea e koe te tuhi i a koe ake action.
I hangaia he huinga rite mo nga tono Android me te ReactNative, kei roto nga konae i te putunga kotahi, engari kei nga peka rereke. iOS, android и react_native.
I te wa e hiahia ana te roopu tuku ki te taapiri i etahi waahanga hou, ka tuhia nga huringa o te tuhinga ma te MR i roto i te git, kua kore he hiahia ki te rapu i nga kaipahua o nga tuhinga pakaru, me te nuinga, inaianei me ngana koe ki te wawahi.
Inaianei ko te mea pono
I mua, i whakapau wa matou ki te pupuri i nga tuhinga katoa, ki te whakahou me te whakatika i nga hua katoa o nga whakahou. I tino pouri i te mea ko nga take o nga hapa me te wa heke i roto i nga tukunga he pohehe ngawari he tino uaua ki te whai i roto i te ngangau o nga tuhinga anga. Inaianei kua whakahekehia enei hapa ki te iti rawa. Ka hurihia nga huringa ki nga tono katoa i te wa kotahi. A he 15 meneti te roa ki te whakauru i tetahi tono hou ki roto i te mahi - whakarite he paipa tauira ki runga CI me te taapiri i nga taviri ki te putunga a te kaiwhakawhanake.
Te ahua nei ko te tohu me te Fastfile mo te Android me te hainatanga tono kaore i te whakamaramahia mena he mea whakamere te tuhinga, ka tuhia e ahau he korero haere tonu. Ka koa ahau ki te kite i o patai, whakaaro ranei "me pehea koe e whakaoti ai i tenei raru" i roto i nga korero, i runga ranei i te Telegram bashkirova.