Skip to content
Snippets Groups Projects
Commit 6551366079c0 authored by Georges Racinet's avatar Georges Racinet
Browse files

Launch script: removing more obsolete features

- preparation of source doesn't make sense any more, since
  we're not building anything
- pushing Docker images not the responsibility of this script.
parent d3fc72df917b
No related branches found
No related tags found
No related merge requests found
......@@ -98,85 +98,6 @@
return res
def prefetch_component_sources(slug, rev_info, shares_dir, simulate=False):
repo_path = os.path.join(SOURCES_DIR, slug)
pull_branch = rev_info.get('pull_branch')
pull_revision = rev_info.get('pull_revision')
target_rev = rev_info['revision']
pull_opts = []
if pull_branch:
pull_opts.extend(('-b', pull_branch))
if pull_revision:
pull_opts.extend(('-r', pull_revision))
remote = rev_info['remote']
if os.path.isdir(repo_path):
sha = hg_rev_sha(repo_path, target_rev)
if sha is None:
cmd = ['hg', 'pull', '-R', repo_path, remote]
cmd.extend(pull_opts)
print("Pull for existing repository: %r" % cmd)
else:
print("Revision %r found in existing repository at %r as %r" % (
target_rev, repo_path, sha))
return repo_path, sha
else:
cmd = ['hg']
if shares_dir is None:
cmd.extend(('clone', remote, '--noupdate'))
cmd.extend(pull_opts)
else:
cmd.extend(('share', '--noupdate', os.path.join(shares_dir, slug)))
cmd.append(repo_path)
print("Initializing repository: %r" % cmd)
if not simulate:
subprocess.check_call(cmd)
return repo_path, None
subprocess.check_call(cmd)
sha = hg_rev_sha(repo_path, target_rev)
return repo_path, hg_rev_sha(repo_path, target_rev, fail=not simulate)
def prepare_sources(context_dir, revisions, shares_dir, simulate=False):
for component, slug in PREFETCH_SOURCES.items():
revision = revisions.get(component)
if revision is None:
# not specified in revisions, means not to be built
# (typically a dev image using the same version of the component
# as the base image
print("Prepare sources: skipping %r: "
"no revision specified" % component)
continue
src_path, sha = prefetch_component_sources(
slug, revision, shares_dir,
simulate=simulate)
tarball = os.path.join(context_dir, slug + '.tar')
if os.path.exists(tarball):
if sha is not None: # can be None without error in simulate mode
archive_md = inspect_archive(tarball)
tar_sha = archive_md['node']
if tar_sha == sha:
print("Reusing existing tarball at %r. "
"Archival metadata: %r" % (
tarball, archive_md))
continue
else:
print("Remove stale tarball at %r "
"with archival metadada: %r " % (
tarball, archive_md))
if not simulate:
os.unlink(tarball)
cmd = ['hg', '-R', src_path, 'archive',
'-t', 'tar',
'-p', '.',
tarball,
'-r', revision['revision']]
print("Prepare sources for %s: %r" % (component, cmd))
if not simulate:
subprocess.check_call(cmd)
def docker_build_args(py_version):
python = 'python' if py_version == '2' else 'omnibus'
return ('--build-arg', 'heptapod_python=' + python)
......@@ -187,59 +108,6 @@
return '%s-py%s' % (full_tag, py_version)
def build_image(full_tag, context_dir, py_version,
simulate=False,
no_cache=False, squash=False,
shares_dir=None,
msg="Docker build command"):
"""Build the image from `context_dir` and tag it.
`full_tag` is actually the full name of the image, with the tag part.
Examples: `octobus/heptapod:testing`
"""
raise NotImplementedError("As of Heptapod 0.17.0, local building does "
"not make sense any more")
def retag_partial_image(full_tag,
simulate=False,
pull=False,
py_version='3'):
msg = "Docker partial image retag command"
partial_image_tag = read_docker_file_from_field(
os.path.join(DOCKER_BASE_CONTEXT_DIR, 'Dockerfile'),
image_tag_rx=r'heptapod/partial:.*?')
if pull:
cmd = ['docker', 'pull', partial_image_tag]
print("%s: %r" % (msg, cmd))
if not simulate:
subprocess.check_call(cmd)
py_version_tag = py_version_image_tag(full_tag, py_version)
cmd = ('docker', 'tag', partial_image_tag, py_version_tag)
print("%s: %r" % (msg, cmd))
if not simulate:
subprocess.check_call(cmd)
if py_version == DEFAULT_PYTHON_VERSION:
cmd = ('docker', 'tag', py_version_tag, full_tag)
print("%s: %r" % (msg, cmd))
if not simulate:
subprocess.check_call(cmd)
def push_image(full_tag, simulate=False):
"""Push image to Docker Hub.
`full_tag` is as in `build_image()`.
"""
cmd = ('docker', 'push', full_tag)
print("Docker push command: %r" % (cmd, ))
if not simulate:
subprocess.check_call(cmd)
print()
def main():
parser = argparse.ArgumentParser(
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
......@@ -248,13 +116,6 @@
parser.add_argument('-s', '--simulate', action='store_true',
help="Output configuration instead of "
"executing commands")
parser.add_argument('--src-shares-dir',
help="Use `hg share` from the given directory "
"instead of `hg clone` to init the source "
"repositories that are maintained outside of the "
"build container. The slug is expected to be the "
"same as on foss.h.n, i.e., `heptapod-workhorse` etc."
)
vol_group = parser.add_argument_group("Docker volumes options")
vol_group.add_argument('--volumes-dir',
default=default_volumes_dir(),
......@@ -350,8 +211,6 @@
))
print_header("Commands")
shares_dir = parsed_args.src_shares_dir
if not do_run:
return
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment