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