Platform engineers, DevOps teams, and Domino administrators looking to implement secure, automated app deployment solutions
Source code repository
Visit the repo
Overview and goals
Modern data science platforms need to support not just model development but also the deployment of interactive applications that make insights accessible to business users. React applications have become a standard for building rich, responsive user interfaces, but deploying them in enterprise environments requires robust CI/CD practices to ensure quality, security, and reliability.
This blueprint demonstrates how to implement a complete CI/CD pipeline for React applications on Domino Data Lab, enabling teams to:
Automate deployment workflows across development, UAT, and production environments
Enforce quality gates through automated testing before promotions
Maintain environmental isolation while streamlining the promotion process
Leverage GitHub Actions for orchestration while using Domino APIs for execution
Reduce manual errors and accelerate time-to-production for data science applications
By following this blueprint, you'll establish a production-ready deployment pipeline that balances developer velocity with operational control, ensuring that only tested and approved applications reach your production Domino environment.
When should you consider automated app deployment in Domino?
This CI/CD pattern is particularly valuable when:
You have multiple Domino environments: Organizations running separate Domino projects or instances for development, UAT, and production need automated promotion workflows to maintain consistency and reduce manual deployment overhead.
Your applications require quality gates: When deploying customer-facing or business-critical applications, automated testing and approval workflows ensure that bugs and issues are caught before reaching production users.
You need audit trails and governance: Regulated industries or compliance-focused organizations benefit from the documented approval process, automated testing records, and version control that CI/CD provides.
Your team follows GitOps practices: If your organization uses Git as the single source of truth and follows pull request workflows for changes, extending this pattern to application deployments creates consistency across your software delivery lifecycle.
You want to scale application deployments: Teams deploying multiple React applications or frequently updating existing ones will see significant time savings and reliability improvements through automation.
Developer self-service is a priority: This approach empowers data scientists and application developers to deploy their own applications following guardrails, without requiring manual intervention from platform administrators for each deployment.
How can you achieve automated app deployment in Domino workflows?
Architecture overview
The deployment pipeline follows a three-tier promotion workflow:
Key components
1. GitHub repository with branch strategy
dev branch: Active development and testing
uat branch: User acceptance testing
production master/main branch: Production-ready code
HARDWARE_TIER_ID: Domino app hardware tier ID (e.g. small-k8s)
PROJECT_NAME: Project Name (e.g. app_cicd_project01)
REPO_NAME: Name of the repo in Domino project’s code section (e.g. Domino_React_App01)
REPO_URI: GitHub Repository with React app code and CI/CD workflow configuration (e.g. https://github.com/ddl-wasanthag/domino-react-app)
MODEL_API_URL: Domino model API url where inference backend for this app is running (e.g. https://cloud-cx.domino.tech:443/models/6608b3be91229570a972aa95/latest/model)
Development tools
Node.js and npm installed compute environment for local development
Git configured with access to your GitHub repository
Familiarity with React application structure
Basic understanding of Domino's application publishing model
Permissions and access
Repository write access for developers creating PRs
Repository admin access for configuring GitHub Actions
Domino project owner or collaborator role in target projects
Approval permissions for production deployments (if using GitHub environments)
Implementation guide for deploying a React app with CI/CD
Step 1: Repository structure setup
Clone the blueprint repository and examine its structure:
├── cicd/ # Python script with Domino API to provision Domino artifacts
│ ├── app-configs.yaml
│ ├── create_git_based_project_and_app.py
│ └── requirements.txt
├── endpoint/ # Domino model API endpoint setup notebook
│ ├── cali-house-price-prediction.ipynb
│ └── README.md
├── my-vite-app/ # Actual app code to be deployed to UAT/prod
│ ├── dist/
│ ├── eslint.config.js
│ ├── index.html
│ ├── node_modules/
│ ├── package.json
│ ├── package-lock.json
│ ├── public/
│ ├── README.md
│ ├── src/
│ └── vite.config.js
├── README.md # Main project documentation
└── setup_app_preview.sh # Workspace dev and preview steps
Step 2: Set up the model API endpoint
The example React app is a frontend to a model API endpoint in the backend that predicts house prices given various features. There is a notebook in the endpoint folder that creates an example house price prediction endpoint. Execute the notebook and note down:
1. The model API endpoint
2. Model API token
Step 3: Configure GitHub environments and secrets
Navigate to your GitHub repository settings, environments, and configure UAT and production environments as mentioned in the prerequisites sections.
Step 4: Create GitHub Actions workflows
UAT and production deployment workflows are in the .github/workflows/deploy-uat.yml
Step 5: Development and preview
In this step, the app is developed and previewed inside a Domino workspace. Create a Domino workspace in the development project with the dev branch.
Now, develop and preview the app. The provided setup_app_preview.sh script can be used to set up Node, NPM, Vite framework, and deploy the code.
App can be accessed for preview with a Jupyter Proxy URL available inside Domino.
Clicking this link will open up the app in the browser.
Note that the Vite app is referencing the Model API endpoint hosted using the environment variable in app-code/App.jsx
JavaScript
constcallAPI=async(inputData)=>{
try{
// Debug: Check what environment variables are available
I partner with some of the largest life sciences companies to ensure successful adoption of the Domino platform. I design and deliver solutions addressing real-world challenges in pharmaceutical and biotech organizations. My focus is training and advising data scientists on efficient platform use and onboarding complex AI/ML use cases across domains like histopathology and oncology.