Blog

Brad Wood

May 05, 2016

Spread the word


Share your thoughts

We are excited to announce availability of CommandBox v3.1.0 Beta for testing and feedback.  Our goal is to have this released in time for Into The Box so that means we need you to help get it stable and ready to go.  There are a collection of bug fixes, and several very nice improvements, the biggest of which is the ability to start up any CFML engine you want on demand including Lucee 5, Adobe ColdFusion 2016 and Railo.

How do I get it?

First things first.  If you already have an older version of CommandBox installed, you can run this command which will give you the URL 

CommandBox> upgrade --latest

Or just hop over to our integration server and grab the correct binary for your OS:
http://integration.stg.ortussolutions.com/artifacts/ortussolutions/commandbox/3.1.0/

We're still working on the GitBook docs for this release, but you can use the "help" commands to get additional info.

What do I need to know?

The first thing to take note of is that the beta of CommandBox is currently pointing to our stage server since we are using a brand new ForgeBox API.  This will be fine for testing, and even installing most packages, but it's not guaranteed to be the exact same packages as what's on production.  

If you want more juicy details on the new features of 3.1.0, please check out these two blog entries on my personal blog:

Exciting New Features In The CommandBox 3.1.0 Bleeding Edge

CommandBox Multi-Server Support Now In Beta (v3.1.0)

Also, a full list of tickets completed thus far are available here in JIRA:

JIRA Search for "Resolved" tickets in the "3.1.0" release.

What's new?

Here's an overview of the big changes and improvements in this release.  There will be more to come, but this is what we have done so far.

Multi-Server Support

The CommandBox CLI runs on Lucee Server, and the web servers you could start in any directory used to only be Lucee too.  Now you can start up a web server of any kind and version.  Currently supported CF engines are:

  • Adobe ColdFusion 2016.0.0+297996
  • Adobe ColdFusion 11.0.0+289974
  • Adobe ColdFusion 10.0.12+286680
  • Adobe ColdFusion 9.0.2+282541
  • Lucee Server 4.5.2.018 (embedded, so no download needed)
  • Lucee Server 5.0.0-SNAPSHOT+243
  • Railo Server 4.2.1+008

Starting up a CF server is still super easy.  Everything you need will be downloaded the first time you start the server and cached for subsequent restarts.  

# Start the default engine
CommandBox> start

# Start the latest stable Railo engine
CommandBox> start cfengine=railo

# Start a specific engine and version
CommandBox> start cfengine=adobe@10.0.12

Start any Java WAR as a server

This goes hand-in-hand with multi-server support, but opens the door even wider to ANY Java J2EE application, which could be a custom CF engine build of your choice, or just a standard Java application.

CommandBox> server start WARPath=/path/to/explodedWAR
CommandBox> server start WARPath=/path/to/WARArchive.war

Global Server Defaults

You can store your server settings in a server.json file since version 3.0.0.  Now, we've made it even better by allowing you to provide global defaults that apply to all servers via the config settings.

CommandBox> config set server.defaults.app.cfengine=lucee@5-snapshot
CommandBox> config set server.defaults.jvm.heapSize=1024

New ForgeBox 2.0 API

We've re-written the ForgeBox API to be better, faster, and stronger.  It supports a whole slew of new functionality to help CFML developers publish their packages and get them into the hands (and servers) of other developers.

ForgeBox 2.0 tracks multiple versions of the same package

This is self explanatory, but a huge improvement.  Your project's entire history of releases can now be tracked via ForgeBox, allowing users to install the specific version of your package that they need.

CommandBox> install coldbox@3.8.1

ForgeBox can create users from the CLI

Signing up for a new ForgeBox account just got even easier with the following command.  

CommandBox> forgebox register

ForgeBox can log you in from the CLI

You can also authenticate to ForgeBox to publish your packages and more with this new command.  You may never touch a web browser as long as you live.

CommandBox> forgebox login

ForgeBox can publish package from the CLI

