Samsung / Universum

Universum project is a Python solution that simplifies SW project verification by integrating existing CI systems and provides additional functionality for CI.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Connect step artifact collecting with corresponding steps

k-dovgan opened this issue · comments

Related issues: #295, #168, #66

Current artifact processing process goes like this:

  1. In config preprocessing (before build steps execution) all artifacts, mentioned in all steps, are collected into one big list
    1a. All 'report_artifacts' are also collected to a separate list
  2. All artifacts are checked to be absent before build
  3. After build steps execution all artifacts from list are collected and reported. This process is completely detached from configuration steps, that initially contained references to artifacts.

How can the situation be improved:

  • Collect and report each artifact in the end of corresponding step, only if step was executed?
  • Check artifact presence right before step execution?
  • Provide mechanism to add more than one artifact (or artifact glob) per step, while maintaining backward compatibility?

What difficulties are expected while implementing following improvements:

  • Universum built-in artifacts are not attached to any step, but should be processed anyway
  • Some artifacts may be created by previous steps while edited by a step they are announced in
  • Trying to report artifacts while executing configuration steps might significantly affect project architecture and exception handling mechanisms

Check artifact presence right before step execution?

In my opinion, we should not do it as the only option. Possible implementations:

  1. leave as is - check all artifacts before all steps
  2. new behavior - check artifacts of the step before this particular step
  3. allow user to select the checking method, by default work as it is now

The issues with always checking artifacts before each step are the following:

  1. The build failure due to artifacts presence is postponed to the step execution. Checking artifacts beforehand can save some time.
  2. There are cases when artifacts are created by one step and then changed by another. Regardless of what step will be configured with these artifacts, the result would that either the check for presence will lead to failure or that artifacts would be collected prematurely.