Dupe Launcher, automated updates, and versioning

Status
Not open for further replies.

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Edit: replaced by this updated launcher thread - moved this one to Suggestions as a dupe

Name:
Launcher, automated updates, and versioning
Summary: Automate the versioning and updating of the main app via build script on the server side and a launcher on the client side
Scope: Engine
Current Goal: Initial launcher downloading the latest version (and where to keep a version tag)
Phase: Implementation
Curator: NowNewStart plus maybe Kai Kratz and x3ro along with mkalb from GitHub
Related: #62, #67, #167, #171, #221, #287

New contributor NowNewStart offered to make us a launcher to pull automated updates for Terasology off the web (thanks!). This relates to multiple existing issues I've linked above. Trick is: We don't have fully integrated versioning yet :)

I've played with version numbering in the past (we'd technically be at 0.43 or so at this point) but it hasn't been automated or put to use for anything. There are/were even hooks for it in the Gradle build script.

http://jenkins.movingblocks.net/job/Terasology/lastSuccessfulBuild/? might be a good in-between to tell the launcher to check for updated builds (can parse the build number off the page). Still need something in the client for it to know what build it is, however, which I think we'd need in the Gradle script
 
Last edited:

NowNewStart

Member
Contributor
When we use a Build Script which makes the .zip files to "terasology.buildnumber.alpha.stable", i can use a PHP script to get the buildnumber.
 

McTest

New Member
I think you just need a file which contains the version number (could be a simple textfile) in the game-folder and the Launcher just has to check if the number in the textfile is different to the number of this build.

With Visual Studio its done in some minutes i think :D
But i think u want the Launcher coded in java too, dont u?
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Just an idea : the user could choose to be on the "stable build" channel or "last build" channel. Like in Firefox.
Cool idea - especially for when things get a little more hectic :)

I broke the unstable number for a bit with a checkstyle test job in Jenkins, wasn't sure what that echo was all about so the test job managed to write "5" to that file - disabled that now :D
 

NowNewStart

Member
Contributor
Okay, Status Update. I need a Photo and an icon for the Launcher. You have time until tomorrow's midnight. The best will be in the Launcher
 

NowNewStart

Member
Contributor
Again a Status Update. The Launcher can now starts Terasology and also download the latest stable build. Now i must discover how to unzip and replace the files.
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Nice! Don't worry about having everything ready now now now. We've got time. I appreciate your eagerness though!

What are you writing it in? Anything outside the Java-centric focus for the project will work in theory but not be maintainable in the core over time (as in, we'll focus on going 100% Java, which may include Java-flavored stuff like Groovy etc)

As for icon - for some reason I'm picturing Gooey wielding some sort of Rocket-Propelled Grenade launcher... but until we talk SuperSnark into doing something crazy like that I'd say any of the Gooeys or other project graphics would work as a placeholder. Like something edited from this one:

sweet-gooey.png


Background - any sort of nice in-game screenie
 

mkalb

Active Member
Contributor
Logistics
Some ideas for versioning:

Version input

Git:
  • branch (master, develop, integrate)
  • tag (as far as i know it is not used at the moment)
  • commit (hash)
Date/Time
  • Date (20120813)
  • Date and time (20120813214956)
Counter
  • Starting with 1 and increased by 1 every build
  • automatically (Jenkins build number #257)
  • manual
User defined version
  • String/text, which can contain numbers (major, minor, bugfix = 1.3.1) and text (pre, RC, Final, SNAPSHOT, ...)
  • External file/URL (http://updater.movingblocks.net/unstable.ver)
  • build.gradle (project.version)
  • File (under Git) (xml, ini, properties, java, groovy, ..) (root folder or src/main/resources or src/main/java, ..)
  • Jenkins parameter ???
 

mkalb

Active Member
Contributor
Logistics
Some ideas for versioning:

Version output

File name (ZIP)
  • branch (Integrate, ...)
  • Version
  • content (src, bin, Applet, ...)
  • Text for static links (latest, nightly, current, last, SNAPSHOT, ...)
JAR
  • Manifest (Implementation-Version)
  • File (xml, ini, properties, java, grooy, ...)
File (xml, ini, properties, java, grooy, ...)
  • root folder of ZIP
Log
  • Version should be visible at the log files
  • One of the fist messages, when Terasology starts
GUI
  • Menu screen
  • Info/version/Help screen
  • start/loading screen
Launcher
  • Update check
Announcement and Download links
  • Twitter (with Gradle)
  • Forum
  • GitHub
  • Forum
  • Facebook, ...
 

NowNewStart

Member
Contributor
Okay. Update Log:
I will publish the first Beta today.
The first Beta won't have a notification whether there's a new Build, that will be added later.
You have a Button to refresh/update your Build.
You have a nice Pic of Terasology and a Build Changelog.
You can start Terasology (Wonder).
I make an archive on google code or github or both :D idk^^
It will be in Java. (Unfortunately for me :D)

More Features will be added later.
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
NowNewStart - awesome! GitHub please! Fork the project for a local copy, then make a new repo for the launcher. Looking forward to it, and don't rush yourself :)

mkalb - lots of potential in all those stats. Kai Kratz is looking at a branching strategy so we might put the branches to more specific uses (and tags maybe?). Jenkins has the build numbers, although I'd like a "human format" release number on top of that. Changelog... something something that works somehow :D
 

NowNewStart

Member
Contributor
Okay, I have some Problems with the GUI Dev in IntelliJ. It doesn't want to do what i want to have :D
I try NetBeans now.
mfG,
NowNewStart
 

NowNewStart

Member
Contributor
Okay. I try to make it but i told everybody that i only have a clopping NETBOOK. I will try to do this in NetBeans...
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Cervator - Jenkins has some useful data: http://jenkins.movingblocks.net/job/Terasology/lastBuild/
Is it possible to submit them to gradle? System properties?
Yep, that's built-in: https://wiki.jenkins-ci.org/display/JENKINS/Building+a+software+project#Buildingasoftwareproject-JenkinsSetEnvironmentVariables

Sign up for an account on the Jenkins server and I'll set you up so you can tinker with that job

NowNewStart - don't rush yourself. Anything worth doing is worth doing right. Just step through the Dev Setup instructions bit by bit and ask in the forum or on IRC when you hit issues - you'll be happy when it is working :)
 
Status
Not open for further replies.
Top