{"id":42201,"date":"2019-03-18T00:00:00","date_gmt":"2019-03-17T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/publikuem-prilozheniya-ios-v-app-store-s-gitlab-i-fastlane"},"modified":"2020-02-18T13:45:01","modified_gmt":"2020-02-18T10:45:01","slug":"publikuem-prilozheniya-ios-v-app-store-s-gitlab-i-fastlane","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/publikuem-prilozheniya-ios-v-app-store-s-gitlab-i-fastlane","title":{"rendered":"Avaldame iOS rakendusi App Store'is GitLab'i ja fastlane'iga","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Avaldame iOS rakendusi App Store&#039;is GitLab&#039;i ja fastlane&#039;iga\" src=\"\/wp-content\/uploads\/2019\/03\/a82a2584dfa78743d9e91e399939061f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kuidas GitLab fastlane'iga koostab, allkirjastab ja avaldab iOS rakendusi App Store'is.<\/p>\n<p><\/p>\n<p>Hiljuti oli meil <noindex><a rel=\"nofollow\" href=\"https:\/\/about.gitlab.com\/2019\/01\/28\/android-publishing-with-gitlab-and-fastlane\/\">postitus, kuidas kiiresti kokku panna ja k\u00e4ivitada Android rakendus<\/a><\/noindex> GitLab'i ja <noindex><a rel=\"nofollow\" href=\"https:\/\/fastlane.tools\/\">fastlane'i<\/a><\/noindex>. Siin n\u00e4eme, kuidas kokku panna ja k\u00e4ivitada iOS rakendus ning avaldada see TestFlight'is. Vaadake, kui \u00e4ge <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=325FyJt7ZG8\">ma muudan midagi iPad Pro's GitLab Web IDE's<\/a><\/noindex>, v\u00f5tan koondamise ja saan uuenduse rakenduse testversioonile samas iPad Pro's, kus ma selle loomise l\u00f5petasin.<\/p>\n<p><\/p>\n<p>Siin l\u00e4hme <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/jlenny\/flappyokr\">lihtsa iOS rakenduse juurde Swift'is<\/a><\/noindex>, millega ma videot salvestasin.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3 id=\"para-slov-o-konfiguracii-apple-store\">M\u00f5ned s\u00f5nad Apple Store'i konfigureerimisest<\/h3>\n<p><\/p>\n<p>Me vajame rakendust App Store'is, jaotustunnistusi ja initsialiseerimise profiili, et k\u00f5ik kokku siduda.<\/p>\n<p><\/p>\n<p>K\u00f5ige raskem on seadistada allkirjastamis\u00f5igust App Store'is. Lootan, et saate sellega hakkama. Kui olete algaja, n\u00e4itan vajalikku suunda, kuid siin me Apple'i tunnistuste halduse n\u00fcanssidest ei r\u00e4\u00e4gi, need muutuvad pidevalt. See postitus aitab teil alustada.<\/p>\n<p><\/p>\n<h3 id=\"moi-prilozheniya\">Minu rakendused<\/h3>\n<p><\/p>\n<p>Tuleb App Store Connect'i rakendus, et teil oleks ID konfigureerimiseks <code>.xcodebuild<\/code>. Profiil ja rakenduse ID \u00fchendavad koodikogumid, hinnad ja saadavuse, samuti TestFlight'i konfigureerimise rakenduste testimiseks kasutajate seas. \u00c4rge tehke avalikku testimist, piisab privaatsetest testidest, kui teil on v\u00e4ike grupp, lihtne seadistus ja lisalubade taotlemise vajadus Apple'ilt.<\/p>\n<p><\/p>\n<h3 id=\"profil-inicializacii\">Initsialiseerimise profiil<\/h3>\n<p><\/p>\n<p>Peale rakenduse seadistamise on teil vaja jaotustunnistusi ja iOS arendusv\u00f5tmeid, mis on loodud sektsioonis Certificates, Identifiers &amp; Profiles (Tunnistused, Identifikaatorid ja Profiilid) Apple Developer konsoolis. K\u00f5ik need tunnistused saab koondada initsialiseerimise profiili.<\/p>\n<p><\/p>\n<p>Kasutajad, kes l\u00e4hevad autentimisele, peavad saama tunnistusi luua, vastasel juhul n\u00e4ete etappidel <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.fastlane.tools\/codesigning\/getting-started\/#using-cert-and-sigh\">cert ja sigh<\/a><\/noindex> viga.<\/p>\n<p><\/p>\n<h3 id=\"drugie-varianty\">Teised valikud<\/h3>\n<p><\/p>\n<p>Peale selle lihtsa meetodi on ka teisi viise tunnistuste ja profiilide seadistamiseks. Seega, kui t\u00f6\u00f6tate teisiti, v\u00f5ite vajalikuks pidada \u00fcmber seadistamist. K\u00f5ige olulisem - teil on vajalik konfigureerimine. <code>.xcodebuild<\/code>, mis n\u00e4itab vajalikud failid, ja v\u00f5tme sidumine peab olema kergesti ligip\u00e4\u00e4setav ehituse arvutis, kus kasutaja, kelle nime all runner t\u00f6\u00f6tab, on sisse logitud. Digitaalallkirja loomiseks kasutame fastlane'i ja kui teil on probleeme v\u00f5i soovite rohkem teada, vaadake nende p\u00f5hjalikku <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.fastlane.tools\/codesigning\/getting-started\/\">dokumentatsiooni digitaalallkirjade kohta<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Selles n\u00e4ites kasutan l\u00e4henemist <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.fastlane.tools\/codesigning\/getting-started\/#using-cert-and-sigh\">cert ja sigh<\/a><\/noindex>, kuid reaalsetes rakendustes sobib ehk paremini <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.fastlane.tools\/codesigning\/getting-started\/#using-match\">match<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h2 id=\"podgotovka-gitlab-i-fastlane\">GitLabi ja fastlane'i ettevalmistamine<\/h2>\n<p><\/p>\n<h3 id=\"podgotovka-ci-runner\">CI Runneri ettevalmistamine<\/h3>\n<p><\/p>\n<p>Kogudes k\u00f5ik need andmed, liigume edasi GitLab runner'i seadistamise juurde MacOS seadmes. Kahjuks on iOSi rakenduste loomine reaalne ainult MacOS-is. Kuid k\u00f5ik v\u00f5ib muutuda ja kui ootad arengut, siis j\u00e4lgi projekte nagu <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/facebook\/xcbuild\">xcbuild<\/a><\/noindex> ja <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/saucelabs\/isign\">isign<\/a><\/noindex>, ja meie sise\u00fclesannet <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-org\/gitlab-ce\/issues\/57576\">gitlab-ce#57576<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Runners'i seadistamine on v\u00e4ga lihtne. J\u00e4rgi kaasaegseid <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.gitlab.com\/runner\/install\/osx.html\">GitLab Runneri seadistamise juhiseid macOS-is<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>M\u00e4rkus. Runnery peaks kasutama k\u00e4ivitusprogrammi <code>k\u00e4surea t\u00f5lgendus<\/code>. See on iOS-i ehitamiseks macOS-is h\u00e4davajalik, et t\u00f6\u00f6tada otse kasutajana, mitte konteinerite kaudu. Kui kasutate <code>k\u00e4surea t\u00f5lgendus<\/code>, ehitamine ja testimine toimub runner'i kasutaja nimel otse ehitusmasinas. See ei ole nii turvaline kui konteinerid, seega tasub lugeda <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.gitlab.com\/runner\/security\/#usage-of-shell-executor\">turvajuht<\/a><\/noindex>, et miski ei j\u00e4\u00e4ks t\u00e4helepanuta.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">sudo curl --output \/usr\/local\/bin\/gitlab-runner https:\/\/gitlab-runner-downloads.s3.amazonaws.com\/latest\/binaries\/gitlab-runner-darwin-amd64\nsudo chmod +x \/usr\/local\/bin\/gitlab-runner\ncd ~\ngitlab-runner install\ngitlab-runner start<\/code><\/pre>\n<p><\/p>\n<p>Apple'i v\u00f5tmeside peab olema seadistatud sellel hostil, et juurdep\u00e4\u00e4suks oleks v\u00f5tmed, mida Xcode vajab ehitamiseks. Lihtsaim viis selle testimiseks on sisse logida kui kasutaja, kes k\u00e4ivitab ehituse, ja proovida ehitust k\u00e4sitsi teostada. Kui s\u00fcsteem k\u00fcsib v\u00f5tmesideme juurdep\u00e4\u00e4su, valige \u201eAlati lubada\u201c, et CI p\u00f5hjalikult t\u00f6\u00f6taks. V\u00f5ib-olla tasub sisse logida ja j\u00e4lgida esimest paari pipeline'i, et veenduda, et nad enam v\u00f5tmeside juurdep\u00e4\u00e4su ei k\u00fcsi. Probleem on selles, et Apple ei tee meile automaatre\u017eiimiga lihtsaks, kuid kui olete selle seadistanud, siis on k\u00f5ik korras.<\/p>\n<p><\/p>\n<h3 id=\"fastlane-init\">fastlane init<\/h3>\n<p><\/p>\n<p>Fastlane'i kasutamiseks projektis k\u00e4ivitage <code>fastlane init<\/code>. Lihtsalt j\u00e4rgige <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.fastlane.tools\/getting-started\/ios\/setup\/\">fastlane'i installimise ja k\u00e4ivitamise juhiseid<\/a><\/noindex>, eriti jaotisest, mis k\u00e4sitleb <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.fastlane.tools\/getting-started\/ios\/setup\/#use-a-gemfile\">Gemfile'i<\/a><\/noindex>, kuna me vajame kiiret ja ettearvatavat k\u00e4ivitust automaatse CI toru kaudu.<\/p>\n<p><\/p>\n<p>Kataloogis k\u00e4ivitage need k\u00e4sud:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">xcode-select --install\nsudo gem install fastlane -NV\n# Alternatiivselt kasutades Homebrew\n# brew cask install fastlane\nfastlane init<\/code><\/pre>\n<p><\/p>\n<p>fastlane k\u00fcsib p\u00f5hikonfiguratsiooni ja loob seej\u00e4rel projekti kausta fastlane kolme faili jaoks:<\/p>\n<p><\/p>\n<p><strong><code>1. fastlane\/Appfile<\/code><\/strong><\/p>\n<p><\/p>\n<p>Siin ei ole midagi keerulist. Lihtsalt veenduge, et Apple ID ja rakenduse ID on \u00f5igesti m\u00e4\u00e4ratud.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">app_identifier(\"com.vontrance.flappybird\") # Teie rakenduse paketi identifikaator\napple_id(\"your-email@your-domain.com\") # Teie Apple'i e-posti aadress<\/code><\/pre>\n<p><\/p>\n<p><strong><code>2. fastlane\/Fastfile<\/code><\/strong><\/p>\n<p><\/p>\n<p><code>Fastfile<\/code> m\u00e4\u00e4ratleb ehitusetapid. Kasutame palju fastlane'i sisseehitatud funktsioone, nii et siin on samuti k\u00f5ik arusaadav. Loome \u00fche rea, mis saab sertifikaadid, koostab ja laadib selle TestFlighti. Vajadusel v\u00f5ite need protsessid jagada erinevateks \u00fclesanneteks. K\u00f5ik need toimingud (<code>get_certificates<\/code>, <code>get_provisioning_profile<\/code>, <code>gym<\/code> ja <code>upload_to_testflight<\/code>) kuuluvad juba fastlane'i alla.<\/p>\n<p><\/p>\n<p>Tegevused <code>get_certificates<\/code> ja <code>get_provisioning_profile<\/code> on seotud allkirjastamise l\u00e4henemisega <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.fastlane.tools\/codesigning\/getting-started\/#using-cert-and-sigh\">cert ja sigh<\/a><\/noindex>. Kui kasutate <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.fastlane.tools\/codesigning\/getting-started\/#using-match\">match<\/a><\/noindex> v\u00f5i midagi muud, tehke muudatusi.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">default_platform(:ios)\n\nplatform :ios do\n  desc \"Ehita rakendus\"\n  lane :flappybuild do\n    get_certificates\n    get_provisioning_profile\n    gym\n    upload_to_testflight\n  end\nend<\/code><\/pre>\n<p><\/p>\n<p><strong><code>3. fastlane\/Gymfile<\/code><\/strong><\/p>\n<p><\/p>\n<p>See on valikuline fail, kuid ma l\u00f5in selle k\u00e4sitsi, et muuta vaikev\u00e4ljundkaust ja paigutada v\u00e4ljund praegusesse kausta. See lihtsustab CI-d. Kui olete huvitatud, lugege <code>gym<\/code> ja selle parameetreid dokumentatsioonist <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.fastlane.tools\/actions\/gym\/\">dokumentatsioon<\/a><\/noindex>.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">https:\/\/docs.fastlane.tools\/actions\/gym\/<\/code><\/pre>\n<p><\/p>\n<p>Meie <strong><code>.gitlab-ci.yml<\/code><\/strong><\/p>\n<p><\/p>\n<p>Nii et meil on CI-jooksja projektiks ja oleme valmis katsetama torujuhet. Vaadakem, mis meil on <code>.gitlab-ci.yml<\/code>:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">stages:\n  - build\n\nvariables:\n  LC_ALL: \"en_US.UTF-8\"\n  LANG: \"en_US.UTF-8\"\n  GIT_STRATEGY: clone\n\nbuild:\n  stage: build\n  script:\n    - bundle install\n    - bundle exec fastlane flappybuild\n  artifacts:\n    paths:\n    - . \/FlappyBird.ipa<\/code><\/pre>\n<p><\/p>\n<p>K\u00f5ik on suurep\u00e4rane! <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.fastlane.tools\/getting-started\/ios\/setup\/#set-up-environment-variables\">Seame UTF-8 formaadi fastlane'ile, nagu n\u00f5utud<\/a><\/noindex>, kasutame strateegiat <code>clone<\/code> t\u00e4itva programmiga, <code>k\u00e4surea t\u00f5lgendus<\/code>tagamaks, et meil on iga koostamise jaoks puhas t\u00f6\u00f6ruum, ja lihtsalt kutsume <code>flappybuild<\/code> fastlane, nagu n\u00e4ha \u00fclal. L\u00f5pptulemusena saame kokku panna, allkirjastada ja tootmise viia viimane koostamine TestFlighti.<\/p>\n<p><\/p>\n<p>Saame ka artefakti ja salvestame selle koos koostamisega. Pange t\u00e4hele, et formaat <code>.ipa<\/code> on allkirjastatud ARM-e\u00e4risk, mis ei t\u00f6\u00f6ta simulaatoris. Kui soovite v\u00e4ljundit simulaatori jaoks, lisage lihtsalt koostamis siht, mis seda toodab, ja seej\u00e4rel lisage see artefakti teele.<\/p>\n<p><\/p>\n<h3 id=\"drugie-peremennye-sredy\">Teised keskkonnamuutujad<\/h3>\n<p><\/p>\n<p>Siin on paar keskkonnamuutujat, mis aitavad k\u00f5ike toimida.<\/p>\n<p><\/p>\n<p><strong><code>FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD<\/code><\/strong> ja <strong><code>FASTLANE_SESSION<\/code><\/strong><\/p>\n<p><\/p>\n<p>App Store'i ja TestFlight'i autentimiseks on vajalik fastlane'i autentimine. Selleks looge rakenduse parool, mida kasutatakse CI-s. \u00dcksikasjad <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.fastlane.tools\/best-practices\/continuous-integration\/#use-of-application-specific-passwords-and-spaceauth\">siin<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Kui teil on kahefaasiline autentimine, looge muutujad <code>FASTLANE_SESSION<\/code> (juhised on seal).<\/p>\n<p><\/p>\n<p><strong><code>FASTLANE_USER<\/code><\/strong> ja <strong><code>FASTLANE_PASSWORD<\/code><\/strong><\/p>\n<p><\/p>\n<p>Et <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.fastlane.tools\/codesigning\/getting-started\/#using-cert-and-sigh\">cert ja sigh<\/a><\/noindex> kutsuda v\u00e4lja algatusprofiil ja sertifikaadid vastavalt n\u00f5udmisele, tuleb seadistada muutujad <code>FASTLANE_USER<\/code> ja <code>FASTLANE_PASSWORD<\/code>. \u00dcksikasjad <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.fastlane.tools\/best-practices\/continuous-integration\/#environment-variables-to-set\">siin<\/a><\/noindex>. Seda ei ole vaja, kui kasutate muud allkirjastamismeetodit.<\/p>\n<p><\/p>\n<h3 id=\"v-zaklyuchenie\">Kokkuv\u00f5tteks<\/h3>\n<p><\/p>\n<p>Kuidas see k\u00f5ik toimib, on n\u00e4ha <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/jlenny\/flappyokr\">minu lihtsas n\u00e4ites<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Loodan, et see oli kasulik ja inspireeris teid t\u00f6\u00f6tama iOS kogumistega GitLab'is. Siin on veel <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.fastlane.tools\/best-practices\/continuous-integration\/\">n\u00f5uandeid CI<\/a><\/noindex> fastlane'i jaoks, igaks juhuks. V\u00f5ib-olla soovite kasutada <code>CI_BUILD_ID<\/code> (inkrementaalse kogumise jaoks), et <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.fastlane.tools\/best-practices\/continuous-integration\/gitlab\/#auto-incremented-build-number\">automaatsete versioonide inkrementimist<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Veel \u00fcks lahe v\u00f5imalus fastlane'is on <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.fastlane.tools\/getting-started\/ios\/screenshots\/\">automaatne ekraanipilt<\/a><\/noindex> App Store'i jaoks, mida on v\u00e4ga lihtne seadistada.<\/p>\n<p><\/p>\n<p>R\u00e4\u00e4kige kommentaarides oma kogemustest ja jagage ideid GitLab'i t\u00e4iustamiseks iOS rakenduste arendamiseks.<\/p>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/southbridge\/blog\/444170\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041a\u0430\u043a GitLab \u0441 fastlane \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442, \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f iOS \u0432 App Store. \u041d\u0435\u0434\u0430\u0432\u043d\u043e \u0443 \u043d\u0430\u0441 \u0431\u044b\u043b \u043f\u043e\u0441\u0442 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0431\u044b\u0441\u0442\u0440\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 Android \u0441 GitLab \u0438 fastlane. \u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c, \u043a\u0430\u043a \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 iOS \u0438 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432 TestFlight. \u0417\u0430\u0446\u0435\u043d\u0438\u0442\u0435, \u043a\u0430\u043a \u043a\u0440\u0443\u0442\u043e \u044f \u0432\u043d\u043e\u0448\u0443 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043d\u0430 iPad Pro [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":42202,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-42201","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041a\u0430\u043a GitLab \u0441 fastlane.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/publikuem-prilozheniya-ios-v-app-store-s-gitlab-i-fastlane\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f iOS \u0432 App Store \u0441 GitLab \u0438 fastlane | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041a\u0430\u043a GitLab \u0441 fastlane.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/publikuem-prilozheniya-ios-v-app-store-s-gitlab-i-fastlane\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-03-17T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T10:45:01+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Avaldame iOS rakendusi App Store'is GitLab'i ja fastlane'i abil | ProHoster","description":"Kuidas GitLab t\u00f6\u00f6tab fastlane'iga.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/publikuem-prilozheniya-ios-v-app-store-s-gitlab-i-fastlane","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f iOS \u0432 App Store \u0441 GitLab \u0438 fastlane | ProHoster","og:description":"\u041a\u0430\u043a GitLab \u0441 fastlane.","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/publikuem-prilozheniya-ios-v-app-store-s-gitlab-i-fastlane","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-03-17T21:00:00+00:00","article:modified_time":"2020-02-18T10:45:01+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"42201","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-22 07:36:23","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 18:23:50","updated":"2026-01-22 07:36:23","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/42201","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=42201"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/42201\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/42202"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=42201"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=42201"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=42201"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}