2017-01-06 14 views
6

में स्विफ्ट 3.0 प्रोजेक्ट के लिए कोड कवरेज मेरे पास कोकोपोड्स के साथ स्विफ्ट 3.0 द्वारा लिखित आईओएस प्रोजेक्ट है। मैंने इस परियोजना के लिए गिटलाब सीआई कॉन्फ़िगर किया है और यह पूरी तरह से काम करता है।गिटलैब सीआई

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 

मैं अपने Gitlab रेपो में इस परियोजना के लिए कोड कवरेज नहीं देख सकते हैं: यह मेरा .gitlab-ci.yml फ़ाइल है। फिलहाल मेरे सभी निर्माण के लिए एक कवरेज कॉलम खाली है। मैंने सीआई/सीडी पाइपलाइन गिटलैब सेटिंग्स में टेस्ट कवरेज पार्सिंग सेट करने का प्रयास किया, लेकिन इसका कोई प्रभाव नहीं पड़ा क्योंकि मुझे स्विफ्ट के लिए रेगेक्स नहीं पता था। क्या गिटलाब सीआई में स्विफ्ट परियोजना के लिए कोड कवरेज स्थापित करना संभव है? मैं यह कैसे कर सकता हूँ?

+0

यहां तक ​​कि एक भी टिप्पणी नहीं ... :(मुझे भी जवाब चाहिए। – OliverM

+0

क्या आपने योजना में "कोड कवरेज इकट्ठा" सक्षम किया था? मैंने किया ... लेकिन फिर भी कोई कवरेज – OliverM

+0

@ ओलिवर एम हाँ, मैंने किया, लेकिन इसका कोई प्रभाव नहीं है। मैं कोड कवरेज विश्लेषण के लिए एक्सकोड टूल का उपयोग कर रहा हूं। – Svyatoslav

उत्तर

5

तो, मैंने इसे करने के दस लाख तरीकों की कोशिश की और यह मुद्दा xcpretty हो गया। इसे हटाने के बाद मैंने अपने गिटलैब सीआई कवरेज डेटा के साथ लगातार परिणाम प्राप्त करना शुरू कर दिया। यदि आप अभी भी बहुत से डेटा प्राप्त नहीं करना चाहते हैं, तो आपको इसकी परवाह नहीं है, आप -quiet का उपयोग अपने gitlab yams फ़ाइल में कर सकते हैं। हालांकि मैं इसे सब कुछ पोस्ट करूंगा, इसलिए पढ़ना जारी रखें।

अभी भी कवरेज के विश्लेषण के लिए एक बाहरी उपकरण की जरूरत है - xcov अब उपलब्ध नहीं होने के लिए तो मैं उड़ा देना इस्तेमाल किया लगता है। एक जादू की तरह काम किया।

1) slather प्राप्त करें:

ये कदम हैं।

2) अपनी .slather.yml फ़ाइल को सीधे प्राप्त करें। मेरा निम्नलिखित की तरह दिखता है (YourApp अपने एप्लिकेशन का नाम स्पष्ट रूप से है):

# .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/*" 

आप HTML, XML, codecov.io में, आदि के रूप में परीक्षण उत्पादन, पूरी तरह से आप पर निर्भर हो सकता है। ऐसा करने के संभावित तरीकों को देखने के लिए स्लेदर गिटहब पेज देखें। लेकिन वर्तमान मुद्दे के लिए, हमें कमांड लाइन में स्लदर रिपोर्टिंग की आवश्यकता है, इसलिए गिटलैब इसे उठा सकता है। यही वह जगह है जहां gitlab yaml फ़ाइल को ठीक से स्थापित किया जाता है।

3) .gitlab-ci.yml फ़ाइल सेट करें।मेरा इस तरह दिखता है:

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) अगले चरण पर है: अपने gitlab पृष्ठ/प्रोफ़ाइल को

  • जाओ या जो भी आप यह

  • सेटिंग पर जाएं फोन और फिर पाइपलाइन

Settings/Pipelines

  • स्क्रॉल करने के लिए नीचे टेस्ट कवरेज पार्स करने और इस regex अभिव्यक्ति जोड़ें: \d+\%\s*$

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

और वह यह है। आपको केवल एक बिल्ड का आह्वान करना है।

+0

पाठ में regex सही नहीं है, चित्र में regex का उपयोग करें या '' \ d + (?: \। \ D *)? \% $ '' ' –

संबंधित मुद्दे