* inc version * Komodo interp in ui compose file * fix auto update when image doesn't specify tag by defaulting to latest * Pull image buttons don't need safety dialog * WIP crosscompile * rename * entrypoint * fix copy * remove example/* from workspace * add targets * multiarch pkg config * use specific COPY * update deps * multiarch build command * pre compile deps * cross compile * enable-linger * remove spammed log when server doesn't have docker * add multiarch.Dockerfile * fix casing * fix tag * try not let COPY fail * try * ARG TARGETPLATFORM * use /app for consistency * try * delete cross-compile approach * add multiarch core build * multiarch Deno * single arch multi arch * typeshare cli note * new typeshare * remove note about aarch64 image * test configs * fix config file headers * binaries dockerfile * update cargo build * docs * simple * just simple * use -p * add configurable binaries tag * add multi-arch * allow copy to fail * fix binary paths * frontend Dockerfiel * use dedicated static frontend build * auto retry getting instance state from aws * retry 5 times * cleanup * simplify binary build * try alpine and musl * install alpine deps * back to debian, try rustls * move fully to rustls * single arch builds using single binary image * default IMAGE_TAG * cleanup * try caching deps * single arch add frontend build * rustls::crypto::ring::default_provider() * back to simple * comment dockerfile * add select options prop, render checkboxes if present * add allowSelectedIf to enable / disable rows where necessary * rename allowSelectIf to isSelectable, allow false as global disable, disable checkboxes when not allowed * rename isSelectable to disableRow (it works the oppsite way lol) * selected resources hook, start deployment batch execute component * add deployment group actions * add deployment group actions * add default (empty) group actions for other resources * fix checkbox header styles * explicitly check if disableRow is passed (this prop is cursed) * don't disable row selection for deployments table * don't need id for groupactions * add group actions to resources page * fix row checkbox (prop not cursed, i dumb) * re-implement group action list using dropdown menu * only make group actions clickable when at least one row selected * add loading indicator * gap betwen new resource and group actions * refactor group actions * remove "Batch" from action labels * add group actions for relevant resources * fix hardcode * add selectOptions to relevant tables * select by name not id * expect selected to be names * add note re selection state init for future reference * multi select working nicely for all resources * configure server health check timeout * config message * refresh processes remove dead processes * simplify the build args * default timeout seconds 3 --------- Co-authored-by: kv <karamvir.singh98@gmail.com>
3.2 KiB
Development
If you are looking to contribute to Komodo, this page is a launching point for setting up your Komodo development environment.
Dependencies
Running Komodo from source requires either Docker (and can use the included devcontainer), or can have the development dependencies installed locally:
- Backend (Core / Periphery APIs)
- Rust stable via rustup installer
- MongoDB or FerretDB available locally.
- On Debian/Ubuntu:
apt install build-essential pkg-config libssl-devrequired to build the rust source.
- Frontend (Web UI)
runnables-cli
mbecker20/runnables-cli can be used as a convience CLI for running common project tasks found in runfile.toml. Otherwise, you can create your own project tasks by references the cmds found in runfile.toml. All instructions below will use runnables-cli v1.3.7+.
Docker
After making changes to the project, run run -r test-compose-build to rebuild Komodo and then run -r test-compose-exposed to start a Komodo container with the UI accessible at localhost:9120. Any changes made to source files will require re-running the test-compose-build and test-compose-exposed commands.
Devcontainer
Use the included .devcontainer.json with VSCode or other compatible IDE to stand-up a full environment, including database, with one click.
VSCode Tasks are provided for building and running Komodo.
After opening the repository with the devcontainer run the task Init to build the frontend/backend. Then, the task Run Komodo can be used to run frontend/backend. Other tasks for rebuilding/running just one component of the stack (Core API, Periphery API, Frontend) are also provided.
Local
To run a full Komodo instance from a non-container environment run commands in this order:
- Ensure dependencies are up to date
rustup update-- ensure rust toolchain is up to date
- Build and Run backend
run -r test-core-- Build and run Core APIrun -r test-periphery-- Build and run Periphery API
- Build Frontend
- Install typeshare-cli:
cargo install typeshare-cli - Run this once --
run -r link-client-- generates TS client and links to the frontend - After running the above once:
run -r gen-client-- Rebuild clientrun -r start-frontend-- Start in dev (watch) moderun -r build-frontend-- Typecheck and build
- Install typeshare-cli:
Docsite Development
Use run -r docsite-start to start the Docusaurus Komodo docs site in development mode. Changes made to files in ./docsite will be automatically reloaded by the server.