<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link="#355491" alink="#4262a1" vlink="#355491" style="background: #e2e2e2; margin: 0; padding: 20px;">

<div>
        <table cellpadding="0" bgcolor="#FFFFFF" border="0" cellspacing="0" style="border: 1px solid #dadada; margin-bottom: 30px; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                <tbody>
                        <tr>

                                <td>

                                        <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="border: solid 2px #ccc; background: #dadada; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                                                <tbody>
                                                        <tr>
                                                                <td bgcolor="#000000" valign="middle" height="58px" style="border-bottom: 1px solid #ccc; padding: 20px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 5px; -webkit-border-top-left-radius: 5px;">
                                                                        <h1 style="color: #333333; font: bold 22px Arial, Helvetica, sans-serif; margin: 0; display: block !important;">
                                                                        <!-- To have a header image/logo replace the name below with your img tag -->
                                                                        <!-- Email clients will render the images when the message is read so any image -->
                                                                        <!-- must be made available on a public server, so that all recipients can load the image. -->
                                                                        <a href="http://community.jboss.org/index.jspa" style="text-decoration: none; color: #E1E1E1">JBoss Community</a></h1>
                                                                </td>

                                                        </tr>
                                                        <tr>
                                                                <td bgcolor="#FFFFFF" style="font: normal 12px Arial, Helvetica, sans-serif; color:#333333; padding: 20px;  -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px;"><h3 style="margin: 10px 0 5px; font-size: 17px; font-weight: normal;">
    Deploy to OpenShift with an iPad…
</h3>
<span style="margin-bottom: 10px;">
    modified by <a href="http://community.jboss.org/people/maxandersen">Max Rydahl Andersen</a> in <i>JBoss Tools</i> - <a href="http://community.jboss.org/community/tools/blog/2011/12/28/deploy-to-openshift-with-an-ipad">View the full blog post</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">

