Skip to content
This repository was archived by the owner on Aug 4, 2023. It is now read-only.

Commit 80d3cca

Browse files
extended pipeline with service definitions
1 parent 40d6a59 commit 80d3cca

File tree

4 files changed

+24
-6
lines changed

4 files changed

+24
-6
lines changed

.gitlab-ci.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
pipeline = Pipeline()
66
pipeline.initialize_image("python:3.9-slim")
7+
pipeline.add_service("docker:dind")
78

89
pipeline.add_children(
910
python.isort(),

gcip/addons/docker/jobs.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ def build(
4848
name="docker",
4949
namespace="build",
5050
script=f"docker build -t {_fq_image_name} {context}",
51-
)
51+
).add_variables(DOCKER_DRIVER="overlay2", DOCKER_TLS_CERTDIR="")
5252

5353

5454
def push(

gcip/core/pipeline.py

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from . import OrderedSetType
44
from .include import Include
55
from .job_sequence import JobSequence
6+
from .service import Service
67

78
__author__ = "Thomas Steinbach"
89
__copyright__ = "Copyright 2020 DB Systel GmbH"
@@ -28,6 +29,8 @@ def __init__(self, *, includes: Optional[Union[Include, List[Include]]] = None):
2829
.. _Gitlab CI Reference include:
2930
https://docs.gitlab.com/ee/ci/yaml/#include
3031
"""
32+
self._services: List[Service] = list()
33+
3134
if not includes:
3235
self._includes = []
3336
elif isinstance(includes, Include):
@@ -38,22 +41,30 @@ def __init__(self, *, includes: Optional[Union[Include, List[Include]]] = None):
3841
raise ValueError("Parameter include must of type gcip.Include or List[gcip.Include]")
3942
super().__init__()
4043

44+
def add_service(self, service: Union[str, Service]):
45+
if isinstance(service, str):
46+
service = Service(service)
47+
self._services.append(service)
48+
4149
def render(self) -> Dict[str, Any]:
4250
stages: OrderedSetType = {}
43-
pipline: Dict[str, Any] = {}
51+
pipeline: Dict[str, Any] = {}
4452
job_copies = self.populated_jobs
4553

4654
for job in job_copies:
4755
# use the keys of dictionary as ordered set
4856
stages[job.stage] = None
4957

5058
if self._includes:
51-
pipline["include"] = [include.render() for include in self._includes]
59+
pipeline["include"] = [include.render() for include in self._includes]
60+
61+
if self._services:
62+
pipeline["services"] = [service.render() for service in self._services]
5263

53-
pipline["stages"] = list(stages.keys())
64+
pipeline["stages"] = list(stages.keys())
5465
for job in job_copies:
55-
pipline[job.name] = job.render()
56-
return pipline
66+
pipeline[job.name] = job.render()
67+
return pipeline
5768

5869
def add_include(self, include: Include) -> None:
5970
self._includes.append(include)

gcip/core/service.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
class Service():
2+
def __init__(self, name: str):
3+
self._name = name
4+
5+
def render(self):
6+
return self._name

0 commit comments

Comments
 (0)