CI/CD Pipeline
Gati uses GitHub Actions for continuous integration and automated npm publishing.
Pipeline Overview
CI Workflow (.github/workflows/ci.yml)
Runs on every push and pull request to main:
✅ Lint (non-blocking) - Shows warnings but doesn't fail
✅ Build - Builds core and types packages
✅ Test - Runs tests for stable packagesStatus: ✅ Passing - All checks green!
Release Workflow (.github/workflows/release.yml)
Automatically publishes to npm when changesets are merged:
✅ Build stable packages
✅ Run tests
✅ Create version PR or publish to npm
✅ Create GitHub releasesStatus: ✅ Ready - Configured and tested, awaiting NPM_TOKEN for automated publishing
Documentation Deployment (.github/workflows/deploy-docs.yml)
Deploys VitePress documentation to GitHub Pages:
✅ Build VitePress site
✅ Deploy to https://krishnapaul242.github.io/gati/Status: ✅ Configured - Ready to deploy once GitHub Pages is enabled in repository settings
Package Status
✅ Ready for Publishing
These packages are stable and ready for npm:
@gati-framework/core- Core framework functionality@gati-framework/types- TypeScript type definitions
🚧 In Development
These packages have build issues and are excluded from CI:
@gati-framework/cli- CLI tools (dependency issues)@gati-framework/runtime- Runtime with Timescape (TypeScript errors)@gati-framework/cloud-*- Cloud provider plugins (depend on runtime)@gati-framework/playground- Visual debugging tool
Publishing Process
1. Create a Changeset
pnpm changesetSelect packages to publish, choose version bump (patch/minor/major), and write changelog.
2. Commit and Push
git add .
git commit -m "chore: prepare release"
git push origin main3. Automated Publishing
The release workflow will:
- Create a "Version Packages" PR
- Update package versions and CHANGELOG.md
- When merged, automatically publish to npm
- Create GitHub releases with changelogs
NPM Token Setup
For maintainers, the NPM_TOKEN secret is required for automated publishing:
# Generate token
npm login
npm token create --type=automation
# Add to GitHub
# Settings → Secrets and variables → Actions
# New secret: NPM_TOKENCurrent Status: ⏳ Awaiting token setup for automated publishing. Manual publishing works via pnpm release.
Build Configuration
Stable Packages Only
The CI/CD pipeline is configured to build only stable packages:
{
"scripts": {
"release": "pnpm --filter @gati-framework/core --filter @gati-framework/types build && pnpm exec changeset publish"
}
}Why Not All Packages?
Some packages have TypeScript compilation errors that need to be fixed:
- CLI: Cross-package import issues, missing runtime dependency
- Runtime: Timescape transformer type errors
- Cloud Providers: Depend on runtime package
These will be added back to CI once fixed.
Lint Configuration
Lint runs on all packages but is non-blocking:
lint:
continue-on-error: true # Don't fail CI on lint errorsCurrent lint issues (1660 errors, 403 warnings):
- TypeScript strict mode violations
anytype usage- Unused variables
- Console statements
These can be fixed gradually without blocking releases.
Testing Strategy
Unit Tests
pnpm test --filter @gati-framework/core --filter @gati-framework/typesE2E Tests
E2E tests require the CLI package to be built, so they're currently skipped in CI.
Coverage
Coverage reports are uploaded to Codecov on Node 20 builds.
Deployment Targets
Documentation
- URL: https://krishnapaul242.github.io/gati/
- Trigger: Push to
mainwith changes indocs/** - Platform: GitHub Pages
- Status: ✅ Workflow configured, awaiting GitHub Pages enablement
NPM Packages
- Registry: https://registry.npmjs.org
- Scope:
@gati-framework - Access: Public
- Status: ✅ Core and Types packages published and available
Monitoring
GitHub Actions
View workflow runs: https://github.com/krishnapaul242/gati/actions
NPM Packages
Once published, packages will be available at:
- https://www.npmjs.com/package/@gati-framework/core
- https://www.npmjs.com/package/@gati-framework/types
Troubleshooting
Build Failures
If builds fail, check:
- TypeScript compilation errors
- Missing dependencies
- Test failures
Publish Failures
If publishing fails, verify:
NPM_TOKENsecret is set- Package versions are bumped
- Changesets are committed
Documentation Deployment
If docs fail to deploy:
- Check VitePress build errors
- Verify GitHub Pages is enabled
- Check workflow permissions
Future Improvements
Planned Enhancements
- [ ] Add remaining packages to CI once fixed
- [ ] Enable E2E tests in CI
- [ ] Add performance benchmarks
- [ ] Set up automated security scanning
- [ ] Add bundle size tracking
- [ ] Implement canary releases
Lint Improvements
- [ ] Fix TypeScript strict mode issues
- [ ] Remove
anytypes - [ ] Clean up unused variables
- [ ] Replace console statements with proper logging
Contributing
See the Contributing Guide for how to contribute to Gati's CI/CD infrastructure.