Eldonado de iOS-Aplikoj al la App Store kun GitLab kaj fastlane

Eldonado de iOS-Aplikoj al la App Store kun GitLab kaj fastlane

Kiel GitLab kun fastlane kolektas, subskribas kaj publikigas iOS-aplikaĵojn al la App Store.

Ni lastatempe havis afiŝu pri kiel rapide konstrui kaj ruli Android-aplikaĵon kun GitLab kaj rapida vojeto. Ĉi tie ni vidos kiel konstrui kaj ruli iOS-apon kaj publikigi ĝin al TestFlight. Rigardu kiom malvarmeta ĝi estas Mi faras ŝanĝon en iPad Pro kun GitLab Web IDE, Mi prenas la asembleon kaj ricevas ĝisdatigon al la testa versio de la aplikaĵo sur la sama iPad Pro kie mi evoluigis ĝin.

Ĉi tie ni prenos simpla iOS-apliko ĉe Swift, kun kiu mi registris la videon.

Kelkajn vortojn pri la agordo de Apple Store

Ni bezonos aplikaĵon de App Store, distribuajn atestilojn kaj provizantan profilon por kunligi ĉion.

La plej malfacila afero ĉi tie estas starigi subskribajn rajtojn en la App Store. Mi esperas, ke vi povas eltrovi ĉi tion mem. Se vi estas nova, mi indikas vin en la ĝustan direkton, sed ni ne parolos pri la komplikaĵoj de administrado de Apple-atestiloj ĉi tie, kaj ili konstante ŝanĝiĝas. Ĉi tiu afiŝo helpos vin komenci.

Miaj Aplikoj

Vi bezonas aplikaĵon en App Store Connect, do vi havas identigilon por agordo .xcodebuild. La profilo kaj aplika ID kombinas kodkonstruaĵojn, prezojn kaj haveblecon, kaj TestFlight-agordon por distribui testajn aplikaĵojn al uzantoj. Ne faru publikajn provojn, privataj provoj sufiĉos, se vi havas malgrandan grupon, facilan aranĝon kaj ne bezonas pliajn permesojn de Apple.

Profilo pri komencado

Krom la agordo de la aplikaĵo, vi bezonas iOS-distribuajn kaj evoluajn ŝlosilojn kreitajn en la sekcio Atestiloj, Identigiloj kaj Profiloj de la konzolo de Apple Developer. Ĉiuj ĉi tiuj atestiloj povas esti kombinitaj en provizora profilo.

Uzantoj, kiuj estos aŭtentikigitaj, devas povi krei atestilojn, alie la paŝojn cert kaj suspiri vi vidos eraron.

aliaj opcioj

Krom ĉi tiu simpla metodo, ekzistas aliaj manieroj agordi atestilojn kaj profilojn. Do, se vi laboras malsame, vi eble devos adaptiĝi. La plej grava afero estas, ke vi bezonas agordon .xcodebuild, kiu montros la necesajn dosierojn, kaj la ŝlosilĉeno devas esti havebla sur la konstrukomputilo por la uzanto sub kies nomo la kuristo kuras. Por cifereca subskribo ni uzas fastlane, kaj se estas problemoj aŭ vi volas scii pli, kontrolu iliajn detalojn dokumentado pri ciferecaj subskriboj.

En ĉi tiu ekzemplo mi uzas la aliron cert kaj suspiri, sed por vera uzo ĝi verŝajne pli taŭgas matĉo.

Preparante GitLab kaj fastlane

Preparante CI Runner

Kolektinte ĉiujn ĉi tiujn datumojn, ni pluiras al la agordo de la GitLab-kuristo sur la MacOS-aparato. Bedaŭrinde, vi nur povas fari iOS-aplikaĵojn en MacOS. Sed ĉio povas ŝanĝiĝi, kaj se vi atendas progreson en ĉi tiu areo, atentu projektojn kiel xcbuild и signo, kaj nia interna tasko gitlab-ce#57576.

Agordi la kuriston estas tre simpla. Sekvu fluon instrukcioj por agordi GitLab Runner en macOS.

Notu. La kuristo devas uzi plenumeblan programon shell. Ĉi tio estas postulata por konstrui iOS sur macOS por funkcii rekte kiel uzanto prefere ol tra ujoj. Se vi uzas shell, konstruaĵo kaj testado estas faritaj kiel la kuristo, rekte sur la konstrugastiganto. Ĝi ne estas tiel sekura kiel ujoj, do pli bone foliumi sekureca dokumentarodo vi nenion maltrafas.

sudo curl --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-darwin-amd64
sudo chmod +x /usr/local/bin/gitlab-runner
cd ~
gitlab-runner install
gitlab-runner start

Apple Keychain devas esti agordita sur ĉi tiu gastiganto kun aliro al la ŝlosiloj, kiujn Xcode bezonas konstrui. La plej facila maniero testi ĉi tion estas ensaluti kiel la uzanto, kiu rulos la konstruon kaj provos konstrui ĝin permane. Se la sistemo petas ŝlosilĉenon aliron, elektu Ĉiam Permesi ke CI funkciu. Eble indas eniri kaj rigardi la unuajn duojn por certigi, ke ili ne plu petas la ŝlosilĉenon. La problemo estas, ke Apple ne faciligas al ni uzi Aŭtomatan reĝimon, sed post kiam vi ekfunkciigos, ĉio estos en ordo.

