-
Notifications
You must be signed in to change notification settings - Fork 58
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Configure Circle CI #20
Changes from 7 commits
2a9da2d
a42fade
d2f5c1e
f0939f9
4ee70bf
15c5f60
18262e8
703c749
011f3a3
e124d1e
10fa112
68c23f0
1539a66
283e7e3
10d9a3e
97e78a3
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
This file was deleted.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,25 +1,48 @@ | ||
def xcpretty(cmd) | ||
if `which xcpretty` && $?.success? | ||
def xcpretty(cmd, name) | ||
if ENV['CI'] | ||
sh "set -o pipefail && #{cmd} | tee \"#{ENV['CIRCLE_ARTIFACTS']}/#{name}_raw.log\" | xcpretty --color --report junit --output \"#{ENV['CIRCLE_TEST_REPORTS']}/xcode/#{name}.xml\"" | ||
elsif `which xcpretty` && $?.success? | ||
sh "set -o pipefail && #{cmd} | xcpretty -c" | ||
else | ||
sh cmd | ||
end | ||
end | ||
|
||
task :build_for_testing do | ||
sh "swift build" | ||
xcpretty "xcodebuild -workspace StencilSwiftKit.xcworkspace -scheme Tests build-for-testing" | ||
def plain(cmd, name) | ||
if ENV['CI'] | ||
sh "set -o pipefail && #{cmd} | tee \"#{ENV['CIRCLE_ARTIFACTS']}/#{name}_raw.log\"" | ||
else | ||
sh cmd | ||
end | ||
end | ||
|
||
desc 'Run Unit Tests' | ||
task :test => :build_for_testing do | ||
sh "swift test" | ||
xcpretty "xcodebuild -workspace StencilSwiftKit.xcworkspace -scheme Tests test-without-building" | ||
namespace :spm do | ||
desc 'Build using SPM' | ||
task :build do | ||
plain("swift build", "spm_build") | ||
end | ||
|
||
desc 'Run SPM Unit Tests' | ||
task :test => :build do | ||
plain("swift test", "spm_build") | ||
end | ||
end | ||
|
||
namespace :xcode do | ||
desc 'Build using Xcode' | ||
task :build do | ||
xcpretty("xcodebuild -workspace StencilSwiftKit.xcworkspace -scheme Tests build-for-testing", "xcode_build") | ||
end | ||
|
||
desc 'Run Xcode Unit Tests' | ||
task :test => :build do | ||
xcpretty("xcodebuild -workspace StencilSwiftKit.xcworkspace -scheme Tests test-without-building", "xcode_test") | ||
end | ||
end | ||
|
||
desc 'Lint the Pod' | ||
task :lint do | ||
sh "pod lib lint StencilSwiftKit.podspec --quick" | ||
plain("pod lib lint StencilSwiftKit.podspec --quick", "lint") | ||
end | ||
|
||
task :default => :test | ||
task :default => "xcode:test" |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
machine: | ||
xcode: | ||
version: 8.2 | ||
|
||
dependencies: | ||
pre: | ||
- gem install xcpretty --no-rdoc --no-ri --no-document --quiet | ||
- if [[ $CIRCLE_BRANCH == master ]]; then pod setup; fi | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This needs to be converted to the "download_from_s3" trick There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Jup, added it while you were typing 😆 |
||
cache_directories: | ||
- "~/.cocoapods/repos/master" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. That's what I meant with input from @dantoml 😄 |
||
|
||
test: | ||
override: | ||
- rake xcode:test | ||
- rake spm:test | ||
post: | ||
- if [[ $CIRCLE_BRANCH == master ]]; then rake lint; fi |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Shouldn't the
name
param bespm_test
there instead ofspm_build
(especially to avoid the risk of overriding the log output from build)?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I tried using a ruby trick to get the calling method's name, but keep getting
block (2 levels) in <top (required)>
, so gave up on that.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You could do that by capturing the 1st argument passed to the block, which is the rake task object itself, and has a
.name
property: