Skip to content
This repository has been archived by the owner on May 21, 2024. It is now read-only.

Commit

Permalink
Merge pull request #2 from gperdomor/feature/gitlab-ci
Browse files Browse the repository at this point in the history
add gitlab ci
  • Loading branch information
gperdomor authored Mar 9, 2017
2 parents 97d0fe4 + e5f5aee commit b7350b7
Show file tree
Hide file tree
Showing 4 changed files with 317 additions and 11 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -71,3 +71,6 @@ fastlane/test_output

# End of https://www.gitignore.io/api/swift

.DS_Store
.vscode/
.idea/
310 changes: 310 additions & 0 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,310 @@
############################################
# GLOBAL VARS

variables:
XCODE_PROJECT: MoyaUnbox.xcodeproj
GIT_STRATEGY: fetch

############################################
# STAGES

stages:
- moya
- reactive
- podlint
- after_success

############################################
# JOBS

before_script:
- brew update
# Cocoapod
- brew outdated cocoapods || brew upgrade cocoapods
# SwiftLint
- brew outdated swiftlint || brew upgrade swiftlint
# Carthage tools
- brew outdated carthage || brew upgrade carthage
# - curl -L -O https://github.com/YPlan/CartfileDiff/releases/download/0.1/CartfileDiff.pkg
# - sudo installer -pkg CartfileDiff.pkg -target /
# xcpretty
- if ! gem list xcpretty -i > /dev/null 2>&1; then
gem install xcpretty;
fi

- if ! gem list danger -i > /dev/null 2>&1; then
gem install danger;
fi

- if ! gem list danger-swiftlint -i > /dev/null 2>&1; then
gem install danger-swiftlint;
fi
# bootstrap the dependencies for the project
# you can remove if you don't have dependencies
- PLATFORM=$PLATFORM ./scripts/bootstrap-if-needed

after_script:
- osascript -e 'tell app "Simulator" to quit'

############################################
# TEMPLATES

.cache: &cache_paths
paths:
- Carthage

.script_template: &script_definition
script:
- set -o pipefail
- xcodebuild -version
- xcodebuild -showsdks

- SCHEME="$PREFIX$BASE_SCHEME"

- xcodebuild clean -project "$XCODE_PROJECT" -scheme "$SCHEME" | xcpretty

# Build Framework in Debug and Run Tests if specified
- echo "BUILD FOR DEBUG"
- if [ $RUN_TESTS == "YES" ]; then
xcodebuild -project "$XCODE_PROJECT" -scheme "$SCHEME" -sdk "$SDK" -destination "$DESTINATION" -configuration Debug ONLY_ACTIVE_ARCH=NO ENABLE_TESTABILITY=YES test | xcpretty;
else
xcodebuild -project "$XCODE_PROJECT" -scheme "$SCHEME" -sdk "$SDK" -destination "$DESTINATION" -configuration Debug ONLY_ACTIVE_ARCH=NO build | xcpretty;
fi

- xcodebuild clean -project "$XCODE_PROJECT" -scheme "$SCHEME" | xcpretty

# Build Framework in Release and Run Tests if specified
- echo "BUILD FOR RELEASE"
- if [ $RUN_TESTS == "YES" ]; then
xcodebuild -project "$XCODE_PROJECT" -scheme "$SCHEME" -sdk "$SDK" -destination "$DESTINATION" -configuration Release ONLY_ACTIVE_ARCH=NO ENABLE_TESTABILITY=YES test | xcpretty;
else
xcodebuild -project "$XCODE_PROJECT" -scheme "$SCHEME" -sdk "$SDK" -destination "$DESTINATION" -configuration Release ONLY_ACTIVE_ARCH=NO build | xcpretty;
fi

.iOS_vars: &iOS_vars
PLATFORM: iOS
BASE_SCHEME: MoyaUnbox-iOS
SDK: iphonesimulator10.2
RUN_TESTS: "YES"

