Skip to content

Latest commit

 

History

History
274 lines (226 loc) · 12.5 KB

EiffelArtifactCreatedEvent.md

File metadata and controls

274 lines (226 loc) · 12.5 KB

EiffelArtifactCreatedEvent (ArtC)

The EiffelArtifactCreatedEvent declares that a software artifact has been created, what its coordinates are, what it contains and how it was created.

Data Members

data.gav

Type: Object
Required: Yes
Description: The GAV of the created artifact.

data.gav.groupId

Type: String
Required: Yes
Description: The groupId of the created artifact.

data.gav.artifactId

Type: String
Required: Yes
Description: The artifactId of the created artifact.

data.gav.version

Type: String
Required: Yes
Description: The version of the created artifact.

data.fileInformation

Type: Object[]
Required: No
Description: A list of the artifact file contents, following the standard established by Apache Maven.

data.fileInformation.classifier

Type: String
Required: Yes
Description: The classifier of the file within the artifact. If none, an empty string shall be used.

data.fileInformation.extension

Type: String
Required: Yes
Description: The extension of the file within the artifact. If none, an empty string shall be used.

data.buildCommand

Type: String
Required: No
Description: The command used to build the artifact within the identified environment. Used for reproducability purposes.

data.requiresImplementation

Type: String
Required: No
Legal values: NONE, ANY, EXACTLY_ONE, AT_LEAST_ONE
Description: Defines whether this artifact requires an implementing artifact. This is typically used for interfaces requiring some backend implementation, although the interface does not presume to define which implementation. Implicitly interpreted as "ANY" if undefined.
NONE signifies that there SHALL no implementations of this artifact. In other words, a composition containing another artifact identifying it in data.implements would be illegal.
ANY signifies that there may or may not be implementations of this artifact.
EXACTLY_ONE signifies that a legal composition must contain one and only one implementation of this artifact.
AT_LEAST_ONE signifies that a legal composition must contain one or more implementations of this artifact.

data.implements

Type: Object[]
Required: No
Description: An array of GAVs this artifact implements. The typical use case of this is to identify interfaces implemented by this artifact.

data.implements.groupId

Type: String
Required: Yes
Description: The groupId of the implemented artifact.

data.implements.artifactId

Type: String
Required: Yes
Description: The artifactId of the implemented artifact.

data.implements.version

Type: String
Required: Yes
Description: The version of the implemented artifact. Note that version range notation is supported.

data.dependsOn

Type: Object[]
Required: No
Description: An array of GAVs this artifact depends on.

data.dependsOn.groupId

Type: String
Required: Yes
Description: The groupId of the dependency.

data.dependsOn.artifactId

Type: String
Required: Yes
Description: The artifactId of the dependency.

data.dependsOn.version

Type: String
Required: Yes
Description: The version of the dependency. Note that version range notation is supported.

data.name

Type: String
Required: No
Description: Any (colloquial) name of the artifact. Unlike data.gav, this is not intended as an unambiguous identifier of the artifact, but as a descriptive and human readable name.

Links

COMPOSITION

Required: No
Legal targets: EiffelCompositionDefinedEvent
Multiple allowed: No
Description: Identifies the composition from which this artifact was built.

ENVIRONMENT

Required: No
Legal targets: EiffelEnvironmentDefinedEvent
Multiple allowed: No
Description: Identifies the environment in which this artifact was built.

PREVIOUS_VERSION

Required: No
Legal targets: EiffelArtifactCreatedEvent
Multiple allowed: Yes
Description: Identifies a latest previous version (there may be more than one in case of merges) of the artifact the event represents.

CAUSE

Required: No
Legal targets: Any
Multiple allowed: Yes
Description: Identifies a cause of the event occurring. SHOULD not be used in conjunction with CONTEXT: individual events providing CAUSE within a larger context gives rise to ambiguity. It is instead recommended to let the root event of the context declare CAUSE.

CONTEXT

Required: No
Legal targets: EiffelActivityTriggeredEvent, EiffelTestSuiteStartedEvent
Multiple allowed: No
Description: Identifies the activity or test suite of which this event constitutes a part.

