Skip to content

Commit 6ee6e4f

Browse files
t-perssonmagnusbaeckm-linner-ericsson
authored
Add a new event for deployed artifacts (#322)
Co-authored-by: Magnus Bäck <[email protected]> Co-authored-by: Mattias Linnér <[email protected]>
1 parent 423ca27 commit 6ee6e4f

File tree

15 files changed

+1784
-7
lines changed

15 files changed

+1784
-7
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ Visit [Eiffel Community](https://eiffel-community.github.io) to get started and
5555
1. [EiffelActivityStartedEvent (ActS)](./eiffel-vocabulary/EiffelActivityStartedEvent.md)
5656
1. [EiffelActivityFinishedEvent (ActF)](./eiffel-vocabulary/EiffelActivityFinishedEvent.md)
5757
1. [EiffelArtifactCreatedEvent (ArtC)](./eiffel-vocabulary/EiffelArtifactCreatedEvent.md)
58+
1. [EiffelArtifactDeployedEvent (ArtD)](./eiffel-vocabulary/EiffelArtifactDeployedEvent.md)
5859
1. [EiffelArtifactPublishedEvent (ArtP)](./eiffel-vocabulary/EiffelArtifactPublishedEvent.md)
5960
1. [EiffelArtifactReusedEvent (ArtR)](./eiffel-vocabulary/EiffelArtifactReusedEvent.md)
6061
1. [EiffelConfidenceLevelModifiedEvent (CLM)](./eiffel-vocabulary/EiffelConfidenceLevelModifiedEvent.md)
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
# Copyright 2022 Axis Communications AB.
2+
# For a full list of individual contributors, please see the commit history.
3+
#
4+
# Licensed under the Apache License, Version 2.0 (the "License");
5+
# you may not use this file except in compliance with the License.
6+
# You may obtain a copy of the License at
7+
#
8+
# http://www.apache.org/licenses/LICENSE-2.0
9+
#
10+
# Unless required by applicable law or agreed to in writing, software
11+
# distributed under the License is distributed on an "AS IS" BASIS,
12+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
# See the License for the specific language governing permissions and
14+
# limitations under the License.
15+
---
16+
$schema: http://json-schema.org/draft-04/schema#
17+
_abbrev: ArtD
18+
_description: The EiffelArtifactDeployedEvent states that a software artifact had been deployed into a specified environment or
19+
that the configuration of the artifact has been changed.
20+
The exact meaning of an artifact deployment is implementation-defined. Progressive deployments like e.g. canaries can be described with an EiffelArtifactDeployedEvent every time the deployment advances or a single EiffelArtifactDeployedEvent once the artifact has been fully deployed.
21+
type: object
22+
properties:
23+
meta:
24+
$ref: ../EiffelMetaProperty/3.1.0.yml
25+
data:
26+
type: object
27+
properties:
28+
description:
29+
_description: Any human readable information information about this deployment.
30+
type: string
31+
uri:
32+
_description: A URI identifying the deployment description.
33+
_format: URI
34+
type: string
35+
customData:
36+
type: array
37+
items:
38+
$ref: ../EiffelCustomDataProperty/1.0.0.yml
39+
additionalProperties: false
40+
links:
41+
type: array
42+
items:
43+
$ref: ../EiffelEventLink/1.1.1.yml
44+
required:
45+
- meta
46+
- data
47+
- links
48+
additionalProperties: false
49+
_links:
50+
ARTIFACT:
51+
description: Identifies the artifact that has been deployed.
52+
required: true
53+
experimental: true
54+
multiple: false
55+
targets:
56+
any_type: false
57+
types:
58+
- EiffelArtifactCreatedEvent
59+
CAUSE:
60+
description: 'Identifies a cause of the event occurring. SHOULD
61+
not be used in conjunction with __CONTEXT__: individual events
62+
providing __CAUSE__ within a larger context gives rise to ambiguity.
63+
It is instead recommended to let the root event of the context
64+
declare __CAUSE__.'
65+
required: false
66+
multiple: true
67+
targets:
68+
any_type: true
69+
types: []
70+
CONFIGURATION:
71+
description: Identifies the configuration used to deploy the
72+
artifact identified with the ARTIFACT link, if the configuration
73+
isn't included in the artifact itself. This configuration could be
74+
a deployment script, a runbook specification, a helm chart or some
75+
other description of how the artifact is started or upgraded in the
76+
target environment.
77+
required: false
78+
experimental: true
79+
multiple: false
80+
targets:
81+
any_type: false
82+
types:
83+
- EiffelArtifactCreatedEvent
84+
CONTEXT:
85+
description: Identifies the activity or test suite of which this
86+
event constitutes a part.
87+
required: false
88+
multiple: false
89+
targets:
90+
any_type: false
91+
types:
92+
- EiffelActivityTriggeredEvent
93+
- EiffelTestSuiteStartedEvent
94+
ENVIRONMENT:
95+
description: Identifies the environment into which this artifact
96+
was deployed.
97+
required: true
98+
multiple: false
99+
targets:
100+
any_type: false
101+
types:
102+
- EiffelEnvironmentDefinedEvent
103+
FLOW_CONTEXT:
104+
description: 'Identifies the flow context of the event: which is
105+
the continuous integration and delivery flow in which this occurred
106+
– e.g. which product, project, track or version this is applicable
107+
to.'
108+
required: false
109+
multiple: true
110+
targets:
111+
any_type: false
112+
types:
113+
- EiffelFlowContextDefinedEvent
114+
_history:
115+
- version: 0.1.0
116+
introduced_in: No edition set
117+
changes: Initial version.
118+
_examples:
119+
- title: Simple example
120+
url: ../examples/events/EiffelArtifactDeployedEvent/simple.json
Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
# Copyright 2017-2022 Ericsson AB and others.
2+
# For a full list of individual contributors, please see the commit history.
3+
#
4+
# Licensed under the Apache License, Version 2.0 (the "License");
5+
# you may not use this file except in compliance with the License.
6+
# You may obtain a copy of the License at
7+
#
8+
# http://www.apache.org/licenses/LICENSE-2.0
9+
#
10+
# Unless required by applicable law or agreed to in writing, software
11+
# distributed under the License is distributed on an "AS IS" BASIS,
12+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
# See the License for the specific language governing permissions and
14+
# limitations under the License.
15+
---
16+
$schema: http://json-schema.org/draft-04/schema#
17+
_abbrev: CLM
18+
_description: |-
19+
The EiffelConfidenceLevelModifiedEvent declares that an entity has achieved (or failed to achieve) a certain level of confidence, or in a broader sense to annotate it as being applicable or relevant to a certain case (e.g. fit for release to a certain customer segment or having passed certain criteria). This is particularly useful for promoting various engineering artifacts, such as product revisions, through the continuous integration and delivery pipeline.
20+
21+
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 "releasableToCustomerX". 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.
22+
type: object
23+
properties:
24+
meta:
25+
$ref: ../EiffelMetaProperty/3.1.0.yml
26+
data:
27+
type: object
28+
properties:
29+
name:
30+
_description: The name of the confidence level. It is recommended
31+
for confidence level names to conform with camelCase formatting,
32+
in line with the format of key names of the Eiffel protocol
33+
as a whole.
34+
type: string
35+
value:
36+
_description: |-
37+
The value of the confidence level.
38+
SUCCESS signifies that the confidence level has been successfully achieved.
39+
FAILURE signifies that the confidence level could not be achieved.
40+
INCONCLUSIVE signifies that achievement of the confidence level could not be determined.
41+
type: string
42+
enum:
43+
- SUCCESS
44+
- FAILURE
45+
- INCONCLUSIVE
46+
issuer:
47+
_description: The individual or entity issuing the confidence
48+
level.
49+
type: object
50+
properties:
51+
name:
52+
_description: The name of the issuer.
53+
type: string
54+
email:
55+
_description: The e-mail address of the issuer.
56+
type: string
57+
id:
58+
_description: Any identity, alias or handle of the issuer,
59+
such as a corporate id or username.
60+
type: string
61+
group:
62+
_description: Any group, such as a development team, committee
63+
or test group, to which the issuer belongs.
64+
type: string
65+
additionalProperties: false
66+
customData:
67+
type: array
68+
items:
69+
$ref: ../EiffelCustomDataProperty/1.0.0.yml
70+
required:
71+
- name
72+
- value
73+
additionalProperties: false
74+
links:
75+
type: array
76+
items:
77+
$ref: ../EiffelEventLink/1.1.1.yml
78+
required:
79+
- meta
80+
- data
81+
- links
82+
additionalProperties: false
83+
_links:
84+
CAUSE:
85+
description: 'Identifies a cause of the event occurring. SHOULD
86+
not be used in conjunction with __CONTEXT__: individual events
87+
providing __CAUSE__ within a larger context gives rise to ambiguity.
88+
It is instead recommended to let the root event of the context
89+
declare __CAUSE__.'
90+
required: false
91+
multiple: true
92+
targets:
93+
any_type: true
94+
types: []
95+
CONTEXT:
96+
description: Identifies the activity or test suite of which this
97+
event constitutes a part.
98+
required: false
99+
multiple: false
100+
targets:
101+
any_type: false
102+
types:
103+
- EiffelActivityTriggeredEvent
104+
- EiffelTestSuiteStartedEvent
105+
FLOW_CONTEXT:
106+
description: 'Identifies the flow context of the event: which is
107+
the continuous integration and delivery flow in which this occurred
108+
– e.g. which product, project, track or version this is applicable
109+
to.'
110+
required: false
111+
multiple: true
112+
targets:
113+
any_type: false
114+
types:
115+
- EiffelFlowContextDefinedEvent
116+
SUBJECT:
117+
description: Identifies a subject of the confidence level; in other
118+
words, what the confidence level applies to.
119+
required: true
120+
multiple: true
121+
targets:
122+
any_type: false
123+
types:
124+
- EiffelArtifactCreatedEvent
125+
- EiffelArtifactDeployedEvent
126+
- EiffelCompositionDefinedEvent
127+
- EiffelSourceChangeCreatedEvent
128+
- EiffelSourceChangeSubmittedEvent
129+
SUB_CONFIDENCE_LEVEL:
130+
description: 'Used in events summarizing multiple confidence levels.
131+
Example use case: the confidence level "allTestsOk" summarizes
132+
the confidence levels "unitTestsOk, "scenarioTestsOk" and "deploymentTestsOk",
133+
and consequently links to them via __SUB_CONFIDENCE_LEVEL__.
134+
This is intended for purely descriptive, rather than prescriptive,
135+
use.'
136+
required: false
137+
multiple: true
138+
targets:
139+
any_type: false
140+
types:
141+
- EiffelConfidenceLevelModifiedEvent
142+
_history:
143+
- version: 3.3.0
144+
introduced_in: No edition set
145+
changes: Add EiffelArtifactDeployedEvent as legal target type for
146+
SUBJECT link (see
147+
[Issue 239](https://github.com/eiffel-community/eiffel/issues/239)).
148+
- version: 3.2.0
149+
introduced_in: '[edition-arica](../../../tree/edition-arica)'
150+
changes: Add schema URL to the meta object (see [Issue 280](https://github.com/eiffel-community/eiffel/issues/280)).
151+
- version: 3.1.0
152+
introduced_in: '[edition-lyon](../../../tree/edition-lyon)'
153+
changes: Add links.domainId member (see [Issue 233](https://github.com/eiffel-community/eiffel/issues/233)).
154+
- version: 3.0.0
155+
introduced_in: '[edition-agen](../../../tree/edition-agen)'
156+
changes: Improved information integrity protection (see [Issue
157+
185](https://github.com/eiffel-community/eiffel/issues/185)).
158+
- version: 2.0.0
159+
introduced_in: '[dc5ec6f](../../../blob/dc5ec6fb87e293eeffe88fdafe698eec0f5a2c89/eiffel-vocabulary/EiffelConfidenceLevelModifiedEvent.md)'
160+
changes: Introduced purl identifiers instead of GAVs (see [Issue
161+
182](https://github.com/eiffel-community/eiffel/issues/182))
162+
- version: 1.1.0
163+
introduced_in: '[edition-toulouse](../../../tree/edition-toulouse)'
164+
changes: Multiple links of type FLOW_CONTEXT allowed.
165+
- version: 1.0.0
166+
introduced_in: '[edition-bordeaux](../../../tree/edition-bordeaux)'
167+
changes: Initial version.
168+
_examples:
169+
- title: Simple example
170+
url: ../examples/events/EiffelConfidenceLevelModifiedEvent/simple.json

0 commit comments

Comments
 (0)