<div class="jive-rendered-content"><h3>&#8230;or any other DropBox enabled tablet...</h3><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>I was trying to locate a Git client for iOS to allow easy editing of OpenShift repositories from my iPad but did not manage to find anything but some barebone github viewers.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Instead I started playing around with Hazel, DropBox, OpenShift and my iPad and I managed to create a little &ldquo;Cloud IDE&#8221; to enable editing <em>and</em> deployment to OpenShift from my iPad.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p> <a href="http://community.jboss.org/servlet/JiveServlet/showImage/38-4400-17665/openshiftonipad.png"><span> http://community.jboss.org/servlet/JiveServlet/downloadImage/38-4400-17665/310-405/openshiftonipad.png </span></a></p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Note, I use Hazel and an iPad in this blog which unfortunately makes it Mac/OSX specific but you should be able to do this on any OS and tablet as long as you have something similar to Hazel that can execute commands based on changes to a directory and your tablet have an DropBox enabled editor. If you have such a setup on a another OS/tablet combo I would love to hear about it in the comments.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Finally, in this blog I assume you already have git installed to be used from your machine. How you setup your OpenShift application, wether with <a class="jive-link-external-small" href="http://vimeo.com/33988381">JBoss Tools</a> or <a class="jive-link-external-small" href="https://openshift.redhat.com/app/express">command line clients</a> is not relevant for this usecase - only necessary to have git working for this.</p><p>Once you have that the remaining steps are as follows:</p><h1 id="setupdropbox">Setup DropBox</h1><p>Download and install <a class="jive-link-external-small" href="http://db.tt/FajYPdr">DropBox</a> - this link is a <a class="jive-link-external-small" href="http://db.tt/FajYPdr">reference link</a> and both you and I get 250 MB extra bonus space if you are creating a new DropBox account.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>DropBox should be installed on a machine that is &ldquo;always&#8221; online or at least while you want edits done on your iPad to take effect.</p><p>Then git clone your favorite OpenShift application into a sub-directory within your DropBox, i.e. here is what I did to get my app named <code>super</code> into <code>code</code> on my DropBox:</p><pre><code>cd ~/DropBox/code
git clone ssh://yourprivateid@super-man.rhcloud.com/~/git/super.git/
</code></pre><p>If you do not know your git URL you can use <code>rhc-user-info</code> to find it.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Once you have the content on DropBox verify that it is possible to deploy to OpenShift from the machine. Edit a file and execute</p><pre><code>git commit -a -m "1-2-3 testing"
git push origin
</code></pre><p>If that completes without errors your DropBox machine is ready to run.</p><h1 id="setuphazel">Setup Hazel</h1><p>Download <a class="jive-link-external-small" href="http://www.noodlesoft.com/hazel.php">Hazel</a> on the same machine as you have DropBox setup and running on and add a rule that looks like the following for the directory where you want the script to be executed:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><a href="http://community.jboss.org/servlet/JiveServlet/showImage/38-4400-17666/hazel_codeexec.png"><span> http://community.jboss.org/servlet/JiveServlet/downloadImage/38-4400-17666/450-344/hazel_codeexec.png </span></a> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>The conditions are:</p><ul><li>Extension is <code>sh</code></li><li>&ldquo;Date Last Modified&#8221; &ldquo;is after&#8221; &ldquo;Date Last Matched&#8221;</li></ul><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>and when it finds a file matching these criteria then setup an action that does the following:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&ldquo;Run Shell Script &#8221;embedded Script":</p><pre><code>touch $1.running
sh $1 &amp;&gt; $1.log
rm $1.running
touch $1.log
exit 0
</code></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>The Hazel rule is straight forward. It executes any updated .sh files on the machine and in the process it creates a temporary &#8216;.running&rsquo; marker file to let you know it process is running and then pipe all the log output to a .log file and finally exit with status 0 since the actual script could fail but that should not be treated by Hazel as an error.</p><h1 id="addshort-cutscripts">Add &#8216;short-cut&rsquo; scripts</h1><p>To avoid too much annoying typing on your tablet I suggest you create a <code>commitpublish.sh</code> with the steps necessary to do a commit and push for your OpenShift application.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>For my <code>super</code> app I created a <code>commitpublish.sh</code> with the following content:</p><pre><code>cd super
git commit -a -m "Committing via DropBox"
git push origin
</code></pre><p id="editdeployviaipad">You can also add other useful shortcuts such as an status.sh that gives you latest log for your app:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><pre class="jive-pre"><code class="jive-code">rhc-ctl-app&#160; -c status -a super -p &lt;yourpassword&gt;</code></pre><h1>Edit &amp; Deploy via iPad</h1><p>For the actual editing and deployment you should be able to use any DropBox enabled editor such as DropText, PlainText, etc. but I ended up using <a class="jive-link-external-small" href="http://itunes.apple.com/us/app/koder/id439271237?mt=8&amp;ls=1">Koder</a> since it was the only one I could find that had nice syntax highlighting and a good and fully functional DropBox integration.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Once you have configured a DropBox project in Koder you cans simply edit the content.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><a href="http://community.jboss.org/servlet/JiveServlet/showImage/38-4400-17667/editindexxhtml.png"><span> http://community.jboss.org/servlet/JiveServlet/downloadImage/38-4400-17667/450-228/editindexxhtml.png </span></a> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Once you are ready to publish it to OpenShift simply edit the <code>commitpublish.sh</code> file and make sure to Upload the file to DropBox and Hazel will take action and get it published.</p><p> <a href="http://community.jboss.org/servlet/JiveServlet/showImage/38-4400-17668/editcommitpublish.png"><span> http://community.jboss.org/servlet/JiveServlet/downloadImage/38-4400-17668/450-169/editcommitpublish.png </span></a></p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Once the command and publish have completed you should be able to refresh in Koder and see a &#8216;commitpublish.sh.log&rsquo; file with the output.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><a href="http://community.jboss.org/servlet/JiveServlet/showImage/38-4400-17669/checklog.png"><span> http://community.jboss.org/servlet/JiveServlet/downloadImage/38-4400-17669/450-124/checklog.png </span></a></p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>If it completed succesfully you should now be able to see the result in a browser for your OpenShift application.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><a href="http://community.jboss.org/servlet/JiveServlet/showImage/38-4400-17670/resultinbrowser.png"><span> http://community.jboss.org/servlet/JiveServlet/downloadImage/38-4400-17670/450-216/resultinbrowser.png </span></a></p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Have fun and do leave a comment if it works out for you or if you got an alternative for the above.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Happy New Year!</p></div>

<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
    <p style="margin: 0;">Comment by <a href="http://community.jboss.org/community/tools/blog/2011/12/28/deploy-to-openshift-with-an-ipad">going to Community</a></p>

</div></td>
                        </tr>
                    </tbody>
                </table>


                </td>
            </tr>
        </tbody>
    </table>

</div>

</body>
</html>