fastlane init

Por uzi fastlane en projekto, rulu fastlane init. Nur sekvu instrukcioj por instali kaj funkcii fastlane, precipe en la sekcio pri Gemfile, ĉar ni bezonas rapidan kaj antaŭvideblan lanĉon per aŭtomatigita CI-dukto.

En via projekta dosierujo, rulu ĉi tiujn komandojn:

xcode-select --install
sudo gem install fastlane -NV
# Alternatively using Homebrew
# brew cask install fastlane
fastlane init

fastlane petos bazan agordon kaj poste kreos fastlane-dosierujon en la projekto kun tri dosieroj:

1. fastlane/Appfile

Ĉi tie estas nenio komplika. Nur certigu, ke via Apple ID kaj App ID estas ĝustaj.

app_identifier("com.vontrance.flappybird") # The bundle identifier of your app
apple_id("[email protected]") # Your Apple email address

2. fastlane/Fastfile

Fastfile difinas la konstruajn paŝojn. Ni uzas multajn enkonstruitajn funkciojn de fastlane, do ĉio estas klara ankaŭ ĉi tie. Ni kreas unu linion, kiu ricevas atestojn, plenumas la muntadon kaj alŝutas ĝin al TestFlight. Vi povas dividi ĉi tiun procezon en malsamajn taskojn se necese. Ĉiuj ĉi tiuj operacioj (get_certificates, get_provisioning_profile, gym и upload_to_testflight) jam estas inkluzivitaj en fastlane.

Agoj get_certificates и get_provisioning_profile rilata al la subskriba aliro cert kaj suspiri. Se vi uzas matĉo aŭ kio ajn, faru ŝanĝojn.

default_platform(:ios)

platform :ios do
  desc "Build the application"
  lane :flappybuild do
    get_certificates
    get_provisioning_profile
    gym
    upload_to_testflight
  end
end

3. fastlane/Gymfile

Ĉi tio estas laŭvola dosiero, sed mi kreis ĝin permane por ŝanĝi la defaŭltan eligdosierujon kaj meti la eligon en la nunan dosierujon. Ĉi tio simpligas CI. Se interesiĝas, legu pri gym kaj ĝiaj parametroj en dokumentado.

https://docs.fastlane.tools/actions/gym/

Nia .gitlab-ci.yml

Do, ni havas CI-kuriston por la projekto kaj ni pretas testi la dukton. Ni vidu, kion ni havas .gitlab-ci.yml:

stages:
  - build

variables:
  LC_ALL: "en_US.UTF-8"
  LANG: "en_US.UTF-8"
  GIT_STRATEGY: clone

build:
  stage: build
  script:
    - bundle install
    - bundle exec fastlane flappybuild
  artifacts:
    paths:
    - ./FlappyBird.ipa

Все отлично! Ni fiksas la formaton al UTF-8 por fastlane laŭbezone, uzu strategion clone kun ekzekuta programo shell, por ke ni havu puran laborspacon por ĉiu asembleo, kaj simple voku flappybuild fastlane, kiel vidite supre. Kiel rezulto, ni ricevas la asembleon, subskribon kaj deplojon de la plej nova asembleo en TestFlight.

Ni ankaŭ ricevas la artefakton kaj konservas ĝin kun la aro. Bonvolu noti, ke la formato .ipa estas subskribita ARM rulebla kiu ne funkcias en la simulilo. Se vi volas eliron por la simulilo, simple aldonu la konstruan celon, kiu produktas ĝin, kaj poste inkluzivu ĝin en la artefakto.

Aliaj mediaj variabloj

Estas kelkaj medio-variabloj ĉi tie, kiuj igas ĉion funkcii.

FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD и FASTLANE_SESSION

Aŭtentikigo por fastlane estas necesa por aŭtentikigi en la App Store kaj alŝuti al TestFlight. Por fari tion, kreu pasvorton por la aplikaĵo, kiu estos uzata en CI. Detaloj tie.

Se vi havas dufaktoran aŭtentikigon, kreu variablon FASTLANE_SESSION (instruoj tie).

FASTLANE_USER и FASTLANE_PASSWORD

ke cert kaj suspiri vokis la komencan profilon kaj atestojn laŭpeto, vi devas agordi la variablojn FASTLANE_USER и FASTLANE_PASSWORD. Detaloj tie. Ĉi tio ne estas necesa se vi uzas alian subskriban metodon.

En konkludo

Vi povas vidi kiel ĉio funkcias en mia simpla ekzemplo.

Mi esperas, ke ĉi tio estis helpema kaj inspiris vin labori kun iOS-konstruaĵoj en projekto GitLab. Jen alia CI-konsiletoj por fastlane, ĉiaokaze. Vi eble volas uzi CI_BUILD_ID (por pliigaj konstruoj) al aŭtomate pliiga versio.

Alia bonega trajto de fastlane estas aŭtomataj ekrankopioj por la App Store, kiuj estas tre facile instaleblaj.

Rakontu al ni en la komentoj pri via sperto kaj dividu viajn ideojn por plibonigi GitLab por iOS-app-disvolviĝo.

fonto: www.habr.com

Aldoni komenton