CI/CD
Taon supports 4 types of releases:
| Manual | Locally build/test and then publish to remote server ( npm or app store or taon cloud ). |
| Cloud | Everything that Manual does, but triggered on remote on server. |
| Local | Build and deploy to local repo, or special repo, or special branch. |
| Static pages | Perfect for publishing stuff to github pages (or similar solutions) |
than can be used to achieve proper CI/CD
( Continuous Integration (CI) and Continuous Delivery (CD) ).
Depending on:
- type of project
- type of artifacts that you want to produce
- number of developers
- size of codebase
- security level
each release type may suit you better than the others.
✅ - DONE
⌛ - IN PROGRESS
Taon cli support following release artifacts:
⭐ npm lib and cli tool - Shared npm library with global cli tool.
The library code is shared across all other artifacts except docs webapp.
⭐ angular node app - Backend/frontend NodeJs/Angular app shared across
artifacts (In websql mode -> there is only frontend with backend inside browser).
⭐ vscode plugin - Visual Studio Code extension/plugin with backend from npm lib and cli tool
⭐ electron app - Electron app with angular node app as IPC `dfrontend/backend
⭐ mobile app - Ionic framework based mobile app with angular node app as frontend/backend.
⭐ docs webapp - Combined documentation: MkDocs + Compodoc + Storybook .
Manual Release
🚀 Purpose: release artifacts using cli on development machine
🚀 Purpose: A convenient way to check if the Cloud Release will work.
🚀 This release creates a config that is used later in the Cloud Release.
| Artifact name | Manual |
|---|---|
| npm lib and cli tool (manual) |
✅ - publish as normal package (project name as npm name) ✅ - publish as organization package ⌛ - handle public/private npm (login if needed), use .npmrc ⌛ - build option: publish only cli without lib code ⌛ - build option: minify/obscure library code file by file ⌛ - build option: (single one file) minify/obscure whole library/cli |
| angular node app (manual) |
✅ - build docker with router for NodeJs backend and Angular frontend ✅ - docker can be use with any docker management system ✅ - taon cloud handle start/stop/update/deployment of dockers/apps ✅ - release docs webapp to github_pages special branch: |
| vscode plugin (manual) |
⌛ - publish to azure when azure cloud cli available ⌛ - publish special website assets as new release |
| electron app (manual) |
⌛ - publish to store (ms store, mac app store, snap, flatpak) ⌛ - publish special website assets as new release |
| mobile app (manual) |
⌛ - publish to app store (play, app store, app gallery) ⌛ - publish special website assets as new release |
| docs webapp (manual) |
⌛ - publish special website assets documentation as new release ⌛ - release docs webapp to github_pages special branch: |
Cloud Release
🚀 Trigger release on remote (or localhost) Taon Cloud instance
🚀 Cloud Release actually uses Manual Release with config on remote (or localhost) Taon Cloud
| Artifact name | Cloud |
|---|---|
| npm lib and cli tool (cloud) |
⌛ - trigger remote npm lib/cli publish ⌛ - trigger remote npm libraries chain publish |
| angular node app (cloud) |
⌛ - trigger remote build based on config ⌛ - release is bumping versions and deploying to servers ⌛ - release and deployment is a same thing here |
| vscode plugin (cloud) |
⌛ - trigger remote build/publish to azure ⌛ - trigger remote build/publish to special assets server |
| electron app (cloud) |
⌛ - trigger remote build/publish/deploy to application stores |
| mobile app (cloud) |
⌛ - trigger remote build/publish/deploy to application stores |
| docs webapp (cloud) |
⌛ - trigger remote build/publish/deploy to remote server website assets |
Local/Repo Release
🚀 All released artifacts stored inside project repository
🚀 Perfect if you are starting project alone and you need
to somehow show your work/progress
| Artifact name | Local/Repo |
|---|---|
| npm lib and cli tool (local/repo) |
✅ - release lib and cli into: repo-folder/local_release/npm-lib-and-cli-tool/project-name |
| angular node app (local/repo) |
⌛ - release docker images (dockers backend, frontend, routers etc.) to repo-folder/local_release/angular-node-app/project-name |
| vscode plugin (local/repo) |
✅ - release *.vsix plugin file into: repo-folder/local_release/vscode-plugin/project-name |
| electron app (local/repo) |
✅ - release app installer (or executable) into: repo-folder/local_release/electron-app/(win/mac/linux)/project-name |
| mobile app (local/repo) |
⌛ - release .apk, .ipa app into: repo-folder/local_release/mobile-app/(win/mac/linux)/project-name |
| docs webapp (local/repo) |
⌛ - release docs webapp into: repo-folder/local_release/docs-webapp/(win/mac/linux)/project-name |
Static Pages Release
Take advantage of github pages (or similar solution) in a best possible way.
🚀 Purpose: release any compiled/bundled artifact to static pages (free Github Pages)
🚀 Purpose: A convenient way to store artifacts with with versions
🚀 Perfect for storing open source apps/libs/docs
| Artifact name | Static Pages |
|---|---|
| npm lib and cli tool (static-pages) |
⌛ - publish zipped (also with source code) library/cli to static_pages_branch/assets/npm-lib-and-cli-tool/version-X-X-X ⌛ - additionally bundled script for cli installation |
| angular node app (static-pages) |
✅ - publish angular app with WEBSQL backend to static_pages_branch |
| vscode plugin (static-pages) |
⌛ - publish zipped (also with source code) vscode plugin to static_pages_branch/assets/vscode-plugin/version-X-X-X/ |
| electron app (static-pages) |
⌛ - publish zipped (also with source code) electron app installer to static_pages_branch/assets/electron-app/version-X-X-X |
| mobile app (static-pages) |
⌛ - publish zipped (also with source code) mobile app installer to static_pages_branch/assets/mobile-app/version-X-X-X |
| docs webapp (static-pages) |
✅ - publish documentation to static_pages_branch/documentation |