This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
This is a multi-module Gradle project with Java and Groovy libraries for Seqera platform components.
./gradlew check- Run all tests and checks across all modules./gradlew assemble- Compile all modules./gradlew :module-name:test- Run tests for a specific module (e.g.,./gradlew :lib-crypto:test)./gradlew :module-name:build- Build a specific modulemake check- Alternative way to run tests via Makefilemake compile- Alternative way to compile via Makefile
make deps- Show runtime dependencies for all modulesmake deps module=module-name- Show dependencies for specific modulemake deps config=configuration- Show dependencies for specific configuration (e.g.,make deps config=testRuntimeClasspath)
This is a library collection (libseqera) containing reusable components for Seqera platform projects:
- wave-api: API models and DTOs for Wave container service
- wave-utils: Utility classes for Wave (Docker helpers, file operations, template rendering)
- lib-activator: Conditional activation markers for enabling components based on infrastructure availability
- lib-crypto: Cryptographic utilities (asymmetric encryption, HMAC signatures, secure tokens)
- lib-httpx: Enhanced HTTP client with automatic retry logic and JWT token refresh
- lib-mail: Email functionality with Micronaut integration
- lib-retry: Retry mechanisms with exponential backoff
- lib-pool: Simple object pooling utilities
- lib-lang: Language and type utilities
- lib-trace: Tracing and logging utilities
- lib-commons-io: Common I/O utilities for logging and streaming
- lib-jedis-lock: Redis-based distributed locking using Jedis
- lib-data-queue-redis: Message queue abstraction with Redis and local implementations
- lib-data-stream-redis: Message streaming with Redis Streams and local implementations
- lib-serde: Serialization/deserialization utilities
- lib-random: Random key generation utilities
- lib-fixtures-redis: Test fixtures and containers for Redis-based testing
- Java 21 toolchain with Java 17 compatibility
- Groovy 4.0.24 for implementation and testing
- Micronaut 4.8.x for dependency injection and runtime
- Spock Framework for testing
- Redis/Jedis for messaging and distributed operations
- Testcontainers for integration testing
- Each module has its own
VERSIONfile containing the version string - All modules use the
io.seqeragroup ID - Build configurations are centralized in
buildSrc/with convention plugins:io.seqera.java-library-conventions- Base Java library setupio.seqera.groovy-library-conventions- Groovy-specific additionsio.seqera.java-test-fixtures-conventions- Test fixtures support
- Tests use JUnit Platform with Spock Framework
- Micronaut libraries use minimal library plugin configuration
- All Redis-based modules depend on
lib-fixtures-redisfor testing
- Message libraries (
lib-data-*) depend onlib-serdefor serialization andlib-retryfor resilience - Test modules commonly depend on
lib-langfor testing utilities - Redis-based modules use
lib-fixtures-redisfor integration tests with Testcontainers
Libraries are published to Seqera's private Maven repository on S3 using AWS credentials.
- Use
[release]as prefix in the first line of commit messages to trigger module library releases - The release automation will detect this prefix and initiate the publishing process for updated modules