Module gcip.core.workflow

This module represents the Gitlab CI workflow keyword.

The workflow keyword is used to control when pipelines are created. It supports rules (a list of Rule objects), name (name of the workflow pipeline), and auto_cancel (controls auto-cancel behavior for redundant pipelines).

Example

from gcip.core.workflow import Workflow from gcip.core.rule import Rule

workflow = Workflow( rules=[Rule(if_statement='$CI_COMMIT_BRANCH == "main"')], name="main-workflow", auto_cancel="enabled" )

Classes

class AutoCancelOnJobFailure (*args, **kwds)
Expand source code
class AutoCancelOnJobFailure(Enum):
    ALL = "all"
    NONE = "none"

Create a collection of name/value pairs.

Example enumeration:

>>> class Color(Enum):
...     RED = 1
...     BLUE = 2
...     GREEN = 3

Access them by:

  • attribute access::
>>> Color.RED
<Color.RED: 1>
  • value lookup:
>>> Color(1)
<Color.RED: 1>
  • name lookup:
>>> Color['RED']
<Color.RED: 1>

Enumerations can be iterated over, and know how many members they have:

>>> len(Color)
3
>>> list(Color)
[<Color.RED: 1>, <Color.BLUE: 2>, <Color.GREEN: 3>]

Methods can be added to enumerations, and members can have their own attributes – see the documentation for details.

Ancestors

  • enum.Enum

Class variables

var ALL
var NONE
class AutoCancelOnNewCommit (*args, **kwds)
Expand source code
class AutoCancelOnNewCommit(Enum):
    CONSERVATIVE = "conservative"
    INTERRUPTIBLE = "interruptible"
    NONE = "none"

Create a collection of name/value pairs.

Example enumeration:

>>> class Color(Enum):
...     RED = 1
...     BLUE = 2
...     GREEN = 3

Access them by:

  • attribute access::
>>> Color.RED
<Color.RED: 1>
  • value lookup:
>>> Color(1)
<Color.RED: 1>
  • name lookup:
>>> Color['RED']
<Color.RED: 1>

Enumerations can be iterated over, and know how many members they have:

>>> len(Color)
3
>>> list(Color)
[<Color.RED: 1>, <Color.BLUE: 2>, <Color.GREEN: 3>]

Methods can be added to enumerations, and members can have their own attributes – see the documentation for details.

Ancestors

  • enum.Enum

Class variables

var CONSERVATIVE
var INTERRUPTIBLE
var NONE
class Workflow (name: Optional[str] = None,
auto_cancel_on_new_commit: Optional[AutoCancelOnNewCommit] = None,
auto_cancel_on_job_failure: Optional[AutoCancelOnJobFailure] = None)
Expand source code
class Workflow:
    """This class represents the Gitlab CI [workflow](https://docs.gitlab.com/ee/ci/yaml/#workflow) keyword.

    Args:
        name (Optional[str]): Name of the workflow pipeline. Defaults to None.
        auto_cancel (Optional[AutoCancel]): Controls auto-cancel behavior for redundant pipelines. Defaults to None.
    """

    def __init__(
        self,
        name: Optional[str] = None,
        auto_cancel_on_new_commit: Optional[AutoCancelOnNewCommit] = None,
        auto_cancel_on_job_failure: Optional[AutoCancelOnJobFailure] = None,
    ) -> None:
        self._name = name
        self._auto_cancel_on_new_commit = auto_cancel_on_new_commit
        self._auto_cancel_on_job_failure = auto_cancel_on_job_failure

    @property
    def name(self) -> Optional[str]:
        return self._name

    @property
    def auto_cancel_on_new_commit(self) -> Optional[AutoCancelOnNewCommit]:
        return self._auto_cancel_on_new_commit

    @property
    def auto_cancel_on_job_failure(self) -> Optional[AutoCancelOnJobFailure]:
        return self._auto_cancel_on_job_failure

    def render(self) -> Dict[str, Any]:
        """Return a representation of this Workflow object as a dictionary for YAML serialization."""
        rendered: Dict[str, Any] = {}
        if self._name is not None:
            rendered["name"] = self._name
        if (
            self._auto_cancel_on_new_commit is not None
            or self._auto_cancel_on_job_failure is not None
        ):
            rendered["auto_cancel"] = {}
        if self._auto_cancel_on_new_commit is not None:
            rendered["auto_cancel"]["on_new_commit"] = (
                self._auto_cancel_on_new_commit.value
            )
        if self._auto_cancel_on_job_failure is not None:
            rendered["auto_cancel"]["on_job_failure"] = (
                self._auto_cancel_on_job_failure.value
            )
        return rendered

This class represents the Gitlab CI workflow keyword.

Args

name : Optional[str]
Name of the workflow pipeline. Defaults to None.
auto_cancel : Optional[AutoCancel]
Controls auto-cancel behavior for redundant pipelines. Defaults to None.

Instance variables

prop auto_cancel_on_job_failure : Optional[AutoCancelOnJobFailure]
Expand source code
@property
def auto_cancel_on_job_failure(self) -> Optional[AutoCancelOnJobFailure]:
    return self._auto_cancel_on_job_failure
prop auto_cancel_on_new_commit : Optional[AutoCancelOnNewCommit]
Expand source code
@property
def auto_cancel_on_new_commit(self) -> Optional[AutoCancelOnNewCommit]:
    return self._auto_cancel_on_new_commit
prop name : Optional[str]
Expand source code
@property
def name(self) -> Optional[str]:
    return self._name

Methods

def render(self) ‑> Dict[str, Any]
Expand source code
def render(self) -> Dict[str, Any]:
    """Return a representation of this Workflow object as a dictionary for YAML serialization."""
    rendered: Dict[str, Any] = {}
    if self._name is not None:
        rendered["name"] = self._name
    if (
        self._auto_cancel_on_new_commit is not None
        or self._auto_cancel_on_job_failure is not None
    ):
        rendered["auto_cancel"] = {}
    if self._auto_cancel_on_new_commit is not None:
        rendered["auto_cancel"]["on_new_commit"] = (
            self._auto_cancel_on_new_commit.value
        )
    if self._auto_cancel_on_job_failure is not None:
        rendered["auto_cancel"]["on_job_failure"] = (
            self._auto_cancel_on_job_failure.value
        )
    return rendered

Return a representation of this Workflow object as a dictionary for YAML serialization.