Skip to content

Development Releasing

javierfernandes edited this page Oct 13, 2015 · 21 revisions

Releasing Wollok

Build

Wollok build is headless through maven and tycho plugin. The build produces 3 different artifacts:

  • Update Site:
  • WDK:
  • Products:

Releasing means uploading this artifacts to make them publicly available for download. For that we are using an FTP server. Update sites are no different from the other artifacts. They are just files and folders that need to be exposed by a webserver.

Maven Profiles

The current maven build won't create neither publish this artifacts. To do that you must run maven with two different profiles

  • uploadRepo: creates the update sites and publish them.
  • uploadProducts: creates the standalone products (all architectures), plus the WDKs and publish them.

So a sample build would be

cd org.uqbar.project.wollok.releng
mvn clean install -P "uploadRepo,uploadProducts"

NOTICE: you are not supposed to perform this command locally in your machine. It will actually fail if you don't have the correct user+password for the FTP in your settings.xml. In the next section we will see that Travis is already setup to execute this automatically

Travis CI / CD

// TODO

Releasing

So basically to release is to run maven install using our specific profiles. And Travis already knows how to do this automatically when we push a tag. So to release you just need to do the following:

(Note: Eventually this may be done automatically by maven release plugin. But currently that is not working so here we are like doing the release manually)

git co master
git pull

# fix version in poms
mvn versions:set -DnewVersion=1.2.0
git add .
git ci -m "Releasing v1.2.0"
git push

git tag v1.2.0
git push --tags

Then wait for Travis to run the build. You should be able to download the new packages and install from update sites.

Notes:

  • Replace "1.2.0" with the actual version you want to release. In this case the poms had the "1.2.0-SNAPSHOT" version, so you MUST use "1.2.0" (notices that this procedure requires that you have previously set the version to all manifests, features, product, etc.. to the same version that you are releasing. For doing that refer to changeVersions.sh script)
  • Make sure you don't have any local changes
  • You must comply with the tag convention vX.Y.Z
Clone this wiki locally