Instill Core is currently under rapid development. The project is built with the microservice architecture. To develop each service independently,
we assign profiles to each service in
the docker-compose.latest.yml file in Core.
This allows us to selectively enable services for various purposes, e.g., debugging, development.
Services are associated with profiles through the profiles attribute, which
takes an array of profile names. A service will be started only if one of its
profile names is activated. A service without profiles will always be
started.
Core assigns seven different profile names:
console- start all the dependent services forconsolemgmt- start all the dependent services formgmt-backendapi-gateway- start all the dependent services forapi-gatewaypipeline- start all the dependent services forpipeline-backendmodel- start all the dependent services formodelcontroller-model- start all the dependent services forcontroller-modelall- start all services
Use one of the profile name to develop the corresponding service:
# In the core repository foldermake build-latestmake latest PROFILE=<profile-name>
The following guideline shows a specific example of how to develop the pipeline-backend.
#Start dependent services for pipeline-backend
On the local machine, clone the core repository in your workspace, move to the repository folder, and launch all dependent services:
# Clone the core repositorygit clone https://github.com/instill-ai/instill-core.git && cd instill-core# Use profile `pipeline` to launch all dependent services# for `pipeline-backend`make build-latestmake latest PROFILE=exclude-pipeline
#Run dev pipeline-backend
Clone the pipeline-backend repository in your workspace and move to the repository folder:
git clone https://github.com/instill-ai/pipeline-backend.gitcd pipeline-backend
Build & run the dev image
make buildmake dev
Now, you have the Go project set up in the container, in which you can compile and run the binaries together with the integration test in each container shell.
Start the pipeline-backend server
docker exec -it pipeline-backend /bin/bashgo run ./cmd/migrationgo run ./cmd/main
Start the Temporal worker
docker exec -it pipeline-backend /bin/bashgo run ./cmd/worker
Run the integration test
During local development, you can run the integration test to make sure your latest pipeline-backend works as intended:
docker exec -it pipeline-backend /bin/bashmake integration-test
#Stop the dev container
make stop
#To shut down all dependent Core services:
# In the core repository foldermake down