Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added all events slated for Drop 1 and updated README with links. #3

Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,11 @@ __IMPORTANT NOTICE:__ The contents of this repository currectly reflect a __DRAF
1. The Eiffel Vocabulary
1. [EiffelActivityQueuedEvent](./eiffel-vocabulary/EiffelActivityQueuedEvent.md)
1. [EiffelActivityDequeuedEvent](./eiffel-vocabulary/EiffelActivityDequeuedEvent.md)
1. EiffelActivityStartedEvent
1. EiffelActivityFinished
1. EiffelArtifactCreatedEvent
1. EiffelConfidenceLevelModifiedEvent
1. EiffelArtifactPublishedEvent
1. [EiffelActivityStartedEvent](./eiffel-vocabulary/EiffelActivityStartedEvent.md)
1. [EiffelActivityFinished](./eiffel-vocabulary/EiffelActivityFinished.md)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

EiffelActivityFinished -> EiffelActivityFinishedEvent
EiffelActivityFinished.md -> EiffelActivityFinishedEvent.md

1. [EiffelArtifactCreatedEvent](./eiffel-vocabulary/EiffelArtifactCreatedEvent.md)
1. [EiffelArtifactPublishedEvent](./eiffel-vocabulary/EiffelArtifactPublishedEvent.md)
1. [EiffelConfidenceLevelModifiedEvent](./eiffel-vocabulary/EiffelConfidenceLevelModifiedEvent.md)
1. EiffelDocumentationCreatedEvent
1. EiffelEnvironmentDefinedEvent
1. EiffelCompositionDefinedEvent
Expand Down
40 changes: 40 additions & 0 deletions eiffel-vocabulary/EiffelActivityFinishedEvent.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# EiffelActivityFinishedEvent
The EiffelActivityFinishedEvent declares that a previously queued activity (declared by [EiffelActivityQueuedEvent](./EiffelActivityQueuedEvent.md)) has finished.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This indicates that one could skip the started event which is not wanted behavior since we have the dequeued event for that case. Suggest to remove "previously queued" or change to "previously started".


## Data Members
### data.outcome
__Type:__ Object
__Required:__ Yes
__Description:__ The outcome of the activity.

#### data.outcome.verdict
__Type:__ String
__Required:__ Yes
__Legal values:__ SUCCESS, ???, ????, ABORTED, TIMEOUT, INCONCLUSIVE
__Description:__ A terse standardized verdict of the activity, designed to be machine readable.
SUCCESS signifies that the activity was concluded and the outcome matched expectations.
??? signifies that the activity was concluded, but the outcome did not match expectations. To exemplify, a compilation job was successfully invoked, but compilation failed.
???? signifies that the activity could not be successfully executed. To exemplify, a compilation could not be invoked, e.g. due to misconfiguration or environment issues.
ABORTED signifies that the activity was aborted before it could be concluded.
TIMEOUT signifies that the activity did not conclude within the allowed time frame.
INCONCLUSIVE signifies that the outcome of the activity could not be determined.

#### data.outcome.description
__Type:__ String
__Required:__ No
__Description:__ A verbose description of the activity outcome, designed to provide human readers with further information.

### data.persistentLogs
__Type:__ Object[]
__Required:__ No
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have an inconsistency here on required... top object no, child object yes. Maybe intentional?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Intentional. The intent is: the object is optional, but if it's present, then the child may or may not be required. So it's a conditional Required if, you will.

I thought about it when typing it, realizing it might not be quite obvious :) Any suggestions?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As I pointed on schemas... JsonSchema's ability to process this I am validating right now... logic is clear and not-insensible as I pointed in my comments over there... it is just a matter of confirming if we can implement this in some meaningful way.

__Description:__ An array of persistent log files generated during execution.

#### data.persistentLogs.name
__Type:__ String
__Required:__ Yes
__Description:__ The name of the log file.

#### data.persistentLogs.uri
__Type:__ String
__Required:__ Yes
__Description:__ The URI at which the log can be retrieved.
9 changes: 7 additions & 2 deletions eiffel-vocabulary/EiffelActivityQueuedEvent.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,13 @@ __Description:__ The circumstances triggering the activity.
#### data.trigger.type
__Type:__ String
__Required:__ Yes
__Legal values:__ MANUAL, EIFFEL_EVENT, REBUILD, SOURCE_CHANGE, TIMER, OTHER
__Description:__ The type of trigger.
__Legal values:__ MANUAL, EIFFEL_EVENT, SOURCE_CHANGE, TIMER, OTHER
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A question here; what about the activities that are queued due to multiple different types of triggers? (This could happen if a job is not allowed to run concurrently and put into queue and mergeable queue is used - sorry for thinking in Jenkins terms.)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Arguably something of a corner case, but a fair point. I don't see any reason to not make trigger an array.

__Description:__ The type of trigger.
MANUAL signifies that the activity was manually triggered.
EIFFEL_EVENT signifies that the activity was triggered by one or more Eiffel events. These events should be represented in __links.causes__.
SOURCE_CHANGE signifies that the activity was triggered as a consequence of a detected source change __not__ represented by Eiffel events.
TIMER signifies that the activity was triggered by a timer.
OTHER signifies any other triggering cause.