.macOS_vars: &macOS_vars
PLATFORM: macOS
BASE_SCHEME: MoyaUnbox-macOS
SDK: macosx10.12
RUN_TESTS: "YES"
DESTINATION: "platform=OS X,arch=x86_64"

.tvOS_vars: &tvOS_vars
PLATFORM: tvOS
BASE_SCHEME: MoyaUnbox-tvOS
SDK: appletvsimulator10.1
RUN_TESTS: "YES"

.watchOS_vars: &watchOS_vars
PLATFORM: watchOS
BASE_SCHEME: MoyaUnbox-watchOS
SDK: watchsimulator3.1
RUN_TESTS: "NO"

############################################
# JOBS - STAGE: TEST

# iPhone 7
iPhone 7 - OS 10.2:
stage: moya
cache:
<<: *cache_paths
key: iOS
tags:
- xcode
- iOS
<<: *script_definition
variables:
<<: *iOS_vars
DESTINATION: "platform=iOS Simulator,OS=10.2,name=iPhone 7"

Rx iPhone 7 - OS 10.2:
stage: reactive
cache:
<<: *cache_paths
key: iOS
tags:
- xcode
- iOS
<<: *script_definition
variables:
<<: *iOS_vars
PREFIX: Rx
DESTINATION: "platform=iOS Simulator,OS=10.2,name=iPhone 7"

Reactive iPhone 7 - OS 10.2:
stage: reactive
cache:
<<: *cache_paths
key: iOS
tags:
- xcode
- iOS
<<: *script_definition
variables:
<<: *iOS_vars
PREFIX: Reactive
DESTINATION: "platform=iOS Simulator,OS=10.2,name=iPhone 7"

# macOS
macOS - OS 10.12:
stage: moya
cache:
<<: *cache_paths
key: macOS
tags:
- xcode
- macOS
<<: *script_definition
variables:
<<: *macOS_vars

Rx macOS - OS 10.12:
stage: reactive
cache:
<<: *cache_paths
key: macOS
tags:
- xcode
- macOS
<<: *script_definition
variables:
<<: *macOS_vars
PREFIX: Rx

Reactive macOS - OS 10.12:
stage: reactive
cache:
<<: *cache_paths
key: macOS
tags:
- xcode
- macOS
<<: *script_definition
variables:
<<: *macOS_vars
PREFIX: Reactive

# tvOS
Apple TV 1080p - OS 10.1:
stage: moya
cache:
<<: *cache_paths
key: tvOS
tags:
- xcode
- tvOS
<<: *script_definition
variables:
<<: *tvOS_vars
DESTINATION: "OS=10.1,name=Apple TV 1080p"

Rx Apple TV 1080p - OS 10.1:
stage: reactive
cache:
<<: *cache_paths
key: tvOS
tags:
- xcode
- tvOS
<<: *script_definition
variables:
<<: *tvOS_vars
PREFIX: Rx
DESTINATION: "OS=10.1,name=Apple TV 1080p"

Reactive Apple TV 1080p - OS 10.1:
stage: reactive
cache:
<<: *cache_paths
key: tvOS
tags:
- xcode
- tvOS
<<: *script_definition
variables:
<<: *tvOS_vars
PREFIX: Reactive
DESTINATION: "OS=10.1,name=Apple TV 1080p"

# watchOS
Apple Watch Series 2 - OS 3.1:
stage: moya
allow_failure: true
cache:
<<: *cache_paths
key: watchOS
tags:
- xcode
- watchOS
<<: *script_definition
variables:
<<: *watchOS_vars
DESTINATION: "platform=watchOS Simulator,OS=3.1,name=Apple Watch Series 2 - 42mm"

Rx Apple Watch Series 2 - OS 3.1:
stage: reactive
allow_failure: true
cache:
<<: *cache_paths
key: watchOS
tags:
- xcode
- watchOS
<<: *script_definition
variables:
<<: *watchOS_vars
PREFIX: Rx
DESTINATION: "platform=watchOS Simulator,OS=3.1,name=Apple Watch Series 2 - 42mm"

