travis-yaml 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +3 -8
  3. data/Gemfile +3 -6
  4. data/Gemfile.lock +20 -50
  5. data/README.md +97 -2
  6. data/SPEC.md +116 -33
  7. data/lib/travis/yaml.rb +6 -3
  8. data/lib/travis/yaml/matrix.rb +12 -17
  9. data/lib/travis/yaml/nodes.rb +4 -0
  10. data/lib/travis/yaml/nodes/addons.rb +44 -0
  11. data/lib/travis/yaml/nodes/android.rb +7 -0
  12. data/lib/travis/yaml/nodes/cache.rb +5 -3
  13. data/lib/travis/yaml/nodes/deploy_conditions.rb +2 -1
  14. data/lib/travis/yaml/nodes/deploy_entry.rb +46 -0
  15. data/lib/travis/yaml/nodes/dist.rb +6 -0
  16. data/lib/travis/yaml/nodes/env.rb +1 -1
  17. data/lib/travis/yaml/nodes/group.rb +6 -0
  18. data/lib/travis/yaml/nodes/language.rb +3 -2
  19. data/lib/travis/yaml/nodes/language_specific.rb +2 -2
  20. data/lib/travis/yaml/nodes/mapping.rb +39 -10
  21. data/lib/travis/yaml/nodes/node.rb +58 -1
  22. data/lib/travis/yaml/nodes/notifications.rb +10 -6
  23. data/lib/travis/yaml/nodes/open_mapping.rb +1 -1
  24. data/lib/travis/yaml/nodes/os.rb +1 -1
  25. data/lib/travis/yaml/nodes/os_entry.rb +7 -5
  26. data/lib/travis/yaml/nodes/root.rb +28 -4
  27. data/lib/travis/yaml/nodes/scalar.rb +16 -1
  28. data/lib/travis/yaml/nodes/sequence.rb +38 -0
  29. data/lib/travis/yaml/nodes/version.rb +13 -0
  30. data/lib/travis/yaml/nodes/version_list.rb +4 -0
  31. data/lib/travis/yaml/parser/psych.rb +11 -5
  32. data/lib/travis/yaml/secure_string.rb +35 -2
  33. data/lib/travis/yaml/serializer.rb +17 -0
  34. data/lib/travis/yaml/serializer/generic.rb +114 -0
  35. data/lib/travis/yaml/serializer/json.rb +72 -0
  36. data/lib/travis/yaml/serializer/legacy.rb +32 -0
  37. data/lib/travis/yaml/serializer/ruby.rb +13 -0
  38. data/lib/travis/yaml/serializer/yaml.rb +41 -0
  39. data/lib/travis/yaml/version.rb +1 -1
  40. data/play/spec.rb +24 -17
  41. data/spec/matrix_spec.rb +57 -0
  42. data/spec/nodes/addons_spec.rb +63 -0
  43. data/spec/nodes/cache_spec.rb +4 -4
  44. data/spec/nodes/deploy_spec.rb +12 -0
  45. data/spec/nodes/dist_spec.rb +11 -0
  46. data/spec/nodes/env_spec.rb +48 -0
  47. data/spec/nodes/git_spec.rb +1 -1
  48. data/spec/nodes/group_spec.rb +11 -0
  49. data/spec/nodes/node_js_spec.rb +14 -0
  50. data/spec/nodes/notifications_spec.rb +7 -0
  51. data/spec/nodes/os_spec.rb +13 -0
  52. data/spec/nodes/root_spec.rb +36 -0
  53. data/spec/nodes/secure_spec.rb +145 -0
  54. data/spec/parser/psych_spec.rb +6 -0
  55. data/spec/parser/ruby_spec.rb +1 -1
  56. data/spec/serializer/json_spec.rb +30 -0
  57. data/spec/serializer/legacy_spec.rb +47 -0
  58. data/spec/serializer/ruby_spec.rb +21 -0
  59. data/spec/serializer/yaml_spec.rb +47 -0
  60. data/spec/support/coverage.rb +9 -9
  61. data/spec/yaml_spec.rb +23 -0
  62. data/travis-yaml.gemspec +2 -3
  63. metadata +42 -22
  64. data/config.ru +0 -2
  65. data/play/weblint.rb +0 -296
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 752665752154cdb3b8bc22e2dd0cf9eb6c79e36c
4
- data.tar.gz: c7449c2793420fe650091f84eb749e037436c453
3
+ metadata.gz: c1f61d26437ffa23c1db1d0bcbd7b6aa7d241816
4
+ data.tar.gz: 711b3d7a38ef40135868bfeda3de2d480dcf64a4
5
5
  SHA512:
