Releasing - e-ucm/ead GitHub Wiki
This page documents the artifacts the are generated during a release process and the release process itself. Currently this page describes the process done in eAdventure 1.x and the release process that is currently done in eAd 2 in order to automatize the process.
There 2 main types of artifacts generated during the release process:
- The editor (A.K.A. eAd platform)
- Specific games
For both of these types of artifacts, depending of the target platform the observable artifacts are different.
This artifact includes the authoring platform and the embedded engine that will be used to generate the games.
Desktop distribution includes both the binary version of our platform and embedded JRE and embedded VLC in order to minimize the dependencies and avoid any inconsistencies between the JRE/VLC used during development and the JRE used to run the editor. Note that this embedded JRE is a full JRE and is not related to Java Embedded JRE.
Once installed the structure of the exploded artifact is as follows:
- jdk/ : This folder contains the binary distribution of the OpenJDK for the specific target platform ( Windows 32/64, Linux 32/64, Mac).
- libs/ : This folder contains the jar files that comprises the eAd platform:
- The main jar file for the eAdventure editor application
- An additional self-contained jar with dependencies for the engine. This jar file is used by the editor for supporting the exportation of the eAd games as self-contained jars.
- appdata/: This folder contains internal editor data
- release.json: This file contains editor's release information needed for the editor. You can find out more information about the content of this file in the release.json schema.
- launcher : Platform specific launchers.
The aim of this release artifact is to simplify the installation process or to avoid the need to have administrative privileges to run the platform.
The multiplatform artifact is a .zip / tar.gz folder described above plus these generic terminal launchers:
- eadventure-editor.bat : Launcher for windows
- eadventure-editor.sh : Launcher for Linux
- eadventure-editor.command : Launcher for Mac OSX
Using this release artifact, the working directory (where all application settings are stored) is the very same folder where the .zip / .tar.gz is uncompressed.
Usage of .tar.gz allows file permissions to be preserved in Mac and Linux.
The aim of this release artifact is to provide a windows-friendly experience to the final user.
The windows artifact is an .exe file installer that helps the user to install the application. In addition to the common folders described above, the installer provides a native (.exe) launcher that is also branded.
All the user specific settings will be stored taking into account MSDN recomendations, and project folders will be stored in a My Documents\eAdventure Projects folder.
The aim of this release artifact is to provide a more osx-friendly experience to the end user.
The MacOSX artifact is an .app file installer that helps the user to install the application. In addition to the common folders described above, the installer provides a native launcher that is also branded.
All user specific settings will be stored taking into account Apple Recomendations.
The aim of this release artifact is to provide a more linux-friendly experience to the final user.
The linux artifact is an .sh file installer that helps the user to install the application into the /opt folder.
We are also developing a debian package (targeted for Ubuntu) that will be available through a Launchpad PPA repository to facilitate the installation and update. We are also exploring the possibility of using OpenSUSE Build Service to generate packages for other platforms as well.
This artifact will include a restricted version of the editor (may include less features than the desktop editor), that is aimed towards the creation of mockups that later on can tweaked and improved in the desktop version.
The android artifact will be an .apk file that will available through Google Play, and also available for direct download and manual installation.
In order to create an .apk file you must execute the following command in the root folder of the project:
mvn clean install -Peditor-android -Pandroid-build
The (desktop, fully-featured) editor will be able to export games as standalone products that will contain all the resources needed to be played, including:
- The eAdventure engine
- The game definition (JSON files)
- The graphic assets and multimedia files (.png, .jpg, .webp, .webm)
- Launch scripts and/or installers
Additionally, fully standalone versions with both
- JRE and
- VLC libraries
will be available for generation in select platforms (initially only under Linux). This will not be an option for all platforms, as it would require the editor to come bundled with 4 jres+vlc builds (for windows, linux 32 and 64 bit, and macos; each of them totalling > 30Mb; plus the launch4j launchers and binaries).
Desktop games are intended to be launched as a native application, that is, the eAdventure 1.x support for Java Applets will be removed due to the new restrictions and limitations imposed by both the Java Plugin and OS/browser developers concerning Java Applets.
A multiplatform version of the games can be exported with the eAdventure game editor. The output is a single JAR file that embeds both the game and the engine libraries. To run this JAR file it is necessary to have a Java JRE installed, although in the future this restriction will be removed by embedding a JRE with the JAR file. For more details about the game exportation process, see this page.
The aim is to get the whole release process driven by maven in order to facilitate to the developers the creation of a release bundles. eAdventure 2.0 will produce three types of releases, depending on stability:
- stable: The latest version that has been officially reviewed and tested.
- beta: From time to time we will generate new versions that include upcoming features. May not be as stable and error-free as the stable versions.
- nightly: Nightly releases will be automatically generated everyday and may be unstable and contain errors.
To generate a release it is needed to run maven twice at the project root:
# This compiles and generate the jar files
maven clean package
# This generates the release artifacts (application bundles) for the different flavors: nightly, beta, stable
maven -Pdo-flavor-release package
In addition if it is needed to upload the release artifacts then change the last previous command to:
# This generates the release artifacts and upload them to SF
maven -Pdo-flavor-release deploy
To support automatic updates each of the release flavors will have a different update endpoint:
- http://sourceforge.net/projects/e-adventure/files/stable/update.json/download
- http://sourceforge.net/projects/e-adventure/files/beta/update.json/download
- http://sourceforge.net/projects/e-adventure/files/nightly/update.json/download
The structure of these update.json files is defined through this json schema. Here's an example:
{
version:"1.0-SNAPSHOT-201404101959",
platforms:[
{
os: "multiplatform",
url: "http://sourceforge.net/projects/e-adventure/files/nightly/eadventure-editor-desktop-nightly-multiplatform.zip/download"
},
{
os: "portable-jre-win32",
url: "http://sourceforge.net/projects/e-adventure/files/nightly/eadventure-editor-desktop-nightly-multiplatform-jre-win32.zip/download"
},
{
os: "portable-jre-win64",
url: "http://sourceforge.net/projects/e-adventure/files/nightly/eadventure-editor-desktop-nightly-multiplatform-jre-win64.zip/download"
},
{
os: "portable-jre-macosx",
url: "http://sourceforge.net/projects/e-adventure/files/nightly/eadventure-editor-desktop-nightly-multiplatform-jre-macosx.zip/download"
},
{
os: "portable-jre-linux-i386",
url: "http://sourceforge.net/projects/e-adventure/files/nightly/eadventure-editor-desktop-nightly-multiplatform-jre-linux-i386.tar.gz/download"
},
{
os: "portable-jre-linux-amd64",
url: "http://sourceforge.net/projects/e-adventure/files/nightly/eadventure-editor-desktop-nightly-multiplatform-jre-linux-amd64.tar.gz/download"
},
]
}To see more details on the supported os codes, see this Wiki page.
Once all the release artifacts plus the update.json are generated, then they are uploaded to SourceForge.
Because of the use of maven, and to avoid to have passwords inside the POM files, the developers need to configure their settings.xml file to include the following parameters:
<settings>
<servers>
<server>
<id>sonatype-nexus-snapshots</id>
<username>NEXUS_OSS_USER</username>
<password>NEXUS_OSS_PASSWORD</password>
</server>
<server>
<id>sonatype-nexus-staging</id>
<username>NEXUS_OSS_USER</username>
<password>NEXUS_OSS_PASSWORD</password>
</server>
</servers>
<profiles>
<profile>
<id>sf-release</id>
<properties>
<scp.user>SF_USER</scp.user>
<scp.password>SF_PASSWORD</scp.password>
<scp.host>frs.sourceforge.net</scp.host>
</properties>
</profile>
</profiles>
<activeProfiles>
<activeProfile>sf-release</activeProfile>
</activeProfiles>
</settings>
Where NEXUS_OSS_USER, NEXUS_OSS_PASSWORD, SF_USER, SF_PASSWORD need to be replaced with the proper credentials.