Deploy changed objects/views to production

When making changes to existing objects or views, I would like to be able to iteratively test and change these objects or views until they are ready for release to the "live Knack environment". To my knowledge, there is no such capability in Knack -- changes applied to objects or views are immediately accessible by users.

I would love to see some form of develop-test-deploy capability to manage changes in a Knack environment.

I have built a workaround of sorts to address the issues with modifying a live app. I took this idea from Wordpress... I built a configuration object that is connected to all the users on knack in the Account Object. One of the object fields is called maintenance mode. Then inside of my admin app i can switch the setting of the field from No to Yes putting the app in maintenance mode. Then i have a page rule on all the pages that states if Account object maintenance mode is Yes then redirect the user to the maintenance mode page. Then on the maintenance mode page, i have a message stating the system is in maintenance mode a small reason why and the time it will be back online. Then I have a countdown timer that refreshes the page every 30 seconds. On the maintenance page, I also have a rule that says if Maintenance mode is No then redirect to the parent page. This will basically cause the page to reload every 30 seconds then when the app is turned off maintenance mode the user will be automatically redirected to the page they were initially sent to the maintenance mode page from. 

Using this method has been extremely useful in keeping users off the live app and controlling their behavior while i am editing. 

One of the other issues i have ran into with the app is updating the app and having users using an old copy of the code because knack doesn't update its code when you change it until the user refreshes. I use a similar method with the maintenance mode as i do with keeping the code fresh. I use the same config file and in that config file I have a version number and each time i make a change update the version and i use a javascript check each time a page is loaded and if the versions don't match it refreshes the code base.

 

Hi there... I have a suggestion to make...
Given that Knack does not currently have a good sandbox or staging capability, There is a possible workaround that can help off of us developers on the platform.
 
Currently once rules are changed or added into the environment, it becomes active immediately, impacting all aspects of the live environment (bugs included). We have situations where due to changing business needs, customers are constantly asking for new changes to the functions, business rules, and screen. As much as Knack is a Rapid development platform, not everything can be done in just one day. Building live apps with go live dates dictated by the customer under this environment is very challenging.
 
While we can develop new enhancements as a new live App, but porting all the changes from the new live App back to the Production environment app is a major challenge, esp where we need to keep to the customer's go live dates due to their respective launch dates, or regulatory requirements.
 
Can Knack consider some of the following suggestions:
a. allow rules, pages, to be embargoed - ie. commented or not come into effect until the code changes needs to come into effect (or uncommented). This will allow the developer to place the changes into the production environment, and only release the code when its time to launch the feature/capability in short time window.
b. allow code (or better still snippets of code) from one live app to be easily copied to that of another live app.
c. can the above be implemented on the new and/or the old Knack interfaces - as I notice that the new interface is still going thru a state of stabilization.
d. Control over when rules need to come into effect for production release  must be implemented for all rules in Pages and also in the Schema - as they both control the workflow of the live application.
 
The best option would be to allow the Data from one app be to exported from one live app to another without loss of any data details or linkages/connections.  This would be the best option.  Then developers can independently develop enhancements on one live app, test it, then be able to move the live production data from the current production live app to the new enhanced live app.  Right now the ability to export the data and reimport the data seem challenging as I notice that key data like the User passwords and some linkages are lost in the transition (between export and re-import of the data).
 
Thanks for your kind consideration.
Please do not hesitate to contact me if your need further clarification.
 
If anyone else have some better ideas to add on... please do, the above is just my 2 cents thoughts on this.
TQ.

This has to happen. It is crazy to make changes in a 'test' app, then have to manually  build it a second time in the "live" app

I provide online value added digital services for Courier express industry - After getting v1.0 out the door to a happy client, we embarked on ver 2.0 the enhance the service.  There was no way for us to safely develop the enhancement and port it from development environment to test environment and deploy the final service back into the Production environment using builder.  It was a total nightmare.  This is a feature that will help serious developers working on Knack.  Without this capability, I will have challenges scaling my business application.

I work in a healthcare environment. Mistakes cannot happen. Developing on a test system and then repeating those changes on a live product is crazy; There is no way to test the changes made to the deployed database. I have seen cumbersome migration strategies before but never a complete absence of one. This isn't really a nice feature to have, it is a core functionality that is necessary.

Yes this functionality is critical as the application grow in user base and complexity. I am not so concerned about the sign-off or check-in/check-out feature. It is the importance of following the methodology of Dev/Test/Production cycle and the ability to test changes before pushing things to production in a easier manner.

Tara says it best.

"We absolutely need this functionality!"  Development on a live system is sketchy at best.  Obtaining a user sign-off after development and then having to rebuild the app in the Live system goes against all of the industry norms.

Andrew's idea of version control is also a requirement.

Let's do it Knack!

Regards

Glenn Hamilton

 

Yes!  We absolutely need this functionality.  Without it the additional effort can be prohibitive and prolong much needed updates to our app.

Any news on when we might see this?

Yes, if you're working on a live system and need to do some major updates initial testing needs to be done in a copy of the app so you don't corrupt the data because of a mistake. When it's time to move the updates live, you currently must manually recreate all the new objects and views. This is both time consuming and prone to mistakes.

I would like to see and update feature and some kind of version control.

Cheers,

Another Andrew

Canada.

Perhaps only a half way house, but I often copy a view or form and then make the copy login just for me, then make the changes on that copy and test that version of it. 

Once I'm OK with the new functionality, I then switch the login to the normal users and turn off the original version of the form etc.  Works fine for me.

Andrew

UK

Ditto. I'd like to see any functionality that supports some kind of dev-ops workflow. 

Yes, it seems the best way to do this if for me just to make a copy of the app and then develop on the copy....but then getting that code to a live environment?   Certainly cannot just copy it back across, especially since the database would be copied and would loose data.  So do you guys just track changes in the dev app then replicate those changes on production?   Thank you for any help, just looking to manage this the right way

I agree. 

However, converting a db into a new format is a pain in the ass. I would be fine with a manual migration that lets me set the migration rules.

For the views and pages, that would be great.  It would allow me to do UX testing prior to deploying.

Agreed! An intermediary Staging environment would make live changes less nerve-wracking. I'd gladly pay an additional $10 or $20/month for this as a special feature.

Agreed.

Maybe just a flag on the page settings to release to a role?  that way we can test using a 'developer' role, and then release to the 'user' role when satisfied it all works correctly.  Currently very difficult to add functionality once an app is live ...