6
- metadata.gz: 751b783a0265500138733893196c3853ec3f8eeee609a921077dad79bd7e8fcbfbef093259657ce9737112f6ea8234f00886663fdc167fe931ac721ca2eb54ef
7
- data.tar.gz: 161583c79e9e1e820e1a9495d10b103d4f2a715a59d6956a4f1d8112fe07cb0baa328a69986d8613cdf716cca405d9c819e885fd69ad0db69bba5daa8539797e
6
+ metadata.gz: b53af5f90a07854c69c251f1959fdb8594cbe906e4b25c873570335d84835be949fb439556056f273aca2e44c167863c9ad1924426c7fa3ddb78f9d98f9d3a18
7
+ data.tar.gz: 20f6bed18ae94a9e70dd8411776e238af0a792a4e538ab3089cc91b31cc80fc04d117e2248bdf4203737b26c3f898a355154036b32f7d00775aa97f3fa3b8d55
@@ -2,13 +2,8 @@ language: ruby
2
2
  rvm:
3
3
  - 1.9.3
4
4
  - 2.0.0
5
+ - 2.1.2
6
+
7
+ sudo: false
5
8
  script: bundle exec rspec
6
9
  bundler_args: "--without play"
7
- deploy:
8
- provider: heroku
9
- api_key:
10
- secure: OrCcUz+MNjlxNkReqCvQZq62Y5mdKxjA+Lwo6VdsuoWHIJ8ShKIZUhoWOE6B0VIYSxSBObkXULitqiuZAvJfHSmS6soowPc79VvVeetMkIxRbHG9v3utg5O5pHqjHeW7pOWwrvTR5sria9YPevFN3+0R/C3xsxnQrc8dw+06jEQ=
11
- app: travis-yaml
12
- on:
13
- repo: travis-ci/travis-yaml
14
- ruby: 2.0.0
data/Gemfile CHANGED
@@ -1,9 +1,6 @@
1
1
  source "https://rubygems.org"
2
2
  gemspec
3
3
 
4
- group :play do
5
- gem 'sinatra'
6
- gem 'sass', '~> 3.1'
7
- gem 'slim', '~> 1.3'
8
- gem 'gh'
9
- end
4
+ group :psych do
5
+ gem 'psych', '~> 2.0', platforms: :ruby_19
6
+ end
@@ -2,72 +2,42 @@ PATH
2
2
  remote: .
3
3
  specs:
4
4
  travis-yaml (0.1.0)
5
- psych (~> 2.0)
6
5
 
7
6
  GEM
8
7
  remote: https://rubygems.org/
9
8
  specs:
10
- addressable (2.3.5)
11
- backports (3.4.0)
12
9
  diff-lcs (1.2.5)
13
- docile (1.1.3)
14
- faraday (0.9.0)
15
- multipart-post (>= 1.2, < 3)
16
- gh (0.13.0)
17
- addressable
18
- backports
19
- faraday (~> 0.8)
20
- multi_json (~> 1.0)
21
- net-http-persistent (>= 2.7)
22
- net-http-pipeline
23
- multi_json (1.8.4)
24
- multipart-post (2.0.0)
25
- net-http-persistent (2.9)
26
- net-http-pipeline (1.0.1)
27
- psych (2.0.4)
28
- rack (1.5.2)
29
- rack-protection (1.5.2)
30
- rack
31
- rake (10.1.1)
32
- rspec (3.0.0.beta2)
33
- rspec-core (= 3.0.0.beta2)
34
- rspec-expectations (= 3.0.0.beta2)
35
- rspec-mocks (= 3.0.0.beta2)
36
- rspec-core (3.0.0.beta2)
37
- rspec-support (= 3.0.0.beta2)
38
- rspec-expectations (3.0.0.beta2)
10
+ docile (1.1.5)
11
+ multi_json (1.10.1)
12
+ psych (2.0.5)
13
+ rake (10.3.2)
14
+ rspec (3.0.0)
15
+ rspec-core (~> 3.0.0)
16
+ rspec-expectations (~> 3.0.0)
17
+ rspec-mocks (~> 3.0.0)
18
+ rspec-core (3.0.3)
19
+ rspec-support (~> 3.0.0)
20
+ rspec-expectations (3.0.3)
39
21
  diff-lcs (>= 1.2.0, < 2.0)
