Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Navitabs
rootGravid i DK (iOS) - Leverancebeskrivelse


Indholdsfortegnelse

Table of Contents

Introduktion

Formål

Formålet med dette dokument, er at beskrive systemkrav og opsætning for udviklere på projektet. Desuden beskrive en række værktøjer, der hjælper med udviklingen, som er anvendt i projektet.

Sammenhæng med øvrige dokumenter

-

Udvikling

Krav for at bygge projektet

Xcode, min version 1214.5.16

Swiftlint, min. version 0.41.0.: https://github.com/realm/SwiftLint

...

Headers

Da alle filer skal indeholde headers, jvf. NSP anbefales det at man anvender følgende Xcode templates, når man koder for at garantere headers.

...

View file
nameNSP.zip
height250

Kopier "NSP" mappen til følgende lokation:

Code Block
titleXcode templates file path
/Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates/File Templates

så skal følgende header indsættes øverst i alle filer i xcode projektet:


// The MIT License

//

// Original work sponsored and donated by The Danish Health Data Authority (http://www.sundhedsdatastyrelsen.dk)

//

// Copyright (C) 2020 The Danish Health Data Authority (http://www.sundhedsdatastyrelsen.dk)

//

// Permission is hereby granted, free of charge, to any person obtaining a copy of

// this software and associated documentation files (the "Software"), to deal in

// the Software without restriction, including without limitation the rights to

// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies

// of the Software, and to permit persons to whom the Software is furnished to do

// so, subject to the following conditions:

//

// The above copyright notice and this permission notice shall be included in all

// copies or substantial portions of the Software.

//

// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE

// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER

// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,

// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE

// SOFTWARE.

...

Xcode Code Snippets

For at få en "NSP" short cut til at indsætte copy right header kan nedenstående fil placeres på følgende path:

Code Block
~/Library/Developer/Xcode/UserData/CodeSnippets

...


Tools

Projektet indeholder en række tools, der anvendes under projektudvikling. De ligger alle i Tools mappen i repositoryet.

Generering af Localization tools

Alle strings er oprettet i et Localizely projekt (Claus Leth Gregersen er Owner på projektet): https://app.localizely.com/projects/3278b0a4-b1a5-4277-ba70-3159fb9dac9b/main/dashboard

...

Desuden anvendes R.swift til at tilgå strings via et typealias: Localizable

Generering af modeller via OpenAPI spec

Alle modeller der anvendes til JSON responses fra maternity API'et er genereret ud fra OpenAPI speccen. For at generere nye modeller anvendes nedenstående script.

Hvis udvikleren vil opdatere til en ny version af modellerne, skal man først opdatere models-version.config med den version af backenden, som modellerne skal genereres ud fra (Det er kun versionsnummer, "gm-api-" skal ikke med)
Herefter kører man et autogenererings script til macOS, som køres fra roden af repositoryet på følgende måde:

Code Block
languagebash
./Tools/generate-models.sh

Krav til minimum version af openapi-generator er 4.3.1, for at kunne køre scriptet.

Modeller

Modeller bygges manuelt ud fra swagger dokumentationen. Dokumentationen finder du her: https://api.gravidmappen-dev.tcs.trifork.dev/gm-bff/swagger-ui/index.html#/Når man opdaterer modellerne, er det vigtigt at man får koden og tests til at bygge igen og committer disse ændringer samlet, hvorefter der tagges i Git med "models-version/VERSIONSNUMMER", således at man altid kan se i Git historikken, hvornår ændringen af modellerne blev foretaget.


Sortering af Xcode projekt fil

For at undgå merge konflikter i projekt-filen, anbefales det at man - inden oprettelse af PR - anvender et script, der sorterer projekt-filen alfabetisk:

Code Block
languagebash
./Tools/sort-xcode.sh

Konfiguration

Projektet anvender Xocde Build Configurations til at styre forskellige build konfigurationer med.

...

Code Block
titleBuildConfiguration enum
enum BuildConfiguration: String {
    case debug = "Debug"
    case projectEnv = "ProjectEnv"
    case internalTest = "InternalTest"
    case test1clientTest = "Test1ClientTest"
    case test2clientTestMockMitID = "Test2ClientTestMockMitID"
    case release = "Release"
}

...

De forskellige konfigurationer udløser forskelligt setup af komponenter i app'en. Det ses i den statiske Configuration.build(for buildConfiguration: BuildConfiguration) -> Configuration metode.

Distribution

Distribution af test apps som IPA via

...

Azure

Distribuering kræver at man opfylder kravene for at bygge projektet og at man har fastlane min. version 2.176.0: https://fastlane.tools/

Projektet distribueres som IPA via azure, hvor der er oprettet flere pipelines, hhv. "MinGraviditet iOS Appstore Release", "MinGraviditet iOS Test Release", "MinGraviditet iOS Test Mock MitId Release" og "MinGraviditet iOS Dev Release"

Se afsnit 5.3 ang. versionering af app'en.

App Store

Man skal være i besiddelse af Sundhedsdatastyrelsens Apple Distribution certifikat for at signere app'en til App Store. Dette certifikat må aldrig være den del af det public Git respository. Derudover skal man have adgang til App Store Connect kontoen. med Enterprise certifikat (via Trifork's pt.). Det kræver at man har adgang til Min Graviditet (iOS) på https://insp.tpa.io/ og at man har en bruger med API key (der spørges efter denne i fastlane inden IPA'en uploades)

For at sikre ens distribuering af apps med forskellige konfigurationer, anvendes fastlane hvor med følgende lanes eksistererlane:

  • tpa_projectenv: Test app der kører op i mod projektmiljøet, henter test-artikler i CMS'en og anvender Mock NemID.
  • tpa_internal_test: Test app der kører op i mod interntest og henter test-artikler i CMS'en og anvender Mock NemID.
  • tpa_test1:  Test app der kører op i mod test1 og henter test-artikler i CMS'en og anvender Mock NemID.
  • tpa_test2: Test app der kører op i mod test2 og henter prod-artikler i CMS'en og anvender Test NemID.

Se afsnit 5.3 ang. versionering af app'en.

App Store

App Store processen beskrives når den har været gennemgået første gang. Den er endnu ukendt, da den ikke har været udført endnuapp_store. Denne lane anvender FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD som environment variabel for at forbinde til App Store Connect. Hvis dette ikke angives spørger den efter login information i stedet.

Se afsnit 5.3 ang. versionering af app'en.

Versionering

App'en kører efter en almindelig major.minor.patch versionering, som styres manuelt i xcodeproj-filen. Build nummeret opdateres automatisk med antallet git-commits, således at det altid ændrer sig, når man har lavet ændringer i koden. 

Build nummeret opdateres ved at køre "bundle exec fastlane bump_release_version" lanen i fastlane, hvor den også tagger i git med den respektive version. Formatet er: release/VERSION_BUILDNUMMER (release/0.0.1_1000) 

 Branches

Der arbejdes efter en git-flow tankegang, hvor master-branchen indeholder det nyeste, der er godkendt af QA-teamet.

Der udvikles løbendes på develop-branchen via feature /bugfix/hotfix branches med pull requests til develop-branchen.

...