From d43affe9bc784035693d3e43b1949f8a759aa212 Mon Sep 17 00:00:00 2001 From: jpic Date: Sun, 26 Jan 2020 12:42:16 +0100 Subject: [PATCH] Commit: support login, push, parse repo ... --- podctl/visitors/commit.py | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/podctl/visitors/commit.py b/podctl/visitors/commit.py index e13ae12..2a4cb52 100644 --- a/podctl/visitors/commit.py +++ b/podctl/visitors/commit.py @@ -1,4 +1,5 @@ import os +import subprocess CI_VARS = ( # gitlab @@ -13,30 +14,40 @@ CI_VARS = ( class Commit: - def __init__(self, repo, tags=None, format=None, push=None): + def __init__(self, repo, tags=None, format=None, push=None, registry=None): self.repo = repo - self.format = format or 'oci' + self.registry = registry self.push = push - self.tags = tags or [] - if self.repo.startswith('docker.io/'): + + # figure out registry host + if '/' in self.repo and not registry: + first = self.repo.split('/')[0] + if '.' in first or ':' in first: + self.registry = self.repo.split('/')[0] + + # docker.io currently has issues with oci format + self.format = format or 'oci' + if self.registry == 'docker.io': self.format = 'docker' + self.tags = tags or [] + + # figure tags from CI vars if not self.tags: for name in CI_VARS: value = os.getenv(name) if value: self.tags.append(value) + # filter out tags which resolved to None self.tags = [t for t in self.tags if t is not None] def post_build(self, script): - creds = None - ''' - if 'DOCKER_USER' in os.environ: - creds = '--creds ' + os.getenv('DOCKER_USER') - if 'DOCKER_PASS' in os.environ: - creds += ':' + os.getenv('DOCKER_PASS') - ''' + user = os.getenv('DOCKER_USER') + passwd = os.getenv('DOCKER_PASS') + if user and passwd and os.getenv('CI') and self.registry: + subprocess.check_call([ + 'podman', 'login', '-u', user, '-p', passwd, self.registry]) script.append(f''' umounts