Posts Tagged ‘quickrelease’

Shipped: QuickRelease 0.14

Friday, April 27th, 2012

Just a quick note before your Friday happy hour get started: QuickRelease 0.14 has shipped.

This release focuses on a request we’ve had from many people: more documentation and examples.

0.14 sports:

We didn’t get to generated tarballs for releases in this release; that will be in 0.15. For now, you can grab a tarball from github as always.

We hope the documentation helps! If not, hit up the QuickRelease Google Group, and we’ll see how we can help!

Now, on to that happy hour!

Tags: , ,
Posted in Releases, tipstricks | No Comments »

V1093

QuickRelease (Lucky!) 0.13 Released

Tuesday, April 10th, 2012

Just a quick announcement that the newest version of QuickRelease has shipped!

(Lucky!) 0.13, most notably, has the following updates/improvements:

  • Entries from your release configuration files can now be coerced by the ConfigSpec class into dictionaries; you can do this be defining an item in the configuration file with the syntax [key1 value1] [key2 value2]
  • You can now define command-line overrides for variables; you must set allow_config_overrides to true in your config file to allow this behavior, but after doing so, you can redefine variables from the commandline, like so: quickrelease -p SomeProcess -c myconfig.cfg -DoverrideVariable=overrideValue -DanotherOverride=somethingElse. This is especially useful for processes that are used daily, and thus need minor configuration changes.
  • Addition of a chdir() utility method that follows shell semantics; this is a bit of a random feature, but some programs (Perforce’s p4 command line utility, most notably) rely on a correctly-set PWD environment variable instead of getcwd(3) to know which directory they’re operating in; this function provides a compatibility layer for such programs.
  • You can now pass either a filename or an input stream to RunShellCommand(), and it will hook this up to the calling process. This is useful for some programs (again, notably, p4) where you can script their behavior by giving them commands via STDIN.

Packages can be grabbed directly from github. (We’ll be publishing “proper” packages for future releases.)

As always, if you run into any problems, don’t hesitate to let us know

And if you’re interested in the project, feel free to follow/fork us on github!

The focus on 0.14 will be something many have been asking for: more documentation, and examples, including a sample set of processes, steps, and configuration to build Firefox!

Tags: , , ,
Posted in Releases | No Comments »

V1055

QuickRelease 0.12: shipped!

Monday, November 7th, 2011

Just a quick (pun intended) heads up for QuickRelease followers/users: 0.12 just shipped today!

You can grab an automatically-generated tarball, courtesy of github, here.

