Skip to content

Commit

Permalink
Test chef-client in zero mode using Travis
Browse files Browse the repository at this point in the history
  • Loading branch information
rjaros87 committed Jul 1, 2016
1 parent 03394fd commit 1848d5e
Show file tree
Hide file tree
Showing 8 changed files with 108 additions and 15 deletions.
28 changes: 22 additions & 6 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,25 @@
os:
- linux
- osx
language: ruby
sudo: false
rvm:
- 2.1
- 2
- 2.2.2
env:
- BERKSHELF_PATH=/tmp/
before_install:
- gem install bundler
bundler_args: --without integration
cache: bundler
- git clone https://github.com/sstephenson/bats.git
- sudo ./bats/install.sh /usr/local
- curl -L https://www.chef.io/chef/install.sh | sudo bash
- gem install bundler
install:
- bundle install --without integration
- bundle exec berks vendor /tmp/cookbooks
- cp tests/support/dummy-validation.pem /tmp/validation.pem
- cp tests/support/client.rb /tmp/client.rb
- cp tests/support/dna.json /tmp/dna.json
script:
- rvm reset # To use the embedded ruby in chef-client
- sudo chef-client -z -c /tmp/client.rb -j /tmp/dna.json # Run chef in zero mode
- '[ -f ~/.bash_profile ] && source ~/.bash_profile || source ~/.profile && source /etc/profile' # Apply new env vars
- rvm use ruby-2.2.2 # To use the rvm ruby and custom gems
- bundle exec rake # Test all
2 changes: 1 addition & 1 deletion Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ gem 'chefspec', '~> 4.7'
gem 'foodcritic', '>= 5.0.0'
gem 'chef', '~> 12.11'
gem 'rubocop'
gem 'berkshelf', '~> 4.3'

group :integration do
gem 'berkshelf', '~> 4.3'
gem 'test-kitchen', '~> 1.10'
gem 'kitchen-vagrant', '~> 0.20.0'
end
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@ The **default** recipe of this Chef cookbook will:

* Download and install/upgrade Android SDK (not ADT)
* Update SDK dependencies to install *some* Android platforms (`--filter` list can be customized in cookbook attributes)
* Define a default `ANDROID_HOME` environment variable (via `/etc/profile.d/...` mechanism)
* Add `ANDROID_HOME/tools` and `ANDROID_HOME/platform-tools` to default `PATH` environment variable (via `/etc/profile.d/...` mechanism)
* Define a default `ANDROID_HOME` environment variable
* Add `ANDROID_HOME/tools` and `ANDROID_HOME/platform-tools` to default `PATH` environment variable

Requirements
------------

* Depends on **opscode/ark** and **opscode/java** cookbooks
* This cookbook currently supports Ubuntu 12.04+ and CentOS 6.6+, but more Linux distributions are welcome (depending on community interests)
* Depends on **ark**, **java**, **homebrew**, **chef-sugar** and **bash** cookbooks
* This cookbook currently supports Ubuntu 12.04+ and CentOS 6.6+, Mac OS X

Attributes
----------
Expand All @@ -24,7 +24,7 @@ TODO (work in progress)
Installation and Usage
----------------------

This cookbook is released at http://community.opscode.com/cookbooks/android-sdk and its original git repository is https://github.com/gildegoma/chef-android-sdk.
This cookbook is released at https://supermarket.chef.io/cookbooks/android-sdk and its original git repository is https://github.com/gildegoma/chef-android-sdk.