40
- rspec-support (= 3.0.0.beta2)
41
- rspec-mocks (3.0.0.beta2)
42
- rspec-support (= 3.0.0.beta2)
43
- rspec-support (3.0.0.beta2)
44
- safe_yaml (1.0.1)
45
- sass (3.3.3)
46
- simplecov (0.8.2)
22
+ rspec-support (~> 3.0.0)
23
+ rspec-mocks (3.0.3)
24
+ rspec-support (~> 3.0.0)
25
+ rspec-support (3.0.3)
26
+ safe_yaml (1.0.3)
27
+ simplecov (0.9.0)
47
28
  docile (~> 1.1.0)
48
29
  multi_json
49
30
  simplecov-html (~> 0.8.0)
50
31
  simplecov-html (0.8.0)
51
- sinatra (1.4.4)
52
- rack (~> 1.4)
53
- rack-protection (~> 1.4)
54
- tilt (~> 1.3, >= 1.3.4)
55
- slim (1.3.9)
56
- temple (~> 0.6.3)
57
- tilt (~> 1.3, >= 1.3.3)
58
- temple (0.6.7)
59
- tilt (1.4.1)
60
32
 
61
33
  PLATFORMS
34
+ java
62
35
  ruby
63
36
 
64
37
  DEPENDENCIES
65
- gh
38
+ psych (~> 2.0)
66
39
  rake
67
- rspec (~> 3.0.0.beta)
40
+ rspec (~> 3.0)
68
41
  safe_yaml (~> 1.0.1)
69
- sass (~> 3.1)
70
42
  simplecov
71
- sinatra
72
- slim (~> 1.3)
73
43
  travis-yaml!
data/README.md CHANGED
@@ -43,9 +43,104 @@ end
43
43
 
44
44
  ## What is missing?
45
45
 
46
- * Full definition of current .travis.yml format
47
46
  * Serialization
48
47
 
