[MediaWiki-commits] [Gerrit] integration/config[master]: Dockerfiles: Add build.py tests
jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/382745 ) Change subject: Dockerfiles: Add build.py tests .. Dockerfiles: Add build.py tests Change-Id: I7d4df1443b9d50df45f7284af43e7cc1dee1dbca --- M .gitignore M dockerfiles/build.py A dockerfiles/test-requirements.txt A dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-one/Dockerfile A dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-three/Dockerfile A dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-two/Dockerfile A dockerfiles/tests/fixtures/dockerfiles/ci-fixture/Dockerfile A dockerfiles/tests/test_dockerfiles_build.py A dockerfiles/tox.ini M tox.ini 10 files changed, 80 insertions(+), 9 deletions(-) Approvals: Thcipriani: Looks good to me, approved Hashar: Looks good to me, but someone else must approve jenkins-bot: Verified diff --git a/.gitignore b/.gitignore index 68f5234..447fa83 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ /log *.pyc -/.tox +*.tox # Various temp files *~ diff --git a/dockerfiles/build.py b/dockerfiles/build.py index 15393ff..b085263 100755 --- a/dockerfiles/build.py +++ b/dockerfiles/build.py @@ -19,7 +19,8 @@ class DockerBuilder(object): -def __init__(self): +def __init__(self, base_dir=BASE_DIR): +self.base_dir = base_dir self.pushes = [] def run(self): @@ -52,7 +53,7 @@ self.log.info('Will build: %s' % ', '.join(images)) dockerfiles = [ -os.path.join(BASE_DIR, f, 'Dockerfile') +os.path.join(self.base_dir, f, 'Dockerfile') for f in images ] @@ -66,8 +67,8 @@ def load_config(self): config = configparser.ConfigParser() config.read([ -os.path.join(BASE_DIR, 'build.conf.default'), -os.path.join(BASE_DIR, 'build.conf'), +os.path.join(self.base_dir, 'build.conf.default'), +os.path.join(self.base_dir, 'build.conf'), ]) self.config = config @@ -96,7 +97,7 @@ self.args = parser.parse_args() def find_docker_files(self): -return sorted(glob(os.path.join(BASE_DIR, '*/Dockerfile'))) +return sorted(glob(os.path.join(self.base_dir, '*/Dockerfile'))) def update_jjb(self, img, tagged_img): regex = re.compile('%s:v[0-9\.]+' % img) @@ -204,7 +205,7 @@ self.log.debug('Building %s' % dockerfile) image_dir = os.path.dirname(dockerfile) -image_name = os.path.relpath(image_dir, BASE_DIR) +image_name = os.path.relpath(image_dir, self.base_dir) self.log.info('Image name: %s' % image_name) img = '/'.join([DOCKER_HUB_ACCOUNT, image_name]) diff --git a/dockerfiles/test-requirements.txt b/dockerfiles/test-requirements.txt new file mode 100644 index 000..f3c7e8e --- /dev/null +++ b/dockerfiles/test-requirements.txt @@ -0,0 +1 @@ +nose diff --git a/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-one/Dockerfile b/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-one/Dockerfile new file mode 100644 index 000..831546c --- /dev/null +++ b/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-one/Dockerfile @@ -0,0 +1 @@ +FROM debian:stretch diff --git a/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-three/Dockerfile b/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-three/Dockerfile new file mode 100644 index 000..7464243 --- /dev/null +++ b/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-three/Dockerfile @@ -0,0 +1 @@ +FROM wmfreleng/ci-fixture-child-two:v1.2.3 as parent diff --git a/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-two/Dockerfile b/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-two/Dockerfile new file mode 100644 index 000..399c8a9 --- /dev/null +++ b/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-two/Dockerfile @@ -0,0 +1,2 @@ +FROM wmfreleng/ci-fixture:v1.2.3 +FROM wmfreleng/ci-fixture-child-one:v1.2.3 as parent diff --git a/dockerfiles/tests/fixtures/dockerfiles/ci-fixture/Dockerfile b/dockerfiles/tests/fixtures/dockerfiles/ci-fixture/Dockerfile new file mode 100644 index 000..c35f1b5 --- /dev/null +++ b/dockerfiles/tests/fixtures/dockerfiles/ci-fixture/Dockerfile @@ -0,0 +1 @@ +FROM scratch diff --git a/dockerfiles/tests/test_dockerfiles_build.py b/dockerfiles/tests/test_dockerfiles_build.py new file mode 100644 index 000..5fc84e2 --- /dev/null +++ b/dockerfiles/tests/test_dockerfiles_build.py @@ -0,0 +1,53 @@ +import logging +import os +import sys +import unittest + +BASE_DIR = os.path.dirname(os.path.abspath(__file__)) +sys.path.append(os.path.join(BASE_DIR, '..')) + +import build + + +FIXTURES = os.path.join(BASE_DIR, 'fixtures', 'dockerfiles') + + +class TestDockerfilesBuild(unittest.TestCase): +def make_image_name(self, name): +return os.path.join(build.DOCKER_HUB_ACCOUNT,
[MediaWiki-commits] [Gerrit] integration/config[master]: Dockerfiles: Add build.py tests
Thcipriani has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/382745 ) Change subject: Dockerfiles: Add build.py tests .. Dockerfiles: Add build.py tests Change-Id: I7d4df1443b9d50df45f7284af43e7cc1dee1dbca --- M dockerfiles/build.py A dockerfiles/test-requirements.txt A dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-one/Dockerfile A dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-three/Dockerfile A dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-two/Dockerfile A dockerfiles/tests/fixtures/dockerfiles/ci-fixture/Dockerfile A dockerfiles/tests/test_dockerfiles_build.py M tox.ini 8 files changed, 70 insertions(+), 8 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/integration/config refs/changes/45/382745/1 diff --git a/dockerfiles/build.py b/dockerfiles/build.py index 15393ff..b085263 100755 --- a/dockerfiles/build.py +++ b/dockerfiles/build.py @@ -19,7 +19,8 @@ class DockerBuilder(object): -def __init__(self): +def __init__(self, base_dir=BASE_DIR): +self.base_dir = base_dir self.pushes = [] def run(self): @@ -52,7 +53,7 @@ self.log.info('Will build: %s' % ', '.join(images)) dockerfiles = [ -os.path.join(BASE_DIR, f, 'Dockerfile') +os.path.join(self.base_dir, f, 'Dockerfile') for f in images ] @@ -66,8 +67,8 @@ def load_config(self): config = configparser.ConfigParser() config.read([ -os.path.join(BASE_DIR, 'build.conf.default'), -os.path.join(BASE_DIR, 'build.conf'), +os.path.join(self.base_dir, 'build.conf.default'), +os.path.join(self.base_dir, 'build.conf'), ]) self.config = config @@ -96,7 +97,7 @@ self.args = parser.parse_args() def find_docker_files(self): -return sorted(glob(os.path.join(BASE_DIR, '*/Dockerfile'))) +return sorted(glob(os.path.join(self.base_dir, '*/Dockerfile'))) def update_jjb(self, img, tagged_img): regex = re.compile('%s:v[0-9\.]+' % img) @@ -204,7 +205,7 @@ self.log.debug('Building %s' % dockerfile) image_dir = os.path.dirname(dockerfile) -image_name = os.path.relpath(image_dir, BASE_DIR) +image_name = os.path.relpath(image_dir, self.base_dir) self.log.info('Image name: %s' % image_name) img = '/'.join([DOCKER_HUB_ACCOUNT, image_name]) diff --git a/dockerfiles/test-requirements.txt b/dockerfiles/test-requirements.txt new file mode 100644 index 000..f3c7e8e --- /dev/null +++ b/dockerfiles/test-requirements.txt @@ -0,0 +1 @@ +nose diff --git a/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-one/Dockerfile b/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-one/Dockerfile new file mode 100644 index 000..831546c --- /dev/null +++ b/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-one/Dockerfile @@ -0,0 +1 @@ +FROM debian:stretch diff --git a/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-three/Dockerfile b/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-three/Dockerfile new file mode 100644 index 000..7464243 --- /dev/null +++ b/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-three/Dockerfile @@ -0,0 +1 @@ +FROM wmfreleng/ci-fixture-child-two:v1.2.3 as parent diff --git a/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-two/Dockerfile b/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-two/Dockerfile new file mode 100644 index 000..399c8a9 --- /dev/null +++ b/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-two/Dockerfile @@ -0,0 +1,2 @@ +FROM wmfreleng/ci-fixture:v1.2.3 +FROM wmfreleng/ci-fixture-child-one:v1.2.3 as parent diff --git a/dockerfiles/tests/fixtures/dockerfiles/ci-fixture/Dockerfile b/dockerfiles/tests/fixtures/dockerfiles/ci-fixture/Dockerfile new file mode 100644 index 000..e69de29 --- /dev/null +++ b/dockerfiles/tests/fixtures/dockerfiles/ci-fixture/Dockerfile diff --git a/dockerfiles/tests/test_dockerfiles_build.py b/dockerfiles/tests/test_dockerfiles_build.py new file mode 100644 index 000..9ce0f92 --- /dev/null +++ b/dockerfiles/tests/test_dockerfiles_build.py @@ -0,0 +1,51 @@ +import logging +import os +import sys +import unittest + +BASE_DIR = os.path.dirname(os.path.abspath(__file__)) +sys.path.append(os.path.join(BASE_DIR, '..')) + +import build + + +FIXTURES = os.path.join(BASE_DIR, 'fixtures', 'dockerfiles') + + +class TestDockerfilesBuild(unittest.TestCase): +def make_image_name(self, name): +return os.path.join(build.DOCKER_HUB_ACCOUNT, name) + +def test_parse_from(self): +b = build.DockerBuilder(base_dir=FIXTURES) +x = b._parse_FROM('FROM foo:1.2.3 as bar') +self.assertTrue(x['image'] == 'foo') +self.assertTrue(x['tag'] == '1.2.3') +self.assertTrue(x['digest'] is None) + +def