Docs
Overview

AIOP Core

The AIOP Core is the heart of the AIOP solution. It consists of several modules that handle the different phases of building a package. Let's explore the basic concepts and workings of AIOP Core.

Basic Concepts

AIOP Core is built upon several basic concepts. These concepts form the foundation of the AIOP solution.

Package

A package is a collection of artifacts that make up an application. A package can be a web application, a mobile application, a desktop application, an embedded application or set of applications, a service, a library, etc.

ℹ️

Originally, the goal of AIOP was to design packages for embedded applications. However, the solution was designed to be used in any other types of projects. If you have specific needs, do not hesitate to contact us.

Composition

A package is composed of several artifacts. These artifacts can be files or directories.

Artifacts can be textual files
  1. Reports

  2. Configuration

  3. Certificates

  4. Source code

  5. Data

  6. Documentation

  7. Log files

  8. ...anything readable by a human

Artifacts can be binary files
  1. Sounds

  2. Images

  3. Videos

  4. Libraries

  5. Executables

  6. Archives (zip)

  7. Databases

  8. Encrypted documents

  9. ...anything compiled, encrypted, or unreadable by a human

Sources of Artifacts

Artifacts can come from several sources:

Organization of Artifacts

You are free to organize the artifacts as you wish. AIOP does not impose a structure on you. However, it is recommended to adopt a standard structure for all your packages.

💡

The advantage of AIOP lies in its ability to establish a standard artifact structure for all your packages defined by you and your team. This approach facilitates maintenance and debugging of packages, as everyone involved will know this structure and will be accustomed to navigating inside it.

Validation and Error Handling

AIOP Core is designed to display as much information as possible about errors encountered before and during the construction of a package. Errors are reported to the user in the form of reports in the console.

AIOP reports errors as early as possible so that the user can correct them quickly.

🚨

It is important to note that AIOP does not correct errors for you (this would happen sooner or later). It informs you of the errors and gives you indications on how to correct them. It is up to you to correct them.

Configurations

The behavior of AIOP Core can be modified by configurations. There are several types of configurations: user configuration, project configuration, system configuration. Learn more.

Declarations

AIOP operates on the declarative principle of resources. Declarations are files that describe the artifacts of a package as well as their compatibilities with systems. Learn more.

Integrations

AIOP Core includes various third-party tools and services to perform different tasks. Among them are universal artifact repository managers such as Nexus (opens in a new tab) or Artifactory (opens in a new tab). Additionally, it integrates a PDF building tool.

Artifactory
Logo
Nexus
Logo
Logo
PDF

A multitude of other features and services will arrive in future versions (see the roadmap). Learn more.

Caching

AIOP Core utilizes a caching mechanism to store remote resources. This feature aims to reduce the time required to build packages, especially in cases where the connection with remote servers is interrupted or when internet connection is limited.

Operation

Now let's see how AIOP works.

Used Languages

The programming language used is Python. Declarations and configurations are written in YAML (opens in a new tab).

Declaration Selections

Selection is an operation that consists of choosing the declarations to use for building a package. Selection is based on the targeted system and the chosen configuration. The targeted system is defined by the user in the system configuration file. Learn more.

Logs and Reports

AIOP Core produces logs for each construction step, displaying various information such as errors, warnings, artifact details, and more, directly in the console.

Additionally, AIOP Core generates textual reports stored in the build directory. These reports include:

  • A detailed build report, listing all operations performed by AIOP.
  • A summary of the built package, providing essential information about it.
  • A specific report describing changes made to the package during the post-build step.

Construction Phases

AIOP Core consists of several package construction phases. Each phase is responsible for several specific tasks. Phases are executed in a specific order. Here are the construction phases:

Lint

The lint phase ensures the validation of declarations and configurations by checking the syntax of the corresponding files as well as the consistency between them.

As a static analysis, it does not require specifying the target system. However, an option is available to define the target system and perform additional checks, notably on potential conflicts at the resource level. Learn more.

ℹ️

Note that it is possible to add custom lint tasks to validate rules specific to your project.

⚠️

The free plan does not allow

adding custom lint tasks.

Pre-build

The pre-build phase is responsible for preparing the build environment. It ensures the retrieval of remote artifacts, the creation of build directories, etc. Learn more.

Build

The build phase is responsible for building the package. It ensures the assembly of resources into the package. Learn more.

Post-build

The post-build phase is used to perform tasks that do not make sense to be included in the build phase. For example, you might want to generate a wallpaper for a client that displays metadata about the target system in text format. Any manipulation of the temporary packages after build must be done in this phase. Learn more.

ℹ️

As a reminder, a report is generated at the end of the post-build phase by comparing the package before and after this phase. This report is stored in the build directory.

Additionally, it is possible to add custom post-build tasks to perform actions specific to your project.

⚠️

The free plan does not allow adding custom post-build tasks.

Seal

The seal phase is a step where several tasks are performed to finalize and prepare the package for distribution in the next phase. Learn more.

Deploy

The deploy phase is responsible for distributing the package. It ensures the sending of the package to universal artifact repository managers and/or the deployment of the targeted systems directly. Learn more.