Platform Continuous Delivery Process
This page describes how development teams collaborate on code of Promethist Platform components using Git SCM and YouTrack issue tracker.
Such issues can be created by any user of the Flowstorm platform and can have any of the following non-delivery states, which can be changed only by representatives of the Platform team:
- Submitted (initial state of created issue)
- Won't fix (terminal state of issue)
- Duplicate (terminal state of issue)
- To be discussed (needs more information/specification)
- Can't reproduce (temporary state - needs more information, otherwise we won't fix it)
Relevant issues are moved into Backlog as the initial stage before delivery and change its state to Open automatically. The platform team prioritizes issues when it's moving them forward from stage to stage and giving them work precedence inside every delivery stage applying the following set of rules:
- 1.Bugs first.
- 2.Issues with more votes first (except bugs having priority Critical or Show-stopper).
- 3.Higher priority takes precedence (priority value is always confirmed by Team, not issue Reporter).
In general, only bugs can have priority Critical or Show-stopper. Other types of issues should use only priorities Major, Normal (default), Minor.
Issues can be staged into delivery only by members of the Platform team ([email protected] currently does that for issues created by non-members of the Platform team). They can have one of the following delivery states:
- Open
- In Progress
- On Hold
- Fixed (terminal state of issue)
related to predefined following delivery stages:
| Development | Review | Done | Done |
Description | Work on the issue | Code review and user testing performed upon Merge Request | Code automatically deployed into the preview environment after change request merged | Code deployed into the production environment |
Responsible role | Developer | Tech Reviewer
UX Reviewer | - | Senior member of TECH squad |
Relevant state(s) |
|
|
|
|
Git reference | APP-X-description branch | Merge request from branch APP-X-description to master | master branch | tag on master branch |
Endpoint | Developer's localhost | app-X.flowstorm.ai | app-preview.flowstorm.ai | app.flowstorm.ai |
Database | develop | develop | production | production |
Namespace | - | X | preview | default |
If platform change request (APP-X issue) requires to make any changes in Core project then it will go following way
- 1.Developer will create branch
APP-X-description
on core project to make request changes - 2.Developer will make these changes available as
X-SNAPSHOT
version by creating Pull Request (PR) in Github core project which will be then processed by Gitlab CI pipeline as changes will be mirrored to Flowstorm Gitlab repository Note: this PR should contain comment informing that this PR was requested by flowstorm project, to prevent it's merge before flowstorm MR was tested - 3.Developer will set X-SNAPSHOT as
flowstorm.core.version
in platformsettings.xml
file - 4.Developer will create platform merge request to make issue ready for testing on domain
app-X.flowstorm.ai
- 5.If testing identifies any problem, developer will push update commits to core and/or platform APP-X-description branch (when there was only update of core X-SNAPSHOT, he can re-run flowstorm MR pipeline to update app-X.flowstorm.ai)
- 6.If core PR and flowstorm MR are both okay from reviewer + tester's point of view then
- 1.Core PR will be merged and new Core version will be released by tagging master branch to
X.Y
- 2.Developer or Flowstorm reviewer will change
flowstorm.core.version
in platformsettings.xml
file toX.Y
- 3.Flowstorm MR will be merged
When platform change is requesting update of NLP backend services (illusionist, duckling, triton), such update can be currently done by pushing update to
master
branch of particular NLP service project which will result into preview deployment on URL https://<nlp-service>.preview.flowstorm.ai
. Flowstorm change request deployment should be updated to reference preview instance of NLP service(s) by adding <nlp-service>.url
properties to app.properties
configuration in deploy/admin/templates/configmap.yaml
file. As soon as updated versions of NLP services are tested and released to production, specific <nlp-service>.url
properties should be removed from associated PR.