Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • heptapod/heptapod-docker
1 result
Show changes
Commits on Source (7)
......@@ -8,7 +8,7 @@
# this would be a clear benefit.
image: registry.heptapod.net/heptapod/ci-images/fixed-pydeps
script:
- flake8 registry-pull-heptapod-push-docker push-release launch
- flake8 registry-pull-push-testing push-release launch release-full
crane-image:
......
......@@ -10,6 +10,4 @@
logger = logging.getLogger(os.path.basename(__file__).rsplit('.', 1)[0])
OCTOBUS_BASE_IMAGE = 'octobus/heptapod'
BASE_IMAGE = 'heptapod/heptapod'
HEPTAPOD_REGISTRY_BASE_IMAGE = (
......@@ -15,4 +13,11 @@
HEPTAPOD_REGISTRY_BASE_IMAGE = (
'registry.heptapod.net/heptapod/omnibus-heptapod'
'registry.orus.io/heptapod-distribution/heptapod'
)
DISTRIBUTION_RC_REPOS = (
'docker.io/heptapod/heptapod',
)
DISTRIBUTION_FINAL_REPOS = (
'registry.orus.io/heptapod-distribution/heptapod',
'quay.orus.io/cloudcrane/heptapod',
)
GITLAB_RAILS = '/opt/gitlab/embedded/service/gitlab-rails/'
......@@ -17,5 +22,6 @@
)
GITLAB_RAILS = '/opt/gitlab/embedded/service/gitlab-rails/'
FINAL_VERSION_RX = re.compile(r'^\d+\.\d+\.\d+$')
class InvalidBuildNumber(RuntimeError):
......@@ -31,5 +37,5 @@
class Releaser:
def __init__(self, simulate, podman=False, extra_repos=()):
def __init__(self, simulate, stable_series, podman=False):
self.simulate = simulate
......@@ -35,3 +41,4 @@
self.simulate = simulate
self.stable_series = stable_series
self.podman = podman
self.docker_cmd = 'podman' if podman else 'docker'
......@@ -36,6 +43,5 @@
self.podman = podman
self.docker_cmd = 'podman' if podman else 'docker'
self.extra_repos = extra_repos
def docker_hub_base_image(self, base_image):
if self.podman and len(base_image.split('/')) < 3:
......@@ -48,6 +54,6 @@
call(cmd, **kwargs)
def testing_img(self, stable_series):
return self.image_tag('testing',
return self.image_tag(HEPTAPOD_REGISTRY_BASE_IMAGE, 'testing',
stable_series=stable_series)
......@@ -52,7 +58,7 @@
stable_series=stable_series)
def image_tag(self, label, stable_series=None, base_image=BASE_IMAGE):
def image_tag(self, base_image, label, stable_series=None):
if stable_series is not None:
label = '-'.join((stable_series, label))
return ':'.join((self.docker_hub_base_image(base_image), label))
......@@ -55,8 +61,8 @@
if stable_series is not None:
label = '-'.join((stable_series, label))
return ':'.join((self.docker_hub_base_image(base_image), label))
def read_check_version(self, stable_series, validate_build_number=True):
def read_check_version(self, validate_build_number=True):
"""Read version files and check consistency."""
img = self.testing_img(stable_series)
logger.info("Reading version metadata from image %r", img)
......@@ -81,9 +87,21 @@
except TypeError:
raise InvalidBuildNumber(release[1])
return archival, version, build_number
logger.info("Detected version %r (Omnibus build %r) in testing image",
version, build_number)
self.version = version
def is_final_version(self):
return FINAL_VERSION_RX.match(self.version)
def base_images(self):
if self.is_final_version():
return DISTRIBUTION_FINAL_REPOS
else:
return DISTRIBUTION_RC_REPOS
def push_tag(self, label,
stable_series=None,
tag_series=None,
):
......@@ -85,16 +103,12 @@
def push_tag(self, label,
stable_series=None,
tag_series=None,
):
full_image_tags = []
for base_image in (BASE_IMAGE, ):
full_image_tags.append(
self.image_tag(label, stable_series=tag_series,
base_image=base_image)
)
full_image_tags.extend(':'.join((repo, label))
for repo in self.extra_repos)
full_image_tags = [
self.image_tag(base_image, label, stable_series=tag_series)
for base_image in self.base_images()
]
for img_tag in full_image_tags:
self.docker('tag', self.testing_img(stable_series), img_tag,
simulate=self.simulate)
......@@ -103,13 +117,8 @@
def push_latest(self, stable_series):
"""Promote the x-y-testing image to 'latest'."""
label = 'latest'
full_image_tags = []
for base_image in (BASE_IMAGE, HEPTAPOD_REGISTRY_BASE_IMAGE):
full_image_tags.append(
self.image_tag(label, base_image=base_image)
)
full_image_tags.extend(':'.join((repo, label))
for repo in self.extra_repos)
full_image_tags = [self.image_tag(base_image, label)
for base_image in self.base_images()]
for img_tag in full_image_tags:
self.docker('tag', self.testing_img(stable_series), img_tag,
simulate=self.simulate)
......@@ -165,7 +174,7 @@
releaser = Releaser(
simulate=parsed_args.simulate,
podman=podman or parsed_args.podman,
extra_repos=this_config.get('extra-repositories', ()),
stable_series=stable_series,
)
try:
......@@ -169,11 +178,11 @@
)
try:
archival, version, build_nr = releaser.read_check_version(
stable_series=stable_series,
validate_build_number=not parsed_args.arbitrary_build_number)
releaser.read_check_version(
validate_build_number=not parsed_args.arbitrary_build_number
)
except InvalidBuildNumber as exc:
logger.error("Invalid build number in /RELEASE file: %r. "
"Bailing", **exc.args)
sys.exit(1)
......@@ -175,10 +184,9 @@
except InvalidBuildNumber as exc:
logger.error("Invalid build number in /RELEASE file: %r. "
"Bailing", **exc.args)
sys.exit(1)
logger.info("Detected version %r (Omnibus build %r) in testing image",
version, build_nr)
version = releaser.version
if not parsed_args.simulate and not parsed_args.no_confirmation:
print("Are you sure you want to tag and push version %r?" % version)
......
......@@ -11,7 +11,7 @@
DEFAULT_IMAGE_TAG = 'testing'
HEPTAPOD_REGISTRY_IMAGE_REPOSITORY = (
"registry.heptapod.net/heptapod/omnibus-heptapod")
TARGET_IMAGE_REPOSITORY = "docker.io/heptapod/heptapod"
TARGET_IMAGE_REPOSITORY = "registry.orus.io/heptapod-distribution/heptapod"
HEPTAPOD_DOCKER_DIR = os.path.dirname(__file__)
OMNIBUS_HEPTAPOD_SOURCE = 'https://foss.heptapod.net/heptapod/omnibus-heptapod'
OMNIBUS_HEPTAPOD_CLONE_DEFAULT = os.path.realpath(os.path.join(
......@@ -20,6 +20,7 @@
'omnibus-heptapod'
))
def digest_from_ci_line(line):
return line.strip().rsplit('@', 1)[-1].split()[0]
......@@ -87,6 +88,7 @@
"-R", omnibus_clone,
"-r", rev)).decode().strip()
def docker_image_digest(image_tag):
"""Display image ID.
......@@ -116,8 +118,6 @@
sys.exit(1)
target_image = image_tag(TARGET_IMAGE_REPOSITORY, cl_args.tag)
if cl_args.podman:
target_image = 'docker.io/' + target_image
omnibus_clone = cl_args.omnibus_clone
if omnibus_clone is None:
......
......@@ -92,7 +92,7 @@
latest)
config = cl_args.config
check_call((BASE_DIR / 'registry-pull-heptapod-push-docker',
check_call((BASE_DIR / 'registry-pull-push-testing',
'--push',
'--tag', image_testing_tag,
'--verify-hg-tag', omnibus_tag,
......