FW Apps Tutorial - Release an App

Congratulations, you are basically done with the Informatics Training! There is just one more step for you to go through.

Learn It!

While this unit does not really introduce another fundamental section of code within the apps, as previous units have, we felt at Informatics that it would be helpful for you to have gone through the entire release process with an app once before you go to the real apps. Previous developers after going through the training had noted that it would be nice to be able to have gone through the release process in order to understand it better. As you can tell, there is no Introduce It! Section because this is going to be a very quick unit.

Before we go on to the steps you need to take to actually release your app (which will be linked in the next part), I think that it is helpful to give you a brief conceptual introduction to what you are doing when you release an app. After you have completed an app with all the proper issues that you have selected, and it is ready to be pushed to the testing website for the Informatics testers to see before pushing live, you need to make your code accessible for them to download. Pushing to Bitbucket is not enough for admin to receive it because they use the production version of an app, which the FW Installer must be able to know there is a new version of that app code in order to properly use.

So essentially, behind the scenes what you are doing in your release process is threefold:

  1. You are making a zip file of your current code, as a new version.
  2. You are uploading said zip file to Bitbucket Download's section, so it can be downloaded.
  3. You are updating the FW Registry database, which keeps track of what versions are available for each app, to let it know that there is a new version available for the app you released.

Of course, there are more Informatics policy things that you do when you are releasing your code, but technically these are things that you are doing per our policy, that are in addition to the actual release of the app itself. To begin our processes of testing and notification of the right parties that there is a new version. But technically, the release process proper ends once those three steps are complete (as it can now be downloaded by anyone using the production version of our apps). The extra steps per Informatics policy are:

  1. Uploading to our Testing Website, so our Testers can see the changes you made, and we can protect against any breaking changes before going live.
  2. Pushing the "Release" button for your app in Issue Tracker, which will send a release notification email to the proper individuals, so it doesn't go weeks without realizing there is a new version on the testing server.
  3. At some point, either before or after you have officially "released it" (usually after), you will need to demo your changes to the Dev Admin team so that they can ensure that they like the changes, and give you any notes, before actually pushing them live (and just generally so they can know exactly what you updated).

Some of these policy things will not be done with the Training App because it is not an actual app that gets pushed live, since it is essentially an app that was written entirely for training. Because of this, you will not be able to Release the training app in Issue Tracker (because there is no Issue Tracker for the Training App) and also you won't be demoing your changes with admin (since they don't need to approve these changes, because they saw it when the app was originally created, and it isn't going live anyway). But we will still give you practice putting it on the apptesting website.

Bring It Home!

Obviously, for the Bring It Home! section, there is only one issue you will be completing, and that is releasing the Training App. It is important that you make sure that you are releasing the version of the app that I had you download because otherwise it will potentially not be what we are looking for in certain answers (therefore, other new developers can't see an example on the testing website of what it should properly look like), and secondly, it probably won't release to the right repository to be properly downloaded.

  1. Release the App. Make sure that you follow the documentation both for releasing an app in general, and also the Informatics Policies on Releasing Apps. All the information for releasing an app, and what to do afterwards should be within those two documents, with the exception, that you will need to go to the Training App on the Testing Website to see the current version, and increment it by one version, just in case the developer before you forgot to push his version increment to the repository.

    Note: Ordinarily, you would need to increment the second number, because you have done a database migration, but to avoid an obscenely high version number for the Training App, we will just use the following method: Every ten versions we will jump the second number (so the next version after 0.0.9 is 0.1.0 rather than 0.0.10, and after 0.9.9, move on to 0.10.0). However, this is NOT the normal Informatics Policy, and you should familiarize yourself with the actual policy before releasing any future app.

Also, if you get a Version x.x.x already published for app 'trad' when running fw publish, then you did not make your version high enough, and a previous developer has already released that version, please increase your version number by one and try again.

Check It!

Congratulations! You have successfully completed all of the Informatics training procedures. The only way for you to check to make sure things are done properly is navigate to our testing website, and make sure that your new version you just released is the version that is installed (you can check the about modal for this, and check the version). Feel free to ask whatever questions you desire about this to any of the Informatics Admin.

Take a deep sigh of relief, you are finished! This laborious process has been completed and you are a full fledged member of the Informatics development team. The hope is that after going through all this training, you will understand the apps to an extent that you can be a productive member of the developing team. Talk to the development admin and they will give you your first real Informatics application. Enjoy yourself! Remember, after this, there are no answer code or checks, so try to look at how other apps do things to get ideas, and ask lots of questions whenever you need to. You are now trusted to make decisions on how to do things in the code, and your code may be used as example code to do something similar, so strive for clean and simple code wherever possible!

Extra Reading which May Be Helpful

Of course, no training can cover everything. So there are some aspects of developing in Informatics which we felt were helpful, but not so pivotal to every single developer that they did not make it into the main training. The "Advanced Topics" if you will. We have linked this documentation here that we thought were especially pertinent that you may want to read through at some time in the future (especially if you get an app that uses these features). We will continue to add to this list as we think of things that can be especially helpful.

  • The Documentation Search will probably be your best friend in development. Of course, the page I linked is one place where the search bar is, but at the top of each of our documentation pages you can choose to do a "Global" or a "Local" search. Global will search all of our documentation with your query (including select answers on Knowledgebase), Local will search only the documentation page you are on (so if you use Local on this page, it will search only this Training Documentation). This search does not work the same as a Google search however, so familiarizing yourself with the Search Instructions for Lunr.js (the search system we use), you will able to more easily find what you are looking for.
  • Another aspect of our documentation which will be very helpful to you is understanding the way that Paginated Tables work. Several times in the apps, when there is too much data to load into one table, we will use pages in the apps to load only 50 at a time. There is a pretty documented way to do this, but there are both serverside and clientside elements which need to be done, so that will be a helpful document to read when adding (or needing to modify the existing) paginated table.
  • Finally, while there is documentation for each of our clientside Ember Packages and Serverside Addons, which should be used if you are working in with one of those elements for the first time, we wanted to especially bring to your attention Access Control. It is split between both a clientside package (Ember FW ACL) and a serverside FW Addon (Access Control). This is used by many different apps (currently, Checklists, Checkout Management, Counter Stats, Forms, Job App, Knowledgebase, Message Center, Passwords, Staff Access, and Service Stats), and is perhaps one of our most complicated addons because of the client and serverside components. It's function is to help control the specific data that each user has access to (rather than Group Control, which helps to control the functionality that each user has access to). It would be very helpful to read up on Access Control, especially if you are assigned one of the apps that I listed, which uses it.