Skip to content

Commit

Permalink
Add JSON schema link validations (#380)
Browse files Browse the repository at this point in the history
* Step JSON schema and add link validations
  • Loading branch information
e-backmark-ericsson authored Jul 4, 2024
1 parent fa8446b commit f7ed574
Show file tree
Hide file tree
Showing 112 changed files with 10,498 additions and 63 deletions.
131 changes: 131 additions & 0 deletions definitions/EiffelActivityCanceledEvent/5.0.0.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
# Copyright 2017-2024 Ericsson AB and others.
# For a full list of individual contributors, please see the commit history.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
---
$schema: https://json-schema.org/draft/2020-12/schema#
_name: EiffelActivityCanceledEvent
_version: 5.0.0
_abbrev: ActC
_description: The EiffelActivityCanceledEvent signals that a previously
triggered activity execution has been canceled _before it has started_.
This is typically used in queuing situations where a queued execution
is dequeued. It is recommended that __CAUSE__ links be used to indicate
the reason.
type: object
properties:
meta:
$ref: ../EiffelMetaProperty/4.0.0.yml
data:
type: object
properties:
reason:
_description: Any human readable information as to the reason
for dequeueing.
type: string
customData:
type: array
items:
$ref: ../EiffelCustomDataProperty/2.0.0.yml
additionalProperties: false
links:
type: array
contains:
type: object
properties:
type:
enum:
- ACTIVITY_EXECUTION
items:
$ref: ../EiffelEventLink/2.0.0.yml
required:
- meta
- data
- links
additionalProperties: false
_links:
ACTIVITY_EXECUTION:
description: Declares the activity execution that was canceled.
In other words, [EiffelActivityTriggeredEvent](../eiffel-vocabulary/EiffelActivityTriggeredEvent.md)
acts as a handle for the activity execution. This differs from
__CONTEXT__. In __ACTIVITY_EXECUTION__ the source carries information
pertaining to the target (i.e. the activity started, finished
or was canceled). In __CONTEXT__, on the other hand, the source
constitutes a subset of the target (e.g. this test case was executed
as part of that activity or test suite).
required: true
multiple: false
targets:
any_type: false
types:
- EiffelActivityTriggeredEvent
CAUSE:
description: While for most events it is recommended that __CAUSE__
SHOULD not be used in conjunction with __CONTEXT__, EiffelActivityCanceledEvent
is a special case as it represents a deviation from previous
intention. Therefore it is recommended that __CAUSE__ always
be included where applicable.
required: false
multiple: true
targets:
any_type: true
types: []
CONTEXT:
description: Identifies the activity or test suite of which this
event constitutes a part.
required: false
multiple: false
targets:
any_type: false
types:
- EiffelActivityTriggeredEvent
- EiffelTestSuiteStartedEvent
FLOW_CONTEXT:
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.'
required: false
multiple: true
targets:
any_type: false
types:
- EiffelFlowContextDefinedEvent
_history:
- version: 5.0.0
changes: Update meta schema to Draft 2020-12 and add link validation.
- version: 4.0.0
changes: Fix bug in schema regarding additionalProperties (see [Issue 376](https://github.com/eiffel-community/eiffel/issues/376)).
- version: 3.2.0
introduced_in: edition-arica
changes: Add schema URL to the meta object (see [Issue 280](https://github.com/eiffel-community/eiffel/issues/280)).
- version: 3.1.0
introduced_in: edition-lyon
changes: Add links.domainId member (see [Issue 233](https://github.com/eiffel-community/eiffel/issues/233)).
- version: 3.0.0
introduced_in: edition-agen
changes: Improved information integrity protection (see [Issue
185](https://github.com/eiffel-community/eiffel/issues/185)).
- version: 2.0.0
introduced_in: edition-agen
changes: Introduced purl identifiers instead of GAVs (see [Issue
182](https://github.com/eiffel-community/eiffel/issues/182))
- version: 1.1.0
introduced_in: edition-toulouse
changes: Multiple links of type FLOW_CONTEXT allowed.
- version: 1.0.0
introduced_in: edition-bordeaux
changes: Initial version.
_examples:
- title: Simple example
url: ../examples/events/EiffelActivityCanceledEvent/simple.json
186 changes: 186 additions & 0 deletions definitions/EiffelActivityFinishedEvent/4.0.0.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,186 @@
# Copyright 2017-2024 Ericsson AB and others.
# For a full list of individual contributors, please see the commit history.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
---
$schema: https://json-schema.org/draft/2020-12/schema#
_name: EiffelActivityFinishedEvent
_version: 4.0.0
_abbrev: ActF
_description: The EiffelActivityFinishedEvent declares that a previously
started activity (declared by [EiffelActivityTriggeredEvent](./EiffelActivityTriggeredEvent.md)
followed by [EiffelActivityStartedEvent](./EiffelActivityStartedEvent.md))
has finished.
type: object
properties:
meta:
$ref: ../EiffelMetaProperty/4.0.0.yml
data:
type: object
properties:
outcome:
_description: The outcome of the activity.
type: object
properties:
conclusion:
_description: |-
A terse standardized conclusion of the activity, designed to be machine readable.
SUCCESSFUL signifies that the activity was concluded and the outcome matched expectations.
UNSUCCESSFUL signifies that the activity was concluded, but the outcome did not match expectations. To exemplify, a compilation job was successfully invoked, but compilation failed.
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.
TIMED_OUT signifies that the activity did not conclude within the allowed time frame.
INCONCLUSIVE signifies that the outcome of the activity could not be determined.
type: string
enum:
- SUCCESSFUL
- UNSUCCESSFUL
- FAILED
- ABORTED
- TIMED_OUT
- INCONCLUSIVE
description:
_description: A verbose description of the activity outcome,
designed to provide human readers with further information.
type: string
required:
- conclusion
persistentLogs:
_description: An array of persistent log files generated during
execution.
type: array
items:
type: object
properties:
mediaType:
_description: The [media type](https://en.wikipedia.org/wiki/Media_type)
of the URI's payload. Can be used to differentiate
between various representations of the same log, e.g.
text/html for human consumption and text/plain or application/json
for the machine-readable form.
type: string
name:
_description: The name of the log file.
type: string
tags:
_description: Arbitrary tags and keywords that describe
this log.
type: array
items:
type: string
uri:
_description: The URI at which the log can be retrieved.
type: string
required:
- name
- uri
additionalProperties: false
customData:
type: array
items:
$ref: ../EiffelCustomDataProperty/2.0.0.yml
additionalProperties: false
required:
- outcome
links:
type: array
contains:
type: object
properties:
type:
enum:
- ACTIVITY_EXECUTION
items:
$ref: ../EiffelEventLink/2.0.0.yml
required:
- meta
- data
- links
additionalProperties: false
_links:
ACTIVITY_EXECUTION:
description: Declares the activity execution that was finished.
In other words, [EiffelActivityTriggeredEvent](../eiffel-vocabulary/EiffelActivityTriggeredEvent.md)
acts as a handle for the activity execution. This differs from
__CONTEXT__. In __ACTIVITY_EXECUTION__ the source carries information
pertaining to the target (i.e. the activity started, finished
or was canceled). In __CONTEXT__, on the other hand, the source
constitutes a subset of the target (e.g. this test case was executed
as part of that activity or test suite).
required: true
multiple: false
targets:
any_type: false
types:
- EiffelActivityTriggeredEvent
CAUSE:
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__.'
required: false
multiple: true
targets:
any_type: true
types: []
CONTEXT:
description: Identifies the activity or test suite of which this
event constitutes a part.
required: false
multiple: false
targets:
any_type: false
types:
- EiffelActivityTriggeredEvent
- EiffelTestSuiteStartedEvent
FLOW_CONTEXT:
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.'
required: false
multiple: true
targets:
any_type: false
types:
- EiffelFlowContextDefinedEvent
_history:
- version: 4.0.0
changes: Update meta schema to Draft 2020-12 and add link validation.
- version: 3.3.0
introduced_in: edition-arica
changes: Add schema URL to the meta object (see [Issue 280](https://github.com/eiffel-community/eiffel/issues/280)).
- version: 3.2.0
introduced_in: edition-lyon
changes: Add links.domainId member (see [Issue 233](https://github.com/eiffel-community/eiffel/issues/233)).
- version: 3.1.0
introduced_in: edition-lyon
changes: Add `data.persistentLogs.{mediaType,tags}`.
- version: 3.0.0
introduced_in: edition-agen
changes: Improved information integrity protection (see [Issue
185](https://github.com/eiffel-community/eiffel/issues/185)).
- version: 2.0.0
introduced_in: edition-agen
changes: Introduced purl identifiers instead of GAVs (see [Issue
182](https://github.com/eiffel-community/eiffel/issues/182))
- version: 1.1.0
introduced_in: edition-toulouse
changes: Multiple links of type FLOW_CONTEXT allowed.
- version: 1.0.0
introduced_in: edition-bordeaux
changes: Initial version.
_examples:
- title: Simple example
url: ../examples/events/EiffelActivityFinishedEvent/simple.json
Loading

0 comments on commit f7ed574

Please sign in to comment.