The 0.12 release has a bunch of minor fixes and polishes to the 0.11.1 release. Notable improvements include:

  • Finish up a wholesale refactor of “Partner steps”: partner steps were originally created to model release processes that are relatively close to each other, but contain minor configuration differences for different partners. Specific improvements include:
    • Creation of a new top-level type: PartnerStep
    • Move all the partner-related concepts into this class.
    • Use a cleaner approach to connect the running of Processes and (Partner)Steps
    • Hook up auto-setting of the partner-related configuration steps, so partner-specific configuration is all set up for steps that use them
    • Provide a mechanism to get at partner-specific configuration variables in common config areas
    • Allow partner steps to decide whether or not they should halt when encountering an error or keep trudging along.
  • Hook up the console driver’s “ignore any errors” option (-i) actually work, and also correctly report if an error occurred, even if you’re ignoring it.
  • Create a collection type for ReleaseFrameworkErrors&mdash:ReleaseFrameworkErrorCollection—which allows errors to be “batched up” and dealt with (particular useful when writing partner steps.
  • Plus a bunch of minor bug fixes!

The provided examples have also been updated to illustrate the power of PartnerSteps and of the new QuickRelease ConfigSpec magic you can play with.

Please give play arond with it, and if you have any questions or (heaven forbid) discover any bugs, feel free to let the QuickRelease developers Google group know!

Tags: ,
Posted in Releases, Releng Machinery, tipstricks | No Comments »

V912

Bootstrapping Quick Releases

Thursday, July 21st, 2011

I just released a new build/release harness1 I’ve been working on for about a year now called QuickRelease.

How does this relate to the Mozilla community, you might ask?


Some bootstraps are clearly more…
ornate & complex than others…

Well, some of the core ideas behind QuickRelease actually come from an automation project Rob Helmer and I worked on back in the day called Bootstrap; you can still find it if you know where to look.

Bootstrap had a lot of good ideas2, but it failed for a few reasons: its core design was based on some object-oriented patterns, and since the implementation language was Perl, that was all sorts of pain3.

Additionally, Mozilla, like many organizations at the time, was moving to Python for much of its infrastructure tools; Perl was considered gauche. Combine this with the “omg new hotness”-push in 2007 to use the buildbot-hammer to smash every problem4, and Bootstrap’s demise was pretty much assured.

I never thought hitching everything release engineering-related to the buildbot wagon was a particularly well and thoroughly conceived idea. In the ensuing time, it looks others have discovered the precise point I was making back then. There’s been some work on adding a layer in between buildbot and the build system… which is exactly what Bootstrap was.

And what QuickRelease is.

It’s worth noting QuickRelease is in production use, shipping others’ software, including some Mozilla-based projects.

Go give it a gander; let us know what you think.

_______________
1 I didn’t push the initial announcement to Planet
2 And in fact, one of QuickRelease’s best ideas—unit testable steps—was rhelmer’s…
3 You have to be pretty blessed in the head to do any hardcore OO-Perl…
4 Using unwieldy master.cfgs

Tags:
Posted in Preed on Build/Release Engineering, Releng Machinery, mozilla, planetmoz | 2 Comments »

V766

Introducing QuickRelease

Thursday, July 14th, 2011

Writing, they say, is never done, it’s just due; as it is with software.

I’m happy to announce a project I’ve been working on for some time now: QuickRelease.

QuickRelease is a lightweight harness1 with a focus on automating build and release-related activities.


Searching Google Images for “quick release”
returns some… interesting results

It’s designed to fit snuggly into your build and release process, between the existing build system-proper2 and the continuous integration system3, freeing you from being tied to a particular continuous integration system, but also allowing you to define processes (release processes, especially) that don’t belong in the build system and don’t make any sense to put in the continuous integration system. It also supports “unit tested” processes, which aren’t the main focus of build or continuous integration systems.

Pros

  • This is a production-level project: it’s being used by projects and companies to build and ship their software today.
  • And they’re doing this on all the major platforms: Linux, Mac, and Windows.
  • Extremely lightweight. By design. The only dependency is Python 2.x4
  • Designed to provide a framework to help guide the design of and clearly describe build/release processes and steps, but places very few restrictions on the build engineer; steps are implemented in pure-Python; few assumptions are made once execution is handed off to those classes5.
  • Prompts the design of “unit-testable” processes… but doesn’t force it (see above principle).
  • Promotes common build/release-related concepts—deliverables, for instance—to first-class, manipulable objects
  • Supports both re-running and re-verification of defined processes.

Cons

  • None; it’s totally wonderful!
  • Ok, ok, there is a TODO list in the README
  • And a few open issues6
  • Like many software projects, it could use more documentation. A lot more documentation. For now, there are some examples to look at.

cvs co

You can get the source code directly from github.

(It turns out they have a spiffy download link for the last release, too.)

And there’s a Google group for discussion and help.

If, like me, you spend your days designing release processes, take a few moments, check it out, and join the dev group and let us know what you think!

_______________
1 Quick release harness… get it?
2 Makefiles, build.xml, etc.
3 buildbot, Bamboo, Hudson
4 We don’t have time to spend installing twister-this and zorp-interface-that on entire build-farm; we figured you didn’t either…
5 No “got unexpected keyword argument(s)”-garbage
6 Feel free to file more!

Tags:
Posted in Preed on Build/Release Engineering, Releases, Releng Machinery | 2 Comments »

V728