diff --git a/UPDATE_PROCESS.md b/UPDATE_PROCESS.md index 2207a54..94a358a 100644 --- a/UPDATE_PROCESS.md +++ b/UPDATE_PROCESS.md @@ -1,14 +1,75 @@ -# Explanation +Explanation +=================== This tutorial explains on how to deploy new updates to the version control of Parabot. -### VC +[TOC] + +VC +------------ The Version Control of Parabot is based on a webhook within this repository. When this repository gets updated, it calls the updater on the web API. - The web API will then receive all updates and see if there's a new jar update. - Once there is a new jar update, the API will than gather all information and download it to its own server. When the download is finished, the database will be updated with a hash and update time. This can be used to check hashes and the cache directory. +> **Note:** +> When Github caches the latest.json, the API can't gather the latest version. +> For this reason we build a cron job that checks for new versions every 30 minutes. +> In this way we are sure something like no-update never happens. + +The process +------------ +For the updating process, we have a different way of working. If you follow this tutorial you'll be ensured that your changes gets pushed. + +> **There are basically three files that you need to edit:** + +> - ```latest.json``` - This file is being used by the API to see if there's a new version to publish +> - ```pom.xml``` - This file is located in the project itself (client/provider) and contains the version that will be published +> - ```Configuration.java``` - This file is located in the client and contains a string that should match the current version. + +If any of these do not match each other, ie the version in latest.json does not match the version in Configuration.java, then the client will detect a different version and asks the user to download the latest version. But because there the Configuration.java does not match the latest.json, it will keep repeating this process. + +#### Update the client +Updating the client is the most complicated, but also the most important one. + +**When updating the client, make sure the version in either ```latest.json```, ```pom.xml``` and ```Configuration.java``` match each other.** + +To update the version do the following: +0. Clone the Maven-Repository into the same parent directory as the client/provider directory. +1. Take a quick look at the versioning, make sure each version in all files of above match each other +2. Start cleaning your Maven directories with ```mvn clean``` +3. Now go into the pom.xml and make sure the excludes are commented out and the includes are not commented out +4. Build the project using ```mvn package``` +5. Now go into target/classes, in here you'll find the .bat files. Copy **the first line** of **at least** deploy.bat into another file. +6. Now go back into the pom.xml and comment out the includes and include the excludes +7. You are now allowed to package the project again, you can do this with ```mvn package``` +8. Once this process is done, you should open your console +9. Now ```cd``` into the deploy directory of the project. +10. When you are in the deploy directory, you can perform the command copied from step #5 - *(deploy.bat)* - *You are allowed to perform the other commands, but then you should be in the parent directory of deploy.* +11. Once this is done, you can push the files from the Maven-Repository to the Git repository. + +#### Update a/the provider +Updating a/the provider has almost the same process as updating the client, the only difference is that the versioning doesn't really matter. This is because the provider doesn't contain a check for the actual version, instead it simply cleans the cache when a new update came out. + +**When updating the client, make sure the version in either ```latest.json``` and ```pom.xml``` match each other.** + +0. Clone the Maven-Repository into the same parent directory as the client/provider directory. +1. Take a quick look at the versioning, make sure each version in all files (except for ```Configuration.java```) of above match each other +2. Start cleaning your Maven directories with ```mvn clean``` +3. Now go into the pom.xml and make sure the excludes are commented out and the includes are not commented out +4. Build the project using ```mvn package``` +5. Now go into target/classes, in here you'll find the .bat files. Copy **the first line** of **at least** deploy.bat into another file. +6. Now go back into the pom.xml and comment out the includes and include the excludes +7. You are now allowed to package the project again, you can do this with ```mvn package``` +8. Once this process is done, you should open your console +9. Now ```cd``` into the deploy directory of the project. +10. When you are in the deploy directory, you can perform the command copied from step #5 - *(deploy.bat)* - *You are allowed to perform the other commands, but then you should be in the parent directory of deploy.* +11. Once this is done, you can push the files from the Maven-Repository to the Git repository. + +You can check the latest update for the client [here](http://bdn.parabot.org/api/v2/bot/information/client) and for the provider [here](http://bdn.parabot.org/api/v2/bot/information/317-api-minified), if this matches a timestamp within the last 30 minutes of your push then you're fine. + +Questions +------------ +If you have any questions regarding this process. Please contact an administrator, whereas preferably this would be [JKetelaar](https://www.parabot.org/community/profile/1-jketelaar/).