Blog

Brad Wood

March 11, 2020

Spread the word


Share your thoughts

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

 

Add Your Comment

Recent Entries

Ortus June 2024 Newsletter!

Ortus June 2024 Newsletter!

Welcome to the latest edition of the Ortus Newsletter! This month, we're excited to bring you highlights from our sessions at CFCamp and Open South Code, as well as a sneak peek into our upcoming events. Discover the latest developments in BoxLang, our dynamic new JVM language, and catch up on all the insightful presentations by our expert team. Let's dive in!

Maria Jose Herrera
Maria Jose Herrera
June 28, 2024
BoxLang June 2024 Newsletter!

BoxLang June 2024 Newsletter!

We're thrilled to bring you the latest updates and exciting developments from the world of BoxLang. This month, we're diving into the newest beta release, introducing a new podcast series, showcasing innovative integrations, and sharing insights from recent events. Whether you're a seasoned developer or just getting started, there's something here for everyone to explore and enjoy.

Maria Jose Herrera
Maria Jose Herrera
June 28, 2024
BoxLang 1.0.0 Beta 3 Launched

BoxLang 1.0.0 Beta 3 Launched

We are thrilled to announce the release of BoxLang 1.0.0-Beta 3! This latest beta version is packed with exciting new features and essential bug fixes, including robust encryption functionality, enhanced Java interoperability, and more efficient event handling. Key highlights include the introduction of query caching capabilities, seamless coercion of Java Single Abstract Method (SAM) interfaces from BoxLang functions, and support for virtual thread executors. So, let’s dive into the details of what’s new in BoxLang 1.0.0-Beta 3 and how you can start leveraging these updates today!

Luis Majano
Luis Majano
June 28, 2024