-
Notifications
You must be signed in to change notification settings - Fork 61
Description
Description
EiffelArtifactCreatedEvent currently uses GAV to identify all artifacts, which is less than useful for non-Maven based artifacts. The purl project (https://github.com/package-url/purl-spec) aims to standardize package identification across tools. We could reuse that rather than trying to roll our own.
Motivation
Standardized tool-agnostic identification of artifacts.
Exemplification
EiffelArtifactCreatedEvent currently identifies artifacts like so:
"data": {
"gav": {
"groupId": "com.mycompany.myproduct",
"artifactId": "artifact-name",
"version": "2.1.7"
},
...
If the artifact is something other than a Maven artifact this is awkward. If it's a Docker image or a Ruby gem or something else, it would be much easier to identify it in some way that is truer to its "native" form. Using purl, this could look like:
"data": {
"purl": "pkg:docker/cassandra@sha256:244fd47e07d1004f0aed9c",
...
or
"data": {
"purl": "pkg:gem/[email protected]",
...
or, for that matter, in the original GAV example:
"data": {
"purl": "pkg:maven/com.mycompany.myproduct/[email protected]",
...
Presumably we should also drop data.fileInformation. The concept of classifier and extension doesn't make much sense if we cut the tight connection to Maven. Purl on the other hand allows identification of package internals in the identifier string, which is arguably a step up from current syntax.
Benefits
Standardized, more flexible and precise identification of packages.
Possible Drawbacks
Losing data.fileInformation.