Reactive Apple Watch Series 2 - OS 3.1:
stage: reactive
allow_failure: true
cache:
<<: *cache_paths
key: watchOS
tags:
- xcode
- watchOS
<<: *script_definition
variables:
<<: *watchOS_vars
PREFIX: Reactive
DESTINATION: "platform=watchOS Simulator,OS=3.1,name=Apple Watch Series 2 - 42mm"

############################################
# JOBS - STAGE: PODLINT

podlint:
stage: podlint
when: on_success
tags:
- xcode
before_script:
- echo "Podlint"
script:
- pod lib lint --allow-warnings

############################################
# JOBS - STAGE: AFTER SUCCESS

danger:
stage: after_success
when: on_success
tags:
- xcode
before_script:
- echo "Danger"
script:
- danger

#codecov:
# stage: after_success
# when: on_success
# script:
# - bash <(curl -s https://codecov.io/bash)
5 changes: 2 additions & 3 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -81,15 +81,14 @@ before_script:
- PLATFORM=${PLATFORM} ./scripts/bootstrap-if-needed

script:
- printenv
- set -o pipefail
- xcodebuild -version
- xcodebuild -showsdks

- xcodebuild clean -project "${TRAVIS_XCODE_PROJECT}" -scheme "${SCHEME}" | xcpretty

# Build Framework in Debug and Run Tests if specified
- echo "BUILD FOR DEBUG ---> RUN_TESTS = ${RUN_TESTS}"
- echo "BUILD FOR DEBUG"
- if [ ${RUN_TESTS} == "YES" ]; then
xcodebuild -project "${TRAVIS_XCODE_PROJECT}" -scheme "${SCHEME}" -sdk "${SDK}" -destination "${DESTINATION}" -configuration Debug ONLY_ACTIVE_ARCH=NO ENABLE_TESTABILITY=YES test | xcpretty;
else
Expand All @@ -99,7 +98,7 @@ script:
- xcodebuild clean -project "$TRAVIS_XCODE_PROJECT" -scheme "$SCHEME" | xcpretty

# Build Framework in Release and Run Tests if specified
- echo "BUILD FOR RELEASE ---> RUN_TESTS = ${RUN_TESTS}"
- echo "BUILD FOR RELEASE"
- if [ ${RUN_TESTS} == "YES" ]; then
xcodebuild -project "${TRAVIS_XCODE_PROJECT}" -scheme "${SCHEME}" -sdk "${SDK}" -destination "${DESTINATION}" -configuration Release ONLY_ACTIVE_ARCH=NO ENABLE_TESTABILITY=YES test | xcpretty;
else
Expand Down
10 changes: 2 additions & 8 deletions Sources/MoyaUnbox/Response+Unbox.swift
Original file line number Diff line number Diff line change
Expand Up @@ -53,11 +53,8 @@ public extension Response {
public func map<T: Unboxable>(to type: T.Type, fromKey keyPath: String?) throws -> T {
guard let keyPath = keyPath else { return try map(to: type) }

guard let json = try mapJSON() as? UnboxableDictionary else {
throw MoyaError.jsonMapping(self)
}

do {
let json = try mapJSON() as! UnboxableDictionary
return try unbox(dictionary: json, atKey: keyPath)
} catch {
throw MoyaError.jsonMapping(self)
Expand Down Expand Up @@ -87,11 +84,8 @@ public extension Response {
public func map<T: Unboxable>(to type: [T.Type], fromKey keyPath: String? = nil) throws -> [T] {
guard let keyPath = keyPath else { return try map(to: type) }

guard let jsonArray = try mapJSON() as? UnboxableDictionary else {
throw MoyaError.jsonMapping(self)
}

do {
let jsonArray = try mapJSON() as! UnboxableDictionary
return try unbox(dictionary: jsonArray, atKey: keyPath)
} catch {
throw MoyaError.jsonMapping(self)
Expand Down

0 comments on commit b7350b7

Please sign in to comment.