Git/Diff file based source control and release.
User Reported user-pn.
I find the pulse database opaque. To have reassurance of what is stored and to allow diffs between versions I would like to see textual files representing the data. This would allow me to see in source control what is changing.
user-ag would like to:
- Copy deploy from dev to prod using JSON. Possibly replacing data source names in the JSON.
- Have the ability to export / import.
user-ev said git based deploy is very important
- had a really great example of pre/post commit hooks for checking that connections and queries are valid.
- and that there were no passwords in the query.
- Changing connection details when migrating from UAT to PROD?
Workflows
- Create a new dashboard.
- Update an existing dashboard
- From original created in UI,
- From git based
- Update in git to add non-existant connection or broken query. or an invalid json file.
- Change title/owner of dashboard.
- Delete a dashboard.
- Migrating dashboards from Dev -> UAT -> PROD
Questions:
- Pulse as code? Gitops? Allow everything to be file based? EMails? Alerts? Users?
- How does this conflict with env/file/UI/REST based config.
- e.g. Settings servers via REST vs setting via file. Can't save connection passwords in file?
- Integrate with actual git using jgit to push/pull or file based.
- Users with data in the dashboard? Or where they don't want others to know dashboard exists?
Options:
A. Built-in git workflow and storage B. Do not support it C. File based system that pushes dashboards into Pulse. D. API based push of dashboards into pulse. E. Actual Git based push / pull using JGit.
File or Git based seem only sensible options.
File Proposal
Folder structure is:
/pulseapp
/pulseapp/dash/ - All Dashboards below here
/pulseapp/dash/2-blotter - Dashboard 2 with handy name after heyphen
/pulseapp/dash/2-blotter contents:
{
id: number,
version: number,
name: string,
defaultParams: string,
userName: string | undefined,
teamName: string | undefined,
tags: string,
comment: string,
ppublic:boolean,
data:{
cssStyle:string|undefined,
forcedTheme:ThemeType|undefined,
tabSetEnableTabStrip:boolean|undefined,
cssURLs:string|undefined
tabbDetails:[
{ name:string, color:string|undefined, jsonmodel:IJsonModel },
{ name:string, color:string|undefined, jsonmodel:IJsonModel },
]
};
}
- user-rd user-sit to allow tracking changes and what is released.
user-ro user-bar needs this to producitonise application.
Storing dashboards in git released 3.14 https://www.timestored.com/pulse/help/admin/gitops-export-git