2017-01-06 4 views
6

Ich habe ein iOS-Projekt von Swift 3.0 mit CocoaPods geschrieben. Ich habe Gitlab CI für dieses Projekt konfiguriert und es funktioniert perfekt. Das ist meine .gitlab-ci.yml Datei:Code Coverage für Swift 3.0 Projekt in Gitlab CI

stages: 
- build 
build_project: 
    stage: build 
    script: 
    - rm -rf Pods;rm -rf MyProject.xcworkspace;rm -rf MyProject.xcodeproj/project.xcworkspace 
    - pod install 
    - xcodebuild clean -workspace MyProject.xcworkspace -scheme MyProject | xcpretty 
    - xcodebuild test -workspace MyProject.xcworkspace -scheme MyProject -destination 'platform=iOS Simulator,name=iPhone 7,OS=10.2' | xcpretty -s 
tags: 
- ios 
- lunchdot 

Ich kann nicht Code-Coverage für dieses Projekt in meinem Gitlab Repo sehen. Im Moment ist eine Deckungsspalte für alle meine Builds leer. Ich habe versucht, Testabdeckung Parsing in CI/CD-Pipelines Gitlab Einstellungen, aber es hatte keine Wirkung, weil ich Regex für Swift nicht wissen. Ist es möglich, Code Coverage für das Swift-Projekt in Gitlab CI einzurichten? Wie kann ich das machen?

+0

Noch nicht einmal ein Kommentar ... :(Ich brauche die Antwort auch. – OliverM

+0

Haben Sie aktivieren "collect code coverage" in dem Schema? Ich tat ... aber trotzdem keine Berichterstattung – OliverM

+0

@OliverM Ja, tat ich, aber Es hat keinen Effekt. Ich verwende Xcode-Tool für Code-Coverage-Analyse. – Svyatoslav

Antwort

5

Also habe ich versucht eine Million Möglichkeiten, es zu tun und das Problem stellte sich xcpretty. Nachdem ich es entfernt habe, habe ich begonnen, konsistente Ergebnisse mit meinen gitlab ci-Coverage-Daten zu erhalten. Wenn Sie immer noch keine Daten erhalten möchten, die Ihnen egal sind, können Sie -quiet in Ihrer gitlab yams-Datei verwenden. Ich werde es aber alles posten, also lies weiter.

Man braucht noch ein externes Tool für Coverage-Analyse - xcov scheint nicht vorhanden zu sein mehr so ​​habe ich slather. Lief wie am Schnürchen.

Dies sind die Schritte:

1) Holen Sie slather.

2) Holen Sie Ihre .slather.yml Datei geradeaus. Mine sieht wie folgt aus (YourApp ist der Name Ihrer App offensichtlich):

# .slather.yml 

coverage_service: cobertura_xml 
xcodeproj: ./YourApp.xcodeproj 
workspace: ./YourApp.xcworkspace 
scheme: YourApp 
source_directory: ./YourApp 
output_directory: path/to/xml_report 
ignore: 
- "**/Pods/*" 
- "thirdparty/*" 
- "./Scripts/*" 
- "**/3rdParty/*" 
- "../**/Developer/*" 
- "**/libraries/*" 
- "Module-Core/*" 
- "Module-Components/*" 
- "**/AppUnitTests/*" 

Sie können den Test Ausgabe als HTML erhalten, xml, in codecov.io, etc, völlig bis zu Ihnen. Schauen Sie sich die gitHub Seite an, um die Möglichkeiten zu sehen. Aber für das aktuelle Problem brauchen wir nur Slather-Berichte in der Kommandozeile, damit gitlab es aufnehmen kann. Hier wird die gitlab-yaml-Datei richtig eingerichtet.

3) Richten Sie die Datei .gitlab-ci.yml ein.Mine sieht wie folgt aus:

stages: 
    - build 

build_project_1: 
    stage: build 
    script: 
    - xcodebuild clean -workspace YourApp.xcworkspace -scheme YourApp -quiet 
    - xcodebuild test -workspace YourApp.xcworkspace -scheme YourApp -destination 'platform=iOS Simulator,name=iPhone 6,OS=10.3.1' -enableCodeCoverage YES -quiet 
    after_script: 
    - slather coverage -s 

    only: 
    - master 

4) Der nächste Schritt ist:

  • Gehen Sie zu Ihrem Gitlab Seite/profile oder was auch immer Sie es nennen

  • Zum Einstellungen und dann Pipelines

Settings/Pipelines

  • Blättern Sie zum Berichterstattung Test-Parsing und fügen dort diese regulären Ausdruck: \d+\%\s*$

Add your regex expression in the space provided and then save it

Und das ist es. Alles, was Sie tun müssen, ist einen Build aufzurufen.

+0

Die Regex im Text ist nicht korrekt, verwenden Sie die Regex im Bild oder '' '\ d + (?: \. \ D *)? \% $' '' –