Skip to content
This repository was archived by the owner on Sep 23, 2021. It is now read-only.

Commit c7e8eaf

Browse files
committed
Added dryRun to dockerlogin, dockerlogout and dockercomposepull. Fixed string replacement in PublishDockerImagesWithNewTag to include only first instance of source string in image name.
1 parent 93153de commit c7e8eaf

File tree

3 files changed

+31
-22
lines changed

3 files changed

+31
-22
lines changed

DockerBuildSystem/DockerComposeTools.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,14 @@ def DockerComposePush(composeFiles):
5151
TerminalTools.ExecuteTerminalCommands([terminalCommand], True)
5252

5353

54-
def DockerComposePull(composeFiles):
54+
def DockerComposePull(composeFiles, dryRun=False):
5555
terminalCommand = "docker-compose"
5656
terminalCommand += MergeComposeFileToTerminalCommand(composeFiles)
5757
terminalCommand += " pull"
58-
TerminalTools.ExecuteTerminalCommands([terminalCommand], True)
58+
if(dryRun):
59+
print("would have called {}".format(terminalCommand))
60+
else:
61+
TerminalTools.ExecuteTerminalCommands([terminalCommand], True)
5962

6063

6164
def TagImages(composeFile, newTag, dryRun = False):
@@ -91,14 +94,14 @@ def PublishDockerImages(composeFile, dryRun = False):
9194
print('Would have pushed {}'.format(sourceImage))
9295

9396
def PromoteDockerImages(composeFile, targetTags, sourceFeed, targetFeed, user, password, dryRun = False):
94-
DockerImageTools.DockerLogin(sourceFeed, user, password)
95-
DockerComposePull([composeFile])
96-
DockerImageTools.DockerLogout(sourceFeed)
97+
DockerImageTools.DockerLogin(sourceFeed, user, password, dryRun)
98+
DockerComposePull([composeFile], dryRun)
99+
DockerImageTools.DockerLogout(sourceFeed, dryRun)
97100

98-
DockerImageTools.DockerLogin(targetFeed, user, password)
101+
DockerImageTools.DockerLogin(targetFeed, user, password, dryRun)
99102
for tag in targetTags:
100103
PublishDockerImagesWithNewTag(composeFile, tag, sourceFeed, targetFeed, dryRun)
101-
DockerImageTools.DockerLogout(targetFeed)
104+
DockerImageTools.DockerLogout(targetFeed, dryRun)
102105

103106
def PublishDockerImagesWithNewTag(composeFile, newTag, sourceRepository= "", targetRepository="", dryRun=False):
104107
dockerComposeMap = YamlTools.GetYamlData([composeFile])
@@ -107,7 +110,7 @@ def PublishDockerImagesWithNewTag(composeFile, newTag, sourceRepository= "", tar
107110
tagIndex = sourceImage.rfind(':')
108111
targetImage = sourceImage[:tagIndex+1] + str(newTag)
109112
if(len(sourceRepository) > 0 and len(targetRepository) > 0):
110-
targetImage = targetImage.replace(sourceRepository, targetRepository)
113+
targetImage = targetImage.replace(sourceRepository, targetRepository, 1)
111114
if(dryRun):
112115
print("Would have tagged image {} as {}".format(sourceImage, targetImage))
113116
print("Would have pushed image {}".format(targetImage))

DockerBuildSystem/DockerImageTools.py

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -99,16 +99,22 @@ def GetLogsFromContainer(containerName):
9999
logs = str(TerminalTools.ExecuteTerminalCommandAndGetOutput(terminalCommand, includeErrorOutput=True).decode("utf-8"))
100100
return logs
101101

102-
def DockerLogin(server, userName, password):
103-
terminalCommand = 'docker login {0} -u {1} -p {2}'.format(server, userName, password)
104-
TerminalTools.ExecuteTerminalCommands(
105-
terminalCommands=[terminalCommand],
106-
raiseExceptionWithErrorCode=True,
107-
printCommand=False)
108-
109-
def DockerLogout(server):
110-
terminalCommand = 'docker logout {0}'.format(server)
111-
TerminalTools.ExecuteTerminalCommands(
112-
terminalCommands=[terminalCommand],
113-
raiseExceptionWithErrorCode=True,
114-
printCommand=False)
102+
def DockerLogin(server, userName, password, dryRun=False):
103+
if(dryRun):
104+
print("Would have logged in to {0} with user {1}".format(server, userName))
105+
else:
106+
terminalCommand = 'docker login {0} -u {1} -p {2}'.format(server, userName, password)
107+
TerminalTools.ExecuteTerminalCommands(
108+
terminalCommands=[terminalCommand],
109+
raiseExceptionWithErrorCode=True,
110+
printCommand=False)
111+
112+
def DockerLogout(server, dryRun=False):
113+
if(dryRun):
114+
print("Would have logged out of {0}".format(server))
115+
else:
116+
terminalCommand = 'docker logout {0}'.format(server)
117+
TerminalTools.ExecuteTerminalCommands(
118+
terminalCommands=[terminalCommand],
119+
raiseExceptionWithErrorCode=True,
120+
printCommand=False)

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ VersionTools.ExportVersionFromChangelogToEnvironment("path_to/CHANGELOG.md", "ve
7070
- targetFeed - the feed you want to push to
7171
- user - used for authenticating to sourceFeed and targetFeed
7272
- password - used for authenticating to sourceFeed and targetFeed
73-
- dryRun - boolean. True if you want to do a dryRun, i.e. print what would have happened)
73+
- dryRun - boolean. True if you want to do a dryRun, i.e. print what would have happened
7474

7575
Please have a look at an example of use here:
7676
- https://github.com/DIPSAS/DockerBuildSystem/tree/master/example

0 commit comments

Comments
 (0)