* Find your favourite way ([Berkhelf](http://berkshelf.com/), [Librarian-Chef](https://github.com/applicationsonline/librarian#readme), knife-github-cookbooks, Git submodule, Opscode community API or even tarball download) to install this cookbook (and its dependency).
* Include the `android-sdk::default` recipe to your run list or inside your cookbook.
Expand All @@ -35,15 +35,15 @@ Quality Assurance

### Continous Integration

This Cookbook is being _tasted_ by Travis CI: [![Build Status](https://secure.travis-ci.org/gildegoma/chef-android-sdk.png?branch=master)](https://travis-ci.org/gildegoma/chef-android-sdk)
This Cookbook is being _tested_ by Travis CI: [![Build Status](https://secure.travis-ci.org/gildegoma/chef-android-sdk.png?branch=master)](https://travis-ci.org/gildegoma/chef-android-sdk)

Automated validations are following:
* Static Analysis of Ruby code with [tailor](https://github.com/turboladen/tailor#readme) lint tool
* Static Analysis of Chef Cookbooks with [foodcritic](http://acrmp.github.com/foodcritic/) lint tool
* `knife cookbook test` in a very basic sandbox
* _PENDING:_ Expectations described with RSpec examples with [ChefSpec](https://github.com/acrmp/chefspec)
* _PENDING:_ [ServerSpec](http://serverspec.org/) integration testing
* _PENDING:_ Run true chef (matrix) on travis VM!
* Run true chef (matrix) on travis VM with Bats test

### Development and Testing

Expand Down
13 changes: 12 additions & 1 deletion Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ require 'rubocop/rake_task'
require 'rspec/core/rake_task'

# TODO: add chefspec
task default: [:tailor, :rubocop, :foodcritic, :knife]
task default: [:bats, :tailor, :rubocop, :foodcritic, :knife]

desc 'Lint Ruby code'
task :tailor do
Expand Down Expand Up @@ -76,6 +76,13 @@ task :prepare_sandbox do
end
end

desc 'Check node using bats test'
task :bats do
Dir.chdir(bats_test_path) do
sh 'bats --tap default.bats'
end
end

begin
require 'kitchen/rake_tasks'
Kitchen::RakeTasks.new
Expand Down Expand Up @@ -104,3 +111,7 @@ end
def knife_rb
File.join(sandbox_root, 'knife.rb')
end

def bats_test_path
File.join(File.dirname(__FILE__), %w(tests integration default bats))
end
9 changes: 9 additions & 0 deletions tests/integration/default/bats/default.bats
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/usr/bin/env bats

@test "Check that the android is available" {
command -v android
}

@test "Check that the adb is available" {
command -v adb
}
10 changes: 10 additions & 0 deletions tests/support/client.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
node_name 'ci-travis'
cookbook_path ['/tmp/cookbooks']
data_bag_path '/tmp/data_bags'
environment_path '/tmp/environments'
node_path '/tmp/nodes'
role_path '/tmp/roles'
client_path '/tmp/clients'
validation_key '/tmp/validation.pem'
client_key '/tmp/client.pem'
chef_server_url 'http://127.0.0.1:8889'
20 changes: 20 additions & 0 deletions tests/support/dna.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"android-sdk": {
"owner": "travis",
"version": "24.4.1",
"checksum": {
"linux": "e16917ad685c1563ccbc5dd782930ee1a700a1b6a6fd3e44b83ac694650435e9",
"mac_os_x": "ce1638cb48526a0e55857fc46b57eda4349e6512006244ad13dd6c1361c74104"
},
"components": [
"platform-tools",
"build-tools-24",
"android-24",
"extra-android-support",
"extra-google-google_play_services",
"extra-google-m2repository",
"extra-android-m2repository"
]
},
"run_list":["recipe[android-sdk::default]"]
}
27 changes: 27 additions & 0 deletions tests/support/dummy-validation.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA0sOY9tHvVtLZ6xmVmH8d8LrRrNcWOXbrvvCrai+T3GtRvRSL
hksLrpOpD0L9EHM6NdThNF/eGA9Oq+UKAe6yXR0hwsKuxKXqQ8SEmlhZZ9GiuggD
B/zYD3ItB6SGpdkRe7kQqTChQyrIXqbRkJqxoTXLyeJDF0sCyTdp3L8IZCUWodM8
oV9TlQBJHYtG1gLUwIi8kcMVEoCn2Q8ltCj0/ftnwhTtwO52RkWA0uYOLGVayHsL
SCFfx+ACWPU/oWCwW5/KBqb3veTv0aEg/nh0QsFzRLoTx6SRFI5dT2Nf8iiJe4WC
UG8WKEB2G8QPnxsxfOPYDBdTJ4CXEi2e+z41VQIDAQABAoIBAALhqbW2KQ+G0nPk
ZacwFbi01SkHx8YBWjfCEpXhEKRy0ytCnKW5YO+CFU2gHNWcva7+uhV9OgwaKXkw
KHLeUJH1VADVqI4Htqw2g5mYm6BPvWnNsjzpuAp+BR+VoEGkNhj67r9hatMAQr0I
itTvSH5rvd2EumYXIHKfz1K1SegUk1u1EL1RcMzRmZe4gDb6eNBs9Sg4im4ybTG6
pPIytA8vBQVWhjuAR2Tm+wZHiy0Az6Vu7c2mS07FSX6FO4E8SxWf8idaK9ijMGSq
FvIS04mrY6XCPUPUC4qm1qNnhDPpOr7CpI2OO98SqGanStS5NFlSFXeXPpM280/u
fZUA0AECgYEA+x7QUnffDrt7LK2cX6wbvn4mRnFxet7bJjrfWIHf+Rm0URikaNma
h0/wNKpKBwIH+eHK/LslgzcplrqPytGGHLOG97Gyo5tGAzyLHUWBmsNkRksY2sPL
uHq6pYWJNkqhnWGnIbmqCr0EWih82x/y4qxbJYpYqXMrit0wVf7yAgkCgYEA1twI
gFaXqesetTPoEHSQSgC8S4D5/NkdriUXCYb06REcvo9IpFMuiOkVUYNN5d3MDNTP
IdBicfmvfNELvBtXDomEUD8ls1UuoTIXRNGZ0VsZXu7OErXCK0JKNNyqRmOwcvYL
JRqLfnlei5Ndo1lu286yL74c5rdTLs/nI2p4e+0CgYB079ZmcLeILrmfBoFI8+Y/
gJLmPrFvXBOE6+lRV7kqUFPtZ6I3yQzyccETZTDvrnx0WjaiFavUPH27WMjY01S2
TMtO0Iq1MPsbSrglO1as8MvjB9ldFcvp7gy4Q0Sv6XT0yqJ/S+vo8Df0m+H4UBpU
f5o6EwBSd/UQxwtZIE0lsQKBgQCswfjX8Eg8KL/lJNpIOOE3j4XXE9ptksmJl2sB
jxDnQYoiMqVO808saHVquC/vTrpd6tKtNpehWwjeTFuqITWLi8jmmQ+gNTKsC9Gn
1Pxf2Gb67PqnEpwQGln+TRtgQ5HBrdHiQIi+5am+gnw89pDrjjO5rZwhanAo6KPJ
1zcPNQKBgQDxFu8v4frDmRNCVaZS4f1B6wTrcMrnibIDlnzrK9GG6Hz1U7dDv8s8
Nf4UmeMzDXjlPWZVOvS5+9HKJPdPj7/onv8B2m18+lcgTTDJBkza7R1mjL1Cje/Z
KcVGsryKN6cjE7yCDasnA7R2rVBV/7NWeJV77bmzT5O//rW4yIfUIg==
-----END RSA PRIVATE KEY-----

0 comments on commit 1848d5e

Please sign in to comment.