FLOW_CONTEXT

Required: No
Legal targets: EiffelFlowContextDefinedEvent
Multiple allowed: Yes
Description: Identifies the flow context of the event: which is the continuous integration and delivery flow in which this occurred – e.g. which product, project, track or version this is applicable to.

Meta Members

meta.id

Type: String
Format: UUID
Required: Yes
Description: The unique identity of the event, generated at event creation.

meta.type

Type: String
Format: An event type name
Required: Yes
Description: The type of event. This field is required by the recipient of the event, as each event type has a specific meaning and a specific set of members in the data and links objects.

meta.version

Type: String
Format: Semantic Versioning 2.0.0
Required: Yes
Description: The version of the event type. This field is required by the recipient of the event to interpret the contents. Please see Versioning for more information.

meta.time

Type: Integer
Format: Milliseconds since epoch.
Required: Yes
Description: The event creation timestamp.

meta.tags

Type: String[]
Format: Free text
Required: No
Description: Any tags or keywords associated with the events, for searchability purposes.

meta.source

Type: Object
Format:
Required: No
Description: A description of the source of the event. This object is primarily for traceability purposes, and while optional, some form of identification of the source is HIGHLY RECOMMENDED. It offers multiple methods of identifying the source of the event, techniques which may be select from based on the technology domain and needs in any particular use case.

meta.source.domainId

Type: String
Format: Free text
Required: No
Description: Identifies the domain that produced an event. A domain is an infrastructure topological concept, which may or may not corresponds to an organization or product structures. A good example would be Java packages notation, ex. com.mycompany.product.component or mycompany.site.division. Also, keep in mind that all names are more or less prone to change. Particularly, it is recommended to avoid organizational names or site names, as organizations tend to be volatile and development is easily relocated. Relatively speaking, product and component names tend to be more stable and are therefore encouraged, while code names may be an option. You need to decide what is the most sensible option in your case.

meta.source.host

Type: String
Format: Hostname
Required: No
Description: The hostname of the event sender.

meta.source.name

Type: String
Format: Free text
Required: No
Description: The name of the event sender.

meta.source.serializer

Type: Object
Format:
Required: No
Description: The GAV coordinates of the serializer software used to construct the event.

meta.source.serializer.groupId

Type: String
Format: groupId
Required: Yes
Description: The groupId of the serializer software.

meta.source.serializer.artifactId

Type: String
Format: artifactId
Required: Yes
Description: The artifactId of the serializer software.

meta.source.serializer.version

Type: String
Format: version
Required: Yes
Description: The version of the serializer software.

meta.source.uri

Type: String
Format: URI
Required: No
Description: The URI of, related to or describing the event sender.

meta.security

Type: Object
Format:
Required: No
Description: An optional object for enclosing security related information, particularly supporting data integrity. See Security for further information.

meta.security.sdm

Type: Object
Format:
Required: No
Description: An optional object for properties supporting the Strong Distribution Model. Note that this only addressed the integrity of the Eiffel event, not its confidentiality or availability.

meta.security.sdm.authorIdentity

Type: String
Format:
Required: Yes
Description: The identity of the author of the event. This property is intended to enable the recipient to look up the appropriate public key for decrypting the digest and thereby verifying author identity and data integrity. The format of the author identity varies depending on the key infrastructure solution used. Note that this requires the presence of a Trusted Authority (TA) which the recipient can query for the correct public key. The identity and location of the TA must never be included in the event itself, as this would compromise the security of the solution.

meta.security.sdm.encryptedDigest

Type: String
Format:
Required: Yes
Description: The encrypted digest. The cryptographic hash function and the decryption algorithm to use, similarly to the Trusted Authority (TA), must be known to the recipient. Note that the digest of the entire event is affected by the value of this property. For this reason the input to the hash function SHALL be the entire event unaltered in all parts except for this property, which SHALL be replaced by an empty string.

Version History

Version Introduced in Changes
1.1.0 edition-toulouse Multiple links of type FLOW_CONTEXT allowed.
1.0.0 edition-bordeaux Initial version.

Examples