summaryrefslogtreecommitdiff
path: root/floss/build/build-in-docker.py
diff options
context:
space:
mode:
authorAbhishek Pandit-Subedi <abhishekpandit@google.com>2022-03-23 17:28:47 -0700
committerAbhishek Pandit-Subedi <abhishekpandit@google.com>2022-03-29 12:33:15 -0700
commit6c492fb3fa7889c436f117816ec93cde0bae721d (patch)
treec0ea390a684b0a0697499ae8a410d3d934f22566 /floss/build/build-in-docker.py
parente6337033edde367cb840719812cefb4b69657413 (diff)
floss: Always stop container after building
After building, always stop the container and clean it up. Bug: 224613803 Tag: #floss Test: ./build-in-docker.py Change-Id: I37b795f05d46a6e0d989acd664733774086eb3b6
Diffstat (limited to 'floss/build/build-in-docker.py')
-rwxr-xr-xfloss/build/build-in-docker.py24
1 files changed, 14 insertions, 10 deletions
diff --git a/floss/build/build-in-docker.py b/floss/build/build-in-docker.py
index d78d40496d..14dc643051 100755
--- a/floss/build/build-in-docker.py
+++ b/floss/build/build-in-docker.py
@@ -25,13 +25,15 @@ class FlossDockerRunner:
['/root/src/build.py', '--target', 'test'],
]
- def __init__(self, workdir, rootdir, image_tag, volume_tag):
+ def __init__(self, workdir, rootdir, image_tag, volume_tag, container_name):
""" Constructor.
Args:
workdir: Current working directory (should be the script path).
rootdir: Root directory for Bluetooth.
- build_tag: Tag for docker image used for building.
+ image_tag: Tag for docker image used for building.
+ volume_tag: Volume name used for storing artifacts.
+ container_name: Name for running container instance.
"""
self.workdir = workdir
self.rootdir = rootdir
@@ -39,7 +41,7 @@ class FlossDockerRunner:
self.env = os.environ.copy()
# Name of running container
- self.container_name = 'floss-docker-runner'
+ self.container_name = container_name
# Name of volume where we'll send build output
self.volume_name = volume_tag
@@ -104,12 +106,13 @@ class FlossDockerRunner:
# Start container before building
self.start_container()
- # Run all commands
- for i, cmd in enumerate(self.BUILD_COMMANDS):
- self.run_command('docker exec #{}'.format(i), ['docker', 'exec', '-it', self.container_name] + cmd)
-
- # Stop container before exiting
- self.stop_container()
+ try:
+ # Run all commands
+ for i, cmd in enumerate(self.BUILD_COMMANDS):
+ self.run_command('docker exec #{}'.format(i), ['docker', 'exec', '-it', self.container_name] + cmd)
+ finally:
+ # Always stop container before exiting
+ self.stop_container()
def print_do_build(self):
"""Prints the commands for building."""
@@ -143,6 +146,7 @@ if __name__ == "__main__":
parser.add_argument('--only-stop', action='store_true', default=False, help='Only stop the container and exit.')
parser.add_argument('--image-tag', default='floss:latest', help='Docker image to use to build.')
parser.add_argument('--volume-tag', default='floss-out', help='Name of volume to use.')
+ parser.add_argument('--container-name', default='floss-docker-runner', help='What to name the started container')
args = parser.parse_args()
# cwd should be set to same directory as this script (that's where Dockerfile
@@ -150,7 +154,7 @@ if __name__ == "__main__":
workdir = os.path.dirname(os.path.abspath(sys.argv[0]))
rootdir = os.path.abspath(os.path.join(workdir, '../..'))
- fdr = FlossDockerRunner(workdir, rootdir, args.image_tag, args.volume_tag)
+ fdr = FlossDockerRunner(workdir, rootdir, args.image_tag, args.volume_tag, args.container_name)
# Make sure docker is runnable before continuing
if fdr.check_docker_runnable():