kameleon-builder 2.10.10 → 2.10.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.bumpversion.cfg +1 -1
- data/CHANGES +248 -243
- data/lib/kameleon/cli.rb +18 -19
- data/lib/kameleon/engine.rb +106 -74
- data/lib/kameleon/recipe.rb +19 -0
- data/lib/kameleon/step.rb +4 -2
- data/lib/kameleon/version.rb +1 -1
- data/tests/recipes/test_recipe_checkpoints.yaml +2 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 36e3991d3bbfbe79544b066ad82c004d593c495846ae1007ef480380f8ca2515
|
4
|
+
data.tar.gz: d7b05320be1cad37d6ef1a2bcc5a4b0b9f24e8312e3e8583d68d9030a229ceb8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c4044be6f6dfe98512b5cbf291caff91383938d71d8575165b87c08e96954b428f60030a37635ce1ccb4bc3d60642cd20403bde1a441be166c647751719ccd5
|
7
|
+
data.tar.gz: 64aaa77fa583af640ea93f4979bfac6a96a6d48f641207560f3457b18dab4404e980048e0bebaefa901fe7cf1aa66fd5f0a2941e245e05b476da3b88e44bd775
|
data/.bumpversion.cfg
CHANGED
data/CHANGES
CHANGED
@@ -1,10 +1,22 @@
|
|
1
1
|
Kameleon CHANGELOG
|
2
2
|
==================
|
3
3
|
|
4
|
+
Version 2.10.11
|
5
|
+
---------------
|
6
|
+
|
7
|
+
Released on October 10th 2023
|
8
|
+
|
9
|
+
- Rework the checkpointing code.
|
10
|
+
- Make build --from-checkpoint not activate the checkpointing without the --enable-checkpointing option.
|
11
|
+
- Add the -F alias for the build --from-checkpoint option and allow passing the microstrep slug instead of it's id.
|
12
|
+
- Add the build --begin-checkpoint (or -B) and --end-checkpoint (or -E) options that allows giving the window of steps to checkpoint.
|
13
|
+
- Remove the dryrun command and add the --dryrun (or -d) switch to the build action.
|
14
|
+
- Make build --dryrun --list-checkpoints (or -d -l) to show possible checkpoints for the recipe.
|
15
|
+
|
4
16
|
Version 2.10.10
|
5
|
-
|
17
|
+
---------------
|
6
18
|
|
7
|
-
Released on June
|
19
|
+
Released on June 13th 2023
|
8
20
|
|
9
21
|
- Set kameleon build --microstep-checkpoint option to "all" by default.
|
10
22
|
- Rework the kameleon checkpoint documentation and more.
|
@@ -24,7 +36,7 @@ Released on April 27th 2023
|
|
24
36
|
- Add the --microstep-checkpoint option to enable creating checkpoint on all microsteps.
|
25
37
|
- Add timing info for microsteps and microstep checkpoints in verbose mode.
|
26
38
|
- Minor fixes.
|
27
|
-
- Enable using a python venv for bumpversion (.gitignore, .envrc)
|
39
|
+
- Enable using a python venv for bumpversion (.gitignore, .envrc).
|
28
40
|
|
29
41
|
Version 2.10.8
|
30
42
|
--------------
|
@@ -32,29 +44,30 @@ Version 2.10.8
|
|
32
44
|
Released on October 21st 2022
|
33
45
|
|
34
46
|
- Fix a fatal error with the pipe command: make sure the destination context is started.
|
35
|
-
- Avoid git warning when running kameleon repo update: use git pull --ff-only
|
47
|
+
- Avoid git warning when running kameleon repo update: use git pull --ff-only.
|
36
48
|
|
37
49
|
Version 2.10.7
|
38
50
|
--------------
|
39
51
|
|
40
52
|
Released on December 02nd 2021
|
41
53
|
|
42
|
-
- Add support for the .filter file to filter recipes/template lists
|
54
|
+
- Add support for the .filter file to filter recipes/template lists.
|
43
55
|
|
44
56
|
Version 2.10.6
|
45
57
|
--------------
|
46
58
|
|
47
59
|
Released on November 24th 2021
|
48
60
|
|
49
|
-
- Add the option filter for the template and recipe listings
|
50
|
-
- Preserve permission of files when importing template
|
61
|
+
- Add the option filter for the template and recipe listings.
|
62
|
+
- Preserve permission of files when importing template.
|
51
63
|
|
52
64
|
Version 2.10.5
|
53
65
|
--------------
|
54
66
|
|
55
67
|
Released on July 29th 2021
|
56
68
|
|
57
|
-
- Remove polipo from the software dependencies as it is not maintained anymore.
|
69
|
+
- Remove polipo from the software dependencies as it is not maintained anymore.
|
70
|
+
This breaks the caching feature.
|
58
71
|
- Some changes to allow a debian packaging.
|
59
72
|
- Update authors.
|
60
73
|
- Change the version information file and update scripts accordingly.
|
@@ -64,55 +77,55 @@ Version 2.10.4
|
|
64
77
|
|
65
78
|
Released on May 11th 2020
|
66
79
|
|
67
|
-
- Fix support for extend ERB
|
68
|
-
- Add the `kameleon template erb` command
|
69
|
-
- Fix bash completion
|
70
|
-
- Cosmetic code fixes
|
80
|
+
- Fix support for extend ERB.
|
81
|
+
- Add the `kameleon template erb` command.
|
82
|
+
- Fix bash completion.
|
83
|
+
- Cosmetic code fixes.
|
71
84
|
|
72
85
|
Version 2.10.3
|
73
86
|
--------------
|
74
87
|
|
75
88
|
Released on April 10th 2020
|
76
89
|
|
77
|
-
- Rework kameleon template list: add color add progress bar
|
78
|
-
- Make bash completion understand the subcommands
|
79
|
-
- Fix the command help ->
|
80
|
-
- Add support for custom extend erb templates
|
90
|
+
- Rework kameleon template list: add color add progress bar.
|
91
|
+
- Make bash completion understand the subcommands.
|
92
|
+
- Fix the command help -> `kameleon <command> -h`.
|
93
|
+
- Add support for custom extend erb templates.
|
81
94
|
|
82
95
|
Version 2.10.2
|
83
96
|
--------------
|
84
97
|
|
85
98
|
Released on April 09th 2020
|
86
99
|
|
87
|
-
- Fix cli help for the repository and template sub-commands
|
88
|
-
- Add the git remote url and branch to kameleon repo list
|
89
|
-
- Add the 'kameleon repository remove' command
|
100
|
+
- Fix cli help for the repository and template sub-commands.
|
101
|
+
- Add the git remote url and branch to kameleon repo list.
|
102
|
+
- Add the 'kameleon repository remove' command.
|
90
103
|
|
91
104
|
Version 2.10.1
|
92
105
|
-------------
|
93
106
|
|
94
107
|
Released on March 21th 2020
|
95
108
|
|
96
|
-
- Fix regression in 2.10.0 with the build directory creation
|
109
|
+
- Fix regression in 2.10.0 with the build directory creation.
|
97
110
|
|
98
111
|
Version 2.10.0
|
99
112
|
-------------
|
100
113
|
|
101
114
|
Released on March 21th 2020
|
102
115
|
|
103
|
-
- Rework usage (cosmetic fixes)
|
104
|
-
- Drop the `kameleon template repository` action (same as `kameleon repository`)
|
105
|
-
- Make `kameleon dag` and `kameleon dryrun` standalone actions instead of `kameleon info` options
|
106
|
-
- Add the `kamelon dag --recipes-only
|
107
|
-
- Make `kameleon dag` show distincly the extended recipe among the ancestors
|
108
|
-
- Add the `kameleon export` action
|
116
|
+
- Rework usage (cosmetic fixes).
|
117
|
+
- Drop the `kameleon template repository` action (same as `kameleon repository`).
|
118
|
+
- Make `kameleon dag` and `kameleon dryrun` standalone actions instead of `kameleon info` options.
|
119
|
+
- Add the `kamelon dag --recipes-only`.
|
120
|
+
- Make `kameleon dag` show distincly the extended recipe among the ancestors.
|
121
|
+
- Add the `kameleon export` action.
|
109
122
|
|
110
123
|
Version 2.9.4
|
111
124
|
-------------
|
112
125
|
|
113
126
|
Released on December 12th 2018
|
114
127
|
|
115
|
-
- Minor fixes
|
128
|
+
- Minor fixes.
|
116
129
|
- NB: the 2.9.3 version was lost in space...
|
117
130
|
|
118
131
|
|
@@ -121,8 +134,8 @@ Version 2.9.2
|
|
121
134
|
|
122
135
|
Released on February 21st 2018
|
123
136
|
|
124
|
-
- Enforce the number of sub commands for the rescue and test commands
|
125
|
-
- Support nested aliases
|
137
|
+
- Enforce the number of sub commands for the rescue and test commands.
|
138
|
+
- Support nested aliases.
|
126
139
|
|
127
140
|
Version 2.9.1
|
128
141
|
-------------
|
@@ -136,58 +149,58 @@ Version 2.9.0
|
|
136
149
|
|
137
150
|
Released on June 29th 2017
|
138
151
|
|
139
|
-
- Bump to a new minor version due to the addition of the test and group commands
|
140
|
-
- Refresh documentation
|
152
|
+
- Bump to a new minor version due to the addition of the test and group commands.
|
153
|
+
- Refresh documentation.
|
141
154
|
|
142
155
|
Version 2.8.4
|
143
156
|
-------------
|
144
157
|
|
145
|
-
- Fix the build usage message
|
146
|
-
- Fix the cache compression options: allow no compression
|
147
|
-
- Add the test and group commands for microsteps
|
158
|
+
- Fix the build usage message.
|
159
|
+
- Fix the cache compression options: allow no compression.
|
160
|
+
- Add the test and group commands for microsteps.
|
148
161
|
|
149
162
|
Version 2.8.3
|
150
163
|
-------------
|
151
164
|
|
152
|
-
- Patch the doc and the default new recipe template
|
165
|
+
- Patch the doc and the default new recipe template.
|
153
166
|
|
154
167
|
Version 2.8.2
|
155
168
|
-------------
|
156
169
|
|
157
170
|
Released on September 06th 2016
|
158
171
|
|
159
|
-
- Make kameleon new and template import works
|
172
|
+
- Make kameleon new and template import works.
|
160
173
|
|
161
174
|
Version 2.8.1
|
162
175
|
-------------
|
163
176
|
|
164
|
-
- Manage problem with gem update
|
177
|
+
- Manage problem with gem update.
|
165
178
|
|
166
179
|
Version 2.8.0
|
167
180
|
-------------
|
168
181
|
|
169
182
|
Released on September 05th 2016
|
170
183
|
|
171
|
-
- Add the possibility to overload extend with backend
|
184
|
+
- Add the possibility to overload extend with backend.
|
172
185
|
|
173
186
|
Version 2.7.8
|
174
187
|
-------------
|
175
188
|
|
176
|
-
- Fix info data resolution (fix #78)
|
189
|
+
- Fix info data resolution (fix #78).
|
177
190
|
|
178
191
|
Version 2.7.7
|
179
192
|
-------------
|
180
193
|
|
181
194
|
Released on September 01st 2016
|
182
195
|
|
183
|
-
- Add some warning to avoid global CLI option misuse
|
196
|
+
- Add some warning to avoid global CLI option misuse.
|
184
197
|
|
185
198
|
Version 2.7.6
|
186
199
|
-------------
|
187
200
|
|
188
201
|
Released on August 31st 2016
|
189
202
|
|
190
|
-
- Fix step variable resolution for composed variable (#79), and containing
|
203
|
+
- Fix step variable resolution for composed variable (#79), and containing.
|
191
204
|
uuid (#90).
|
192
205
|
|
193
206
|
Version 2.7.5
|
@@ -195,63 +208,63 @@ Version 2.7.5
|
|
195
208
|
|
196
209
|
Released on August 31st 2016
|
197
210
|
|
198
|
-
- Fix last problem with Kameleon_data_dir (again)
|
211
|
+
- Fix last problem with Kameleon_data_dir (again).
|
199
212
|
|
200
213
|
Version 2.7.4
|
201
214
|
-------------
|
202
215
|
|
203
216
|
Released on August 29th 2016
|
204
217
|
|
205
|
-
- Fix Kameleon_data_dir is not rendering correctly with {} (#85)
|
218
|
+
- Fix Kameleon_data_dir is not rendering correctly with {} (#85).
|
206
219
|
|
207
220
|
Version 2.7.3
|
208
221
|
-------------
|
209
222
|
|
210
223
|
Released on June 20th 2016
|
211
224
|
|
212
|
-
- The info command can now handle multiple recipes
|
213
|
-
- Colorized the output of the info command
|
214
|
-
- Added the dryrun option to the info command
|
215
|
-
- Added the dag option to the info command: draw a GraphViz dag for recipes
|
225
|
+
- The info command can now handle multiple recipes.
|
226
|
+
- Colorized the output of the info command.
|
227
|
+
- Added the dryrun option to the info command.
|
228
|
+
- Added the dag option to the info command: draw a GraphViz dag for recipes.
|
216
229
|
|
217
230
|
Version 2.7.2
|
218
231
|
-------------
|
219
232
|
|
220
233
|
Released on February 17th 2016
|
221
234
|
|
222
|
-
- Added ``interactive_cmd`` option to set a more apropriate interactive shell command
|
223
|
-
- Removed bash errexit flag to force bash to trap interruption
|
235
|
+
- Added ``interactive_cmd`` option to set a more apropriate interactive shell command.
|
236
|
+
- Removed bash errexit flag to force bash to trap interruption.
|
224
237
|
|
225
238
|
Version 2.7.1
|
226
239
|
-------------
|
227
240
|
|
228
|
-
- Non-strictly template variable resolution (Fixed #67)
|
241
|
+
- Non-strictly template variable resolution (Fixed #67).
|
229
242
|
|
230
243
|
Version 2.7.0
|
231
244
|
-------------
|
232
245
|
|
233
246
|
Released on December 09th 2015
|
234
247
|
|
235
|
-
- Fixed variables overload when using inheritance
|
236
|
-
- Added support for including global options from a separate file (#57)
|
237
|
-
- Allowed kameleon to fail silently if some error occured during include
|
238
|
-
- Marked all bash variables for export
|
239
|
-
- Sorted variables in ``kameleon info`` dump
|
240
|
-
- Removed duplicate error messages
|
241
|
-
- Shutdown polipo cleanly (#54)
|
242
|
-
- Added offline mode to prevent Polipo from contacting remote servers
|
243
|
-
- Fixed polipo default options to avoid "206 partial responses" (#54)
|
244
|
-
- Made only one checkpoint per macrostep to improve performance
|
245
|
-
- Made polipo log file unique for each user to avoid "Permission denied" error
|
246
|
-
- Added new keyword in ZSH completion
|
248
|
+
- Fixed variables overload when using inheritance.
|
249
|
+
- Added support for including global options from a separate file (#57).
|
250
|
+
- Allowed kameleon to fail silently if some error occured during include.
|
251
|
+
- Marked all bash variables for export.
|
252
|
+
- Sorted variables in ``kameleon info`` dump.
|
253
|
+
- Removed duplicate error messages.
|
254
|
+
- Shutdown polipo cleanly (#54).
|
255
|
+
- Added offline mode to prevent Polipo from contacting remote servers.
|
256
|
+
- Fixed polipo default options to avoid "206 partial responses" (#54).
|
257
|
+
- Made only one checkpoint per macrostep to improve performance.
|
258
|
+
- Made polipo log file unique for each user to avoid "Permission denied" error.
|
259
|
+
- Added new keyword in ZSH completion.
|
247
260
|
|
248
261
|
Version 2.6.7
|
249
262
|
-------------
|
250
263
|
|
251
|
-
Released on October
|
264
|
+
Released on October 1st 2015
|
252
265
|
|
253
|
-
- Decreased polipo exit timeout (120 to 5s)
|
254
|
-
- Passed only recipe files (not directories) to the cache to fixed persistant cache crash
|
266
|
+
- Decreased polipo exit timeout (120 to 5s).
|
267
|
+
- Passed only recipe files (not directories) to the cache to fixed persistant cache crash.
|
255
268
|
|
256
269
|
|
257
270
|
Version 2.6.6
|
@@ -259,40 +272,40 @@ Version 2.6.6
|
|
259
272
|
|
260
273
|
Released on September 14th 2015
|
261
274
|
|
262
|
-
- set default ``cache_archive_compression`` to gzip
|
275
|
+
- set default ``cache_archive_compression`` to gzip.
|
263
276
|
|
264
277
|
Version 2.6.5
|
265
278
|
-------------
|
266
279
|
|
267
280
|
Released on September 14th 2015
|
268
281
|
|
269
|
-
- Fixed the proxy-cache to allow big files
|
270
|
-
- Added ``--proxy`` and ``--proxy-credentials`` options to set a global proxy for kameleon
|
271
|
-
- Added ``proxy_local``, ``proxy_out`` and ``proxy_in`` kameleon recipe variables to get proxy address from recipe
|
272
|
-
- Enabled ERB templating in the user environement files
|
273
|
-
- Renamed ``--proxy-path`` option to ``--polipo-path
|
282
|
+
- Fixed the proxy-cache to allow big files.
|
283
|
+
- Added ``--proxy`` and ``--proxy-credentials`` options to set a global proxy for kameleon.
|
284
|
+
- Added ``proxy_local``, ``proxy_out`` and ``proxy_in`` kameleon recipe variables to get proxy address from recipe.
|
285
|
+
- Enabled ERB templating in the user environement files.
|
286
|
+
- Renamed ``--proxy-path`` option to ``--polipo-path``.
|
274
287
|
|
275
288
|
Version 2.6.4
|
276
289
|
-------------
|
277
290
|
|
278
|
-
Released on September
|
291
|
+
Released on September 7th 2015
|
279
292
|
|
280
|
-
- Fixed kameleon data variables resolution
|
293
|
+
- Fixed kameleon data variables resolution.
|
281
294
|
|
282
295
|
Version 2.6.3
|
283
296
|
-------------
|
284
297
|
|
285
298
|
Released on August 25th 2015
|
286
299
|
|
287
|
-
- Don't fail now if a context was closed
|
300
|
+
- Don't fail now if a context was closed.
|
288
301
|
|
289
302
|
Version 2.6.2
|
290
303
|
-------------
|
291
304
|
|
292
305
|
Released on August 25th 2015
|
293
306
|
|
294
|
-
- Added ``cache_archive_compression`` option to choose compression tool
|
295
|
-
- Tried using curl before wget
|
307
|
+
- Added ``cache_archive_compression`` option to choose compression tool.
|
308
|
+
- Tried using curl before wget.
|
296
309
|
|
297
310
|
|
298
311
|
Version 2.6.1
|
@@ -300,69 +313,65 @@ Version 2.6.1
|
|
300
313
|
|
301
314
|
Released on August 12th 2015
|
302
315
|
|
303
|
-
- Cli global parameters overwrite all recipe key:value parameters
|
316
|
+
- Cli global parameters overwrite all recipe key:value parameters.
|
304
317
|
|
305
318
|
Version 2.6.0
|
306
319
|
-------------
|
307
320
|
|
308
321
|
Released on May 13th 2015
|
309
322
|
|
310
|
-
- Added --list-checkpoints to ``kameleon build`` command
|
311
|
-
- Removed ``kameleon checkpoints`` and ``kameleon clean`` commands
|
312
|
-
- Displayed error information in normal and verbose mode
|
313
|
-
- Fixed ruby 1.8.7 compatibility
|
314
|
-
- Added Zsh completion (See completion)
|
323
|
+
- Added --list-checkpoints to ``kameleon build`` command.
|
324
|
+
- Removed ``kameleon checkpoints`` and ``kameleon clean`` commands.
|
325
|
+
- Displayed error information in normal and verbose mode.
|
326
|
+
- Fixed ruby 1.8.7 compatibility.
|
327
|
+
- Added Zsh completion (See completion).
|
315
328
|
|
316
329
|
Version 2.5.0
|
317
330
|
-------------
|
318
331
|
|
319
332
|
Released on Jan 27th 2015
|
320
333
|
|
321
|
-
- Allowed user to get custom shell environement by adding shell script
|
322
|
-
- Added option ``--verbose`` to allow user debugging
|
323
|
-
- Added option ``--from-cache`` to the ``kameleon info`` subcommand
|
324
|
-
- Enabled bash xtrace in verbose mode
|
325
|
-
- Checked appropriate proxy cache server start
|
326
|
-
- Fixed recipe path in proxy cache metadata
|
327
|
-
- Forced proxy cache to use IPv4
|
328
|
-
- Improved UI with more color and less output messages
|
329
|
-
|
334
|
+
- Allowed user to get custom shell environement by adding shell script.
|
335
|
+
- Added option ``--verbose`` to allow user debugging.
|
336
|
+
- Added option ``--from-cache`` to the ``kameleon info`` subcommand.
|
337
|
+
- Enabled bash xtrace in verbose mode.
|
338
|
+
- Checked appropriate proxy cache server start.
|
339
|
+
- Fixed recipe path in proxy cache metadata.
|
340
|
+
- Forced proxy cache to use IPv4.
|
341
|
+
- Improved UI with more color and less output messages.
|
330
342
|
|
331
343
|
Version 2.4.0
|
332
344
|
-------------
|
333
345
|
|
334
346
|
Released on Dec 23rd 2014
|
335
347
|
|
336
|
-
- Supported recipe attached data
|
337
|
-
- Introduced a new shell command execution mechanism, to prevent kameleon from waiting forever if the command act weird (Fixed #39)
|
338
|
-
- Improved the customization of steps with inheritance
|
339
|
-
- Allowed to set global variables from cli during build using ``--global key:value
|
340
|
-
- Moved repository command to the upper level (``kameleon repository``)
|
341
|
-
|
348
|
+
- Supported recipe attached data.
|
349
|
+
- Introduced a new shell command execution mechanism, to prevent kameleon from waiting forever if the command act weird (Fixed #39).
|
350
|
+
- Improved the customization of steps with inheritance.
|
351
|
+
- Allowed to set global variables from cli during build using ``--global key:value ..``.
|
352
|
+
- Moved repository command to the upper level (``kameleon repository``).
|
342
353
|
|
343
354
|
Version 2.3.5
|
344
355
|
-------------
|
345
356
|
|
346
357
|
Released on Dec 2nd 2014
|
347
358
|
|
348
|
-
- Fixed kameleon 2.3.4 regressions about ``kameleon build
|
349
|
-
|
359
|
+
- Fixed kameleon 2.3.4 regressions about ``kameleon build``.
|
350
360
|
|
351
361
|
Version 2.3.4
|
352
362
|
-------------
|
353
363
|
|
354
364
|
Released on Nov 26th 2014
|
355
365
|
|
356
|
-
- Fixed kameleon 2.3.3 regressions about the template import
|
357
|
-
|
366
|
+
- Fixed kameleon 2.3.3 regressions about the template import.
|
358
367
|
|
359
368
|
Version 2.3.3
|
360
369
|
-------------
|
361
370
|
|
362
371
|
Released on Nov 26th 2014
|
363
372
|
|
364
|
-
- Minor improvements
|
365
|
-
- Fixed issue with listing the templates avaiable in a repository
|
373
|
+
- Minor improvements.
|
374
|
+
- Fixed issue with listing the templates avaiable in a repository.
|
366
375
|
|
367
376
|
Version 2.3.2
|
368
377
|
-------------
|
@@ -384,119 +393,115 @@ Version 2.3.0
|
|
384
393
|
|
385
394
|
Released on Oct 16th 2014
|
386
395
|
|
387
|
-
- Handled Ctrl-C to make a breakpoint instead of quitting. (Fixed #29)
|
388
|
-
- Stored kameleon user configuration file in ``~/.kameleon.d/config`` (Fixed #24)
|
389
|
-
- Fixed ``kameleon new`` to take an absolute or relative path and place the recipe in a subdir (Fixed #22)
|
390
|
-
- Moved builtin recipes to an external repository: See [http://kameleon.imag.fr/repository.html](Docs) (Fixed #24)
|
391
|
-
- Renamed ``--cache`` option to ``--enable-cache
|
392
|
-
- Renamed ``--checkpoint`` option to ``--enable-checkpoint
|
393
|
-
- Removed ``kameleon import`` command
|
394
|
-
- Removed ``kameleon templates`` command
|
395
|
-
- Added ``kameleon info`` to display detailed information about a recipe
|
396
|
-
- Added ``kameleon list`` to list all defined recipes in the current directory
|
397
|
-
- Added ``kameleon template info`` to display detailed information about a template
|
398
|
-
- Added ``kameleon template import`` to import a template
|
399
|
-
- Added ``kameleon template list`` to list all available templates
|
400
|
-
- Added ``kameleon template repository`` to manage external git recipes repositories
|
401
|
-
|
396
|
+
- Handled Ctrl-C to make a breakpoint instead of quitting. (Fixed #29).
|
397
|
+
- Stored kameleon user configuration file in ``~/.kameleon.d/config`` (Fixed #24).
|
398
|
+
- Fixed ``kameleon new`` to take an absolute or relative path and place the recipe in a subdir (Fixed #22).
|
399
|
+
- Moved builtin recipes to an external repository: See [http://kameleon.imag.fr/repository.html](Docs) (Fixed #24).
|
400
|
+
- Renamed ``--cache`` option to ``--enable-cache``.
|
401
|
+
- Renamed ``--checkpoint`` option to ``--enable-checkpoint``.
|
402
|
+
- Removed ``kameleon import`` command.
|
403
|
+
- Removed ``kameleon templates`` command.
|
404
|
+
- Added ``kameleon info`` to display detailed information about a recipe.
|
405
|
+
- Added ``kameleon list`` to list all defined recipes in the current directory.
|
406
|
+
- Added ``kameleon template info`` to display detailed information about a template.
|
407
|
+
- Added ``kameleon template import`` to import a template.
|
408
|
+
- Added ``kameleon template list`` to list all available templates.
|
409
|
+
- Added ``kameleon template repository`` to manage external git recipes repositories.
|
402
410
|
|
403
411
|
Version 2.2.5
|
404
412
|
-------------
|
405
413
|
|
406
414
|
Released on Sep 19th 2014
|
407
415
|
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
416
|
+
- [template] Customized vm memory size before vagrant export.
|
417
|
+
- [template] Configured virtualbox to use ``82540EM`` driver for ethX interfaces.
|
418
|
+
- [template][debian] installed man-db and net-tools with debootstrap.
|
419
|
+
- [template][centos] Removed traces of mac address from network configuration.
|
420
|
+
- [template][centos] installed man package.
|
421
|
+
- [template][centos] Set OS type to ``Redhat_64`` in virtualbox.
|
422
|
+
- [template][debian] Added security and backports repository.
|
423
|
+
- [template][debian] Added debian security and backports repositories.
|
424
|
+
- [template][debian] Removed ntp from all debian recipes.
|
425
|
+
- [template][centos] Added ``single-request-reopen`` option to network config (centos).
|
426
|
+
- [template][centos] Fixed corrupted rpm database.
|
421
427
|
|
422
428
|
Version 2.2.4
|
423
429
|
-------------
|
424
430
|
|
425
431
|
Released on Sep 2nd 2014
|
426
432
|
|
427
|
-
- [template] Added the ``-cpu host`` option to qemu to improve performances
|
428
|
-
- [template] Made centos image as close as possible as default Centos installation
|
429
|
-
- [template] Configured SELinux for Fedora and Centos
|
430
|
-
- [template] Fixed Grid'5000 export step
|
431
|
-
- [template] Extended vagrant recipes from virtualbox recipes
|
432
|
-
- [core] Adding the step elapsed time to the Kamelon output
|
433
|
-
- [proxy cache] Restructured persistent cache and improved caching of pipes
|
434
|
-
- [proxy cache] Added ``ProxyAdrres`` paramter to polipo to take into account all the host network interfaces
|
433
|
+
- [template] Added the ``-cpu host`` option to qemu to improve performances.
|
434
|
+
- [template] Made centos image as close as possible as default Centos installation.
|
435
|
+
- [template] Configured SELinux for Fedora and Centos.
|
436
|
+
- [template] Fixed Grid'5000 export step.
|
437
|
+
- [template] Extended vagrant recipes from virtualbox recipes.
|
438
|
+
- [core] Adding the step elapsed time to the Kamelon output.
|
439
|
+
- [proxy cache] Restructured persistent cache and improved caching of pipes.
|
440
|
+
- [proxy cache] Added ``ProxyAdrres`` paramter to polipo to take into account all the host network interfaces.
|
435
441
|
|
436
442
|
Version 2.2.3
|
437
443
|
-------------
|
438
444
|
Released on Aug 19th 2014
|
439
445
|
|
440
|
-
- [template] The extlinux MBR path has changed because jessie is not frozen (Fix #17)
|
446
|
+
- [template] The extlinux MBR path has changed because jessie is not frozen (Fix #17).
|
441
447
|
|
442
448
|
Version 2.2.2
|
443
449
|
-------------
|
444
450
|
|
445
451
|
Released on July 23rd 2014
|
446
452
|
|
447
|
-
- [core] Added ``-h`` CLI option to print help
|
448
|
-
- [core] Added ``--templates-path`` CLI option to set different templates directory
|
449
|
-
- [core] Fixed regression about recipe ancestors loading
|
453
|
+
- [core] Added ``-h`` CLI option to print help.
|
454
|
+
- [core] Added ``--templates-path`` CLI option to set different templates directory.
|
455
|
+
- [core] Fixed regression about recipe ancestors loading.
|
450
456
|
|
451
457
|
Version 2.2.1
|
452
458
|
-------------
|
453
459
|
|
454
460
|
Released on July 22nd 2014
|
455
461
|
|
456
|
-
- [core] Switch to default yaml parser (psych) and removed syck from dependencies
|
457
|
-
- [core] Loaded a recipe with all ancestors
|
462
|
+
- [core] Switch to default yaml parser (psych) and removed syck from dependencies.
|
463
|
+
- [core] Loaded a recipe with all ancestors.
|
458
464
|
|
459
465
|
Version 2.2.0
|
460
466
|
-------------
|
461
467
|
|
462
468
|
Released on July 20th 2014
|
463
469
|
|
464
|
-
- [proxy cache] Added ``proxy_cache`` recipe option to context_in/out to enable
|
465
|
-
|
466
|
-
- [proxy cache]
|
467
|
-
- [proxy cache]
|
468
|
-
- [
|
469
|
-
- [proxy_cache]
|
470
|
-
- [
|
471
|
-
- [package] Removed
|
472
|
-
- [
|
473
|
-
- [core]
|
474
|
-
- [core] Added
|
475
|
-
- [core]
|
476
|
-
- [core]
|
477
|
-
- [core]
|
478
|
-
- [
|
479
|
-
- [template]
|
480
|
-
- [template]
|
481
|
-
- [template]
|
482
|
-
- [template]
|
483
|
-
- [template]
|
484
|
-
- [template]
|
485
|
-
- [template]
|
486
|
-
- [template]
|
487
|
-
- [template]
|
488
|
-
- [template]
|
489
|
-
- [template]
|
490
|
-
- [template]
|
491
|
-
- [template]
|
492
|
-
- [template]
|
493
|
-
- [template]
|
494
|
-
- [template]
|
495
|
-
- [template]
|
496
|
-
- [template]
|
497
|
-
- [template]
|
498
|
-
- [template]
|
499
|
-
- [template] Removed fedora-rawhide templates
|
470
|
+
- [proxy cache] Added ``proxy_cache`` recipe option to context_in/out to enable persistant cache for every context.
|
471
|
+
- [proxy cache] Added ``--cache-path`` CLI option to set different cache directory.
|
472
|
+
- [proxy cache] Shared cache directory between recipes by default.
|
473
|
+
- [proxy cache] No more internal cache for debootstrap.
|
474
|
+
- [proxy_cache] Polipo does not use default config file anymore.
|
475
|
+
- [proxy_cache] Recipe is now stored in cache at the end.
|
476
|
+
- [package] Removed diffy from dependencies.
|
477
|
+
- [package] Removed log4r-color from dependencies.
|
478
|
+
- [core] Rewrote checkpoint mechanism. (allow to run multiple commands).
|
479
|
+
- [core] Added ``--script`` CLI option to enable non-interactive mode.
|
480
|
+
- [core] Added ``reload_context`` command that reloads the context from the recipe.
|
481
|
+
- [core] From now on, Kameleon tries to clean all contexts without blocking the shell.
|
482
|
+
- [core] Improved cleaning contexts upon interruption.
|
483
|
+
- [core] If microstep is marked as ``redo`` or ``skip`` (on checkpoint), the ID will be independent from other steps.
|
484
|
+
- [template] Grouped templates by virtualization tools.
|
485
|
+
- [template] Removed extlinux timeout for debian.
|
486
|
+
- [template] Configured apt to install recommended packages by default.
|
487
|
+
- [template] Added architecture type in templates description.
|
488
|
+
- [template] Forced killing qemu with sigterm signal.
|
489
|
+
- [template] Removed ssh ControlPath option.
|
490
|
+
- [template] Used parted tool in script mode.
|
491
|
+
- [template] Added a timeout during startup and shutdown VMs.
|
492
|
+
- [template] Restored eth0 as default interface in Fedora (net.ifnames=0 biosdevname=0).
|
493
|
+
- [template] Ensured that the checkpoint was disabled at the beginning of the recipe.
|
494
|
+
- [template] Make sure that qemu is stopped at the end.
|
495
|
+
- [template] Replaced netcat by socat.
|
496
|
+
- [template] Removed duplicated ubuntu repository (restricted).
|
497
|
+
- [template] Used a debian-jessie iso to bootstrap the out_context with a minimal linux system.
|
498
|
+
- [template] Hide default kameleon state files.
|
499
|
+
- [template] Enabled debug mode with ``KAMELEON_DEBUG=1`` environment variable.
|
500
|
+
- [template] Added ``download_file`` alias that uses curl/wget or python to download files.
|
501
|
+
- [template] Enabled kvm only if available.
|
502
|
+
- [template] Do not run qemu with nohup (Use ``-daemonize`` instead).
|
503
|
+
- [template] Improved context_out/in log readability.
|
504
|
+
- [template] Removed fedora-rawhide templates.
|
500
505
|
- [template] Added new templates:
|
501
506
|
|
502
507
|
- qemu/archlinux-desktop-i686
|
@@ -531,37 +536,37 @@ Version 2.1.3
|
|
531
536
|
|
532
537
|
Released on June 16th 2014
|
533
538
|
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
539
|
+
- [core] Loading dependent gems based on the users ruby version.
|
540
|
+
- [core] Getting back compatibility with ruby 1.8.7.
|
541
|
+
- [core] Don't fail if context is not ready.
|
542
|
+
- [core] Minor bug fixes.
|
543
|
+
- [template] Set a small timeout with netcat.
|
544
|
+
- [template] Added new debian 7 appliance with kameleon.
|
540
545
|
|
541
546
|
Version 2.1.0
|
542
547
|
-------------
|
543
548
|
|
544
549
|
Released on June 12th 2014
|
545
550
|
|
546
|
-
- [core] Fixed psych yaml parsing (#1)
|
547
|
-
- [core] Changed option ``--no-no-color`` to ``--color
|
548
|
-
- [core] Saved the contexts state files in their WORKDIR (#3)
|
549
|
-
- [core] Set context in/out/local cmd to /bin/bash by default (#5)
|
550
|
-
- [core] Made global section non mandatory
|
551
|
-
- [core] Made writing embedded step in recipe possible (#12)
|
552
|
-
- [core] Improved the readability of logs and the progress bar
|
553
|
-
- [core] Moved aliases and checkpoints folders to steps
|
554
|
-
- [core] Removed the ``recipes`` folder and the ``workspace`` (#2)
|
555
|
-
- [core] Make a safe copy with ``kameleon new`` command
|
556
|
-
- [core] Added a simple extend recipe feature (#11)
|
557
|
-
- [core] Introduced the keyword "@base" in the extended recipes (#11)
|
558
|
-
- [core] Don't log identifier of microstep during build process
|
559
|
-
- [core] Added ``kameleon import`` command (#11)
|
560
|
-
- [core] Added ``--clean`` option to ``kameleon build`` command
|
561
|
-
- [core] Added the lazy context initialization (#10)
|
562
|
-
- [core] Set the variable ``KAMELEON_WORKDIR`` for all contexts
|
563
|
-
- [core] Used ``KAMELEON_WORKDIR`` when working with PIPE
|
564
|
-
- [core] Added persistent cache feature to Kameleon, So far it is caching just packages comming from the network using Polipo
|
551
|
+
- [core] Fixed psych yaml parsing (#1).
|
552
|
+
- [core] Changed option ``--no-no-color`` to ``--color``.
|
553
|
+
- [core] Saved the contexts state files in their WORKDIR (#3).
|
554
|
+
- [core] Set context in/out/local cmd to /bin/bash by default (#5).
|
555
|
+
- [core] Made global section non mandatory.
|
556
|
+
- [core] Made writing embedded step in recipe possible (#12).
|
557
|
+
- [core] Improved the readability of logs and the progress bar.
|
558
|
+
- [core] Moved aliases and checkpoints folders to steps.
|
559
|
+
- [core] Removed the ``recipes`` folder and the ``workspace`` (#2).
|
560
|
+
- [core] Make a safe copy with ``kameleon new`` command.
|
561
|
+
- [core] Added a simple extend recipe feature (#11).
|
562
|
+
- [core] Introduced the keyword "@base" in the extended recipes (#11).
|
563
|
+
- [core] Don't log identifier of microstep during build process.
|
564
|
+
- [core] Added ``kameleon import`` command (#11).
|
565
|
+
- [core] Added ``--clean`` option to ``kameleon build`` command.
|
566
|
+
- [core] Added the lazy context initialization (#10).
|
567
|
+
- [core] Set the variable ``KAMELEON_WORKDIR`` for all contexts.
|
568
|
+
- [core] Used ``KAMELEON_WORKDIR`` when working with PIPE.
|
569
|
+
- [core] Added persistent cache feature to Kameleon, So far it is caching just packages comming from the network using Polipo.
|
565
570
|
- [template] Added new templates:
|
566
571
|
|
567
572
|
- archlinux
|
@@ -578,42 +583,42 @@ Released on June 12th 2014
|
|
578
583
|
- ubuntu-14.04
|
579
584
|
- ubuntu-14.04-desktop
|
580
585
|
- vagrant-debian7
|
581
|
-
- [template] Installed the extlinux bootloader depending on distributions
|
582
|
-
- [template] New way to bootstrap fedora using Liveos image
|
583
|
-
- [template] Installed linux kernel and extlinux bootloader from bootstrap section
|
584
|
-
- [template] Used parted instead of sfdisk
|
585
|
-
- [template] Added save_as_qed step
|
586
|
-
- [template] Removed insecure ssh key before any export
|
587
|
-
- [template] Added shell auto-completion for bash, zsh and fish shell
|
588
|
-
- [template] Default user group is sudo
|
589
|
-
- [template] Added a new qemu/kvm template with full-snapshot support
|
590
|
-
- [template] Ability to add user in multiple groups (with usermod -G)
|
591
|
-
- [template] Improved I/O performance with qemu/kvm
|
592
|
-
- [template] Removed force-unsafe-io for dpkg to avoid corrupted filesystem
|
593
|
-
- [template] Used qemu by default instead of chroot
|
594
|
-
- [template] Added option to disable debootstrap cache
|
595
|
-
- [template] Refactor qcow2 backing file checkpoints
|
596
|
-
- [template] Make QEMU checkpoint more robust and avoid disk corruption
|
597
|
-
- [template] Major revision of steps to make it easier to use in different templates
|
598
|
-
- [template] Rename steps for more semantic consistency
|
599
|
-
- [template] Making the 'save_appliance' step not dependent on the state of the machine
|
600
|
-
- [template] Enabled cache for arch_bootstrap
|
601
|
-
- [template] Added openssh in arch-bootstrap and enabled sshd.service/dhcp.service
|
602
|
-
- [template] Added user 'nobody' to allow sshd to run in the archlinux virtual machine
|
603
|
-
- [template] Enabled checkpoints (backing-file) only in the "setup" stage
|
604
|
-
- [template] Fixed .ssh and authorized_keys permissions
|
605
|
-
- [template] Avoid crash of in_context when we send a shutdown command to the virtual machine
|
606
|
-
- [template] Exclude special files with rsync (proc/dev...) when copying rootfs to the disk
|
607
|
-
- [template] Force stop qemu if still running
|
608
|
-
- [template] Make debian-chroot depreciated
|
609
|
-
- [template] Refactor archlinux template to use it with qemu/kvm
|
610
|
-
- [template] Improved the LiveOS fedora bootstrap step to get the system running with qemu/kvm
|
611
|
-
- [template] Refactor fedora20/debian8 templates to use them with qemu/kvm
|
612
|
-
- [template] Set timezone to UTC by default
|
613
|
-
- [template] Used ProxyCommand to improve the debian7-g5k recipe
|
614
|
-
- [aliases] Updated write_file and append_file aliases to support double quotes
|
615
|
-
- [aliases] Defined new aliases for unmounting devices
|
616
|
-
- [docs] More documentation
|
586
|
+
- [template] Installed the extlinux bootloader depending on distributions.
|
587
|
+
- [template] New way to bootstrap fedora using Liveos image.
|
588
|
+
- [template] Installed linux kernel and extlinux bootloader from bootstrap section.
|
589
|
+
- [template] Used parted instead of sfdisk.
|
590
|
+
- [template] Added save_as_qed step.
|
591
|
+
- [template] Removed insecure ssh key before any export.
|
592
|
+
- [template] Added shell auto-completion for bash, zsh and fish shell.
|
593
|
+
- [template] Default user group is sudo.
|
594
|
+
- [template] Added a new qemu/kvm template with full-snapshot support.
|
595
|
+
- [template] Ability to add user in multiple groups (with usermod -G).
|
596
|
+
- [template] Improved I/O performance with qemu/kvm.
|
597
|
+
- [template] Removed force-unsafe-io for dpkg to avoid corrupted filesystem.
|
598
|
+
- [template] Used qemu by default instead of chroot.
|
599
|
+
- [template] Added option to disable debootstrap cache.
|
600
|
+
- [template] Refactor qcow2 backing file checkpoints.
|
601
|
+
- [template] Make QEMU checkpoint more robust and avoid disk corruption.
|
602
|
+
- [template] Major revision of steps to make it easier to use in different templates.
|
603
|
+
- [template] Rename steps for more semantic consistency.
|
604
|
+
- [template] Making the 'save_appliance' step not dependent on the state of the machine.
|
605
|
+
- [template] Enabled cache for arch_bootstrap.
|
606
|
+
- [template] Added openssh in arch-bootstrap and enabled sshd.service/dhcp.service.
|
607
|
+
- [template] Added user 'nobody' to allow sshd to run in the archlinux virtual machine.
|
608
|
+
- [template] Enabled checkpoints (backing-file) only in the "setup" stage.
|
609
|
+
- [template] Fixed .ssh and authorized_keys permissions.
|
610
|
+
- [template] Avoid crash of in_context when we send a shutdown command to the virtual machine.
|
611
|
+
- [template] Exclude special files with rsync (proc/dev...) when copying rootfs to the disk.
|
612
|
+
- [template] Force stop qemu if still running.
|
613
|
+
- [template] Make debian-chroot depreciated.
|
614
|
+
- [template] Refactor archlinux template to use it with qemu/kvm.
|
615
|
+
- [template] Improved the LiveOS fedora bootstrap step to get the system running with qemu/kvm.
|
616
|
+
- [template] Refactor fedora20/debian8 templates to use them with qemu/kvm.
|
617
|
+
- [template] Set timezone to UTC by default.
|
618
|
+
- [template] Used ProxyCommand to improve the debian7-g5k recipe.
|
619
|
+
- [aliases] Updated write_file and append_file aliases to support double quotes.
|
620
|
+
- [aliases] Defined new aliases for unmounting devices.
|
621
|
+
- [docs] More documentation.
|
617
622
|
|
618
623
|
|
619
624
|
Version 2.0.0
|
@@ -621,5 +626,5 @@ Version 2.0.0
|
|
621
626
|
|
622
627
|
Released on February 17th 2014
|
623
628
|
|
624
|
-
Initial public release of kameleon 2
|
629
|
+
- Initial public release of kameleon 2.
|
625
630
|
|
data/lib/kameleon/cli.rb
CHANGED
@@ -319,21 +319,6 @@ module Kameleon
|
|
319
319
|
Kameleon.ui.info("Generated GraphViz #{format} file: #{options[:file]}")
|
320
320
|
end
|
321
321
|
|
322
|
-
desc "dryrun <RECIPE_PATH>", "Show the steps the build would process"
|
323
|
-
method_option :global, :type => :hash,
|
324
|
-
:default => {}, :aliases => "-g",
|
325
|
-
:desc => "Set custom global variables"
|
326
|
-
method_option :relative, :type => :boolean,
|
327
|
-
:default => false,
|
328
|
-
:desc => "Make pathnames relative to the current working directory"
|
329
|
-
def dryrun(*recipe_paths)
|
330
|
-
raise ArgumentError if recipe_paths.empty?
|
331
|
-
recipe_paths.each do |path|
|
332
|
-
recipe = Kameleon::Recipe.new(path)
|
333
|
-
Kameleon::Engine.new(recipe, options.dup.merge({no_create_build_dir: true}).freeze).dryrun
|
334
|
-
end
|
335
|
-
end
|
336
|
-
|
337
322
|
desc "export <RECIPE_PATH> <EXPORT_PATH>", "Export the given recipe with its steps and data to a given directory"
|
338
323
|
method_option :global, :type => :hash,
|
339
324
|
:default => {}, :aliases => "-g",
|
@@ -384,9 +369,21 @@ module Kameleon
|
|
384
369
|
method_option :clean, :type => :boolean,
|
385
370
|
:default => false,
|
386
371
|
:desc => "Run the command `kameleon clean` first"
|
387
|
-
method_option :
|
372
|
+
method_option :dryrun, :type => :boolean, :aliases => "-d",
|
373
|
+
:default => false,
|
374
|
+
:desc => "Dry run, only show what would run"
|
375
|
+
method_option :relative, :type => :boolean,
|
376
|
+
:default => false,
|
377
|
+
:desc => "Make dryrun show pathnames relative to the current working directory"
|
378
|
+
method_option :from_checkpoint, :type => :string, :aliases => "-F",
|
379
|
+
:default => nil,
|
380
|
+
:desc => "Restart the build from a specific checkpointed step, instead of the latest one"
|
381
|
+
method_option :begin_checkpoint, :type => :string, :aliases => "-B",
|
382
|
+
:default => nil,
|
383
|
+
:desc => "Only create checkpoints after the given step"
|
384
|
+
method_option :end_checkpoint, :type => :string, :aliases => "-E",
|
388
385
|
:default => nil,
|
389
|
-
:desc => "
|
386
|
+
:desc => "Do not create checkpoints after the given step"
|
390
387
|
method_option :enable_checkpointing, :type => :boolean, :aliases => "-c",
|
391
388
|
:default => false,
|
392
389
|
:desc => "Enable creating and using checkpoints"
|
@@ -396,7 +393,7 @@ module Kameleon
|
|
396
393
|
:desc => "Create checkpoint of the first microstep only, or all"
|
397
394
|
method_option :list_checkpoints, :type => :boolean, :aliases => "-l",
|
398
395
|
:default => false,
|
399
|
-
:desc => "List
|
396
|
+
:desc => "List availables checkpoints"
|
400
397
|
method_option :enable_cache, :type => :boolean, :aliases => "-C",
|
401
398
|
:default => false,
|
402
399
|
:desc => "Generate a persistent cache for the appliance"
|
@@ -436,7 +433,9 @@ module Kameleon
|
|
436
433
|
end
|
437
434
|
raise BuildError, "A recipe file or a persistent cache archive " \
|
438
435
|
"is required to run this command." if recipe_path.nil?
|
439
|
-
if options[:
|
436
|
+
if options[:dryrun]
|
437
|
+
Kameleon::Engine.new(Kameleon::Recipe.new(recipe_path), options.dup.merge({no_create_build_dir: true}).freeze).dryrun
|
438
|
+
elsif options[:clean]
|
440
439
|
opts = Hash.new.merge options
|
441
440
|
opts[:lazyload] = false
|
442
441
|
opts[:fail_silently] = true
|
data/lib/kameleon/engine.rb
CHANGED
@@ -28,8 +28,6 @@ module Kameleon
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
@checkpointing = @options[:enable_checkpointing]
|
31
|
-
@checkpointing = true unless @options[:from_checkpoint].nil?
|
32
|
-
@microstep_checkpoint = @options[:microstep_checkpoints]
|
33
31
|
# Check if the recipe have checkpoint entry
|
34
32
|
if @checkpointing && @recipe.checkpoint.nil?
|
35
33
|
fail BuildError, "Checkpoint is unavailable for this recipe"
|
@@ -165,22 +163,18 @@ module Kameleon
|
|
165
163
|
end
|
166
164
|
end
|
167
165
|
|
168
|
-
def list_all_checkpoints
|
169
|
-
list = ""
|
170
|
-
@recipe.checkpoint["list"].each do |cmd|
|
171
|
-
safe_exec_cmd(cmd, :stdout => list)
|
172
|
-
end
|
173
|
-
return list.split(/\r?\n/)
|
174
|
-
end
|
175
|
-
|
176
166
|
def list_checkpoints
|
177
167
|
if @list_checkpoints.nil?
|
178
|
-
checkpoints
|
179
|
-
|
168
|
+
# get existing checkpoints on the system
|
169
|
+
existing_checkpoint_str = ""
|
170
|
+
@recipe.checkpoint["list"].each do |cmd|
|
171
|
+
safe_exec_cmd(cmd, :stdout => existing_checkpoint_str)
|
172
|
+
end
|
173
|
+
existing_checkpoint_ids = existing_checkpoint_str.split(/\r?\n/)
|
180
174
|
# get sorted checkpoints by microsteps order
|
181
175
|
@list_checkpoints = []
|
182
|
-
|
183
|
-
@list_checkpoints.push(
|
176
|
+
@recipe.all_checkpoints.each do |checkpoint|
|
177
|
+
@list_checkpoints.push(checkpoint) if existing_checkpoint_ids.include?(checkpoint["id"])
|
184
178
|
end
|
185
179
|
end
|
186
180
|
return @list_checkpoints
|
@@ -207,10 +201,10 @@ module Kameleon
|
|
207
201
|
Kameleon.ui.info("#{step_prefix}#{ microstep.slug }")
|
208
202
|
if @checkpointing
|
209
203
|
if microstep.on_checkpoint == "skip"
|
210
|
-
Kameleon.ui.msg("-->
|
204
|
+
Kameleon.ui.msg("--> Skip microstep as requested when checkpointing is activated")
|
211
205
|
next
|
212
206
|
end
|
213
|
-
if microstep.
|
207
|
+
if microstep.has_checkpoint_ahead and microstep.on_checkpoint != "redo"
|
214
208
|
Kameleon.ui.msg("--> Checkpoint ahead, do nothing")
|
215
209
|
else
|
216
210
|
begin
|
@@ -223,26 +217,41 @@ module Kameleon
|
|
223
217
|
breakpoint(nil)
|
224
218
|
end
|
225
219
|
if checkpoint_enabled?
|
226
|
-
if (@
|
227
|
-
Kameleon.ui.msg("--> Do not create a checkpoint for this microstep: macrostep
|
220
|
+
if (@options[:microstep_checkpoints].downcase == "first" and checkpointed)
|
221
|
+
Kameleon.ui.msg("--> Do not create a checkpoint for this microstep: macrostep already checkpointed once")
|
228
222
|
elsif microstep.on_checkpoint == "redo"
|
229
|
-
Kameleon.ui.msg("--> Do not create a checkpoint for this microstep:
|
223
|
+
Kameleon.ui.msg("--> Do not create a checkpoint for this microstep: always redo microstep")
|
230
224
|
elsif microstep.on_checkpoint == "disabled"
|
231
|
-
Kameleon.ui.msg("--> Do not create a checkpoint for this microstep:
|
225
|
+
Kameleon.ui.msg("--> Do not create a checkpoint for this microstep: disabled in the microstep definition")
|
226
|
+
elsif not microstep.in_checkpoint_window
|
227
|
+
if @end_checkpoint.nil?
|
228
|
+
unless @begin_checkpoint.nil?
|
229
|
+
msg = "only after step '#{@begin_checkpoint['step']}'"
|
230
|
+
end
|
231
|
+
else
|
232
|
+
if @begin_checkpoint.nil?
|
233
|
+
msg = "not after step '#{@end_checkpoint['step']}'"
|
234
|
+
else
|
235
|
+
msg = "only between steps '#{@begin_checkpoint['step']}' and '#{@end_checkpoint['step']}'"
|
236
|
+
end
|
237
|
+
end
|
238
|
+
Kameleon.ui.msg("--> Do not create a checkpoint for this microstep: #{msg}")
|
232
239
|
else
|
233
240
|
microstep_checkpoint_time = Time.now.to_i
|
234
|
-
Kameleon.ui.msg("--> Creating checkpoint: #{ microstep.identifier }")
|
241
|
+
Kameleon.ui.msg("--> Creating checkpoint: '#{@recipe.all_checkpoints.select{|c| c['id'] == microstep.identifier}.first['step']}' (#{microstep.identifier})")
|
235
242
|
create_checkpoint(microstep.identifier)
|
236
243
|
checkpointed = true
|
237
244
|
microstep_checkpoint_duration = Time.now.to_i - microstep_checkpoint_time
|
238
245
|
macrostep_checkpoint_duration += microstep_checkpoint_duration
|
239
246
|
Kameleon.ui.verbose("Checkpoint creation for MicroStep #{microstep.name} took: #{microstep_checkpoint_duration} secs")
|
240
247
|
end
|
248
|
+
else
|
249
|
+
Kameleon.ui.msg("--> Do not create a checkpoint for this microstep: disabled in backend")
|
241
250
|
end
|
242
251
|
end
|
243
252
|
else
|
244
253
|
if microstep.on_checkpoint == "only"
|
245
|
-
Kameleon.ui.msg("-->
|
254
|
+
Kameleon.ui.msg("--> Skip microstep as requested when checkpointing is not activated")
|
246
255
|
next
|
247
256
|
else
|
248
257
|
begin
|
@@ -470,28 +479,37 @@ module Kameleon
|
|
470
479
|
return path
|
471
480
|
end
|
472
481
|
end
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
Kameleon.ui.shell.say "
|
489
|
-
Kameleon.ui.shell.say "#{
|
490
|
-
|
482
|
+
if @options[:list_checkpoints]
|
483
|
+
if @recipe.all_checkpoints.empty?
|
484
|
+
Kameleon.ui.shell.say "No checkpoints would be created by recipe '#{recipe.name}':"
|
485
|
+
else
|
486
|
+
Kameleon.ui.shell.say "The following checkpoints would be created by recipe '#{recipe.name}':"
|
487
|
+
tp @recipe.all_checkpoints, {"id" => {:width => 20}}, { "step" => {:width => 60}}
|
488
|
+
end
|
489
|
+
else
|
490
|
+
Kameleon.ui.shell.say ""
|
491
|
+
Kameleon.ui.shell.say "#{ @recipe.name } ", :bold
|
492
|
+
Kameleon.ui.shell.say "(#{ relative_or_absolute_path(@recipe.path) })", :cyan
|
493
|
+
["bootstrap", "setup", "export"].each do |section_name|
|
494
|
+
section = @recipe.sections.fetch(section_name)
|
495
|
+
Kameleon.ui.shell.say "[" << section.name.capitalize << "]", :red
|
496
|
+
section.sequence do |macrostep|
|
497
|
+
Kameleon.ui.shell.say " "
|
498
|
+
Kameleon.ui.shell.say "#{macrostep.name} ", :bold
|
499
|
+
if macrostep.path
|
500
|
+
Kameleon.ui.shell.say "(#{ relative_or_absolute_path(macrostep.path) })", :cyan
|
501
|
+
else
|
502
|
+
Kameleon.ui.shell.say "(internal)", :cyan
|
503
|
+
end
|
504
|
+
macrostep.sequence do |microstep|
|
505
|
+
Kameleon.ui.shell.say " --> ", :magenta
|
506
|
+
Kameleon.ui.shell.say "#{ microstep.order } ", :green
|
507
|
+
Kameleon.ui.shell.say "#{ microstep.name }", :yellow
|
508
|
+
end
|
491
509
|
end
|
492
510
|
end
|
511
|
+
Kameleon.ui.shell.say ""
|
493
512
|
end
|
494
|
-
Kameleon.ui.shell.say ""
|
495
513
|
end
|
496
514
|
|
497
515
|
def dag(graph, color, recipes_only)
|
@@ -570,26 +588,57 @@ module Kameleon
|
|
570
588
|
|
571
589
|
def build
|
572
590
|
if @checkpointing
|
573
|
-
@from_checkpoint
|
574
|
-
if @from_checkpoint.nil? || @from_checkpoint == "last"
|
591
|
+
if @options[:from_checkpoint].nil? || @options[:from_checkpoint] == "last"
|
575
592
|
@from_checkpoint = list_checkpoints.last
|
576
593
|
else
|
577
|
-
|
578
|
-
|
579
|
-
|
580
|
-
|
594
|
+
@from_checkpoint = list_checkpoints.select {|c|
|
595
|
+
c["id"] == @options[:from_checkpoint] || c["step"] == @options[:from_checkpoint]
|
596
|
+
}.last
|
597
|
+
if @from_checkpoint.nil?
|
598
|
+
fail BuildError, "Unknown checkpoint '#{@options[:from_checkpoint]}'." \
|
599
|
+
" You may use the list checkpoints option to find a valid checkpoint."
|
581
600
|
end
|
582
601
|
end
|
583
|
-
unless @from_checkpoint.nil?
|
584
|
-
Kameleon.ui.info("Restoring last build from step: #{@from_checkpoint}")
|
585
|
-
apply_checkpoint @from_checkpoint
|
602
|
+
unless @from_checkpoint.nil? # no checkpoint available at all
|
603
|
+
Kameleon.ui.info("Restoring last build from step: #{@from_checkpoint["step"]}")
|
604
|
+
apply_checkpoint @from_checkpoint["id"]
|
586
605
|
@recipe.microsteps.each do |microstep|
|
587
|
-
microstep.
|
588
|
-
if microstep.identifier == @from_checkpoint
|
606
|
+
microstep.has_checkpoint_ahead = true
|
607
|
+
if microstep.identifier == @from_checkpoint["id"]
|
589
608
|
break
|
590
609
|
end
|
591
610
|
end
|
592
611
|
end
|
612
|
+
@begin_checkpoint = nil
|
613
|
+
unless @options[:begin_checkpoint].nil?
|
614
|
+
@begin_checkpoint = @recipe.all_checkpoints.select {|c|
|
615
|
+
c["id"] == @options[:begin_checkpoint] || c["step"] == @options[:begin_checkpoint]
|
616
|
+
}.first
|
617
|
+
if @begin_checkpoint.nil?
|
618
|
+
fail BuildError, "Unknown checkpoint '#{@options[:begin_checkpoint]}'." \
|
619
|
+
" You may use the dryrun and list checkpoints options to find a valid checkpoint."
|
620
|
+
end
|
621
|
+
end
|
622
|
+
@end_checkpoint = nil
|
623
|
+
unless @options[:end_checkpoint].nil?
|
624
|
+
@end_checkpoint = @recipe.all_checkpoints.select {|c|
|
625
|
+
c["id"] == @options[:end_checkpoint] || c["step"] == @options[:end_checkpoint]
|
626
|
+
}.last
|
627
|
+
if @end_checkpoint.nil?
|
628
|
+
fail BuildError, "Unknown checkpoint '#{@options[:end_checkpoint]}'." \
|
629
|
+
" You may use the dryrun and list checkpoints options to find a valid checkpoint."
|
630
|
+
end
|
631
|
+
end
|
632
|
+
do_checkpoint = @begin_checkpoint.nil?
|
633
|
+
@recipe.microsteps.each do |microstep|
|
634
|
+
if not do_checkpoint and not @begin_checkpoint.nil? and @begin_checkpoint["id"] == microstep.identifier
|
635
|
+
do_checkpoint = true
|
636
|
+
end
|
637
|
+
microstep.in_checkpoint_window = do_checkpoint
|
638
|
+
if do_checkpoint and not @end_checkpoint.nil? and @end_checkpoint["id"] == microstep.identifier
|
639
|
+
do_checkpoint = false
|
640
|
+
end
|
641
|
+
end
|
593
642
|
end
|
594
643
|
dump_build_recipe
|
595
644
|
begin
|
@@ -633,29 +682,12 @@ module Kameleon
|
|
633
682
|
end
|
634
683
|
|
635
684
|
def pretty_checkpoints_list
|
636
|
-
|
637
|
-
|
638
|
-
|
639
|
-
end
|
640
|
-
end
|
641
|
-
dict_checkpoints = []
|
642
|
-
unless @recipe.checkpoint.nil?
|
643
|
-
list_checkpoints.each do |id|
|
644
|
-
slug = find_microstep_slug_by_id id
|
645
|
-
unless slug.nil?
|
646
|
-
dict_checkpoints.push({
|
647
|
-
"id" => id,
|
648
|
-
"step" => slug
|
649
|
-
})
|
650
|
-
end
|
651
|
-
end
|
652
|
-
end
|
653
|
-
if dict_checkpoints.empty?
|
654
|
-
puts "No checkpoint available for the recipe '#{recipe.name}'"
|
685
|
+
list_checkpoints
|
686
|
+
if list_checkpoints.empty?
|
687
|
+
Kameleon.ui.shell.say "No checkpoint found for recipe '#{recipe.name}'"
|
655
688
|
else
|
656
|
-
|
657
|
-
|
658
|
-
tp dict_checkpoints, {"id" => {:width => 20}}, { "step" => {:width => 60}}
|
689
|
+
Kameleon.ui.shell.say "The following checkpoints are available for recipe '#{recipe.name}':"
|
690
|
+
tp list_checkpoints, {"id" => {:width => 20}}, { "step" => {:width => 60}}
|
659
691
|
end
|
660
692
|
end
|
661
693
|
end
|
data/lib/kameleon/recipe.rb
CHANGED
@@ -753,6 +753,25 @@ module Kameleon
|
|
753
753
|
return @microsteps
|
754
754
|
end
|
755
755
|
|
756
|
+
def all_checkpoints
|
757
|
+
if @all_checkpoints.nil?
|
758
|
+
@all_checkpoints = []
|
759
|
+
microsteps.each do |m|
|
760
|
+
step = m.slug
|
761
|
+
while @all_checkpoints.map{|c| c["step"]}.include?(step) do
|
762
|
+
prefix, suffix = step.split("%")
|
763
|
+
step = if suffix.nil?
|
764
|
+
"#{prefix}%1"
|
765
|
+
else
|
766
|
+
"#{prefix}%#{suffix.to_i+1}"
|
767
|
+
end
|
768
|
+
end
|
769
|
+
@all_checkpoints.push({ 'id' => m.identifier, 'step' => step })
|
770
|
+
end
|
771
|
+
end
|
772
|
+
return @all_checkpoints
|
773
|
+
end
|
774
|
+
|
756
775
|
def calculate_step_identifiers
|
757
776
|
Kameleon.ui.debug("Calculating microstep identifiers")
|
758
777
|
base_salt = ""
|
data/lib/kameleon/step.rb
CHANGED
@@ -103,13 +103,15 @@ module Kameleon
|
|
103
103
|
attr_accessor :name
|
104
104
|
attr_accessor :identifier
|
105
105
|
attr_accessor :slug
|
106
|
-
attr_accessor :
|
106
|
+
attr_accessor :has_checkpoint_ahead
|
107
|
+
attr_accessor :in_checkpoint_window
|
107
108
|
attr_accessor :on_checkpoint
|
108
109
|
attr_accessor :order
|
109
110
|
|
110
111
|
def initialize(string_or_hash)
|
111
112
|
@identifier = nil
|
112
|
-
@
|
113
|
+
@has_checkpoint_ahead = false
|
114
|
+
@in_checkpoint_window = true
|
113
115
|
@on_checkpoint = "use_cache"
|
114
116
|
@commands = []
|
115
117
|
@name, cmd_list = string_or_hash.first
|
data/lib/kameleon/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kameleon-builder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.10.
|
4
|
+
version: 2.10.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Salem Harrache
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2023-
|
15
|
+
date: 2023-10-10 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: childprocess
|