Jenkins and More! New OpenShift Release - Nov 15, 2011

The OpenShift team is proud to announce we now have a built-in work flow for continuous integration. Our users who are already familiar with Hudson or Jenkins will be pleased to see a fully functional Jenkins environment. Those unfamiliar with continuous integration are in for a real treat.

With Jenkins, users have access to a full library of plugins and a vibrant thriving community of users who have discovered a new way to do development. The basic work flow is this:

1. Commit and push new code to your repo.
2. Jenkins waits for this commit, runs a full series of tests (customized by the developer)
3. The results are saved in Jenkins for review.
4. With OpenShift, if the tests and build are successful, the new code gets deployed. If it fails, the old code continues to run with no downtime related to the push.

Describing these four steps really doesn't do continuous integration justice. We've been using Jenkins internally at Red Hat for testing OpenShift before we release it to our users. It's just an amazing tool that makes it so much easier to automatically detect issues, get trends, etc.

How can users get started? First, update your rhc tools (gem update rhc or yum update rhc). Next, create an app as normal but use a new flag:

$ rhc-create-app -a myapp -t jbossas-7.0 --enable-jenkins ci

This command automates three steps (all of which could be done manually). First, it will create a new application called "ci". This app is a dedicated Jenkins instance available at http://ci-$DOMAIN.rhcloud.com/. Next it will create a new jbossas-7.0 application called myapp. Last it will embed a Jenkins client into myapp so it can communicate with the newly created Jenkins instance.

That's it, after that any commits pushed to the jbossas-7.0 "myapp" repo will automatically build in Jenkins. Users wanting to do the above steps manually (or wanting to add Jenkins builds to an existing application) need to run the following commands:

$ rhc-create-app -a myapp -t jbossas-7.0
$ rhc-create-app -a ci -t jbossas-7.0
$ rhc-ctl-app -a myapp -e add-jenkins-client-1.4

These three commands produce the same result as the single command above. For users wondering about the benefits of building in Jenkins take a look at this list:

1. Additional resources like memory and storage during build time
2. Archived build information
3. No application downtime during the build process
4. Failed builds do not get deployed (it's like having automated QA)
5. A large community of Jenkins Plugins - https://wiki.jenkins-ci.org/display/JENKINS/Plugins

Jenkins isn't the only thing we've been working on. This release has several other additions including a new cartridge type "raw". The raw cartridge type is designed to be used for raw computing power. It has no web interface. This can be used as a builder for Jenkins or even for process jobs.

People have been asking for custom domain support for some time so we've added support for it. To add a new domain run:

$ rhc-ctl-app -a myapp -c add-alias --alias newdomain.example.com

Note: at this stage in development, this only functions for unencrypted connections. Adding aliases to applications and connecting via SSL will function but produce an error about the domain name mismatch. This is by design. We're working on adding custom SSL cert functionality as well.

The final feature we're happy to announce is we've added local mirrors for several of our stacks. Current support includes jbossas-7.0, wsgi-3.2 (python), perl-5.10. Ruby is on the way shortly. We're excited to hear how developers will be using these new features. Please let us know and don't forget about the forums.

Hi

I have the following app with the following alias:

Public URL: http://test-opensas.rhcloud.com/
Aliases: newdomain.example.com

I can access the app at http://test-opensas.rhcloud.com/... how can I use the new alias???

You need to register your own domain, so you'd need to point your personal DNS as a CNAME to test.opensas.rhcloud.com

I'm having the same problem to.

I built a wordpress blog on http://udgwebdev-udgwebdev.rhcloud.com

And I point my DNS http://udgwebdev.com as CNAME and work it, but when I click on any link the URL changes to the native http://udgwebdev-udgwebdev.rhcloud.com

So I decide to change the original url on a wordpress setups, and now it is not working well my blog shows many DNS errors redirects

Does anybody can help me?

Hey, Please mention how did you solved this problem. I am facing the same problem. My custom domain www.inspiretec.org correctly points to my wordpress blog but turns out to http://inspiretec-infotec.org whenever I click some link on my wordpress blog :( Someone told me to modify: define('WP_SITEURL', 'https://dash-dash.com'); define('WP_HOME', 'http://dash.org'); But it has closed down my blog! :( Please help

Unfortunately, Wordpress stores the URL in the database. I've never been able to successfully modify the db. You'll need to start the initial setup using the custom domain URL.

After searching around the internet, what you did should work: http://codex.wordpress.org/Changing_The_Site_URL

When setting up your custom domain, did you add the alias(s) to your app? This blog has a great example of setting up custom domains on OpenShift applications.

This is cool stuff, and Jenkins attached itself to my existing app smoothly.

Small typo in the setup instructions though, second line should be:
$ rhc-create-app -a ci -t jenkins-1.4
instead of:
$ rhc-create-app -a ci -t jbossas-7.0

Hi,

I add gradle plugin to jenkins and build with gradle wrapper, but there ia a problem that when gradle donload from repository, sometime it stop executing, stop download artifact and build fail:

Download http://repo1.maven.org/maven2/junit/junit/4.9/junit-4.9.pom
Download http://repo1.maven.org/maven2/org/hamcrest/hamcrest-core/1.1/hamcrest-co...
Download http://repo1.maven.org/maven2/org/hamcrest/hamcrest-parent/1.1/hamcrest-...
Download http://repo1.maven.org/maven2/junit/junit/4.9/junit-4.9.jar
Download http://repo1.maven.org/maven2/org/hamcrest/hamcrest-core/1.1/hamcrest-co...
:boa-client:check
:boa-client:build
:boa-commons:assemble UP-TO-DATE
:boa-commons:compileTestJava UP-TO-DATE
:boa-commons:processTestResources UP-TO-DATE
:boa-commons:testClasses UP-TO-DATE
:boa-commons:test
:boa-commons:check
:boa-commons:build
:boa-interfaces:assemble UP-TO-DATE
:boa-interfaces:compileTestJava UP-TO-DATE
:boa-interfaces:processTestResources UP-TO-DATE
:boa-interfaces:testClasses UP-TO-DATE
:boa-interfaces:test
:boa-interfaces:check
:boa-interfaces:build
:boa-server:assemble
:boa-server:compileTestJava UP-TO-DATE
:boa-server:processTestResources UP-TO-DATE
:boa-server:testClasses UP-TO-DATE
:boa-server:test/var/lib/libra/716bf07140834a99b221bbe2ca65eb7e/boabldr/repo/.openshift/action_hooks/build: line 8: 16313 Killed ~/$WORKSPACE/gradlew build
Archiving artifacts
Finished: FAILURE

When I run build many time to download all of artifact, it's successful

More from this author