ftl/integration_tests/ftl_node_integration_tests_yaml.py (42 lines of code) (raw):
"""A script to generate a cloudbuild yaml."""
import os
import yaml
import util
# Add directories for new tests here.
TEST_DIRS = [
'gcp_build_test', 'packages_test', 'packages_lock_test',
'destination_test', 'metadata_test', 'npmrc_test', 'file_test',
'empty_descriptor_test', 'no_descriptor_test',
'no_deps_test', 'additional_directory', 'function_to_app_test',
'yarn_test', 'hardlink_test',
]
_TEST_DIR = '/workspace/ftl/node/testdata'
_NODE_BASE = 'gcr.io/ftl-node-test/nodejs8_app_builder:add-yarn'
# TODO(aaron-prindle) when yarn is in the upstream image, change this back
# _NODE_BASE = 'gcr.io/gae-runtimes/nodejs8_app_builder:argo_current'
def main():
cloudbuild_yaml = util.INITIAL_CLOUDBUILD_YAML
cloudbuild_yaml['steps'].append(
# Build the FTL image from source and load it into the daemon.
{
'name': 'gcr.io/cloud-builders/bazel@sha256:7360c36bded15db68a35cfb1740a994f0a09ad5ce378a97f96d698bc223e442a',
'args': ['run', '//ftl:node_builder_image', '--', '--norun'],
'id': 'build-builder',
'waitFor': [cloudbuild_yaml['steps'][0]['id']],
}, )
# Generate a set of steps for each test and add them.
test_map = {}
for test in TEST_DIRS:
test_map[test] = [
'--base', _NODE_BASE, '--name',
'gcr.io/ftl-node-test/%s-image' % test, '--directory',
os.path.join(_TEST_DIR, test), '--no-cache'
]
test_map['destination_test'].extend(['--destination', '/alternative-app'])
test_map['metadata_test'].extend(['--entrypoint', '/bin/echo'])
test_map['metadata_test'].extend(['--exposed-ports', '8090,8091'])
test_map['additional_directory'].extend([
'--additional-directory',
'/workspace/ftl/node/testdata/additional_directory'
])
for test, args in test_map.iteritems():
cloudbuild_yaml['steps'] += util.run_test_steps(
'node_builder_image', 'gcr.io/ftl-node-test/%s-image' % test,
os.path.join(_TEST_DIR, test), args)
print yaml.dump(cloudbuild_yaml)
if __name__ == "__main__":
main()