#### data.trigger.description
__Type:__ String
Expand Down
23 changes: 23 additions & 0 deletions eiffel-vocabulary/EiffelActivityStartedEvent.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# EiffelActivityStartedEvent
The EiffelActivityStartedEvent declares that a previously queued activity (declared by [EiffelActivityQueuedEvent](./EiffelActivityQueuedEvent.md)) has started.

## Data Members
### data.executionUri
__Type:__ String
__Required:__ No
__Description:__ Any URI at which further information about the execution may be found; a typical use case is to link a CI server job execution page.

### data.liveLogs
__Type:__ Object[]
__Required:__ No
__Description:__ An array of live log files available during execution. These shall not be presumed to be stored persistently; in other words, once the activity has finished there is no guarantee that these links are valid. Persistently stored logs shall be (re-)declared by [EiffelActivityFinishedEvent](./EiffelActivityFinishedEvent.md).

#### data.liveLogs.name
__Type:__ String
__Required:__ Yes
__Description:__ The name of the log file.

#### data.liveLogs.uri
__Type:__ String
__Required:__ Yes
__Description:__ The URI at which the log can be retrieved.
44 changes: 44 additions & 0 deletions eiffel-vocabulary/EiffelArtifactCreatedEvent.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# EiffelArtifactCreatedEvent
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](https://maven.apache.org/guides/mini/guide-naming-conventions.html) 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](https://maven.apache.org/pom.html).

#### 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.

23 changes: 23 additions & 0 deletions eiffel-vocabulary/EiffelArtifactPublishedEvent.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# EiffelArtifactPublishedEvent
The EiffelArtifactPublishedEvent declares that a software artifact (declared by [EiffelArtifactCreatedEvent](./EiffelArtifactCreatedEvent.md)) has been published and is consequently available for retrieval at one or more locations.

## Data Members
### data.locations
__Type:__ Object[]
__Required:__ Yes
__Description:__ A list of locations at which the artifact may be retrieved.

#### data.locations.type
__Type:__ String
__Required:__ Yes
__Legal values:__ ARTIFACTORY, NEXUS, PLAIN, OTHER
__Description:__ The type of location. May be used by (automated) readers to understand the method of retrieval, particularly with regards to authentication.
ARTIFACTORY signifies an [Artifactory](https://www.jfrog.com/artifactory/)
NEXUS signifies a [Nexus](http://www.sonatype.org/nexus/)
PLAIN signifies a plain HTTP GET request.
OTHER signifies other methods of retrieval. Note that using this type likely requires some foreknowledge on part of the reader in order to fetch the artifact.

#### data.locations.uri
__Type:__ String
__Required:__ Yes
__Description:__ The URI at which the artifact can be retrieved.
44 changes: 44 additions & 0 deletions eiffel-vocabulary/EiffelConfidenceLevelModifiedEvent.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# EiffelConfidenceLevelModifiedEvent
The EiffelConfidenceLevelModifiedEvent declares that an entity has achieved (or failed to achieve) a certain level of confidence, or in a broader sense to tag it. This is particularly useful for promoting various engineering artifacts, such as product revisions, through the continuous integration and delivery pipelin.
Copy link
Member

@fdegir fdegir May 5, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The last part of the first sentence "or in a broader sense to tag it" could be improved.

Also a typo at the end of the paragraph: pipelin -> pipeline


Confidence levels may operate at high or low levels of abstraction - ranging from "smokeTestsOk" to "releasable" or "released" - and they may group other confidence levels of lower abstraction levels. They may also be general or very niched, e.g. "releasable" or "reseabableToCustomerX". Confidence levels frequently figure in automated delivery interfaces within a tiered system context: lower level tiers issue an agreed confidence level signaling that a new version is ready for integration in a higher level tier.

## Data Members
### data.name
__Type:__ String
__Required:__ Yes
__Description:__ The name of the confidence level. It is recommended for confidence level names to conform with camelCase formatting, in line with the format of key names of the Eiffel protocol as a whole.

### data.value
__Type:__ String
__Required:__ Yes
__Legal values:__ SUCCESS, FAILURE, INCONCLUSIVE
__Description:__ The value of the confidence level.
SUCCESS signifies that the confidence level has been successfully achieved.
FAILURE signifies that the confidence level could not be achieved.
INCONCLUSIVE signifies that achievement of the confidence level could not be determined.

### data.issuer
__Type:__ Object
__Required:__ No
__Description:__ The individual or entity issuing the confidence level.

#### data.issuer.name
__Type:__ String
__Required:__ No
__Description:__ The name of the issuer.

#### data.issuer.email
__Type:__ String
__Required:__ No
__Description:__ The e-mail address of the issuer.

#### data.issuer.id
__Type:__ String
__Required:__ No
__Description:__ Any identity, alias or handle of the issuer, such as a corporate id or username.

#### data.issuer.group
__Type:__ String
__Required:__ No
__Description:__ Any group, such as a development team, committee or test group, to which the issuer belongs.