Module ploigos_step_runner.step_implementers.push_artifacts.maven_deploy
StepImplementer
for the package
step using Maven.
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 |
---|---|---|---|
pom-file |
Yes | 'pom.xml' |
pom used when executing maven. |
tls-verify |
No | True |
Disables TLS Verification if set to False |
maven-profiles |
No | [] |
List of maven profiles to use. |
maven-no-transfer-progress |
No | True |
True to suppress the transfer progress of packages maven downloads. |
False to have the transfer progress printed.
See https://maven.apache.org/ref/current/maven-embedder/cli.html |
|||
maven-additional-arguments |
No | ['-Dmaven.install.skip=true',
'-Dmaven.test.skip=true',
'-DskipTests',
'-DskipITs'] |
List of additional arguments to use.
Skipping tests by default because assuming
a previous step already ran them.
Skipping install backs assuming this is
running in an ephemeral environment where
that would be a waist of time, and also
that a previous step ran package
and push-artifacts steps. |
maven-servers |
No | Dictionary of dictionaries of id, username, password | |
maven-repositories |
No | Dictionary of dictionaries of id, url, snapshots, releases | |
maven-mirrors |
No | Dictionary of dictionaries of id, url, mirror_of | |
version |
Yes | version to push | |
maven-push-artifact-repo-url |
yes | id for the maven servers and mirrors | |
maven-push-artifact-repo-id |
Yes | url for the maven servers and mirrors |
Result Artifacts
Results artifacts output by this step.
Result Artifact Key | Description |
---|---|
push-artifacts |
An array of dictionaries with information on the pushed artifacts |
Classes
class MavenDeploy (workflow_result, parent_work_dir_path, config, environment=None)
-
StepImplementer
for thepush-artifacts
step using Maven.Expand source code
class MavenDeploy(MavenGeneric): """`StepImplementer` for the `push-artifacts` step using Maven. """ def __init__( # pylint: disable=too-many-arguments self, workflow_result, parent_work_dir_path, config, environment=None ): super().__init__( workflow_result=workflow_result, parent_work_dir_path=parent_work_dir_path, config=config, environment=environment, maven_phases_and_goals=['deploy'] ) @staticmethod def step_implementer_config_defaults(): """Getter for the StepImplementer's configuration defaults. Returns ------- dict Default values to use for step configuration values. Notes ----- These are the lowest precedence configuration values. """ return {**MavenGeneric.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 def _run_step(self): # pylint: disable=too-many-locals """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 config items maven_push_artifact_repo_id = self.get_value('maven-push-artifact-repo-id') maven_push_artifact_repo_url = self.get_value('maven-push-artifact-repo-url') version = self.get_value('version') # push the artifacts mvn_update_version_output_file_path = self.write_working_file('mvn_versions_set_output.txt') mvn_push_artifacts_output_file_path = self.write_working_file('mvn_deploy_output.txt') try: # update the version before pushing # NOTE 1: we know this is weird. But the version in the pom isn't necessarily # the version that was calculated as part of the release and so we need # to update that before doing the maven deploy so the maven deploy will # use the new version. # # NOTE 2: we tried doing this in the same command as the deploy, # but the pom was already loaded so even though the xml was updated # the deploy still used the old version, hence having to run this # first and independently. print("Update maven package version") run_maven( mvn_output_file_path=mvn_update_version_output_file_path, settings_file=self.maven_settings_file, pom_file=self.get_value('pom-file'), phases_and_goals=['versions:set'], additional_arguments=[ f'-DnewVersion={version}' ] ) # execute maven step (params come from config) print("Push packaged maven artifacts") self._run_maven_step( mvn_output_file_path=mvn_push_artifacts_output_file_path, step_implementer_additional_arguments=[ '-DaltDeploymentRepository=' \ f'{maven_push_artifact_repo_id}::default::{maven_push_artifact_repo_url}' ] ) except StepRunnerException as error: step_result.success = False step_result.message = "Error running 'maven deploy' to push artifacts. " \ f"More details maybe found in 'maven-output' report artifact: {error}" finally: step_result.add_artifact( description="Standard out and standard error from running maven to update version.", name='maven-update-version-output', value=mvn_update_version_output_file_path ) step_result.add_artifact( description="Standard out and standard error from running maven to " \ "push artifacts to repository.", name='maven-push-artifacts-output', value=mvn_push_artifacts_output_file_path ) return step_result
Ancestors
- MavenGeneric
- StepImplementer
- abc.ABC
Subclasses
Inherited members
MavenGeneric
: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
maven_phases_and_goals
maven_settings_file
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