At artifactz.io, we developed a solution to track software versions in complex pipelines and ensure stable versions of Java artifacts are used in resulting products. We needed a way to persist artifact versions and link them with the system state, so we created a separate SaaS offering that supports a variety of different tools.
Using artifactz.io to control artifact versions provides many benefits. Here are two use cases where artifactz.io can help you be more efficient:
Suppose you want to run integration tests that include other product images built in the same way. Which image versions should the integration test stack use? Using the latest image tag is not the best practice, but you can associate a specific version of the Docker Image with each testing or production stage in artifactz.io. This way, you have full control over what gets deployed by the testing pipeline.
For a complex Java product that has several dependencies, how can you ensure the correct versions of these dependencies are used? Declare a specific stage and associate the library version with it in artifactz.io. Then use the gradle plugin to automatically resolve dependencies during build or assembly.
Artifact - the Docker Image or Java Library whose versions are tracked by artifactz.io.
Stage - the state of the system associated with the specific phase of its lifecycle, such as Development, User Acceptance Testing, or Production.
Flow - the sequence of stages through which an artifact travels during its lifecycle. If an Artifact is linked to the flow, a new version can only be added to the first stage of the flow. After that, the version can only be pushed through the flow.