<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>melezhik</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/melezhik/" />
    <link rel="self" type="application/atom+xml" href="http://blogs.perl.org/users/melezhik/atom.xml" />
    <id>tag:blogs.perl.org,2009-11-03:/users/melezhik//1336</id>
    <updated>2013-05-16T13:10:57Z</updated>
    <subtitle>perl, ruby, chef, devops, jenkins</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 4.38</generator>

<entry>
    <title>psgi applications easy install with chef</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/melezhik/2013/05/psgi-applications-easy-install-with-chef.html" />
    <id>tag:blogs.perl.org,2013:/users/melezhik//1336.4682</id>

    <published>2013-05-16T12:46:15Z</published>
    <updated>2013-05-16T13:10:57Z</updated>

    <summary>&quot;Plack - Perl Superglue for Web frameworks and Web Servers (PSGI toolkit)&quot; as said in documentation. Dealing with perl applications deployment, which I do with chef - modern open source platform for configuration, I have written psgi cookbook to configure,...</summary>
    <author>
        <name>melezhik</name>
        <uri>https://github.com/melezhik</uri>
    </author>
    
    <category term="catalyst" label="catalyst" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="configuration" label="configuration" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="dancer" label="dancer" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="deploy" label="deploy" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="plack" label="plack" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="plackup" label="plackup" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="psgi" label="psgi" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="starman" label="starman" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/melezhik/">
        <![CDATA[<p><em>"Plack - Perl Superglue for Web frameworks and Web Servers (PSGI toolkit)"</em> as said in <a href="http://search.cpan.org/perldoc?Plack">documentation</a>. Dealing with perl applications deployment, which I do with <a href="http://www.opscode.com/chef/">chef</a> - modern open source platform for configuration, I have written <a href="http://community.opscode.com/cookbooks/psgi">psgi cookbook</a> to configure, install psgi applications. Here are some simple exmaples of usage which are self explanatory.</p>

<p>This snippet of code install <a href="http://search.cpan.org/perldoc?Catalyst">Catalyst</a> application as <a href="http://search.cpan.org/perldoc?FCGI">fast cgi</a> standalone server:</p>

<pre>psgi_application 'Catalyst FCGI application' do
    operator      'Dancer'
    application_user    'user'
    application_home    '/home/user/app/'
    script              '/home/user/app/scripts/foo.psgi'
    config              '/home/user/app/app.conf'
    action              'install'      
end</pre>

<p>And this snippet of code installs <a href="http://search.cpan.org/perldoc?Dancer">Dancer</a> application as <a href="http://search.cpan.org/perldoc?Starman">Starman</a> web server:</p>

<pre>psgi_application 'Dancer Starman application' do
    operator                 'Dancer'
    server                     'Starman'
    port                        '5010'
    application_user    'user'
    application_home    '/home/user/app/'
    script              '/home/user/app/scripts/foo.psgi'
    action              'install'      
end</pre>

<p></p>

<p>Checkout <a href="http://community.opscode.com/cookbooks/psgi">http://community.opscode.com/cookbooks/psgi </a> for details.</p>

<p></p>

<p><br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>chef pinto cookbook </title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/melezhik/2013/05/chef-pinto-cookbook.html" />
    <id>tag:blogs.perl.org,2013:/users/melezhik//1336.4679</id>

    <published>2013-05-15T08:41:34Z</published>
    <updated>2013-05-15T08:51:53Z</updated>

    <summary>Pinto is an application for creating and managing a custom CPAN-like repository of Perl modules. You may find many posts on it on the site. I love the idea of pinto, so decided to contribute in some way. So there...</summary>
    <author>
        <name>melezhik</name>
        <uri>https://github.com/melezhik</uri>
    </author>
    
    <category term="chef" label="chef" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="cpan" label="cpan" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="devops" label="devops" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="pinto" label="pinto" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/melezhik/">
        <![CDATA[<p><a href="http://search.cpan.org/perldoc?Pinto">Pinto</a> is an application for creating and managing a custom CPAN-like repository of Perl modules. You may find <a href="http://blogs.perl.org/mt/mt-search.fcgi?limit=20&search=Pinto">many posts</a> on it on the site. I love the idea of pinto, so decided to contribute in some way.  So there is <a href="http://community.opscode.com/cookbooks/pinto">pinto cookbook</a> - a <a href="http://www.opscode.com/chef/">chef</a> cookbook to install and configures pinto applications. I hope this cookbook will be useful for pinto users and developers.</p>]]>
        
    </content>
</entry>

<entry>
    <title>perl distributive &quot;early&quot; testing with jenkins</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/melezhik/2013/03/perl-distributive-early-testing-with-jeknkins.html" />
    <id>tag:blogs.perl.org,2013:/users/melezhik//1336.4446</id>

    <published>2013-03-18T05:58:03Z</published>
    <updated>2013-03-18T06:53:01Z</updated>

    <summary> Often when deploying application one may face the risk of divergence between testing and production environment. Even though you have a stage servers `like production one&apos;, it&apos;d be reasonable to check distributive in production environment before release is happened....</summary>
    <author>
        <name>melezhik</name>
        <uri>https://github.com/melezhik</uri>
    </author>
    
        <category term="testing" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="dependencies" label="dependencies" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="deploy" label="deploy" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="extutilsmakemaker" label="ExtUtils::MakeMaker" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="jenkins" label="jenkins" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="modulebuild" label="Module::Build" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="smoketests" label="smoke tests" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="testing" label="testing" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="tests" label="tests" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="unittests" label="unit tests" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/melezhik/">
        <![CDATA[<p>
Often when deploying application one may face the risk of divergence between testing and production environment.
Even though you have a stage servers `like production one', it'd be reasonable to check distributive in
production environment before release is happened. I would call it `early` testing. Yes, of course, some 
subtle bugs will arise only in runtime phase, and unit test cannot cover it all, I say here about
prerequisite unmet issues. In perl world unit tests and prerequisites checks are executed in standart way. One follows standard procedure, when installing things. 
</p>
<p>I put here 
example for Module::Build based project, but with ExtUtils::MakeMaker it's almost the same:
</p>

<pre>
perl Build.PL # check dependencies and generate build file
./Build 
./Build test # run unit tests
</pre>

<p>
So, why not to automate this process in continues integration approach, like for example Jenkins does?
</p>

<ol>
<li> Upload distributive to production server</li>
<li> Unpack it </li>
<li> Run standard perl Build.PL/Makefile.PL cycle to execute unit tests and check prerequisites </li>
<li> If anything goes wrong you know it in good time, before release is happened!</li>
</ol>
<p>
So this is what I've done in jenkins perl-smoke-test plugin. Please check it out and try to use it!
</p>

<b>Links:</b> 
<ul>
<li>plugin home page - <a href="https://github.com/melezhik/perl-smoke-test-plugin">https://github.com/melezhik/perl-smoke-test-plugin</a></li>
<li>download plugin here - <a href="http://repo.jenkins-ci.org/snapshots/org/jenkins-ci/ruby-plugins/perl-smoke-test/">http://repo.jenkins-ci.org/snapshots/org/jenkins-ci/ruby-plugins/perl-smoke-test/</a></li>
</ul>]]>
        
    </content>
