rediOps/README.md

104 lines
4.2 KiB
Markdown
Raw Normal View History

2022-08-07 07:44:38 +00:00
# rediOps
2022-08-07 08:08:19 +00:00
Rediscover DevOps (rediOps) is about standardising how to find information about the code, specifically
for use in the DevOps pipeline and for engineers to locate relavant information about the code and
its capability and DevOps process.
2022-08-07 08:08:19 +00:00
The information resides with the code in the code repository, commonly Git, and is human readable
and also understood by tools.
2022-08-07 08:08:19 +00:00
RediOps takes the lead from the the [**.well-known** folder](https://en.wikipedia.org/wiki/Well-known_URI)
approach used in web servers.
2022-08-07 08:08:19 +00:00
That is the creation of a folder named ".well-known" and to create a file by the name of
**"devops.json"** within the folder. This will allow tools to retrieve the file if it exists
2022-08-07 08:08:19 +00:00
and to use the information for activities such as:
* build
* deploy
2022-09-18 11:56:14 +00:00
* discover OpenAPI definitions
## What does it do
The **.well-known/devops.json** specification removes devops process
assumptions, such as script locations. It also provides a location
to store application reference links such a OpenAPI definitions.
All this with the code on Git / source version control.
You may already have a devops toolchain for build and deploy but many require
you to enter the Git details into them. By having a **devops** definition as
described here you can further automate the process - and have a roadmap
to change tooling if circumstances change.
2023-03-26 10:40:30 +00:00
Some automation to the process can be achieved by executing simple
scripts at the start of the project.
If you decide that **.well-known/devops.json** is not for you
maybe some of the concepts may provoke some improvements into
your current process.
2022-09-18 11:56:14 +00:00
## What doesn't it do
The **devops** definition does not replace your existing tools or processes.
2022-08-07 08:08:19 +00:00
## Background
A common approach organisations have is to create well known, at least within the organisation,
file names within Git repositories and then configure tools to access those files for their configuration
and execution.
2022-09-18 11:56:14 +00:00
These well known organisation files tend to reside in the root directory
or some well known directory such as "tools" or "build". As you include
more tools and processes the number of these files grow in the root
directory.
The proposal here is to define one DevOps file location and the content
within to provide location information for other files or actions to
perform.
2022-08-07 08:08:19 +00:00
## Specification
The specification for the **devops.json** is defined as an [OpenAPI document](specification/rediops.json).
2022-08-07 08:08:19 +00:00
2022-08-07 22:06:03 +00:00
The use of OpenAPI to define the details specification provides a format and protocol that can be understood
by tools and engineers.
Using a OpenAPI specification provides clarity on definition. Tools can also generate a
REST service if so required - though this is not mandatory - and
the "devops.json" file is expected to exist before the code is deployed.
2022-08-07 22:06:03 +00:00
2022-08-07 08:08:19 +00:00
If you do publish the information as a REST service then you should consider protecting access to
the data, especially if it contains data that may expose internal structures.
**Note:** The specification does not capture credentials or runtime environment information.
To read more see [overview](guide/overview.md) or
go to [tutorial](tutorial/readme.md) or
[examples](examples/readme.md)
2022-08-07 08:08:19 +00:00
## Audience
2022-08-07 08:08:19 +00:00
You may find the specification useful if:
1. You don't have a standard and make assumptions about meta data file names in your Git repository
2. You are a small developer with custom tools or simple requirements
3. Your organisation has many different tools for different repositories and you need to document which tool goes with what
If your organisation already has standard automation tools and pipeline process, then you may not find the rediOps
and the specifications that useful. If the specification is not relevant in its entirety, maybe you find the
concept or portions useful for adaptation in your organisation.
2022-08-07 08:08:19 +00:00
2022-09-18 11:56:14 +00:00
## SBOM
With increased attention on software supply chains and the need to
create and update the software bill of materials (SBOM), the
proposed definition is flexible to linking to SBOM tools if required.
Your existing tooling may already cater for SBOM creation so please
check. If your existing tools do cover SBOM then you could link
the results to the **devops.json** definition so that it is
closer to the source.
See the link for more information on [SBOM](guide/sbom.md)