mirror of
https://github.com/docker/compose.git
synced 2025-07-06 13:24:25 +02:00
Add integration test and docs for build with a git url.
Signed-off-by: Daniel Nephin <dnephin@docker.com>
This commit is contained in:
parent
f7239f41ef
commit
2ab3cb212a
@ -564,7 +564,8 @@ def validate_paths(service_dict):
|
|||||||
(not os.path.exists(build_path) or not os.access(build_path, os.R_OK))
|
(not os.path.exists(build_path) or not os.access(build_path, os.R_OK))
|
||||||
):
|
):
|
||||||
raise ConfigurationError(
|
raise ConfigurationError(
|
||||||
"build path %s either does not exist or is not accessible." % build_path)
|
"build path %s either does not exist, is not accessible, "
|
||||||
|
"or is not a valid URL." % build_path)
|
||||||
|
|
||||||
|
|
||||||
def merge_path_mappings(base, override):
|
def merge_path_mappings(base, override):
|
||||||
|
@ -31,15 +31,18 @@ definition.
|
|||||||
|
|
||||||
### build
|
### build
|
||||||
|
|
||||||
Path to a directory containing a Dockerfile. When the value supplied is a
|
Either a path to a directory containing a Dockerfile, or a url to a git repository.
|
||||||
relative path, it is interpreted as relative to the location of the yml file
|
|
||||||
itself. This directory is also the build context that is sent to the Docker daemon.
|
When the value supplied is a relative path, it is interpreted as relative to the
|
||||||
|
location of the Compose file. This directory is also the build context that is
|
||||||
|
sent to the Docker daemon.
|
||||||
|
|
||||||
Compose will build and tag it with a generated name, and use that image thereafter.
|
Compose will build and tag it with a generated name, and use that image thereafter.
|
||||||
|
|
||||||
build: /path/to/build/dir
|
build: /path/to/build/dir
|
||||||
|
|
||||||
Using `build` together with `image` is not allowed. Attempting to do so results in an error.
|
Using `build` together with `image` is not allowed. Attempting to do so results in
|
||||||
|
an error.
|
||||||
|
|
||||||
### cap_add, cap_drop
|
### cap_add, cap_drop
|
||||||
|
|
||||||
|
@ -507,6 +507,13 @@ class ServiceTest(DockerClientTestCase):
|
|||||||
self.create_service('web', build=text_type(base_dir)).build()
|
self.create_service('web', build=text_type(base_dir)).build()
|
||||||
self.assertEqual(len(self.client.images(name='composetest_web')), 1)
|
self.assertEqual(len(self.client.images(name='composetest_web')), 1)
|
||||||
|
|
||||||
|
def test_build_with_git_url(self):
|
||||||
|
build_url = "https://github.com/dnephin/docker-build-from-url.git"
|
||||||
|
service = self.create_service('buildwithurl', build=build_url)
|
||||||
|
self.addCleanup(self.client.remove_image, service.image_name)
|
||||||
|
service.build()
|
||||||
|
assert service.image()
|
||||||
|
|
||||||
def test_start_container_stays_unpriviliged(self):
|
def test_start_container_stays_unpriviliged(self):
|
||||||
service = self.create_service('web')
|
service = self.create_service('web')
|
||||||
container = create_and_start_container(service).inspect()
|
container = create_and_start_container(service).inspect()
|
||||||
|
@ -1497,13 +1497,14 @@ class BuildPathTest(unittest.TestCase):
|
|||||||
service_dict = load_from_filename('tests/fixtures/build-path/docker-compose.yml')
|
service_dict = load_from_filename('tests/fixtures/build-path/docker-compose.yml')
|
||||||
self.assertEquals(service_dict, [{'name': 'foo', 'build': self.abs_context_path}])
|
self.assertEquals(service_dict, [{'name': 'foo', 'build': self.abs_context_path}])
|
||||||
|
|
||||||
def test_valid_url_path(self):
|
def test_valid_url_in_build_path(self):
|
||||||
valid_urls = [
|
valid_urls = [
|
||||||
'git://github.com/docker/docker',
|
'git://github.com/docker/docker',
|
||||||
'git@github.com:docker/docker.git',
|
'git@github.com:docker/docker.git',
|
||||||
'git@bitbucket.org:atlassianlabs/atlassian-docker.git',
|
'git@bitbucket.org:atlassianlabs/atlassian-docker.git',
|
||||||
'https://github.com/docker/docker.git',
|
'https://github.com/docker/docker.git',
|
||||||
'http://github.com/docker/docker.git',
|
'http://github.com/docker/docker.git',
|
||||||
|
'github.com/docker/docker.git',
|
||||||
]
|
]
|
||||||
for valid_url in valid_urls:
|
for valid_url in valid_urls:
|
||||||
service_dict = config.load(build_config_details({
|
service_dict = config.load(build_config_details({
|
||||||
@ -1511,6 +1512,19 @@ class BuildPathTest(unittest.TestCase):
|
|||||||
}, '.', None))
|
}, '.', None))
|
||||||
assert service_dict[0]['build'] == valid_url
|
assert service_dict[0]['build'] == valid_url
|
||||||
|
|
||||||
|
def test_invalid_url_in_build_path(self):
|
||||||
|
invalid_urls = [
|
||||||
|
'example.com/bogus',
|
||||||
|
'ftp://example.com/',
|
||||||
|
'/path/does/not/exist',
|
||||||
|
]
|
||||||
|
for invalid_url in invalid_urls:
|
||||||
|
with pytest.raises(ConfigurationError) as exc:
|
||||||
|
config.load(build_config_details({
|
||||||
|
'invalidurl': {'build': invalid_url},
|
||||||
|
}, '.', None))
|
||||||
|
assert 'build path' in exc.exconly()
|
||||||
|
|
||||||
|
|
||||||
class GetDefaultConfigFilesTestCase(unittest.TestCase):
|
class GetDefaultConfigFilesTestCase(unittest.TestCase):
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user