This document describes the Continuous Integration, Continuous Deployment (CI/CD), and release processes for the EigenLayer-AVS project.
This document describes the Continuous Integration, Continuous Deployment (CI/CD), and release processes for the EigenLayer-AVS project. It covers the GitHub Actions workflows that automate testing, code formatting, Docker image building, and the creation of release artifacts.
For information about testing the system, see Testing. For information about configuration options, see Configuration.
The EigenLayer-AVS project employs a comprehensive CI/CD pipeline built on GitHub Actions to ensure code quality, automate testing, and streamline the release process. The pipeline automates several key processes:
The following diagram illustrates the overall CI/CD flow:
Sources:
The CI/CD pipeline consists of three main GitHub Actions workflows:
The Push workflow runs automatically when changes are pushed to Go files in the repository. It has two main jobs:
gofmt on the codebase and commits any formatting changes.avaprotocol/avs-dev).Sources:
The Test workflow runs all unit tests to ensure code reliability. It uses a matrix strategy to run tests for different components in parallel.
The test matrix includes the following components:
Sources:
The Release workflow is triggered when a tag starting with "v" is pushed to the repository (e.g., v1.0.0) or when manually triggered. It handles:
Sources:
The release process for EigenLayer-AVS follows these steps:
Create a Release Tag: Create and push a tag starting with "v" (e.g., v1.2.3)
Automated Release Build: The tag triggers the release workflow automatically
Binary Generation: The workflow compiles binaries for multiple platforms
Docker Image Building: A Docker image is built and tagged with the version
Release Publication: A GitHub release is created with:
The Docker images use the following tagging strategy:
latest (only for main branch)<sha><branch-name><version> and <major>.<minor>Sources:
EigenLayer-AVS provides two Docker repositories:
Development Images (avaprotocol/avs-dev):
Release Images (avaprotocol/ap-avs):
The Docker images are built for multiple platforms:
The Docker build process uses the following Dockerfile: dockerfiles/operator.Dockerfile.
Sources:
The EigenLayer-AVS project embeds version information into the binary during the build process. The version information is handled by the version package and can be accessed via the version command:
During the build process, the version is injected via the -ldflags option in the Go build command:
-ldflags "-X github.com/AvaProtocol/ap-avs/version.semver=${{ inputs.tag || github.ref_name }}"
This sets the semver variable in the version package to the tag name (e.g., v1.2.3) or the branch name if building from a branch.
Sources:
When deploying the EigenLayer-AVS system, configuration is loaded from YAML files. The configuration includes environment-specific settings like:
The CI/CD pipeline does not directly handle configuration files, as they are specific to each deployment environment. Instead, the Docker images are built without configuration, and the configuration files are mounted or injected when the containers are run.
Sources:
This document provides an overview of the CI/CD and release processes for the EigenLayer-AVS project. For more detailed information about specific aspects of the system, refer to the other wiki pages.
Feature this wiki to auto refresh weekly