Skip to content
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

Merged
merged 16 commits into from
Feb 24, 2017
13 changes: 0 additions & 13 deletions .travis.yml

This file was deleted.

39 changes: 28 additions & 11 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -1,25 +1,42 @@
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

task :spm_build do
plain("swift build", "spm_build")
end

task :xcode_build do
xcpretty("xcodebuild -workspace StencilSwiftKit.xcworkspace -scheme Tests build-for-testing", "xcode_build")
end

desc 'Run Xcode Unit Tests'
task :xcode_test => :xcode_build do
xcpretty("xcodebuild -workspace StencilSwiftKit.xcworkspace -scheme Tests test-without-building", "xcode_test")
end

desc 'Run Unit Tests'
task :test => :build_for_testing do
sh "swift test"
xcpretty "xcodebuild -workspace StencilSwiftKit.xcworkspace -scheme Tests test-without-building"
desc 'Run SPM Unit Tests'
task :spm_test => :spm_build do
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tip: you can use take namespaces to group relative tasks together.

A namespace 'spm' do … end and a namespace 'xcodebuild' do … end would be nicer to read, and then you can name your tasks just build and test and refer to them as rake spm:test etc.

plain("swift test", "spm_build")
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
17 changes: 17 additions & 0 deletions circle.yml
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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This needs to be converted to the "download_from_s3" trick

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Jup, added it while you were typing 😆

cache_directories:
- "~/.cocoapods/repos/master"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@djbe Well I think we still need to change that pod setup + cache_directories strategy to use what @dantoml told us about in Slack, to improve that part before consider merging.

Copy link
Member Author

Choose a reason for hiding this comment

The 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