def unconfined(job):
# The unconfined runner even allow to choose the runner right from the yml.
runner = job.config.pop('runner', None)
if runner:
call_runner(runner, job)
else:
logger.debug('Executing unconfined.')
entry = os.environ.get('YML_SCRIPT', 'script')
if entry not in {'script', 'after_script'}:
logger.error('%r is not a valid YML entry.', entry)
sys.exit(1)
script = job.config.get(entry)
if not script:
logger.error('Missing script.')
sys.exit(0)
script = script.strip() + '\n'
script_name = '_job'
with open(script_name, 'w') as fo:
fo.write("#!/bin/bash -eux\n")
fo.write(script)
os.chmod(
fo.name,
stat.S_IREAD | stat.S_IWUSR | stat.S_IXUSR
)
environ = dict(
{k: str(v) for k, v in job.config['parameters'].items()},
CI='1',
**os.environ
)
os.execle(script_name, environ)
评论列表
文章目录