Put them all together and what do you get? Only the smoothest, fastest, and most advanced workflow for managing your open source packages in the CFML space.  With one command you can shoot new packages off to ForgeBox for the entire world to see, or just update a new version of an existing package.  There's no need to log into the web site and keep stuff up to date, this command does it all for you, including reading in your readme files.

CommandBox> forgebox publish

Bumping package versions auto-tags your Git repo

In our never-ending quest to improve the developer's workflow, bumping your packages to a new version will automatically tag your local Git repo (if you're using one).  That's one less thing you need to worry about before using the publish command.

CommandBox> bump --patch message="Finalized awesome features."

Semantic Version support

Now that ForgeBox is aware of all your packages versions, the CLI is also able to use fancy version ranges to install the versions you need and allow you to update easily to new compatible versions of your packages in the future.  We've implemented full NPM-style semver support.  Check out these new syntaxes supported for packages on ForgeBox.

# Latest stable version
CommandBox> install foo

# latest version, even if pre release (bleeding edge)
CommandBox> install foo@be

# A specific version
CommandBox> install foo@1.2.3

# Any version with a major number of 4 (4.1, 4.2, 4.9, etc)
CommandBox> install foo@4.x

# Any version greater than 1.5.0
CommandBox> install foo@>1.5.0

# Any version greater than 5.2 but less than or equal to 6.3.4
CommandBox> install "foo@>5.2 <=6.3.4"

Interceptor-based CLI scripts

If you want to piggyback additional commands to run at key lifecycle events for your package, servers, or CLI, you can specify scripts in your package.json.  Scripts are commands to be run from the CommandBox interactive shell, that will execute automatically in the same working directory.  They are stored in the box.json under an object called "scripts" and keyed off the name of the interceptor you want to fire them. These are useful for additional housekeeping tasks that you want to make automatic.

{
  "scripts" : {
   "postVersion" : "package set location='gitUser/gitRepo#`package version`'"
   "postPublish" : "!git push",
   "onServerStart" : "echo 'Hi, thanks for starting `server show name` on port `server show web.http.port` in directory `pwd`'"
  }
}

Well, don't just stand there

It's time for you to get out there and test.  Put in tickets for any bugs you find here.  To review, you can download the beta for CommandBox 3.1.0 here:

http://integration.stg.ortussolutions.com/artifacts/ortussolutions/commandbox/3.1.0/

And if you want to read a more in-depth review of the features, check out these posts on my personal blog:

Exciting New Features In The CommandBox 3.1.0 Bleeding Edge

CommandBox Multi-Server Support Now In Beta (v3.1.0)

 

 

Add Your Comment

Recent Entries

October is here, and that means Hacktoberfest!

October is here, and that means Hacktoberfest!

Hacktoberfest is here!

Ortus Solutions is built upon Open source with our flagship products all open source, this event holds a special place in our hearts and it’s a great space to show developers how we are modernizing the CFML language. We invite everyone to get involved and contribute to CFML Community Projects, with documentation, code, and new this year, non-code contributions. 

Maria Jose Herrera
Maria Jose Herrera
October 04, 2022
Using CommandBox Docker Images to Perform Bytecode Source Conversions

Using CommandBox Docker Images to Perform Bytecode Source Conversions

There are times when code needs to be shipped in a compiled state. It might be for obfuscation or source protection, it might just because it runs faster that way, without the CFML server needing to compile templates at runtime. It's an excellent use case for production Docker images and code deploy pipelines.

Jon Clausen
Jon Clausen
October 03, 2022
cbElasticsearch 2.3.3 Released

cbElasticsearch 2.3.3 Released

We are pleased to announce the release of cbElasticsearch version 2.3.3. cbElasticsearch is the Elasticsearch module for the Coldbox platform, and provides a fluent CFML API for interacting with, searching, and serializing to Elasticsearch servers.

This release adds full compatibility for Elasticsearch v8.x as well as maintaining support for Elasticsearch versions 6 and 7.

Jon Clausen
Jon Clausen
October 03, 2022