Yes, you can run Grails applications on OpenShift. Follow the steps mentioned below to deploy Grails apps via Jenkins on OpenShift.
Step 1 : Create Tomcat 7 application with Jenkins
$ rhc app-create grailsapp tomcat-7 --enable-jenkins
Step 2 : Delete template code
$ cd grailsapp
$ git rm -rf src/ pom.xml
$ git commit -am "deleted template code"
Step 3: Generate Grails app
Use grails command line or IDE to generate a Grails project.
Step 4: Copy the Grails app
Copy the source code of your grails app in the grailsapp folder. The grailsapp corresponds to OpenShift application.
Step 5: Create pre_build action hook
Create an OpenShift action hook
touch .openshift/action_hooks/pre_build
chmod +x .openshift/action_hooks/pre_build
Copy the following in pre_build hook
#!/bin/bash
# This is a simple script and will be executed on your CI system if
# available. Otherwise it will execute while your application is stopped
# before the build step. This script gets executed directly, so it
# could be python, php, ruby, etc.
set -x
if [ ! -d $OPENSHIFT_DATA_DIR/grails-2.3.4 ]
then
mkdir $OPENSHIFT_DATA_DIR/.grails
cd $OPENSHIFT_DATA_DIR
wget http://dist.springframework.org.s3.amazonaws.com/release/GRAILS/grails-2.3.4.zip
unzip grails-2.3.4.zip
rm -f grails-2.3.4.zip
fi
Step 6: Create build action hook
Create an OpenShift action hook
touch .openshift/action_hooks/build
chmod +x .openshift/action_hooks/build
Copy the following in build hook
#!/bin/bash
# This is a simple script and will be executed on your CI system if
# available. Otherwise it will execute while your application is stopped
# before the build step. This script gets executed directly, so it
# could be python, php, ruby, etc.
set -x
export GRAILS_HOME=$OPENSHIFT_DATA_DIR/grails-2.3.4
export PATH=$GRAILS_HOME/bin:$PATH
cd $OPENSHIFT_REPO_DIR
export GRAILS_OPTS="-Xmx512m -Xms256m -XX:MaxPermSize=256m"
grails -Dgrails.work.dir=$OPENSHIFT_DATA_DIR.grails prod war
Step 7: Commit and push the changes
Commit and push the changes
$ git add .
$ git commit -am "app"
$ git push
Now watch your Jenkins build. If it fails, I guess it would be because of memory issues. Try and use bigger gear sizes. Grails is memory hungry.
Github repository with sample app code https://github.com/shekhargulati/grails-jenkins-openshift-example