48
+ ## External API
49
+
50
+ ### Loading a config
51
+
52
+ ``` ruby
53
+ config = Travis::Yaml.parse('language: ruby') # parse from a yaml string
54
+ config = Travis::Yaml.parse(language: "ruby") # parse from Ruby object
55
+ ```
56
+
57
+ For Psych/YAML compatibility, `parse` is also aliased to `load`.
58
+
59
+ ### Convenience
60
+
61
+ Nodes generally behave like normal Ruby objects. Mappings accept both symbols and strings as keys. Known fields on mappings are exposed as methods.
62
+
63
+ ``` ruby
64
+ puts config.language
65
+ puts config[:language]
66
+ puts config['language']
67
+ ```
68
+
69
+ ### Warnings and errors
70
+
71
+ * **errors** are actual parse errors, parent elements should discard elements with errors.
72
+ * **warnigns** are general warnings for an element, with the element still being usable. These do not include warnings for child elements (though an error in a child element becomes a warning for its immediate parent).
73
+ * **nested warnings** include warnigns for the whole tree, they also come with key prefix (array of strings) to identify the position the error occured at.
74
+
75
+ ``` ruby
76
+ Travis::Yaml.parse("foo: bar").nested_warnings.each do |key, warning|
77
+ puts "#{key.join('.')}: #{warning}"
78
+ end
79
+
80
+ # will print nested warnings to stderr, will raise on top level error
81
+ Travis::Yaml.parse! "foo: bar"
82
+ ```
83
+
84
+ ### Secure Variables
85
+
86
+ Secure variables are stored as `Travis::Yaml::SecureString` internally. A secure string has at least an `encrypted_string` or a `decrypted_string`, or both.
87
+
88
+ You can use `decrypt`/`encrypt` with a block to generate the missing string:
89
+
90
+ ``` ruby
91
+ secret = Travis::Yaml::SecureString.new("foo")
92
+
93
+ secret.encrypted_string # => "foo"
94
+ secret.decrypted_string # => nil
95
+ secret.encrypted? # => true
96
+ secret.decrypted? # => false
97
+
98
+ secret.decrypt { |string| string.upcase }
99
+
100
+ secret.encrypted_string # => "foo"
101
+ secret.decrypted_string # => "FOO"
102
+ secret.encrypted? # => true
103
+ secret.decrypted? # => true
104
+ ```
105
+
106
+ To avoid having to walk the whole structure manually or hardcoding the values to decrypt, these methods are also exposed on any node:
107
+
108
+ ``` ruby
109
+ config = Travis::Yaml.load 'env: { secure: foo }'
110
+ config.decrypted? # => false
111
+
112
+ config.decrypt { |string| string.upcase }
113
+ config.decrypted? # => true
114
+ config.env.matrix.first.decrypted_string # => "FOO"
115
+ ```
116
+
117
+ This can even be done right with the parse step:
118
+
119
+ ``` ruby
120
+ content = File.read('.travis.yml')
121
+ Travis::Yaml.parse! content do |config|
122
+ config.decrypt { |string| string.upcase }
123
+ end
124
+ ```
125
+
126
+ ### Serializiation
127
+
128
+ A travis-yaml document can be serialized to a few other formats via the `serialize` method:
129
+
130
+ ``` ruby
131
+ pp config.serialize(:ruby)
132
+ puts config.serialize(:json, pretty: true)
133
+ ```
134
+
135
+ Serializer | Descriptions | Options
136
+ -----------|-------------------------------------------------------------------|---------
137
+ `ruby` | Corresponding Ruby objects, secure values will be `SecureString`s | `secure`, `symbol_keys`
138
+ `legacy` | Format compatible with Travis CI's old `fetch_config` service | `secure`, `symbol_keys`
139
+ `json` | Serialize as JSON, parsable via `Travis::Yaml.load` | `secure`, `pretty`
140
+ `yaml` | Serialize as YAML, parsable via `Travis::Yaml.load` | `secure`, `symbol_keys`, `indentation`, `line_width`, `canonical`, `avoid_tags`
141
+
142
+ The `secure` option can be set to `:decrypted` or `:encrypted`, enforcing the decrypted or encrypted form of secure strings to be serialized. In some serializations, this might lead to secure strings being mapped to normal strings if set to `:decrypted`.
143
+
49
144
  ## Defining Structure
50
145
 
51
146
  Good starting points for getting into the code are the [root](lib/travis/yaml/nodes/root.rb) node and the [language](lib/travis/yaml/nodes/language.rb) node.
@@ -78,7 +173,7 @@ module Travis::Yaml::Nodes
78
173
  end
