mirror of
https://github.com/EpicMorg/docker-scripts.git
synced 2025-06-20 09:52:06 +03:00
updated kaniko wrapper; fixed ssl
This commit is contained in:
parent
1e31bdbb06
commit
3a1e4fa96a
bin/kaniko
linux/advanced
mattermost
nextcloud
patched
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
latest
pure
python
develop
2.7
3.10
3.11
3.12
3.13
3.6
3.7
3.8
3.9
main
sentry/latest
teamcity/server
vscode-server
amxx
android
cpp
devops
docker
dotnet-full
dotnet
latest
mono
zabbix
3.0
agent
java-gateway
proxy-mysql
proxy-sqlite3
server-mysql
server-pgsql
snmptraps
web-mysql
web-pgsql
4.0
agent
java-gateway
proxy-mysql
proxy-sqlite3
server-mysql
server-pgsql
snmptraps
web-mysql
web-pgsql
5.0
agent
agent2
java-gateway
proxy-mysql
proxy-sqlite3
server-mysql
server-pgsql
snmptraps
web-mysql
web-pgsql
5.2
agent
agent2
java-gateway
proxy-mysql
proxy-sqlite3
server-mysql
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -10,7 +10,7 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Script version
|
# Script version
|
||||||
SCRIPT_VERSION = "1.0.0.1"
|
SCRIPT_VERSION = "1.0.1.0"
|
||||||
|
|
||||||
# ASCII art for EpicMorg
|
# ASCII art for EpicMorg
|
||||||
ASCII_ART = r"""
|
ASCII_ART = r"""
|
||||||
@ -107,6 +107,7 @@ def build_with_kaniko(service_name, build_context, dockerfile, image_name, build
|
|||||||
for line in process.stderr:
|
for line in process.stderr:
|
||||||
logging.error(line.strip())
|
logging.error(line.strip())
|
||||||
logging.error(f"Error building {service_name}")
|
logging.error(f"Error building {service_name}")
|
||||||
|
raise Exception(f"Failed to build {service_name}")
|
||||||
|
|
||||||
def show_help():
|
def show_help():
|
||||||
print(ASCII_ART)
|
print(ASCII_ART)
|
||||||
@ -166,29 +167,30 @@ def main():
|
|||||||
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
logging.error(f"Error: Image name {image_name} is used {count} times.")
|
||||||
return
|
return
|
||||||
|
|
||||||
with ThreadPoolExecutor() as executor:
|
try:
|
||||||
futures = []
|
with ThreadPoolExecutor() as executor:
|
||||||
for service_name, service_data in services.items():
|
futures = []
|
||||||
build_data = service_data.get('build', {})
|
for service_name, service_data in services.items():
|
||||||
build_context = build_data.get('context', '.')
|
build_data = service_data.get('build', {})
|
||||||
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
build_context = build_data.get('context', '.')
|
||||||
image_name = service_data.get('image')
|
dockerfile = build_data.get('dockerfile', 'Dockerfile')
|
||||||
build_args = build_data.get('args', {})
|
image_name = service_data.get('image')
|
||||||
|
build_args = build_data.get('args', {})
|
||||||
|
|
||||||
# Substitute environment variables with their values if they exist
|
# Substitute environment variables with their values if they exist
|
||||||
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
build_args = {key: os.getenv(key, value) for key, value in build_args.items()}
|
||||||
|
|
||||||
if not image_name:
|
if not image_name:
|
||||||
logging.warning(f"No image specified for service {service_name}")
|
logging.warning(f"No image specified for service {service_name}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
futures.append(executor.submit(build_with_kaniko, service_name, build_context, dockerfile, image_name, build_args, kaniko_image, deploy, dry))
|
||||||
|
|
||||||
for future in as_completed(futures):
|
for future in as_completed(futures):
|
||||||
try:
|
|
||||||
future.result()
|
future.result()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logging.error(f"Generated an exception: {exc}")
|
logging.error(f"Build failed: {exc}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user