build(repo): Add Github Actions integrations#136
Conversation
WalkthroughTwo new multi-stage Dockerfiles were added for building and releasing the Compozy application and its MCP Proxy component, emphasizing security, minimalism, and production-readiness. Additionally, the Changes
Sequence Diagram(s)sequenceDiagram
participant Developer
participant DockerBuilder
participant GoCompiler
participant DistrolessImage
participant ProductionContainer
Developer->>DockerBuilder: Build Docker image (Compozy or MCP Proxy)
DockerBuilder->>GoCompiler: Compile Go binary with static linking
GoCompiler-->>DockerBuilder: Output binary
DockerBuilder->>DistrolessImage: Copy binary and assets to minimal image
DistrolessImage->>ProductionContainer: Run container with entrypoint
ProductionContainer->>ProductionContainer: Start application (Compozy or MCP Proxy)
📜 Recent review detailsConfiguration used: .coderabbit.yaml ⛔ Files ignored due to path filters (9)
📒 Files selected for processing (2)
🚧 Files skipped from review as they are similar to previous changes (2)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
✨ Finishing Touches🧪 Generate unit tests
🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
Documentation and Community
|
There was a problem hiding this comment.
Actionable comments posted: 3
🧹 Nitpick comments (4)
cluster/Dockerfile.release (2)
30-36: Minor build hardening: trim paths & inject versionConsider adding
-trimpathto strip absolute paths and embedding version/commit metadata:- -ldflags='-w -s -extldflags "-static"' \ + -ldflags="-w -s -extldflags '-static' -X main.version=${COMPOZY_VERSION:-unknown} -X main.commit=${GIT_COMMIT:-dirty} -trimpath" \Makes the binary smaller and traceable.
14-16:appuseris never usedThe builder creates an
appuserbut all subsequent steps run as root, and the runtime layer switches tononroot. You can drop this user to shave a few kilobytes off the build stage.cluster/mcpproxy.release.Dockerfile (2)
30-36: Same build-flags suggestion as main imageAdd
-trimpathand version metadata for reproducibility (see previous comment).
14-16: Unusedappuserin builder stageThe created user is never switched to; consider dropping it for simplicity.
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (50)
.github/actions/README.mdis excluded by!**/*.md.github/actions/docker-build/action.ymlis excluded by!**/*.yml.github/actions/setup-bun/action.ymlis excluded by!**/*.yml.github/actions/setup-go/action.ymlis excluded by!**/*.yml.github/codeql/codeql-config.ymlis excluded by!**/*.yml.github/dependabot.ymlis excluded by!**/*.yml.github/versions.ymlis excluded by!**/*.yml.github/workflows/branch-protection.ymlis excluded by!**/*.yml.github/workflows/ci.ymlis excluded by!**/*.yml.github/workflows/codeql.ymlis excluded by!**/*.yml.github/workflows/container-cleanup.ymlis excluded by!**/*.yml.github/workflows/dev-containers.ymlis excluded by!**/*.yml.github/workflows/docs.ymlis excluded by!**/*.yml.github/workflows/release-please.ymlis excluded by!**/*.yml.github/workflows/release.ymlis excluded by!**/*.yml.github/workflows/security.ymlis excluded by!**/*.yml.goreleaser.ymlis excluded by!**/*.yml.kiro/specs/github-actions-integration/design.mdis excluded by!**/*.md.kiro/specs/github-actions-integration/requirements.mdis excluded by!**/*.md.kiro/specs/github-actions-integration/tasks.mdis excluded by!**/*.md.release-please-config.jsonis excluded by!**/*.json.release-please-manifest.jsonis excluded by!**/*.jsontasks/prd-authsystem/10_task.mdis excluded by!**/*.mdtasks/prd-authsystem/1_task.mdis excluded by!**/*.mdtasks/prd-authsystem/2_task.mdis excluded by!**/*.mdtasks/prd-authsystem/2_task_fixes_summary.mdis excluded by!**/*.mdtasks/prd-authsystem/3_task.mdis excluded by!**/*.mdtasks/prd-authsystem/4_task.mdis excluded by!**/*.mdtasks/prd-authsystem/5_task.mdis excluded by!**/*.mdtasks/prd-authsystem/6_task.mdis excluded by!**/*.mdtasks/prd-authsystem/6_task_review.mdis excluded by!**/*.mdtasks/prd-authsystem/7_task.mdis excluded by!**/*.mdtasks/prd-authsystem/8_task.mdis excluded by!**/*.mdtasks/prd-authsystem/9_task.mdis excluded by!**/*.mdtasks/prd-authsystem/_prd.mdis excluded by!**/*.mdtasks/prd-authsystem/_tasks.mdis excluded by!**/*.mdtasks/prd-authsystem/_techspec.mdis excluded by!**/*.mdtasks/prd-authsystem/merged_prd_techspec.mdis excluded by!**/*.mdtasks/prd-authsystem/task-complexity-report.mdis excluded by!**/*.mdtasks/prd-authsystem/to_fix.mdis excluded by!**/*.mdtasks/prd-cli/1_task.mdis excluded by!**/*.mdtasks/prd-cli/2_task.mdis excluded by!**/*.mdtasks/prd-cli/3_task.mdis excluded by!**/*.mdtasks/prd-cli/4_task.mdis excluded by!**/*.mdtasks/prd-cli/5_task.mdis excluded by!**/*.mdtasks/prd-cli/6_task.mdis excluded by!**/*.mdtasks/prd-cli/7_task.mdis excluded by!**/*.mdtasks/prd-cli/_prd.mdis excluded by!**/*.mdtasks/prd-cli/_tasks.mdis excluded by!**/*.mdtasks/prd-cli/_techspec.mdis excluded by!**/*.md
📒 Files selected for processing (3)
cluster/Dockerfile.release(1 hunks)cluster/mcpproxy.release.Dockerfile(1 hunks)go.mod(1 hunks)
🧰 Additional context used
🧠 Learnings (4)
📓 Common learnings
Learnt from: CR
PR: compozy/compozy#0
File: .cursor/rules/compozy-examples.mdc:0-0
Timestamp: 2025-06-24T20:55:34.828Z
Learning: Shared configuration patterns in Compozy include MCP integration (filesystem, HTTP), reference patterns (local, global, resource), template expressions, and usage patterns for tools and agents.
Learnt from: CR
PR: compozy/compozy#0
File: .cursor/rules/compozy-examples.mdc:0-0
Timestamp: 2025-06-24T20:55:34.828Z
Learning: Project configuration files ('compozy.yaml') should include the project name, version, workflows, model configuration, runtime permissions, and environment variable patterns.
Learnt from: CR
PR: compozy/compozy#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T20:15:15.552Z
Learning: Applies to **/compozy-shared*.yml : YAML files for shared patterns (MCP, templates, references) must follow compozy-shared-patterns.mdc
Learnt from: CR
PR: compozy/compozy#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T20:15:15.552Z
Learning: Applies to **/compozy*.yml : YAML configuration files must follow project setup patterns (see compozy-project-config.mdc)
Learnt from: CR
PR: compozy/compozy#0
File: .cursor/rules/compozy-shared-patterns.mdc:0-0
Timestamp: 2025-06-24T20:55:51.774Z
Learning: In Compozy YAML configuration files, MCP integrations can be defined using either a 'filesystem' pattern (with 'transport: stdio' and a command such as 'npx @modelcontextprotocol/server-filesystem') or an 'http' pattern (with 'transport: sse' and a 'url' field).
go.mod (5)
Learnt from: CR
PR: compozy/compozy#0
File: AGENT.md:0-0
Timestamp: 2025-06-26T19:34:35.267Z
Learning: The project uses Go 1.24+ features and expects code to be compatible with this version or higher.
Learnt from: CR
PR: compozy/compozy#0
File: .cursor/rules/go-coding-standards.mdc:0-0
Timestamp: 2025-06-24T20:56:42.900Z
Learning: Use explicit dependency injection via constructor functions in Go to manage dependencies and facilitate testing.
Learnt from: CR
PR: compozy/compozy#0
File: .cursor/rules/api-standards.mdc:0-0
Timestamp: 2025-06-30T20:15:27.720Z
Learning: Applies to **/*.go : API versioned at `/api/v0/`
Learnt from: CR
PR: compozy/compozy#0
File: .cursor/rules/architecture.mdc:0-0
Timestamp: 2025-06-30T20:16:10.079Z
Learning: Applies to **/*.go : Avoid circular dependencies: Do not create packages that import each other.
Learnt from: CR
PR: compozy/compozy#0
File: .cursor/rules/go-coding-standards.mdc:0-0
Timestamp: 2025-06-24T20:56:42.900Z
Learning: Keep Go package names simple and descriptive to enhance code readability and discoverability.
cluster/mcpproxy.release.Dockerfile (1)
Learnt from: CR
PR: compozy/compozy#0
File: .cursor/rules/project-structure.mdc:0-0
Timestamp: 2025-06-24T20:58:01.453Z
Learning: MCP (Model Context Protocol) integration enables external tool servers to be accessed via HTTP/SSE protocols, with a dedicated MCP proxy for secure communication.
cluster/Dockerfile.release (2)
Learnt from: CR
PR: compozy/compozy#0
File: .cursor/rules/compozy-examples.mdc:0-0
Timestamp: 2025-06-24T20:55:34.828Z
Learning: Project configuration files ('compozy.yaml') should include the project name, version, workflows, model configuration, runtime permissions, and environment variable patterns.
Learnt from: CR
PR: compozy/compozy#0
File: .cursor/rules/compozy-project-config.mdc:0-0
Timestamp: 2025-06-24T20:55:42.355Z
Learning: In Compozy project configuration files (compozy.yaml or *.compozy.yaml), the top-level keys should include 'name', 'version', and optionally 'description', 'author', 'workflows', 'models', 'autoload', and 'runtime'.
🪛 GitHub Actions: Development Container Images
cluster/mcpproxy.release.Dockerfile
[error] 1-1: Docker build failed due to invalid image tag format: 'ghcr.io/compozy/mcp-proxy:-3d9e64c'. The tag contains an invalid reference format.
cluster/Dockerfile.release
[error] 1-1: Docker build failed due to invalid image tag format: "ghcr.io/compozy/compozy:-3d9e64c". The tag contains an invalid reference format.
🪛 Hadolint (2.12.0)
cluster/Dockerfile.release
[error] 66-66: unexpected '|'
expecting '', a new line followed by the next instruction, or at least one space
(DL1000)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
- GitHub Check: Generate JSON Schemas
- GitHub Check: Analyze Go Code (go)
- GitHub Check: Build Main App Dev Container
- GitHub Check: Build MCP Proxy Dev Container
🔇 Additional comments (1)
go.mod (1)
70-72: Confirm the dependency really became first-class
github.com/atotto/clipboardwas moved from an indirect to a directrequire, but nothing in the current tree obviously imports it.
Please run a quick search (orgo mod tidy) to verify that the promotion is justified; otherwise, this line should keep the// indirectsuffix to avoid confusing downstream tooling.
## Release v0.0.10 This PR prepares the release of version v0.0.10. ### Changelog # Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## Unreleased ### ♻️ Refactoring - *(cli)* Improve init command - *(docs)* Disable theme switcher - *(llm)* General improvements ([#48](compozy/compozy#48)) - *(parser)* Add cwd as struct on common - *(parser)* Change from package_ref to use - *(parser)* Improve errors - *(parser)* Add config interface - *(parser)* Add validator interface - *(parser)* Improve validator - *(parser)* Change from package_ref to pkgref - *(parser)* Add schema validator in a package - *(parser)* Remove ByRef finders on WorkflowConfig - *(parser)* Add schema in a separate package - *(parser)* Use a library to load env - *(parser)* Remove parser.go file - *(parser)* Adjust errors - *(repo)* General improvements - *(repo)* Apply go-blueprint architecture - *(repo)* Change testutils to utils - *(repo)* Types improvements - *(repo)* General improvements - *(repo)* General adjustments - *(repo)* Build improvements - *(repo)* Change architecture - *(repo)* Small improvements - *(repo)* Adjust architecture - *(repo)* Improve protobuf integration - *(repo)* Change to DDD - *(repo)* Change from trigger to opts on workflow.Config - *(repo)* Adapt to use new pkgref - *(repo)* Change from orchestrator to worker - *(repo)* Complete change task state and parallel execution ([#16](compozy/compozy#16)) - *(repo)* Use Redis for store configs ([#24](compozy/compozy#24)) - *(repo)* General improvements - *(repo)* Config global adjustments - *(repo)* Improve test suite - *(worker)* Remove PAUSE/RESUME for now - *(worker)* Create worker.Manager - *(worker)* Avoid pass task.Config through activities ([#31](compozy/compozy#31)) - *(worker)* Split task executors ([#77](compozy/compozy#77)) ### ⚡ Performance Improvements - *(repo)* Improve startup performance ([#74](compozy/compozy#74)) ### 🎉 Features - *(cli)* Add watch flag on dev - *(core)* Add basic core structure - *(nats)* Add first NATS server integration - *(parser)* Add models and provider - *(parser)* Add EnvMap methods - *(parser)* Add LoadId method on Config - *(parser)* Add WithParamsValidator - *(pb)* Add ToSubject() method for events - *(ref)* Add inline merge directive - *(repo)* Add schema generation - *(repo)* Run server using workflows on dev cmd - *(repo)* Implement better log using CharmLog - *(repo)* Add support for LogMessage on NATS - *(repo)* Adding file references - *(repo)* Add initial file ref loaders - *(repo)* Adad tplengine package - *(repo)* Add Deno runtime integration ([#1](compozy/compozy#1)) - *(repo)* Add protobuf integration - *(repo)* Add initial orchestrator logic ([#3](compozy/compozy#3)) - *(repo)* Add UpdateFromEvent on states - *(repo)* Handle workflow execute - *(repo)* Init task.Executor - *(repo)* Return full state on executions route - *(repo)* Add version on API and events - *(repo)* Use SQLite for store - *(repo)* Add workflow and task routes - *(repo)* Add agent definitions routes - *(repo)* Add tools routes - *(repo)* Integrate Swagger - *(repo)* Add new pkg/ref ([#7](compozy/compozy#7)) - *(repo)* Add initial temporal integration ([#8](compozy/compozy#8)) - *(repo)* Normalize task state - *(repo)* Add basic agent execution ([#9](compozy/compozy#9)) - *(repo)* Implement tool call within agent ([#10](compozy/compozy#10)) - *(repo)* Implement tool call within task - *(repo)* Implement parallel execution for tasks ([#12](compozy/compozy#12)) - *(repo)* Implement router task - *(repo)* Implement collection tasks ([#17](compozy/compozy#17)) - *(repo)* Adding MCP integration ([#25](compozy/compozy#25)) - *(repo)* Support sequential mode for collection tasks ([#36](compozy/compozy#36)) - *(repo)* Implement auto load for resources ([#37](compozy/compozy#37)) - *(repo)* Implement aggregate task type ([#38](compozy/compozy#38)) - *(repo)* Add composite task type ([#47](compozy/compozy#47)) - *(repo)* Add signals for workflows ([#51](compozy/compozy#51)) - *(repo)* Add nested collection tasks ([#55](compozy/compozy#55)) - *(repo)* Add basic monitoring system ([#58](compozy/compozy#58)) - *(repo)* Add outputs for workflow ([#76](compozy/compozy#76)) - *(repo)* Add scheduled workflows ([#98](compozy/compozy#98)) - *(repo)* Add task type wait ([#100](compozy/compozy#100)) - *(repo)* Add memory ([#104](compozy/compozy#104)) - *(repo)* Add rest api for memory ([#108](compozy/compozy#108)) - *(repo)* Add BunJS as runtime ([#114](https://github.com/compozy/compozy/issues/114)) - *(repo)* Add task engine refac ([#116](https://github.com/compozy/compozy/issues/116)) - *(repo)* Add pkg/config ([#124](https://github.com/compozy/compozy/issues/124)) - *(repo)* Add authsystem ([#133](https://github.com/compozy/compozy/issues/133)) - *(repo)* Add missing CLI commands ([#137](https://github.com/compozy/compozy/issues/137)) - *(repo)* Add default tools ([#138](https://github.com/compozy/compozy/issues/138)) - *(repo)* Move cache and redis config to pkg/config ([#139](https://github.com/compozy/compozy/issues/139)) - *(repo)* Refactor CLI template generation - *(server)* Add first version of the server - *(server)* Add new route handlers - *(task)* Add outputs to task - First package files ### 🐛 Bug Fixes - *(cli)* Add missing check on init command - *(docs)* Hero text animation - *(docs)* Class merge SSR - *(docs)* Metadata og url - *(engine)* Env file location - *(memory)* Memory API request ([#121](https://github.com/compozy/compozy/issues/121)) - *(repo)* General improvements and fixes - *(repo)* Adjust validations inside parser - *(repo)* Make dev command work - *(repo)* Adjust state type assertion - *(repo)* Validate workflow params on Trigger - *(repo)* Collection task ([#18](compozy/compozy#18)) - *(repo)* Nested types of tasks - *(repo)* Concurrency issues with logger ([#61](compozy/compozy#61)) - *(repo)* Collection state creation ([#63](compozy/compozy#63)) - *(repo)* Closing dispatchers ([#81](compozy/compozy#81)) - *(repo)* Memory task integration ([#123](https://github.com/compozy/compozy/issues/123)) - *(repo)* Auth integration - *(repo)* MCP command release - *(repo)* General fixes - *(repo)* Add automatic migration - *(repo)* Broken links - *(runtime)* Deno improvements and fixes ([#79](compozy/compozy#79)) ### 📚 Documentation - *(repo)* Engine specs ([#2](compozy/compozy#2)) - *(repo)* Cleaning docs - *(repo)* Update weather agent - *(repo)* Improve agentic process - *(repo)* Add memory PRD - *(repo)* Add initial multitenant PRD - *(repo)* Rename schedule PRD - *(repo)* Improve agentic process - *(repo)* Add basic documentation and doc webapp ([#130](https://github.com/compozy/compozy/issues/130)) - *(repo)* General doc improvements - *(repo)* Add OpenAPI docs - *(repo)* Improve current docs - *(repo)* Enhance tools docs - *(repo)* Enhance memory docs - *(repo)* Finish/enhance MCP documentation ([#135](https://github.com/compozy/compozy/issues/135)) - *(repo)* Remove old prds - *(repo)* Improve documentation - *(repo)* Add schemas on git - *(repo)* Add vercel analytics - *(repo)* Add readme and contributing - *(repo)* Finish main landing page - *(repo)* Fix navigation link - *(repo)* Adjust text on lp - *(repo)* Add logo on README - *(repo)* Adjust install page - *(repo)* Update readme ### 📦 Build System - *(repo)* Fix golint errors - *(repo)* Add initial makefile - *(repo)* Lint errors - *(repo)* Add weather example folder - *(repo)* Fix lint errors - *(repo)* Adjust lint warnigs - *(repo)* Fix lint warnings - *(repo)* Add precommit - *(repo)* Add AI rules - *(repo)* Add monitoring PRD - *(repo)* Remove .vscode from gitignore - *(repo)* Add Github Actions integrations ([#136](https://github.com/compozy/compozy/issues/136)) - *(repo)* Cleanup - *(repo)* Format fix - *(repo)* Improve release process - *(repo)* Update deps ### 🔧 CI/CD - *(release)* Releasing new version v0.0.4 ([#162](https://github.com/compozy/compozy/issues/162)) - *(release)* Prepare release v0.0.10 - *(repo)* Fix actions - *(repo)* Fix services setup - *(repo)* Fix release - *(repo)* Adjust versions - *(repo)* Fix release process - *(repo)* Fix ci - *(repo)* Fix goreleaser - *(repo)* Fix validate title step - *(repo)* Fix quality action - *(repo)* Add pkg release ### 🧪 Testing - *(parser)* Add tests for agents - *(parser)* Add tests for package ref - *(parser)* Add tests for tools - *(parser)* Add tests for tasks - *(parser)* Add tests for workflow - *(repo)* Refactor test style - *(repo)* Add integration tests for states - *(repo)* Fix nats tests - *(repo)* Add store integration tests - *(repo)* Adjust repository tests - *(repo)* Test routes - *(repo)* Test improvements - *(repo)* Add basic tasks integration tests ([#57](compozy/compozy#57)) - *(repo)* Fix integrations tests ([#59](compozy/compozy#59)) - *(repo)* Fix testcontainer timeouts - *(server)* Add basic tests for server --- *Made with ❤️ by the Compozy team • Generated by [git-cliff](https://git-cliff.org)* Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Summary by CodeRabbit