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