Skip to content

Use purl to identify artifacts in EiffelArtifactCreatedEvent #182

@d-stahl-ericsson

Description

@d-stahl-ericsson

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    protocolAll protocol changesprotocol-incompatProtocol changes that aren't backwards compatible

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions