|
@@ -12,34 +12,34 @@ Frank can be configured using the following yaml::
|
|
|
- frank.actions:detect_new_tag
|
|
|
|
|
|
deploy:
|
|
|
- - cmd
|
|
|
- - runif:
|
|
|
+ - cmd
|
|
|
+ - runif
|
|
|
- test
|
|
|
- newtag
|
|
|
-
|
|
|
+
|
|
|
publish:
|
|
|
- shell:
|
|
|
- cd docs; make html
|
|
|
- python:
|
|
|
- - frank.actions:recursive_copy
|
|
|
+ - frank.actions:recursive_copy
|
|
|
|
|
|
-The sections commands is a simple list of command you would
|
|
|
-like to define.
|
|
|
-This section is optional. It's main purpose is for you to decalre
|
|
|
+The sections commands is a simple list of command you would
|
|
|
+like to define.
|
|
|
+This section is optional. It's main purpose is for you to decalre
|
|
|
which commands frank should execute upon recieving a load.
|
|
|
|
|
|
Each command is a dictionary with the following possible keys::
|
|
|
|
|
|
cmd_name:
|
|
|
- - cmd # not mandatory if you include it in the list of commands
|
|
|
+ - cmd # not mandatory if you include it in the list of commands
|
|
|
- runif # a conditional to determine whether to run or skip the command
|
|
|
- # it can contain multiple directives which can be python
|
|
|
- # code to execute
|
|
|
- # or shell code
|
|
|
-
|
|
|
+ # it can contain multiple directives which can be python
|
|
|
+ # code to execute
|
|
|
+ # or shell code
|
|
|
+
|
|
|
|
|
|
-For example, let's say you would like to build the sphinx documentation
|
|
|
-of your project after every push. You start by defining a command
|
|
|
+For example, let's say you would like to build the sphinx documentation
|
|
|
+of your project after every push. You start by defining a command
|
|
|
build_docs in the following way::
|
|
|
|
|
|
build_docs:
|
|
@@ -268,9 +268,8 @@ def run_action(axn):
|
|
|
res = f()
|
|
|
except AttributeError as E:
|
|
|
res = E
|
|
|
-
|
|
|
+
|
|
|
results.append(PythonCode(func, None, None, res))
|
|
|
-
|
|
|
|
|
|
return results
|
|
|
|
|
@@ -322,20 +321,20 @@ def start():
|
|
|
try:
|
|
|
o, e = clone(request_as_json['repository']['ssh_url'], clone_dest)
|
|
|
except Exception as E:
|
|
|
- print E, E.message
|
|
|
+ print E, E.message
|
|
|
# parse yaml is still very crude ...
|
|
|
- # it could yield selfect with a run method
|
|
|
+ # it could yield selfect with a run method
|
|
|
# thus:
|
|
|
# for action in parse_yaml(clone_dest):
|
|
|
# action.run()
|
|
|
- #
|
|
|
- # this should also handle dependencies,
|
|
|
- # the following implementation is very crud
|
|
|
+ #
|
|
|
+ # this should also handle dependencies,
|
|
|
+ # the following implementation is very crud
|
|
|
failed = None
|
|
|
for action in parse_yaml(clone_dest):
|
|
|
# if config says we use huey, we should modiy run_action
|
|
|
results = run_action(action)
|
|
|
-
|
|
|
+
|
|
|
if any([result.code for result in results]):
|
|
|
report_failure(results)
|
|
|
else:
|
|
@@ -366,7 +365,7 @@ def worker(worker_args, short_help='start the consumer of tasks'):
|
|
|
parser = get_option_parser()
|
|
|
opts, args = parser.parse_args(list(worker_args))
|
|
|
setup_logger(logging.INFO, opts.logfile)
|
|
|
- consumer = Consumer(taskq, 2, opts.periodic, opts.initial_delay,
|
|
|
- opts.backoff, opts.max_delay, opts.utc,
|
|
|
+ consumer = Consumer(taskq, 2, opts.periodic, opts.initial_delay,
|
|
|
+ opts.backoff, opts.max_delay, opts.utc,
|
|
|
opts.scheduler_interval, opts.periodic_task_interval)
|
|
|
consumer.run()
|