Automatic Update Site Uploads
- An open-source project hosted on GitHub
- Logging in to Travis CI with your corresponding GitHub account
- An account on this wiki
- An initialized upload password.
Automatic Uploads via Travis CI
Travis CI can be used to automatically build a repository in response to code changes. To ease the maintenance of ImageJ update sites, we can use Travis to automatically upload the latest version of a site. This is done by creating a
.travis.yml file in your update site's GitHub repository that does the following:
- Create a fresh ImageJ.app
- Build the update site's repository and move the required artifacts (e.g.
.jars) to their intended locations in the ImageJ.app
- Upload the local update site state to your Wiki update site
As a starting point you can copy the following
language: java script: # These first two commands download the bootstrap.js script # and set up a fresh ImageJ.app in the current working directory - curl -O http://update.imagej.net/bootstrap.js - jrunscript bootstrap.js update-force-pristine # For a Maven-based project inheriting from pom-imagej, this will # build the project and install it (and its dependencies) into the # current ImageJ.app - mvn clean install -Dimagej.app.directory="$(pwd)" -Ddelete.other.versions=true # Finally, we download and execute script that uploads to the update site - curl -O https://raw.githubusercontent.com/fiji/fiji/7f13f66968a9d4622e519c8aae04786db6601314/bin/upload-site-simple.sh - chmod a+x upload-site-simple.sh # TODO: set your update site and upload account as appropriate - ./upload-site-simple.sh <UPDATE_SITE> <WIKI_ACCOUNT> # For example, if your wiki account is IJUser and you're uploading to your personal update site (sites.imagej.net/IJUser) you would use: # - ./upload-site-simple.sh IJUser IJUser
For the update site and wiki account,
Encrypting your password
To upload to your wiki update site, you will need to provide Travis CI with a
WIKI_UPLOAD_PASS environment variable, which should evaluate to the upload password of the Wiki account performing the upload. To do so securely, follow the instructions on the encrypting environment variables.
Note that when you run:
$ travis encrypt WIKI_UPLOAD_PASS=super_secret --add env.matrix
in your repository, the
.travis.yml will automatically be updated appropriately. You can simply commit and push the changes.
Add additional update sites
By default, only the ImageJ and Fiji update sites will be enabled in the local ImageJ.app. It's possible to enable additional update sites as needed for your project (for example, if you depend on other 3rd party update sites). To do so, remove the following lines of your
- curl -O http://update.imagej.net/bootstrap.js
Instead, you will need to keep a custom copy of
bootstrap.js (e.g. in your repository). In this script, find the following line:
files.addUpdateSite("Fiji", "http://update.fiji.sc/", null, null, -1);
and add additional calls to
addUpdateSite as needed.
Travis CI is capable of building many languages besides Java. If you do not have a
pom.xml then you need to replace the following line of your
- mvn clean install -Dimagej.app.directory="$(pwd)" -Ddelete.other.versions=true
with a sequence of commands that will move your build artifacts to the appropriate