travis-yaml 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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