Development and Deployment
This page provides guidance for developers working on or deploying the EigenLayer-AVS system.
This page provides guidance for developers working on or deploying the EigenLayer-AVS system. It covers the development environment setup, build process, deployment options, and CI/CD pipeline. For specific configuration details, see Configuration. For testing information, see Testing.
Development Environment Setup#
Prerequisites#
Before working with the EigenLayer-AVS codebase, ensure you have the following prerequisites installed:
- Go 1.24 - The project uses Go 1.24 as specified in the workflow files and go.mod
- Git - For version control and accessing the repository
- Docker (optional) - For containerized development and deployment
Sources:
Repository Structure#
The EigenLayer-AVS repository is organized to separate core functionality, contracts, and deployment configurations:
Sources:
Building the Software#
Local Build#
To build the software locally:
- Clone the repository
- Navigate to the project root directory
- Build using the Go build command:
The build command includes version information via ldflags, which is used by the version command.
Sources:
Versioning#
The system uses semantic versioning, which is incorporated into the binary during the build process. The version can be displayed using:
Version information is set during the build process using ldflags and stored in the version package.
Sources:
Deployment Options#
Docker Deployment#
The recommended method for deploying EigenLayer-AVS is using Docker containers, which ensures consistency across different environments.
The project includes Dockerfile configurations in the dockerfiles
directory. The main operator Dockerfile is used in the CI/CD pipeline to create releases.
Sources:
Multi-Architecture Support#
The release process builds binaries for multiple architectures to support deployment on various platforms:
Architecture | Operating System | Binary Name Format |
---|---|---|
amd64 | Linux | ap-avs-linux-amd64 |
arm64 | Linux | ap-avs-linux-arm64 |
amd64 | macOS (Darwin) | ap-avs-darwin-amd64 |
arm64 | macOS (Darwin) | ap-avs-darwin-arm64 |
Docker images are also built for multiple platforms (linux/amd64, linux/arm64) to support deployment on various server architectures.
Sources:
Configuration#
Configuration File Structure#
The system uses YAML configuration files for setting up various components. Configuration is loaded from a specified path and parsed into Go structures.
For detailed information about configuration options, refer to the Configuration page.
Sources:
CI/CD Pipeline#
Automated Workflows#
The EigenLayer-AVS project uses GitHub Actions to automate testing, building, and deployment. The workflow is triggered on specific events, such as pushes to the repository and tag creation.
Sources:
Release Process#
The release process is automated via GitHub Actions and is triggered when a tag matching the pattern v*
is pushed to the repository. The workflow:
- Builds Docker images for multiple architectures (amd64, arm64)
- Creates binary releases for different operating systems and architectures
- Generates release notes from git commit messages
- Creates a draft GitHub release with the binaries attached
To create a new release:
- Tag the desired commit with a version following semantic versioning (e.g.,
v1.0.0
) - Push the tag to the repository
- The workflow will automatically build and publish the release
Sources:
Development Builds#
For development and testing purposes, a separate workflow creates development builds on each push to the repository:
- Code is automatically formatted using
gofmt
- A development Docker image is built and tagged with the commit SHA
- The image is pushed to Docker Hub with the
avs-dev
repository
This allows for continuous testing of changes before creating an official release.
Sources:
Running in Production#
For production deployments, consider the following best practices:
-
Data Persistence: Configure the backup system to regularly back up data
-
Security:
- Use secure private keys and never share them
- Configure proper JWT secrets for authentication
- Consider using a secure secret management system
-
Monitoring: Enable metrics collection for monitoring system health
-
Resource Requirements:
- Minimum: 2 CPU cores, 4GB RAM
- Recommended: 4 CPU cores, 8GB RAM, SSD storage
Sources:
Troubleshooting#
Common issues and their solutions:
Issue | Possible Solution |
---|---|
Configuration not loading | Verify file path and format (YAML) |
Connection to Ethereum nodes failing | Check network connectivity and RPC URL configuration |
Database errors | Ensure the database directory is writable and has sufficient space |
Build failures | Verify Go version (1.24) and dependencies |
For any persistent issues, please refer to the GitHub repository issues section or contact the development team.
Sources:
Feature this wiki to auto refresh weekly
Try DeepWiki on your private codebase with Devin