Zochitika zam'manja za CICD: mulingo umodzi wa fastlane wamapulogalamu ambiri am'manja
Ndikufuna kulankhula za kuphatikiza kosalekeza ndi kutumiza kwa mapulogalamu a m'manja pogwiritsa ntchito fastlane. Momwe timagwiritsira ntchito CI / CD pamapulogalamu onse am'manja, momwe tidafikirako ndi zomwe zidachitika pamapeto pake.
Pali zinthu zokwanira kale pamaneti pa chida, chomwe tidasowa poyambira, kotero sindidzafotokoza dala chidacho mwatsatanetsatane, koma ndikungonena zomwe tinali nazo panthawiyo:
Tsoka ilo, kuyeza liwiro la msonkhano xcodebuild ΠΈ gym Sitinachite, koma tikhulupirira zolembedwazo - mpaka 30% liwiro.
Njira imodzi yamapulogalamu onse
Chaka cha 2018 ndi pano
Pofika chaka cha 2018, ntchito yomanga ndi kutulutsa mapulogalamu inasamukira ku Jenkins, omanga anasiya kutulutsa makina awo, ndipo gulu lomasulidwa lokha ndilo linali ndi ufulu womasula.
Tinkafuna kale kukonza kukhazikitsidwa kwa mayeso ndi kusanthula kokhazikika, ndipo zolemba zathu zidakula ndikukula. Anakula ndikusintha pamodzi ndi mapulogalamu athu. Panthawiyo panali pafupifupi mapulogalamu a 10. Poganizira kuti tili ndi nsanja ziwiri, ndizo za 20 zolemba "zamoyo".
Nthawi zonse tikafuna kuwonjezera sitepe yatsopano, tinkafunika kukopera-kuyika zidutswazo muzolemba zonse za zipolopolo. Mwinamwake tikanagwira ntchito mosamala kwambiri, koma nthawi zambiri kusintha koteroko kumathera mu typos, zomwe zinasandulika madzulo kuti gulu lomasulidwa likonze zolembedwa ndikupeza kuti ndi munthu wanzeru ndani amene anawonjezera lamulo ili ndi zomwe likuchita. Mwambiri, sitinganene kuti zolemba za msonkhano papulatifomu imodzi zinali zofanana. Ngakhale iwo ndithudi anachita chinthu chomwecho.
Kuti muyambe ndondomeko ya pulogalamu yatsopano, kunali koyenera kuthera tsiku limodzi kuti musankhe "zatsopano" za malembawa, sinthani zolakwika ndi kunena kuti "inde, zimagwira ntchito."
M'chilimwe cha 2018, tinayang'ananso ku Fastlane yomwe ikukulabe.
Ntchito #1: fotokozani mwachidule masitepe onse ndikulembanso mu Fastfile
Pamene tinayamba, zolemba zathu zinkawoneka ngati nsalu yopangidwa ndi masitepe onse ndi ndodo mu chigoba chimodzi ku Jenkins. Sitinasinthebe ku mapaipi ndikugawa magawo ndi magawo.
Tidayang'ana zomwe tili nazo ndikuzindikira njira 4 zomwe zimagwirizana ndi CI / CD yathu:
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
M'malo mwake, Fastfile yathu yoyamba idakhala yowopsa, poganizira za ndodo zomwe timafunikirabe komanso kuchuluka kwa magawo omwe tidalowa m'malo:
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
Muchitsanzo pamwambapa, gawo limodzi lokha la magawo omwe tiyenera kufotokoza: awa ndi magawo omanga - schema, kasinthidwe, mayina a Provision Provision, komanso magawo ogawa - ID ya Apple ya akaunti yomanga, mawu achinsinsi, ID yofunsira, ndi zina zotero. pa. Monga kuyerekezera koyamba, timayika makiyi onsewa m'mafayilo apadera - Gymfile, Matchfile ΠΈ Appfile.
#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
Tsopano, kuti tiyambe kugwiritsa ntchito makiyi awa mumafayilo a fastlane, tinayenera kudziwa momwe tingawaperekere kumeneko. Fastlane ili ndi yankho la izi: kutsitsa zosintha kudzera pa dotenv. Zolembazo zimati ngati kuli kofunikira kuti muyike makiyi pazifukwa zosiyanasiyana, pangani mafayilo angapo osinthika mufoda ya fastlane. .env, .env.default, .env.development.
Ndiyeno tinaganiza zogwiritsa ntchito laibulaleyi mosiyana pang'ono. Tiyeni tiyike munkhokwe ya omanga osati zolemba za fastlane ndi zambiri za meta, koma makiyi apadera a pulogalamuyi mufayilo. .env.appName.
Adasiya yankho ili pakadali pano, ngakhale Fastlane ili ndi yankho kutsitsa Fastfile kudzera kuchitapoimport_from_git, koma imagwira ntchito pa Fastfile yokha, koma osati mafayilo ena. Ngati mukufuna "wokongola kwambiri", mukhoza kulemba nokha action.
Seti yofananira idapangidwira mapulogalamu a Android ndi ReactNative, mafayilo ali m'malo omwewo, koma m'nthambi zosiyanasiyana. iOS, android ΠΈ react_native.
Pamene gulu lomasulidwa likufuna kuwonjezera sitepe yatsopano, kusintha kwa script kumalembedwa kudzera mwa MR mu git, palibenso chifukwa chofuna kuyang'ana olakwa a malemba osweka, ndipo kawirikawiri, tsopano muyenera kuyesa kuswa.
Tsopano ndi zimenezo motsimikiza
M'mbuyomu, tidakhala ndi nthawi yosunga zolembedwa zonse, kuzisintha ndikukonza zotsatira zonse zakusintha. Zinali zokhumudwitsa kwambiri pamene zifukwa za zolakwika ndi kutsika kwa nthawi yotulutsidwa zinali zosavuta zolembera zomwe zinali zovuta kuzilemba mu jumble ya zolemba za zipolopolo. Tsopano zolakwa zoterozo zachepetsedwa kukhala zochepa. Zosintha zimaperekedwa ku mapulogalamu onse nthawi imodzi. Ndipo zimatengera mphindi 15 kuti muyike pulogalamu yatsopano munjirayo - khazikitsani payipi ya template pa CI ndikuwonjezera makiyi kunkhokwe ya wopanga.
Zikuwoneka kuti mfundoyo ndi Fastfile ya Android ndi siginecha ya pulogalamu imakhalabe yosafotokozeka; ngati nkhaniyo ili yosangalatsa, ndilemba kupitiliza. Ndikhala wokondwa kuwona mafunso kapena malingaliro anu "muthana bwanji vutoli" mu ndemanga kapena pa Telegraph bashkirova.