Module ploigos_step_runner.step_implementers.tag_source.git
StepImplementer
for the tag-source
step using Git.
Step Configuration
Step configuration expected as input to this step. Could come from: * static configuration * runtime configuration * previous step results
Configuration Key | Required? | Default | Description |
---|---|---|---|
version |
No | latest |
Semantic version to use as Git tag. |
git-repo-root |
Yes | ./ |
Directory path to the Git repository to perform git operations on. |
repo-root |
No | Alias for git-repo-root . |
|
git-url |
No | Git repo root configured origin url | URL to Git repository to perform Git operations on. If not given will use Git remote url set in given Git repository root. |
url |
No | Alias for git-url . |
|
git-username |
No | Git username to use when connecting with Git remote. Will override username in given git url. Will override username in Git url in Git repository root remote url. Will be ignored if Git repository url is using SSH. | |
git-password |
No | Git password to use when connecting with Git remote. Will override password in given git url. Will override password in Git url in Git repository root remote url. Will be ignored if Git repository url is using SSH. |
Result Artifacts
Results artifacts output by this step.
Result Artifact Key | Description |
---|---|
tag |
This is the value that was used to tag the source. |
Global variables
var DEFAULT_CONFIG
-
Note
Some required fields inherited from GitMixin (see
_required_config_or_result_keys
)
Classes
class Git (workflow_result, parent_work_dir_path, config, environment=None)
-
StepImplementer for the tag-source step for Git.
Note
This makes extensive use of the python sh library. This was a deliberate choice, as the gitpython library doesn't appear to easily support username/password auth for http and https git repos, and that is a desired use case.
Expand source code
class Git(StepImplementer, GitMixin): """StepImplementer for the tag-source step for Git. Note ---- This makes extensive use of the python sh library. This was a deliberate choice, as the gitpython library doesn't appear to easily support username/password auth for http and https git repos, and that is a desired use case. """ @staticmethod def step_implementer_config_defaults(): """ Getter for the StepImplementer's configuration defaults. Notes ----- These are the lowest precedence configuration values. Returns ------- dict Default values to use for step configuration values. """ return {**GitMixin.step_implementer_config_defaults(), **DEFAULT_CONFIG} @staticmethod def _required_config_or_result_keys(): """Getter for step configuration or previous step result artifacts that are required before running this step. See Also -------- _validate_required_config_or_previous_step_result_artifact_keys Returns ------- array_list Array of configuration keys or previous step result artifacts that are required before running the step. """ return REQUIRED_CONFIG_OR_PREVIOUS_STEP_RESULT_ARTIFACT_KEYS + \ GitMixin._required_config_or_result_keys() def _run_step(self): """Runs the step implemented by this StepImplementer. Returns ------- StepResult Object containing the dictionary results of this step. """ step_result = StepResult.from_step_implementer(self) # get the tag tag = self.__get_tag_value() step_result.add_artifact( name='tag', value=tag ) # tag and push tags try: self.git_tag(tag) self.git_push_tags() except StepRunnerException as error: step_result.success = False step_result.message = f"Error tagging and pushing tags: {error}" return step_result def __get_tag_value(self): """Get the tag value to tag the Git repository with. Returns ------- str Value to use for the git tag. """ tag = self.get_value('version') if tag is None: tag = 'latest' print('No version found in metadata. Using latest') return tag
Ancestors
- StepImplementer
- abc.ABC
- GitMixin
Inherited members
StepImplementer
:config
create_working_dir_sub_dir
environment
get_config_value
get_copy_of_runtime_step_config
get_result_value
get_value
global_config_defaults
global_environment_config_defaults
has_config_value
run_step
step_config
step_config_overrides
step_environment_config
step_implementer_config_defaults
step_name
sub_step_implementer_name
sub_step_name
work_dir_path
workflow_result
write_working_file
GitMixin
: