This file provides guidance to AI coding assistants (WARP, Claude Code, etc.) when working with code in this repository.
OpenMetadata-Worker is a GitHub Actions automation repository that manages the continuous integration and deployment pipeline for OpenMetadata containers and infrastructure. This is not a traditional software application but rather a CI/CD orchestration system that mirrors, modifies, builds, and scans OpenMetadata releases.
.github/workflows/- Main orchestration workflows numbered sequentiallysrc/- Contains templates, modification scripts, and additional workflow definitionsreports/- Generated security scan reports (gitignored)
The repository operates as a sequential pipeline with clearly numbered steps:
- Step 0 (
00-update-om-version.yml) - Version tracking and variable updates - Step 1 (
01-mirror-repo-pull.yml) - Mirror upstream OpenMetadata to local repository - Step 2 (
02-copy-repo.yml) - Copy mirror to working repository - Step 3 (
03-modify-repo-matrix.yml) - Matrix-based repository modifications for dev/prod environments - Step 4 - Multi-stage build and scan processes:
04-00-scan-containers.yml- Security scanning with Mend04-01-scan-containers4_1.yml- Enhanced container scanning04-02-01through04-02-04- Docker container builds for Docker Hub04-03-01through04-03-04- GitHub Container Registry builds
- Mirrors
open-metadata/OpenMetadatatoJason-Clark-FG/OpenMetadata-Mirror - Copies mirror to working repo
Jason-Clark-FG/OpenMetadata-FG - Uses custom mirror-action for SSH-based git operations
- Located in
src/openmetadata-modify-compose.sh - Uses
yqfor comprehensive YAML manipulation ofdocker-compose.yml - Extensive Docker Compose modifications in
03-modify-repo-matrix.yml:- MySQL configuration with custom passwords, healthchecks, and init scripts
- Elasticsearch security settings and version management
- Ingestion service (Airflow) configuration with admin credentials
- OpenMetadata server healthcheck adjustments
- Service restart policies and dependency management
- Mend.io (formerly WhiteSource) for vulnerability scanning
- Docker Scout for container image analysis
- SARIF report generation and GitHub Security integration
- Retry logic for scan resilience
- Dynamic matrix generation for DEV/PROD environments
- Branch-based configuration using repository variables
- Separate Elasticsearch version tracking per environment
# Trigger the full pipeline from step 0
gh workflow run "00-update-om-version.yml"
# Trigger individual steps for testing
gh workflow run "01-mirror-repo-pull.yml"
gh workflow run "02-copy-repo.yml"
gh workflow run "03-modify-repo-matrix.yml"
# Trigger container builds
gh workflow run "04-02-01-build-container1.yml" # MySQL container
gh workflow run "04-02-02-build-container2.yml" # Ingestion container
gh workflow run "04-02-03-build-container3.yml" # Server containerKey variables that control the pipeline:
OM_LATEST_RELEASE- Latest OpenMetadata release versionDEV_RELEASE_BRANCH/PROD_RELEASE_BRANCH- Target branchesDEV_ES_RELEASE_BRANCH/PROD_ES_RELEASE_BRANCH- Elasticsearch versionsFG_COMPOSE_TARGET- Target docker-compose file pathBRANCH_SUFFIX- Suffix for working branches
# View current repository variables
gh variable list# Test compose modification script locally
cd src/
chmod +x openmetadata-modify-compose.sh
./openmetadata-modify-compose.sh
# Manual yq operations for testing compose changes
yq '.services | keys' docker-compose.yml
yq '.services.mysql.environment' docker-compose.yml# Check workflow run status
gh run list --workflow="00-update-om-version.yml"
gh run list --workflow="03-modify-repo-matrix.yml"
# View logs for failed runs
gh run view <run-id> --logDOCKER_USER/DOCKER_PAT- Docker Hub credentialsGIT_SSH_PRIVATE_KEY/GIT_SSH_PUBLIC_KEY- SSH keys for repository accessMEND_EMAIL/MEND_USER_KEY- Mend.io scanning credentialsREPO_TOKEN- GitHub token for API operations
Variables follow a clear naming convention:
*_RELEASE_BRANCH- Git branch names*_RELEASE_NAME- Human-readable release namesFG_*- FG-specific configurationDEV_*/PROD_*- Environment-specific settings
- Copy existing build workflow (e.g.,
04-02-01-build-container1.yml) - Update
IMAGE_BASENAME,IMAGE_FILE, and container-specific settings - Add corresponding GHCR workflow in
04-03-*series - Update build matrix if needed
- Edit yq commands in
03-modify-repo-matrix.yml - Test modifications in
src/openmetadata-modify-compose.shfirst - Consider both DEV and PROD environment variations
- Ensure healthcheck and dependency modifications are compatible
Security scanning is handled through multiple workflows with Mend.io integration and Docker Scout analysis. Update image lists in scan workflows and ensure SARIF output is properly configured for GitHub Security integration.
- Workflows are strictly sequential and depend on
workflow_runsuccess - Manual
workflow_dispatchbypasses dependency checks - Check for race conditions in matrix builds
- SSH key configuration is critical for mirror operations
- Repository permissions must allow force pushes to working branches
- Branch protection rules may interfere with automated commits
- Docker buildx cache issues can cause build failures
- Registry permissions must allow both push and pull operations
- Multi-architecture builds may timeout on resource constraints
- Workflows depend strictly on
workflow_runsuccess and are sequential - Manual
workflow_dispatchbypasses dependency checks - SSH key configuration is critical for mirror operations
- Repository permissions must allow force pushes to working branches
- All Docker Compose modifications use
yqfor YAML processing - The system handles multi-architecture builds and registry operations