</entry>

<entry>
    <title>jenkins plugin for building perl applications</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/melezhik/2013/03/jenkins-plugin-for-building-perl-applications.html" />
    <id>tag:blogs.perl.org,2013:/users/melezhik//1336.4397</id>

    <published>2013-03-07T03:36:29Z</published>
    <updated>2013-03-07T03:53:01Z</updated>

    <summary>Jenkins - is well known continues integration server. One of it&apos;s great features - one may extend it by writing custom plug-ins. Recently I have create one plug-in to build and make distributive of perl applications. It implements standard build...</summary>
    <author>
        <name>melezhik</name>
        <uri>https://github.com/melezhik</uri>
    </author>
    
        <category term="build" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="jenkins" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="build" label="build" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="continuesintegration" label="continues integration" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="deploy" label="deploy" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="jenkins" label="jenkins" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="locallib" label="local::lib" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="modulebuild" label="Module::Build" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/melezhik/">
        <![CDATA[Jenkins - is well known continues integration server. One of it's great features - one may extend it by writing custom plug-ins. 
Recently I have create one plug-in to build and make distributive of perl applications. 
<br>
<br>
<strong>It implements standard build scheme:</strong>
<ol>
	<li>look up source directory</li>
	<li>install dependencies into local directory</li>
	<li>create distributive</li>
</ol>
<br>
<strong>Other features are:</strong>
<ol>
        <li> find 'tagged' directory with maximum version number ( implementing install from subversion tags )
	<li>applying different patches (install other cpan modules)</li>
        <li>color output</li>
        <li>... and some others</li>
</ol>
<br>
For now it's only Module::Build compatible. 
<br>
<ol><strong>
Links:</strong>
	<li><a href="https://github.com/melezhik/perl-plugin">perl-plugin on github</a></li>
	<li><a href="http://repo.jenkins-ci.org/snapshots/org/jenkins-ci/ruby-plugins/perl/0.0.4-SNAPSHOT/perl-0.0.4-20130307.072926-10.hpi">link to install</a></li>

</ol>]]>
        
    </content>
</entry>

<entry>
    <title>installing cpan modules with chef</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/melezhik/2012/05/installing-cpan-modules-with-chef.html" />
    <id>tag:blogs.perl.org,2012:/users/melezhik//1336.3274</id>

    <published>2012-05-22T05:17:04Z</published>
    <updated>2012-05-22T05:37:30Z</updated>

    <summary>Chef is a systems integration framework, built to bring the benefits of configuration management to your entire infrastructure. I have created cpan cookbook to install cpan modules with chef. It&apos;s easy in use, because all the implimenation is hidden providing...</summary>
    <author>
        <name>melezhik</name>
        <uri>https://github.com/melezhik</uri>
    </author>
    
    <category term="chef" label="chef" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="client" label="client" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="cpan" label="cpan" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/melezhik/">
        <![CDATA[<p><a href="http://wiki.opscode.com/display/chef/Home">Chef</a> is a systems integration framework, built to bring the benefits of configuration management to your entire infrastructure. </p>

<p>I have created <a href="http://community.opscode.com/cookbooks/cpan">cpan cookbook</a> to install cpan modules with chef. It's easy in use, because all the implimenation is hidden providing you simple interface:</p>

<pre><code>cpan_client 'CGI' do
    action 'install'
    install_type 'cpan_module'
    user 'root'
    group 'root'
</code></pre>

<p>end</p>

<p>Among cpan_client features are:</p>

<ul>
<li>installing in dry-run mode</li>
<li>installing with given install<em>base and install</em>path</li>
<li>installing from tarball</li>
<li>installing within given cwd</li>
<li>and others</li>
</ul>

<p>For more details visit - <a href="http://community.opscode.com/cookbooks/cpan">http://community.opscode.com/cookbooks/cpan</a></p>
]]>
        

    </content>
</entry>

</feed>
