We've been publishing all stable Lucee builds and select release candidate builds to ForgeBox for some time now.  This allows you to use CommandBox CLI to start up a Lucee server running the version of your choice.

server start cfengine=lucee@5.3.4.77

Publishing these CF engines has been a manual process in the past, and was something we'd do after Lucee issued a release announcement.  This has changed last week now with three major additions to our process aimed at giving you faster builds, easier testing, and more deployment options.

Snapshots (and more) now on ForgeBox

Instead of only publishing stable Lucee releases, every single Lucee build is now getting pushed to ForgeBox as a new version.  This includes

  • Stable releases
  • Snapshot builds
  • Release candidates
  • alphas, betas-- whatever they put out!

There's actually quite a lot of snapshot builds.  Basically every commit to Lucee bumps the build number so there are usually a few snapshot builds every week, and typically 75-100 snapshot builds between every stable release.  Publishing every single version of Lucee that comes out allows you to have total control over what versions you test and deploy now without needing to wait.  We publish the build binaries in S3 so downloads are as fast as possible too.  

server start cfengine=lucee@5.3.4-SNAPSHOT+84

Also remember that unless you explicitly ask for a prerelease version, you will always only get stable versions of Lucee when starting a server.

// This will give you the latest stable version
server start cfengine=lucee

// This will give you the latest stable version starting with 5.2
server start cfengine=lucee@5.2

Remember to use Semantic Versions

One minor difference to keep in mind is Lucee server uses a typical versioning scheme for java projects which looks like this:

<major>.<minor>.<patch>.<build>[-<preReleaseID>]

// Ex of an unstable build
5.3.4.84-SNAPSHOT

// Or a stable build
5.3.4.80

However, CommandBox and ForgeBox use the npm-flavored semantic versioning (semver) which is slightly different.  Basically the build ID is moved to the end after a plus (+) sign.

<major>.<minor>.<patch>[-<preReleaseID>]+<build>

// Ex of an unstable build
5.3.4-SNAPSHOT+84

// Or a stable build
5.3.4+80

The important thing to remember is, when starting a server via CommandBox always use the second format shown above since that is how ForgeBox recognizes each release. 

What versions exist?

Questions about what versions are available?  No problem!  Here are some ways you can find out:

  • Visit the ForgeBox listing for the Lucee package and view all the versions in the versions tab 
    https://www.forgebox.io/view/lucee#versions
  • View the last few versions via the CLI with the command
    forgebox show lucee
  • Start typing your cfengine and hit the <tab> key to invoke the tab-completion feature.  This actually phones out to ForgeBox as you hit tab to get the current valid list of versions that match what you've typed so far

Please note we've backfilled ForgeBox to contain every single snapshot build back through 5.2.9.  If you need snapshot builds from prior to that time, please let us know.

You can also follow the Lucee bleeding edge, which means every time you start your CommandBox server you'll get the very latest Lucee snapshot release.  Please only use this for local development and not production!

server start cfengine=lucee@be

Lucee Light builds on ForgeBox

Lucee has a modular core and comes bundled with a bunch of extensions that approximate the functionality that comes bundled with Adobe ColdFusion.  But that means you are loading the Hibernate libraries, PDF libraries or JDBC drivers even if you don't need them. There is a second type of Lucee server called "Lucee Light" which contains all the core engine, but with zero extensions.  People creating custom docker builds for example will start with Lucee Light and then add back only the extensions their app needs.  To get a feel for all the Lucee extensions available, see this page that lists all official extensions.

We're now publishing CF Engines to ForgeBox based on the Lucee Light builds which allows you to start up a Lucee Light server. These are under a ForgeBox package named "lucee-light" and we've also backfilled all the same versions that exist for the normal "lucee" engine.  Note, the three bullets points above apply to Lucee Light as well,  Just replace "lucee" with "lucee-light" and you're good to go.

// Latest stable
server start cfengine=lucee-light

// Specific version
server start cfengine=lucee-light@5.3.4.77

// Bleeding edge
server start cfengine=lucee-light@be

If you have questions about how to install extensions into a Lucee light server, please hit us up on Slack and we can show you several ways to manage that.

It's Automated, baby!

Perhaps the coolest part of all of this is that we've automated the entire process!  That's right, no manual intervention is required to put new Lucee versions on ForgeBox.  This means new Lucee and Lucee Light engines will appear daily on Forgebox, probably before you even see the release announcements from the Lucee dev forum.

If you're the curious type, you can see all the code we use to import these versions.  It is implemented as a CommandBox Task Runner (of course!) and the code lives here:

https://github.com/Ortus-Solutions/forgebox-cfengine-publisher/blob/master/task.cfc

The task is run as part of a daily Travis-CI build whose output from each run is visible here:

https://travis-ci.org/github/Ortus-Solutions/forgebox-cfengine-publisher/builds