Skip to content

Commit dae1b51

Browse files
Merge branch 'master' into support-singularity-s3
2 parents 35ca65a + 36c4b42 commit dae1b51

File tree

106 files changed

+2879
-2597
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

106 files changed

+2879
-2597
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
name: Build and publish Scanner container image
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
trivy_version:
7+
description: 'trivy version (e.g., 0.65.0)'
8+
required: true
9+
default: '0.65.0'
10+
oras_version :
11+
description : 'oras version (e.g., 1.3.0)'
12+
required : true
13+
default : '1.3.0'
14+
15+
jobs:
16+
build-and-push:
17+
runs-on: ubuntu-latest
18+
steps:
19+
- name: Checkout code
20+
uses: actions/checkout@v4
21+
22+
- name: Set up Docker Buildx
23+
id: buildx
24+
uses: docker/setup-buildx-action@v3
25+
26+
- name: Docker Login
27+
uses: docker/login-action@v3
28+
with:
29+
registry: public.cr.seqera.io
30+
username: ${{ vars.SEQERA_PUBLIC_CR_USERNAME }}
31+
password: ${{ secrets.SEQERA_PUBLIC_CR_PASSWORD }}
32+
33+
- name: Build and Push Image to public.cr.seqera.io
34+
run: |
35+
cd plugin-scanner
36+
make all trivy_version=${{ github.event.inputs.trivy_version }} oras_version=${{ github.event.inputs.oras_version }}

.github/workflows/claude.yml

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
name: Claude PR Assistant
2+
3+
on:
4+
issue_comment:
5+
types: [created]
6+
pull_request_review_comment:
7+
types: [created]
8+
issues:
9+
types: [opened, assigned]
10+
pull_request_review:
11+
types: [submitted]
12+
13+
jobs:
14+
claude-code-action:
15+
if: |
16+
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
17+
(github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
18+
(github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
19+
(github.event_name == 'issues' && contains(github.event.issue.body, '@claude'))
20+
runs-on: ubuntu-latest
21+
permissions:
22+
contents: read
23+
pull-requests: read
24+
issues: read
25+
id-token: write
26+
steps:
27+
- name: Checkout repository
28+
uses: actions/checkout@v4
29+
with:
30+
fetch-depth: 1
31+
32+
- name: Run Claude PR Action
33+
uses: anthropics/claude-code-action@beta
34+
with:
35+
anthropic_api_key: ${{ secrets.ENG_ANTHROPIC_API_KEY }}
36+
# Or use OAuth token instead:
37+
# claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
38+
timeout_minutes: "60"
39+
# mode: tag # Default: responds to @claude mentions
40+
# Optional: Restrict network access to specific domains only
41+
# experimental_allowed_domains: |
42+
# .anthropic.com
43+
# .github.com
44+
# api.github.com
45+
# .githubusercontent.com
46+
# bun.sh
47+
# registry.npmjs.org
48+
# .blob.core.windows.net

CLAUDE.md

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
# CLAUDE.md
2+
3+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4+
5+
## Project Overview
6+
7+
Wave is a containers provisioning service that allows building container images on-demand and acts as a proxy for container registries. It's built with Java/Groovy using the Micronaut framework and follows a microservices architecture.
8+
9+
## Key Commands
10+
11+
### Development
12+
- **Run development server**: `./run.sh` (runs with continuous compilation and file watching)
13+
- **Build project**: `./gradlew assemble` or `make compile`
14+
- **Run tests**: `./gradlew test` or `make check`
15+
- **Run specific test**: `./gradlew test --tests 'TestClassName'`
16+
- **Build container image**: `./gradlew jibDockerBuild` or `make image`
17+
- **Generate code coverage**: `./gradlew jacocoTestReport` (runs automatically after tests)
18+
19+
### Environment Setup
20+
Wave requires several environment variables for registry authentication:
21+
- `DOCKER_USER`/`DOCKER_PAT` for Docker Hub
22+
- `QUAY_USER`/`QUAY_PAT` for Quay.io
23+
- `AWS_ACCESS_KEY_ID`/`AWS_SECRET_ACCESS_KEY` for AWS ECR
24+
- `AZURECR_USER`/`AZURECR_PAT` for Azure Container Registry
25+
26+
## Architecture
27+
28+
### Core Services
29+
- **ContainerBuildService**: Manages container image building (Docker/Kubernetes strategies)
30+
- **ContainerMirrorService**: Handles container mirroring operations
31+
- **ContainerScanService**: Security vulnerability scanning
32+
- **RegistryProxyService**: Acts as proxy between clients and registries
33+
- **BlobCacheService**: Caches container layers and artifacts
34+
- **JobManager**: Handles async job processing and queuing
35+
36+
### Key Controllers
37+
- **ContainerController**: Main API for container provisioning (`/container-token`)
38+
- **BuildController**: Container build operations
39+
- **ScanController**: Security scanning endpoints
40+
- **RegistryProxyController**: Registry proxy functionality
41+
42+
### Storage & Persistence
43+
- Uses PostgreSQL with Micronaut Data JDBC
44+
- Redis for caching and distributed state
45+
- Object storage (AWS S3) for blob/artifact storage
46+
- Kubernetes for production container builds
47+
48+
### Configuration
49+
- Main config: `src/main/resources/application.yml`
50+
- Environment-specific configs in `src/main/resources/application-*.yml`
51+
- Uses Micronaut's configuration system with property injection
52+
53+
## Technology Stack
54+
- **Framework**: Micronaut 4.x with Netty runtime
55+
- **Language**: Groovy with Java 21+
56+
- **Build Tool**: Gradle with custom conventions
57+
- **Container**: JIB for multi-platform builds (AMD64/ARM64)
58+
- **Database**: PostgreSQL with HikariCP connection pooling
59+
- **Cache**: Redis with Jedis client
60+
- **Testing**: Spock 2 framework
61+
- **Metrics**: Micrometer with Prometheus
62+
- **Security**: JWT authentication for Tower integration
63+
64+
## Important Notes
65+
- The codebase uses custom Gradle conventions defined in `buildSrc/`
66+
- Container images are built using Amazon Corretto 25 with jemalloc
67+
- The service requires Kubernetes cluster for production builds
68+
- Rate limiting is implemented using Spillway library
69+
- All async operations use Reactor pattern with Micronaut Reactor
70+
71+
## Release Process
72+
73+
1. Update the `VERSION` file with a semantic version
74+
2. Update the `changelog.txt file with changes against previous release
75+
3. Commit VERSION and changelog.txt file adding the tag `[release]` in the commit comment first line.
76+
4. Git push to upstream master branch.

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.25.0
1+
1.26.1

0 commit comments

Comments
 (0)