79
174
  ```
80
175
 
81
- Available types are `str`, `binary`, `bool`, `float`, `int`, `time`, `secure` and `null`.
176
+ Available types are `str`, `binary`, `bool`, `float`, `int`, `time`, `regexp`, `secure` and `null`.
82
177
 
83
178
  #### Default Value
84
179
 
data/SPEC.md CHANGED
@@ -4,6 +4,63 @@ Here is a list of all the options understood by travis-yaml.
4
4
  Note that stricitly speaking Travis CI might not have the same understanding of these as travis-yaml has at the moment, since travis-yaml is not yet being used.
5
5
 
6
6
  ### Available Options
7
+ #### `addons`
8
+ **Expected format:** Key value mapping.
9
+
10
+ #### `addons.code_climate`
11
+ **Expected format:** Key value mapping.
12
+
13
+ #### `addons.code_climate.repo_token`
14
+ **Expected format:** String or encrypted string.
15
+
16
+ #### `addons.coverity_scan`
17
+ **Expected format:** Key value mapping.
18
+
19
+ #### `addons.coverity_scan.branch_pattern`
20
+ **Expected format:** String or encrypted string.
21
+
22
+ #### `addons.coverity_scan.build_command`
23
+ **Expected format:** String or encrypted string.
24
+
25
+ #### `addons.coverity_scan.build_command_prepend`
26
+ **Expected format:** String or encrypted string.
27
+
28
+ #### `addons.coverity_scan.build_script_url`
29
+ **Expected format:** String or encrypted string.
30
+
31
+ #### `addons.coverity_scan.notification_email`
32
+ **Expected format:** String or encrypted string.
33
+
34
+ #### `addons.coverity_scan.project`
35
+ **Expected format:** Key value mapping.
36
+
37
+ #### `addons.coverity_scan.project.name`
38
+ **This setting is required!**
39
+
40
+ **Expected format:** String or encrypted string.
41
+
42
+ #### `addons.firefox`
43
+ `firefox` version to use.
44
+
45
+ **Expected format:** String.
46
+
47
+ #### `addons.hosts`
48
+ **Expected format:** List of strings; or a single string.
49
+
50
+ #### `addons.postgresql`
51
+ `postgresql` version to use.
52
+
53
+ **Expected format:** String.
54
+
55
+ #### `addons.sauce_connect`
56
+ **Expected format:** Key value mapping.
57
+
58
+ #### `addons.sauce_connect.access_key`
59
+ **Expected format:** String or encrypted string.
60
+
61
+ #### `addons.sauce_connect.username`
62
+ **Expected format:** String or encrypted string.
63
+
7
64
  #### `after_deploy`
8
65
  Commands that will be run on the VM.
9
66
 
@@ -29,6 +86,21 @@ Commands that will be run on the VM.
29
86
 
30
87
  **Expected format:** List of strings; or a single string.
31
88
 
89
+ #### `android`
90
+ **This setting is only relevant if [`language`](#language) is set to `android`.**
91
+
92
+ **Expected format:** Key value mapping.
93
+
94
+ #### `android.components`
95
+ List of `components` versions to use.
96
+
97
+ **Expected format:** List of strings; or a single string.
98
+
99
+ #### `android.licenses`
100
+ List of `licenses` versions to use.
101
+
102
+ **Expected format:** List of strings; or a single string.
103
+
32
104
  #### `before_deploy`
33
105
  Commands that will be run on the VM.
34
106
 
@@ -45,7 +117,7 @@ Commands that will be run on the VM.
45
117
  **Expected format:** List of strings; or a single string.
46
118
 
47
119
  #### `branches`
48
- **Expected format:** Key value mapping.
120
+ **Expected format:** Key value mapping, or list of strings or regular expressions.
49
121
 
50
122
  #### `branches.except`
51
123
  **Expected format:** List of strings or regular expressions; or a single string or regular expression.
@@ -67,9 +139,17 @@ Commands that will be run on the VM.
67
139
  #### `cache.bundler`
68
140
  **Expected format:** Boolean value.
69
141
 
142
+ #### `cache.cocoapods`
143
+ **Expected format:** Boolean value.
144
+
70
145
  #### `cache.directories`
71
146
  **Expected format:** List of strings; or a single string.
72
147
 
148
+ #### `cache.edge`
149
+ **This setting is experimental and might be removed!**
150
+
151
+ **Expected format:** Boolean value.
152
+
73
153
  #### `compiler`
74
154
  **This setting is only relevant if [`language`](#language) is set to `c` or `cpp`.**
75
155
 
@@ -86,13 +166,16 @@ Value has to be `gcc` (default) or `clang`; or one of the known aliases: `g++` f
86
166
  **Expected format:** String.
87
167
 
88
168
  #### `deploy`
89
- **Expected format:** List of key value mappings; or a single key value mapping.
169
+ **Expected format:** List of key value mappings, or strings; or a single key value mapping, or string.
90
170
 
91
171
  #### `deploy[]`
92
- **Expected format:** Key value mapping.
172
+ **Expected format:** Key value mapping, or string.
93
173
 
94
174
  #### `deploy[].*`
95
- **Expected format:** String.
175
+ **Expected format:** Key value mapping, or string or encrypted string.
176
+
177
+ #### `deploy[].*.*`
178
+ **Expected format:** String or encrypted string.
96
179
 
97
180
  #### `deploy[].edge`
98
181
  **This setting is experimental and might be removed!**
@@ -100,16 +183,16 @@ Value has to be `gcc` (default) or `clang`; or one of the known aliases: `g++` f
100
183
  **Expected format:** Boolean value.
101
184
 
102
185
  #### `deploy[].on`
103
- **Expected format:** Key value mapping.
186
+ **Expected format:** Key value mapping, or list of strings; or a single string.
104
187
 
105
188
  #### `deploy[].on.all_branches`
106
189
  **Expected format:** Boolean value.
107
190
 
108
191
  #### `deploy[].on.branch`
109
- **Expected format:** String.
192
+ **Expected format:** List of strings; or a single string.
110
193
 
111
194
  #### `deploy[].on.condition`
112
- **Expected format:** String.
195
+ **Expected format:** List of strings; or a single string.
113
196
 
114
197
  #### `deploy[].on.jdk`
115
198
  **This setting is only relevant if [`language`](#language) is set to `clojure`, `groovy`, `java`, `ruby` (default), `scala` or `android`.**
@@ -171,7 +254,7 @@ Alias for [`deploy[].on.ruby`](#deployonruby).
171
254
  **Expected format:** String.
172
255
 
173
256
  #### `env`
174
- **Expected format:** Key value mapping.
257
+ **Expected format:** Key value mapping, or list of strings or encrypted strings.
175
258
 
176
259
  #### `env.global`
177
260
  **Expected format:** List of strings or encrypted strings; or a single string or encrypted string.
@@ -234,7 +317,7 @@ List of `jdk` versions to use.
234
317
  #### `language`
235
318
  **This setting is required!**
236
319
 
237
- Value has to be `c`, `cpp`, `clojure`, `erlang`, `go`, `groovy`, `haskell`, `java`, `node_js`, `objective-c`, `ruby` (default), `python`, `perl`, `php`, `scala` or `android`; or one of the known aliases: `jvm` for `java`, `javascript` for `node_js`, `node` for `node_js`, `nodejs` for `node_js`, `golang` for `go`, `objective_c` for `objective-c`, `obj_c` for `objective-c`, `objc` for `objective-c`, `c++` for `cpp`, `node.js` for `node_js` or `obj-c` for `objective-c`. Setting is not case sensitive.
320
+ Value has to be `c`, `cpp`, `clojure`, `erlang`, `go`, `groovy`, `haskell`, `java`, `node_js`, `objective-c`, `ruby` (default), `python`, `perl`, `php`, `scala`, `android` or `generic`; or one of the known aliases: `jvm` for `java`, `javascript` for `node_js`, `node` for `node_js`, `nodejs` for `node_js`, `golang` for `go`, `objective_c` for `objective-c`, `obj_c` for `objective-c`, `objc` for `objective-c`, `c++` for `cpp`, `node.js` for `node_js`, `obj-c` for `objective-c`, `bash` for `generic`, `sh` for `generic` or `shell` for `generic`. Setting is not case sensitive.
238
321
 
239
322
  **Expected format:** String.
240
323
 
@@ -652,10 +735,10 @@ Value has to be `always`, `never` or `change`. Setting is case sensitive.
652
735
  **Expected format:** String.
653
736
 
654
737
  #### `notifications.campfire.rooms`
655
- **Expected format:** List of strings; or a single string.
738
+ **Expected format:** List of strings or encrypted strings; or a single string or encrypted string.
656
739
 
657
740
  #### `notifications.campfire.template`
658
- Strings will be interpolated. Available variables: `%{repository_slug}`, `%{repository_name}`, `%{repository}`, `%{build_number}`, `%{branch}`, `%{commit}`, `%{author}`, `%{message}`, `%{duration}`, `%{compare_url}`, `%{build_url}`.
741
+ Strings will be interpolated. Available variables: `%{repository_slug}`, `%{repository_name}`, `%{repository}`, `%{build_number}`, `%{branch}`, `%{commit}`, `%{author}`, `%{message}`, `%{duration}`, `%{compare_url}`, `%{build_url}`, `%{commit_message}`.
659
742
 
660
743
  **Expected format:** List of strings; or a single string.
661
744
 
@@ -684,31 +767,31 @@ Value has to be `always`, `never` or `change`. Setting is case sensitive.
684
767
  **Expected format:** String.
685
768
 
686
769
  #### `notifications.email.recipients`
687
- **Expected format:** List of strings; or a single string.
770
+ **Expected format:** List of strings or encrypted strings; or a single string or encrypted string.
688
771
 
689
- #### `notifications.flowdoc`
772
+ #### `notifications.flowdock`
690
773
  **Expected format:** Key value mapping, or string, encrypted string, or boolean value.
691
774
 
692
- #### `notifications.flowdoc.api_token`
775
+ #### `notifications.flowdock.api_token`
693
776
  **Expected format:** String or encrypted string.
694
777
 
695
- #### `notifications.flowdoc.disabled`
778
+ #### `notifications.flowdock.disabled`
696
779
  **Expected format:** Boolean value.
697
780
 
698
- #### `notifications.flowdoc.enabled`
781
+ #### `notifications.flowdock.enabled`
699
782
  **Expected format:** Boolean value.
700
783
 
701
- #### `notifications.flowdoc.on_failure`
784
+ #### `notifications.flowdock.on_failure`
702
785
  Value has to be `always`, `never` or `change`. Setting is case sensitive.
703
786
 
704
787
  **Expected format:** String.
705
788
 
706
- #### `notifications.flowdoc.on_start`
789
+ #### `notifications.flowdock.on_start`
707
790
  Value has to be `always`, `never` or `change`. Setting is case sensitive.
708
791
 
709
792
  **Expected format:** String.
710
793
 
711
- #### `notifications.flowdoc.on_success`
794
+ #### `notifications.flowdock.on_success`
712
795
  Value has to be `always`, `never` or `change`. Setting is case sensitive.
713
796
 
714
797
  **Expected format:** String.
@@ -743,10 +826,10 @@ Value has to be `always`, `never` or `change`. Setting is case sensitive.
743
826
  **Expected format:** String.
744
827
 
745
828
  #### `notifications.hipchat.rooms`
746
- **Expected format:** List of strings; or a single string.
829
+ **Expected format:** List of strings or encrypted strings; or a single string or encrypted string.
747
830
 
748
831
  #### `notifications.hipchat.template`
749
- Strings will be interpolated. Available variables: `%{repository_slug}`, `%{repository_name}`, `%{repository}`, `%{build_number}`, `%{branch}`, `%{commit}`, `%{author}`, `%{message}`, `%{duration}`, `%{compare_url}`, `%{build_url}`.
832
+ Strings will be interpolated. Available variables: `%{repository_slug}`, `%{repository_name}`, `%{repository}`, `%{build_number}`, `%{branch}`, `%{commit}`, `%{author}`, `%{message}`, `%{duration}`, `%{compare_url}`, `%{build_url}`, `%{commit_message}`.
750
833
 
751
834
  **Expected format:** List of strings; or a single string.
752
835
 
@@ -757,7 +840,7 @@ Strings will be interpolated. Available variables: `%{repository_slug}`, `%{repo
757
840
  **Expected format:** String or encrypted string.
758
841
 
759
842
  #### `notifications.irc.channels`
760
- **Expected format:** List of strings; or a single string.
843
+ **Expected format:** List of strings or encrypted strings; or a single string or encrypted string.
761
844
 
762
845
  #### `notifications.irc.disabled`
763
846
  **Expected format:** Boolean value.
@@ -793,7 +876,7 @@ Value has to be `always`, `never` or `change`. Setting is case sensitive.
793
876
  **Expected format:** Boolean value.
794
877
 
795
878
  #### `notifications.irc.template`
796
- Strings will be interpolated. Available variables: `%{repository_slug}`, `%{repository_name}`, `%{repository}`, `%{build_number}`, `%{branch}`, `%{commit}`, `%{author}`, `%{message}`, `%{duration}`, `%{compare_url}`, `%{build_url}`.
879
+ Strings will be interpolated. Available variables: `%{repository_slug}`, `%{repository_name}`, `%{repository}`, `%{build_number}`, `%{branch}`, `%{commit}`, `%{author}`, `%{message}`, `%{duration}`, `%{compare_url}`, `%{build_url}`, `%{commit_message}`.
797
880
 
798
881
  **Expected format:** List of strings; or a single string.
799
882
 
@@ -825,10 +908,10 @@ Value has to be `always`, `never` or `change`. Setting is case sensitive.
825
908
  **Expected format:** String.
826
909
 
827
910
  #### `notifications.slack.rooms`
828
- **Expected format:** List of strings; or a single string.
911
+ **Expected format:** List of strings or encrypted strings; or a single string or encrypted string.
829
912
 
830
913
  #### `notifications.slack.template`
831
- Strings will be interpolated. Available variables: `%{repository_slug}`, `%{repository_name}`, `%{repository}`, `%{build_number}`, `%{branch}`, `%{commit}`, `%{author}`, `%{message}`, `%{duration}`, `%{compare_url}`, `%{build_url}`.
914
+ Strings will be interpolated. Available variables: `%{repository_slug}`, `%{repository_name}`, `%{repository}`, `%{build_number}`, `%{branch}`, `%{commit}`, `%{author}`, `%{message}`, `%{duration}`, `%{compare_url}`, `%{build_url}`, `%{commit_message}`.
832
915
 
833
916
  **Expected format:** List of strings; or a single string.
834
917
 
@@ -857,10 +940,10 @@ Value has to be `always`, `never` or `change`. Setting is case sensitive.
857
940
  **Expected format:** String.
858
941
 
859
942
  #### `notifications.sqwiggle.rooms`
860
- **Expected format:** List of strings; or a single string.
943
+ **Expected format:** List of strings or encrypted strings; or a single string or encrypted string.
861
944
 
862
945
  #### `notifications.sqwiggle.template`
863
- Strings will be interpolated. Available variables: `%{repository_slug}`, `%{repository_name}`, `%{repository}`, `%{build_number}`, `%{branch}`, `%{commit}`, `%{author}`, `%{message}`, `%{duration}`, `%{compare_url}`, `%{build_url}`.
946
+ Strings will be interpolated. Available variables: `%{repository_slug}`, `%{repository_name}`, `%{repository}`, `%{build_number}`, `%{branch}`, `%{commit}`, `%{author}`, `%{message}`, `%{duration}`, `%{compare_url}`, `%{build_url}`, `%{commit_message}`.
864
947
 
865
948
  **Expected format:** List of strings; or a single string.
866
949
 
@@ -892,7 +975,7 @@ Value has to be `always`, `never` or `change`. Setting is case sensitive.
892
975
  **Expected format:** String.
893
976
 
894
977
  #### `notifications.webhooks.urls`
895
- **Expected format:** List of strings; or a single string.
978
+ **Expected format:** List of strings or encrypted strings; or a single string or encrypted string.
896
979
 
897
980
  #### `npm_args`
898
981
  **This setting is only relevant if [`language`](#language) is set to `node_js`.**
@@ -938,6 +1021,11 @@ List of `php` versions to use.
938
1021
 
939
1022
  **Expected format:** List of strings; or a single string.
940
1023
 
1024
+ #### `podfile`
1025
+ `podfile` version to use.
1026
+
1027
+ **Expected format:** String.
1028
+
941
1029
  #### `python`
942
1030
  **This setting is only relevant if [`language`](#language) is set to `python`.**
943
1031
 
@@ -960,11 +1048,6 @@ Commands that will be run on the VM.
960
1048
 
961
1049
  **Expected format:** List of strings; or a single string.
962
1050
 
963
- #### `sdk_components`
964
- **This setting is only relevant if [`language`](#language) is set to `android`.**
965
-
966
- **Expected format:** List of strings; or a single string.
967
-
968
1051
  #### `services`
969
1052
  List of `services` versions to use.
970
1053