Ngingathanda ukukhuluma ngokuhlanganisa okuqhubekayo nokulethwa kwezinhlelo zokusebenza zeselula zisebenzisa i-fastlane. Siyisebenzisa kanjani i-CI/CD kuzo zonke izinhlelo zokusebenza zeselula, ukuthi safika kanjani lapho nokuthi kwenzekeni ekugcineni.
Sekuvele kunento eyanele kunethiwekhi ethuluzini, ebesingenalo kangako ekuqaleni, ngakho-ke ngeke ngamabomu ngichaze ithuluzi ngokuningiliziwe, kodwa ngizobhekisa kuphela kulokho esasinakho ngaleso sikhathi:
Amadokhumenti asemthethweni we-fastlane Izibonelo ezivela kwezinye izinkampani Senza ngokuzenzakalelayo ukuhlanganiswa kwezinhlelo zokusebenza ze-iOS sisebenzisa i-Fastlane
I-athikili inezingxenye ezimbili:
- Isendlalelo sokuvela kwe-CI/CD yeselula enkampanini
- Isixazululo sobuchwepheshe sokukhipha i-CI/CD yezinhlelo zokusebenza ze-N
Ingxenye yokuqala i-nostalgia eyengeziwe yezinsuku zakudala, kanti eyesibili isipiliyoni ongasisebenzisa kuwena.
Kwenzeka kanjena ngokomlando
Unyaka ka-2015
Sisanda kuqala ukuthuthukisa izinhlelo zokusebenza zeselula, ngakho-ke sasingazi lutho mayelana nokuhlanganiswa okuqhubekayo, mayelana ne-DevOps nezinye izinto zemfashini. Isibuyekezo ngasinye sohlelo lokusebenza sakhishwa unjiniyela ngokwakhe emshinini wakhe. Futhi uma ku-Android kulula kakhulu - kuhlanganiswe, kusayinwe .apk
futhi sayilayisha ku-Google Developer Console, bese ku-iOS ithuluzi lokusabalalisa ngaleso sikhathi nge-Xcode lisishiye nobusuku obuhle - imizamo yokulanda ingobo yomlando ngokuvamile igcina ngamaphutha futhi kudingeke ukuthi sizame futhi. Kuvele ukuthi umthuthukisi othuthuke kakhulu akabhali ikhodi izikhathi eziningana ngenyanga, kodwa kunalokho ukhulula uhlelo lokusebenza.
Unyaka ka-2016
Sakhula, sase sinemicabango yokuthi singabakhulula kanjani abathuthukisi usuku lonke ukuze bakhululwe, futhi kwavela nesicelo sesibili, esisiphushele kakhulu ekuzishintsheni. Ngawo lowo nyaka, safaka i-Jenkins okokuqala futhi sabhala inqwaba yemibhalo esabekayo, efana kakhulu naleyo eboniswa yi-fastlane emibhalweni yayo.
$ xcodebuild clean archive -archivePath build/MyApp
-scheme MyApp
$ xcodebuild -exportArchive
-exportFormat ipa
-archivePath "build/MyApp.xcarchive"
-exportPath "build/MyApp.ipa"
-exportProvisioningProfile "ProvisioningProfileName"
$ cd /Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/
$ ./altool βupload-app
-f {abs path to your project}/build/{release scheme}.ipa
-u "[email protected]"
-p "PASS_APPLE_ID"
Ngeshwa, kuze kube manje abathuthukisi bethu kuphela abazi ukuthi le mibhalo isebenza kanjani nokuthi kungani lesi sitaki esingapheli sokhiye sidingeka, futhi lapho okuthile kuphuka futhi, bathola βubusuku obuhleβ bokuhlaziya izingodo.
Unyaka ka-2017
Kulo nyaka sifunde ukuthi kunento ebizwa nge-fastlane. Belungekho ulwazi oluningi njengoba lukhona manje - ukuthi ungaluqala kanjani, ulusebenzisa kanjani. Futhi ithuluzi ngokwalo lalisangcolile ngaleso sikhathi: amaphutha aqhubekayo ayemane asidumaze futhi kwakunzima ukukholelwa ku-automation yemilingo ababeyithembisile.
Kodwa-ke, izinsiza eziyinhloko ezifakwe kumongo we-fastlane ziyi gym
ΠΈ pilot
, sakwazi ukuyiqala.
Imibhalo yethu ithuthukiswe kancane.
$ fastlane gym β-workspace "Example.xcworkspace"
--scheme "AppName"
β-buildlog_path "/tmp"
-βclean
Athuthukisiwe, uma nje kungewona wonke amapharamitha adingekayo xcodebuild
, udinga ukukhombisa - gym
uzoqonda ngokuzimela ukuthi kulele kuphi nokuthi kuyini. Futhi ukuze ulungise kahle, ungacacisa okhiye abafanayo nabaku-in xcodebuild
, ukuqanjwa kwezikhiye kuphela okucace kakhudlwana.
Kulokhu, ngenxa yejimu kanye nefomethi ye-xcpretty eyakhelwe ngaphakathi, izingodo zokwakha sezifundeke kakhulu. Lokhu kwaqala ukonga isikhathi ekulungiseni imihlangano ephukile, futhi ngezinye izikhathi ithimba labakhululayo lalikwazi ukuzitholela lona ngokwalo.
Ngeshwa, izilinganiso zesivinini somhlangano xcodebuild
ΠΈ gym
Asikwenzanga, kodwa sizowethemba amadokhumenti - ukusheshisa okungafika ku-30%.
Inqubo eyodwa yazo zonke izinhlelo zokusebenza
Unyaka ka-2018 namanje
Ngo-2018, inqubo yokwakha nokukhipha izicelo ithuthelwe ngokuphelele ku-Jenkins, abathuthukisi bayeka ukukhulula emishinini yabo, futhi yiqembu lokukhululwa kuphela elinelungelo lokukhulula.
Besivele sifuna ukuthuthukisa ukwethulwa kwezivivinyo nokuhlaziya okumile, futhi imibhalo yethu yakhula futhi yakhula. Yakhula futhi yashintsha kanye nezicelo zethu. Ngaleso sikhathi, kwakukhona izicelo ezingaba ngu-10. Uma kucatshangelwa ukuthi sinezinkundla ezimbili, lokho kuyimibhalo engama-20 "ephilayo".
Ngaso sonke isikhathi lapho sifuna ukwengeza isinyathelo esisha embhalweni, kwakudingeka sikopishe-sinamathisele izingcezu kuzo zonke izikripthi zegobolondo. Mhlawumbe ngabe sisebenze ngokucophelela, kodwa ngokuvamile izinguquko ezinjalo ziphela ngamaphutha, aphenduke ubusuku ukuze iqembu labakhululayo lilungise imibhalo futhi lithole ukuthi yimuphi umfana ohlakaniphile owengeze lo myalo nokuthi lenzani ngempela. Ngokuvamile, angeke kushiwo ukuthi imibhalo yokuhlanganisa yesikhulumi esisodwa yayicishe ifane. Nakuba ngokuqinisekile benza into efanayo.
Ukuze uqale inqubo yesicelo esisha, bekudingeka ukuchitha usuku ukuze ukhethe inguqulo βentshaβ yale mibhalo, uyisuse futhi uthi βyebo, iyasebenza.β
Ehlobo lika-2018, siphinde sabheka ku-fastlane esathuthuka.
Umsebenzi #1: fingqa zonke izinyathelo zombhalo bese uzibhala kabusha ku-Fastfile
Lapho siqala, imibhalo yethu yayibukeka njengendwangu yezinyawo ehlanganisa zonke izinyathelo nezinduku zombhalo wegobolondo elilodwa kuJenkins. Okwamanje asikashintsheli emapayipini nasekuhlukaniseni ngezigaba.
Sibheke esinakho futhi sahlonza izinyathelo ezi-4 ezifanele incazelo ye-CI/CD yethu:
- ukwakha - ukufaka okuncike, ukuhlanganisa ingobo yomlando,
- test - sebenzisa ukuhlolwa kweyunithi kanjiniyela, ukubala ukumbozwa,
- i-sonar - yethula wonke ama-linters futhi ithumela imibiko ku-SonarQube,
- deploy β ukuthumela i-artifact ku-alpha (TestFlight).
Futhi uma ungangeni emininingwaneni, ushiya okhiye abasetshenziswa ezenzweni, uzothola le 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
Eqinisweni, i-Fastfile yethu yokuqala yaphenduka yaba yimbi, uma kubhekwa ezinye zezinduku ebesisazidinga kanye nenani lamapharamitha esiwashintshile:
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
Kulesi sibonelo esingenhla, ingxenye kuphela yamapharamitha esidinga ukuwacacisa: lawa amapharamitha wokwakha - i-schema, ukumisa, amagama wePhrofayela yokuhlinzeka, kanye nemingcele yokusabalalisa - I-Apple ID ye-akhawunti kanjiniyela, iphasiwedi, i-ID yohlelo lokusebenza, nokunye. ku. Njengesilinganiso sokuqala, sibeka zonke lezi zikhiye kumafayela akhethekile - Gymfile
, Matchfile
ΠΈ Appfile
.
Manje ku-Jenkins ungabiza imiyalo emifushane engafiphazi ukubuka futhi ifundeka kalula ngeso:
# fastlane ios <lane_name>
$ fastlane ios build
$ fastlane ios test
$ fastlane ios run_sonar
$ fastlane ios deploy
Hurray, sibahle
Utholeni? Sula imiyalo yesinyathelo ngasinye. Izikripthi ezihlanziwe, ezihlelwe kahle ngamafayili e-fastlane. Sijabule, sigijimele konjiniyela sibacela ukuthi bengeze konke abakudingayo kumakhosombe abo.
Kodwa sabona ngokuhamba kwesikhathi ukuthi sizobhekana nobunzima obufanayo - sisazoba nemibhalo yemihlangano engama-20 engaqala ngandlela thize ukuphila izimpilo zabo, kuzoba nzima kakhulu ukuyihlela, ngoba imibhalo izohamba iye kumakhosombe, futhi asikwazanga ukufinyelela lapho. Futhi, ngokuvamile, ngeke kwenzeke ukuxazulula ubuhlungu bethu ngale ndlela.
Umsebenzi #2: thola iFastfile eyodwa yezinhlelo zokusebenza ze-N
Manje kubonakala sengathi ukuxazulula inkinga akunzima kangako - setha okuguquguqukayo, futhi ake sihambe. Yebo, empeleni, yileyondlela inkinga eyaxazululwa ngayo. Kepha ngaleso sikhathi lapho sisakuphenya, besingenabo ubungcweti ku-fastlane uqobo, noma kuRuby, lapho kubhalwe khona i-fastlane, noma izibonelo eziwusizo kunethiwekhi - wonke umuntu obhale nge-fastlane wabe elinganiselwe esibonelweni sohlelo lokusebenza olulodwa. kunjiniyela oyedwa.
I-Fastlane ingakwazi ukuphatha okuguquguqukayo kwemvelo, futhi sesivele sikuzamile lokhu ngokusetha iphasiwedi ye-Keychain:
ENV['KEYCHAIN_PASSWORD']
Ngemva kokubheka imibhalo yethu, sihlonze izingxenye ezivamile:
#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
Manje, ukuze siqale ukusebenzisa lezi zihluthulelo kumafayela e-fastlane, bekufanele sithole ukuthi singawahambisa kanjani lapho. I-Fastlane inesixazululo salokhu: .env
, .env.default
, .env.development
.
Sabe sesinquma ukusebenzisa lo mtapo wezincwadi ngendlela ehlukile. Masibeke endaweni yokugcina yonjiniyela hhayi imibhalo ye-fastlane nolwazi lwayo lwe-meta, kodwa okhiye abahlukile balolu hlelo lokusebenza kufayela. .env.appName
.
Bona uqobo Fastfile
, Appfile
, Matchfile
ΠΈ Gymfile
, sayifihla endaweni yokugcina ehlukile. Ifayela elengeziwe elinokhiye bephasiwedi kwezinye izinkonzo lalifihlwe lapho - .env
.
Ungabona isibonelo
Ku-CI, ucingo alukashintshi kakhulu; ukhiye wokumisa wohlelo oluthile ungeziwe:
# fastlane ios <lane_name> --env appName
$ fastlane ios build --env appName
$ fastlane ios test --env appName
$ fastlane ios run_sonar --env appName
$ fastlane ios deploy --env appName
Ngaphambi kokusebenzisa imiyalo, silayisha inqolobane yethu ngemibhalo. Akubukeki kukuhle kakhulu:
git clone [email protected]/FastlaneCICD.git fastlane_temp
cp ./fastlane_temp/fastlane/* ./fastlane/
cp ./fastlane_temp/fastlane/.env fastlane/.env
Ushiye lesi sixazululo okwamanje, nakuba i-Fastlane inesixazululo sokulanda i-Fastfile nge import_from_git
, kodwa isebenza kuphela ku-Fastfile, kodwa hhayi kwamanye amafayela. Uma ufuna "omuhle ngempela", ungabhala ngokwakho action
.
Isethi efanayo yenzelwe izinhlelo zokusebenza ze-Android kanye ne-ReactNative, amafayela asendaweni efanayo, kodwa emagatsheni ahlukene. iOS
, android
ΠΈ react_native
.
Lapho ithimba lokukhululwa lifuna ukwengeza isinyathelo esisha, izinguquko kuskripthi zirekhodwa nge-MR ku-git, asikho isidingo sokubheka izigebengu zemibhalo ephukile, futhi ngokuvamile, manje kufanele uzame ukuyiphula.
Manje yilokho impela
Ngaphambilini, sasichitha isikhathi sigcina yonke imibhalo, siyibuyekeza futhi silungisa yonke imiphumela yezibuyekezo. Kwakudumaza kakhulu lapho izizathu zamaphutha kanye nesikhathi sokuphumula ekukhishweni kuyizinhlamvu ezilula okwakunzima kakhulu ukugcina umkhondo ku-jumble yemibhalo yegobolondo. Manje amaphutha anjalo ancishiswa abe okungenani. Izinguquko zikhishwa kuzo zonke izinhlelo zokusebenza ngesikhathi esisodwa. Futhi kuthatha imizuzu engu-15 ukufaka isicelo esisha enqubweni - setha ipayipi lesifanekiso ku-CI futhi wengeze okhiye endaweni yokugcina kanjiniyela.
Kubonakala sengathi iphuzu nge-Fastfile ye-Android nesiginesha yohlelo lokusebenza lihlala lingachazwa; uma i-athikili ithakazelisa, ngizobhala ukuqhubeka. Ngingajabula ukubona imibuzo noma iziphakamiso zakho "ungayixazulula kanjani le nkinga" kumazwana noma kuTelegram
Source: www.habr.com