<?xml version="1.0" encoding="iso-8859-1"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>mikas blog &#187; Computer</title>
	<atom:link href="http://michael-prokop.at/blog/category/computer/feed/" rel="self" type="application/rss+xml" />
	<link>http://michael-prokop.at/blog</link>
	<description>... and even if no one reads it</description>
	<lastBuildDate>Fri, 10 May 2013 11:09:38 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>How to get grub-reboot working™</title>
		<link>http://michael-prokop.at/blog/2013/05/10/how-to-get-grub-reboot-working/</link>
		<comments>http://michael-prokop.at/blog/2013/05/10/how-to-get-grub-reboot-working/#comments</comments>
		<pubDate>Fri, 10 May 2013 11:09:38 +0000</pubDate>
		<dc:creator>mika</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[English]]></category>

		<guid isPermaLink="false">http://michael-prokop.at/blog/?p=3506</guid>
		<description><![CDATA[So while testing Proxmox VE 3.0 RC1 I had the need to reboot the system into a kernel version different than the one being the default in the bootloader GRUB. &#8220;lilo -R &#8230;&#8221; worked fine in the past, but with GRUB it&#8217;s not as trivial on the first sight to get its equivalent. I remembered [...]]]></description>
				<content:encoded><![CDATA[<p>So while testing <a href="http://forum.proxmox.com/threads/13733-Proxmox-VE-3-0-RC1-released!">Proxmox VE 3.0 RC1</a> I had the need to reboot the system into a kernel version different than the one being the default in the bootloader GRUB. &#8220;lilo -R &#8230;&#8221; worked fine in the past, but with GRUB it&#8217;s not as trivial on the first sight to get its equivalent. I remembered to have had problems with grub-reboot in the past already, or to quote a friend of mine: &#8220;has grub-reboot worked <em>ever</em>?&#8221;</p>
<p>Well yes, grub-reboot works &#8211; but only once you&#8217;re aware of the fact that you need to manually edit /etc/default/grub. <img src='http://michael-prokop.at/blog/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  It&#8217;s  actually documented at <a href="http://wiki.debian.org/GrubReboot">wiki.debian.org/GrubReboot</a>, but <em>not</em> in the man page/info document of grub-reboot itself (great idea to provide a separate wiki page for this issue but not consider editing the official documentation instead, <em>not</em>).</p>
<p>So here you go:</p>
<pre class="rahmen">
# grep GRUB_DEFAULT /etc/default/grub 
GRUB_DEFAULT=0
# sed -i 's/^GRUB_DEFAULT.*/GRUB_DEFAULT=saved/' /etc/default/grub
# grep GRUB_DEFAULT /etc/default/grub 
GRUB_DEFAULT=saved

# update-grub
[...]
# grep '^menuentry' /boot/grub/grub.cfg
menuentry 'Debian GNU/Linux, with Linux 3.2.0-4-amd64' --class debian --class gnu-linux --class gnu --class os {
menuentry 'Debian GNU/Linux, with Linux 3.2.0-4-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os {
menuentry 'Debian GNU/Linux, with Linux 2.6.32-20-pve' --class debian --class gnu-linux --class gnu --class os {
menuentry 'Debian GNU/Linux, with Linux 2.6.32-20-pve (recovery mode)' --class debian --class gnu-linux --class gnu --class os {
menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-amd64' --class debian --class gnu-linux --class gnu --class os {
menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os {

# grub-reboot 2  # to boot the third entry, the command writes to /boot/grub/grubenv
# reboot
</pre>
<p>FTR: Filed as <a href="http://bugs.debian.org/707695">#707695</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://michael-prokop.at/blog/2013/05/10/how-to-get-grub-reboot-working/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The #newinwheezy game: Grml packages in Debian/wheezy</title>
		<link>http://michael-prokop.at/blog/2013/05/02/the-newinwheezy-game-grml-packages-in-debianwheezy/</link>
		<comments>http://michael-prokop.at/blog/2013/05/02/the-newinwheezy-game-grml-packages-in-debianwheezy/#comments</comments>
		<pubDate>Thu, 02 May 2013 10:18:14 +0000</pubDate>
		<dc:creator>mika</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[English]]></category>

		<guid isPermaLink="false">http://michael-prokop.at/blog/?p=3489</guid>
		<description><![CDATA[Following up on the #newinwheezy game: Debian/wheezy is the first Debian release which ships packages from the Grml system. Grml became an official Debian Derivative and I&#8217;m very happy that three major projects of Grml found their official way into Debian: grml2usb: install Grml system / ISO to usb device grml-debootstrap: wrapper around debootstrap for [...]]]></description>
				<content:encoded><![CDATA[<p>Following up on <a href="http://permalink.gmane.org/gmane.linux.debian.devel.general/181898">the #newinwheezy game</a>: Debian/wheezy is the first Debian release which ships packages from the <a href="http://grml.org/">Grml system</a>. Grml became an official <a href="http://wiki.debian.org/Derivatives">Debian Derivative</a> and I&#8217;m very happy that three major projects of Grml found their official way into Debian:</p>
<ul>
<li><a href="http://packages.debian.org/wheezy/grml2usb">grml2usb</a>: install Grml system / ISO to usb device</li>
<li><a href="http://packages.debian.org/wheezy/grml-debootstrap">grml-debootstrap</a>: wrapper around debootstrap for installing pure Debian</li>
<li><a href="http://packages.debian.org/wheezy/grml-rescueboot">grml-rescueboot</a>: Integrates Grml ISO booting into GRUB</li>
</ul>
<p>As the description states <em>grml2usb</em> is interesting for getting Grml onto a USB device when the dd(1) approach (&#8220;<code>dd if=grml.iso of=/dev/sdX</code>&#8220;) just isn&#8217;t flexible enough.</p>
<p><em>grml-debootstrap</em> provides a decent way to install Debian systems from the command line. As its author I might be biased but I&#8217;ve to mention that it&#8217;s working so nice that it is in use at several of my customers for automated roll-outs without <em>any</em> worries at all, and I got reports from other companies that they are very happy users of it as well.</p>
<p>Finally the <em>grml-rescueboot</em> packages provides a very simple and nice way to <a href="http://michael-prokop.at/blog/2011/01/07/booting-iso-images-from-within-grub2/">boot a rescue system from within GRUB</a> (short version: throw a Grml ISO to /boot/grml/, run update-grub and be done).</p>
<p>PS: Thanks everyone for joining the #newinwheezy game over at <a href="http://planet.debian.org/">planet.debian.org</a>. <img src='http://michael-prokop.at/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://michael-prokop.at/blog/2013/05/02/the-newinwheezy-game-grml-packages-in-debianwheezy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The #newinwheezy game: new forensic packages in Debian/wheezy</title>
		<link>http://michael-prokop.at/blog/2013/04/29/the-newinwheezy-game-new-forensic-packages-in-debianwheezy/</link>
		<comments>http://michael-prokop.at/blog/2013/04/29/the-newinwheezy-game-new-forensic-packages-in-debianwheezy/#comments</comments>
		<pubDate>Mon, 29 Apr 2013 09:55:59 +0000</pubDate>
		<dc:creator>mika</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[English]]></category>

		<guid isPermaLink="false">http://michael-prokop.at/blog/?p=3472</guid>
		<description><![CDATA[Debian/wheezy includes a bunch of packages for people interested in digital forensics. The packages maintained within the Debian Forensics team which are shipped with the upcoming Debian/wheezy stable release for the first time in a Debian release are: dc3dd: patched version of GNU dd with forensic features extundelete: utility to recover deleted files from ext3/ext4 [...]]]></description>
				<content:encoded><![CDATA[<p>Debian/wheezy includes a bunch of packages for people interested in digital forensics. The packages maintained within the <a href="http://forensics.alioth.debian.org/">Debian Forensics</a> team which are shipped with the <a href="http://bits.debian.org/2013/04/release-date.html">upcoming Debian/wheezy stable release</a> for the first time in a Debian release are:</p>
<ul>
<li><a href="http://packages.debian.org/wheezy/dc3dd">dc3dd</a>: patched version of GNU dd with forensic features</li>
<li><a href="http://packages.debian.org/wheezy/extundelete">extundelete</a>: utility to recover deleted files from ext3/ext4 partition</li>
<li><a href="http://packages.debian.org/wheezy/rephrase">rephrase</a>: Specialized passphrase recovery tool for GnuPG</li>
<li><del datetime="2013-04-29T10:33:37+00:00"><a href="http://packages.debian.org/wheezy/rkhunter">rkhunter</a>: rootkit, backdoor, sniffer and exploit scanner</del> (see comments)</li>
<li><a href="http://packages.debian.org/wheezy/rsakeyfind">rsakeyfind</a>: locates BER-encoded RSA private keys in memory images</li>
<li><a href="http://packages.debian.org/wheezy/undbx">undbx</a>: Tool to extract, recover and undelete e-mail messages from .dbx files</li>
</ul>
<p>Join <a href="http://permalink.gmane.org/gmane.linux.debian.devel.general/181898">the #newinwheezy game</a> and present packages which are new in Debian/wheezy.</p>
]]></content:encoded>
			<wfw:commentRss>http://michael-prokop.at/blog/2013/04/29/the-newinwheezy-game-new-forensic-packages-in-debianwheezy/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>OSDC 2013: Folien zu Continuous Integration im Rechenzentrum</title>
		<link>http://michael-prokop.at/blog/2013/04/19/osdc-2013-folien-zu-continuous-integration-im-rechenzentrum/</link>
		<comments>http://michael-prokop.at/blog/2013/04/19/osdc-2013-folien-zu-continuous-integration-im-rechenzentrum/#comments</comments>
		<pubDate>Fri, 19 Apr 2013 14:38:47 +0000</pubDate>
		<dc:creator>mika</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Debian-German]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Links]]></category>

		<guid isPermaLink="false">http://michael-prokop.at/blog/?p=3464</guid>
		<description><![CDATA[Ich bin zurück von der Open Source Data Center Conference 2013, sehr schön war es. Die Vortragsfolien zu meinem Vortrag &#8220;Continuous Integration im Rechenzentrum&#8221; habe ich soeben hochgeladen: PDF (4,4MB)]]></description>
				<content:encoded><![CDATA[<p>Ich bin zurück von der <a href="http://www.netways.de/osdc/osdc2013/">Open Source Data Center Conference 2013</a>, sehr schön war es. Die Vortragsfolien zu meinem Vortrag &#8220;<a href="http://www.netways.de/index.php?id=3752">Continuous Integration im Rechenzentrum</a>&#8221; habe ich soeben hochgeladen: <a href="http://michael-prokop.at/slides/osdc2013_ci_im_rechenzentrum.pdf">PDF (4,4MB)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://michael-prokop.at/blog/2013/04/19/osdc-2013-folien-zu-continuous-integration-im-rechenzentrum/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ldmtool: accessing Microsoft Windows dynamic disks from Linux</title>
		<link>http://michael-prokop.at/blog/2013/02/18/ldmtool-accessing-microsoft-windows-dynamic-disks-from-linux/</link>
		<comments>http://michael-prokop.at/blog/2013/02/18/ldmtool-accessing-microsoft-windows-dynamic-disks-from-linux/#comments</comments>
		<pubDate>Mon, 18 Feb 2013 12:34:35 +0000</pubDate>
		<dc:creator>mika</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[English]]></category>

		<guid isPermaLink="false">http://michael-prokop.at/blog/?p=3443</guid>
		<description><![CDATA[Linux is a great platform for dealing with all kinds of different file systems, partition tables etc. But one of the few annoying situations when working in IT forensics are Microsoft Windows dynamic disks, AKA LDM (Logical Disk Manager). Thanks to libldm&#8217;s ldmtool this is no longer true. A short demonstration from a real-life IT [...]]]></description>
				<content:encoded><![CDATA[<p>Linux is a great platform for dealing with all kinds of different file systems, partition tables etc. But one of the few annoying situations when working in IT forensics are Microsoft Windows dynamic disks, AKA <a href="http://en.wikipedia.org/wiki/Logical_Disk_Manager">LDM (Logical Disk Manager)</a>.</p>
<p>Thanks to <a href="https://github.com/mdbooth/libldm">libldm&#8217;s ldmtool</a> this is no longer true. A short demonstration from a real-life IT forensics investigation (actual IDs/data randomized for obvious reasons):</p>
<pre class="rahmen">
# ldmtool
ldm&gt; scan /dev/sdc*
[
  &quot;1bad5bbc-a4b5-42e1-8823-001014b00003"
]
ldm&gt; show diskgroup 1bad5bbc-a4b5-42e1-8823-001014b00003
{
  &quot;name" : "FOOBAR-Dg0",
  &quot;guid" : "1bad5bbc-a4b5-42e1-8823-001014b00003",
  &quot;volumes" : [
    &quot;Volume1"
  ],
  &quot;disks" : [
    &quot;Disk1",
    &quot;Disk2"
  ]
}
ldm&gt; show volume 1bad5bbc-a4b5-42e1-8823-001014b00003 Volume1
{
  &quot;name" : "Volume1",
  &quot;type" : "striped",
  &quot;size" : 3907039232,
  &quot;chunk-size" : 128,
  &quot;hint" : "D:",
  &quot;partitions" : [
    &quot;Disk1-01",
    &quot;Disk2-01"
  ]
}
ldm&gt; show partition 1bad5bbc-a4b5-42e1-8823-001014b00003 Disk1-01
{
  &quot;name" : "Disk1-01",
  &quot;start" : 1985,
  &quot;size" : 1953519616,
  &quot;disk" : "Disk1"
}
ldm&gt; create all
Unable to create volume Volume1 in disk group 1bad5bbc-a4b5-42e1-8823-001014b00003: Disk Disk2 required by striped volume Volume1 is missing
[
]
ldm&gt; scan /dev/sdd*
[
  &quot;1bad5bbc-a4b5-42e1-8823-001014b00003"
]
ldm&gt; create all
[
  &quot;ldm_vol_FOOBAR-Dg0_Volume1"
]
ldm&gt;
</pre>
<p>The just created device mapper device then can be handled as usual:</p>
<pre class="rahmen">
# dmsetup ls | grep ldm
ldm_vol_FOOBAR-Dg0_Volume1        (254:4)
# mount /dev/mapper/ldm_vol_FOOBAR-Dg0_Volume1 /mnt/whatever
</pre>
<p>ldmtool just hit <a href="http://packages.debian.org/sid/ldmtool">Debian unstable</a> (and I intend to ship the tool with the upcoming version of <a href="http://grml-forensic.org/">Grml-Forensic</a>).</p>
]]></content:encoded>
			<wfw:commentRss>http://michael-prokop.at/blog/2013/02/18/ldmtool-accessing-microsoft-windows-dynamic-disks-from-linux/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Event: OSDC 2013</title>
		<link>http://michael-prokop.at/blog/2013/01/08/event-osdc-2013/</link>
		<comments>http://michael-prokop.at/blog/2013/01/08/event-osdc-2013/#comments</comments>
		<pubDate>Tue, 08 Jan 2013 00:06:10 +0000</pubDate>
		<dc:creator>mika</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Links]]></category>

		<guid isPermaLink="false">http://michael-prokop.at/blog/?p=3411</guid>
		<description><![CDATA[I&#8217;ll be speaker at the Open Source Data Center Conference 2013 in Nuremberg/Germany on 17th and 18th April, talking about Continuous Integration/Delivery in the data-center. I was speaking at OSDC back in 2009 and very much enjoyed the conference &#8211; so I&#8217;m totally looking forward to OSDC 2013, hope to see you there!]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ll be speaker at the <a href="http://www.netways.de/osdc/osdc2013">Open Source Data Center Conference 2013</a> in Nuremberg/Germany on 17th and 18th April, talking about <a href="http://www.netways.de/index.php?id=3752">Continuous Integration/Delivery in the data-center</a>. I was speaking at OSDC back in 2009 and <em>very</em> much enjoyed the conference &#8211; so I&#8217;m totally looking forward to OSDC 2013, hope to see you there!</p>
<p><a href="http://www.netways.de/osdc/osdc2013"><img src="http://michael-prokop.at/blog/img/osdc_2013.jpg" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://michael-prokop.at/blog/2013/01/08/event-osdc-2013/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>October 2012: recordings from several IT conferences available</title>
		<link>http://michael-prokop.at/blog/2012/10/13/october-2012-recordings-from-several-it-conferences-available/</link>
		<comments>http://michael-prokop.at/blog/2012/10/13/october-2012-recordings-from-several-it-conferences-available/#comments</comments>
		<pubDate>Fri, 12 Oct 2012 23:51:58 +0000</pubDate>
		<dc:creator>mika</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Links]]></category>

		<guid isPermaLink="false">http://michael-prokop.at/blog/?p=3364</guid>
		<description><![CDATA[In the last few days several IT events published recordings/slides from their events. I haven&#8217;t had the time to take a closer look at the material yet but there might be some gems among them so I thought it&#8217;s worth spreading the word: Devopsdays Rome/Italy 2012: videos from the talks PuppetConf 2012: videos from the [...]]]></description>
				<content:encoded><![CDATA[<p>In the last few days several IT events published recordings/slides from their events. I haven&#8217;t had the time to take a closer look at the material yet but there might be some gems among them so I thought it&#8217;s worth spreading the word:</p>
<ul>
<li>Devopsdays Rome/Italy 2012: <a href="http://vimeo.com/album/2106741">videos from the talks</a></li>
<li>PuppetConf 2012: <a href="https://www.youtube.com/playlist?list=PLV86BgbREluVFB73Wwqp_tCbw5Z9TMLX1">videos from the talks</a></li>
<li>Barcelona Ruby Conference 2012: <a href="https://www.youtube.com/user/barcelonarubyconf">videos from the talks</a></li>
<li>DjangoCon US 2012: <a href="https://www.youtube.com/playlist?list=PL0QM1wfr-MYzocgVBNgPuooMjt-Pupbki">videos from the talks</a></li>
<li>Jenkins User Conference San Francisco 2012: <a href="http://www.cloudbees.com/jenkins-user-conference-2012-san-francisco-abstracts.cb">slides from the talks</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://michael-prokop.at/blog/2012/10/13/october-2012-recordings-from-several-it-conferences-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jenkins: marking an upstream job as failed if its downstream job fails</title>
		<link>http://michael-prokop.at/blog/2012/10/04/jenkins-marking-an-upstream-job-as-failed-if-its-downstream-job-fails/</link>
		<comments>http://michael-prokop.at/blog/2012/10/04/jenkins-marking-an-upstream-job-as-failed-if-its-downstream-job-fails/#comments</comments>
		<pubDate>Thu, 04 Oct 2012 14:01:28 +0000</pubDate>
		<dc:creator>mika</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[English]]></category>

		<guid isPermaLink="false">http://michael-prokop.at/blog/?p=3346</guid>
		<description><![CDATA[Since I&#8217;m not aware of a ready-to-go solution, this issue once again came up at a company where I&#8217;m doing Jenkins/CI consulting for and the solution involves some trickiness you need to be aware of I&#8217;m hereby documenting it. If you have a build pipeline inside your Jenkins setup you might have so called upstream [...]]]></description>
				<content:encoded><![CDATA[<p>Since I&#8217;m not aware of a ready-to-go solution, this issue once again came up at a company where I&#8217;m doing Jenkins/CI consulting for and the solution involves some trickiness you need to be aware of I&#8217;m hereby documenting it.</p>
<p>If you have a build pipeline inside your <a href="http://jenkins-ci.org/">Jenkins</a> setup you might have so called upstream jobs which trigger downstream jobs. If such a downstream job fails you might want to set the build state of the upstream job to &#8220;failure&#8221; as well.</p>
<p>First of all install the <a href="https://wiki.jenkins-ci.org/display/JENKINS/Groovy+Postbuild+Plugin">Groovy Postbuild Plugin</a> as well as the <a href="https://wiki.jenkins-ci.org/display/JENKINS/Copy+Artifact+Plugin">Copy Artifact Plugin</a>. (The Copy Artifact Plugin is not strictly needed, you can also choose a different approach for artifact handling, but the plugin works very well for me.)</p>
<p>In the upstream job you <em>have</em> to archive artifacts. Otherwise the script that we will use in the downstream job doesn&#8217;t have a connection to the upstream job through the <a href="https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/AbstractBuild.java#L1244">getUpstreamBuilds()</a> method. If you don&#8217;t have any artifacts then just create a simple textfile and use that as artfifact file. After the artifact step you can place the trigger for the downstream job. This is the relevant part for a working sample configuration for such an upstream job:</p>
<p><a href="/screeni/jenkins_upstream_trigger.png"><img src="/screeni/jenkins_upstream_trigger.jpg" alt="Screenshot Jenkins upstream job configuration" /></a></p>
<p>In the downstream job make sure to grab the artifacts from the upstream job. Then use build steps or whatever you need as usual. This is the relevant part for a working sample configuration for such a downstream job:</p>
<p><a href="/screeni/jenkins_downstream_config.png"><img src="/screeni/jenkins_downstream_config.jpg" alt="Screenshot Jenkins downstream job configuration" /></a></p>
<p>Finally use the following Groovy script as the Groovy Postbuild action:</p>
<pre class="rahmen">
upstreamBuilds = manager.build.getUpstreamBuilds();

if(!upstreamBuilds) {
  manager.listener.logger.println("Error: could not identify upstream build");
} else {
  upstreamJob = upstreamBuilds.keySet().iterator().next();
  lastUpstreamBuild = upstreamJob.getLastBuild();
  buildResult = manager.build.result;

  if(lastUpstreamBuild.getResult().isBetterThan(buildResult)) {
    manager.listener.logger.println("Adjusting build state of upstream job to build result of this job, being " + buildResult);
    lastUpstreamBuild.setResult(buildResult);
  }
}
</pre>
<p>That&#8217;s it. Now every time your downstream job fails it should set the according upstream job to &#8220;failure&#8221; as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://michael-prokop.at/blog/2012/10/04/jenkins-marking-an-upstream-job-as-failed-if-its-downstream-job-fails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How geeks celebrate a birthday AKA bin2dec</title>
		<link>http://michael-prokop.at/blog/2012/08/30/how-geeks-celebrate-a-birthday-aka-bin2dec/</link>
		<comments>http://michael-prokop.at/blog/2012/08/30/how-geeks-celebrate-a-birthday-aka-bin2dec/#comments</comments>
		<pubDate>Wed, 29 Aug 2012 22:42:20 +0000</pubDate>
		<dc:creator>mika</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://michael-prokop.at/blog/?p=3325</guid>
		<description><![CDATA[Far away from Rosetta Code, but that&#8217;s what Frank and I came up with when explaining 100000&#8322;: Guile: guile &#60;&#60;&#60; \#b100000 guile -c '((@@ (ice-9 format) format) #t "~d~%" #b100000)' Racket: racket -e '#b100000' Ruby: ruby -e 'puts "100000".to_i(2)' Python: python -c 'print int("100000", 2)' Perl: perl -e 'print 0b100000' Zsh: zsh -c 'print $((2#100000))' [...]]]></description>
				<content:encoded><![CDATA[<p>Far away from <a href="http://rosettacode.org/wiki/Rosetta_Code">Rosetta Code</a>, but that&#8217;s what <a href="http://bewatermyfriend.org/">Frank</a> and I came up with when explaining <a href="http://michael-prokop.at/blog/2012/08/29/100000/">100000&#8322;</a>:</p>
<p>Guile:</p>
<pre class="rahmen">
guile &lt;&lt;&lt; \#b100000
guile -c '((@@ (ice-9 format) format) #t "~d~%" #b100000)'
</pre>
<p>Racket:</p>
<pre class="rahmen">
racket -e '#b100000'
</pre>
<p>Ruby:</p>
<pre class="rahmen">
ruby -e 'puts "100000".to_i(2)'
</pre>
<p>Python:</p>
<pre class="rahmen">
python -c 'print int("100000", 2)'
</pre>
<p>Perl:</p>
<pre class="rahmen">
perl -e 'print 0b100000'
</pre>
<p>Zsh:</p>
<pre class="rahmen">
zsh -c 'print $((2#100000))'
zsh -c 'print $((2#1&lt;&lt;5))'
</pre>
<p>bc:</p>
<pre class="rahmen">
echo "ibase=2; 100000" | bc
</pre>
<p>Clojure:</p>
<pre class="rahmen">
clojure -e '2r100000'
</pre>
<p>Scala:</p>
<pre class="rahmen">
scala -e 'Console.println(Integer.parseInt("100000", 2))'
</pre>
<p>Octave:</p>
<pre class="rahmen">
octave -q --eval 'bin2dec("100000")'
</pre>
<p>AWK:</p>
<pre class="rahmen">
echo 100000 | awk '{r=0;for(i=1;i&lt;=length;i++){r*=2;r+=(substr($0,i,1)!="0")} print r}'
</pre>
<p>C:</p>
<pre class="rahmen">
tcc -run - &lt;&lt;&lt; $'#include &lt;stdlib.h&gt;\nint main() { printf ("%d\\n", strtol("100000", NULL, 2)); return 0;}'
</pre>
<p>Haskell:</p>
<pre class="rahmen">
runhaskell &lt;&lt;&lt; 'import Data.Char; main = putStrLn $ show $ foldl1 ((+) . (*2)) $ map (digitToInt) "100000"'
</pre>
<p>CLISP:</p>
<pre class="rahmen">
clisp -q -x '#b100000'
</pre>
]]></content:encoded>
			<wfw:commentRss>http://michael-prokop.at/blog/2012/08/30/how-geeks-celebrate-a-birthday-aka-bin2dec/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>jenkins-debian-glue: Continuous Integration for Debian and Ubuntu made easy</title>
		<link>http://michael-prokop.at/blog/2012/08/27/jenkins-debian-glue-continuous-integration-for-debian-and-ubuntu-made-easy/</link>
		<comments>http://michael-prokop.at/blog/2012/08/27/jenkins-debian-glue-continuous-integration-for-debian-and-ubuntu-made-easy/#comments</comments>
		<pubDate>Mon, 27 Aug 2012 10:29:13 +0000</pubDate>
		<dc:creator>mika</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://michael-prokop.at/blog/?p=3271</guid>
		<description><![CDATA[jenkins-debian-glue is an open source project of mine which recently celebrated its first birthday and it&#8217;s time to finally write about it. jenkins-debian-glue allows you to build Debian and Ubuntu packages directly from the Jenkins continuous integration system. It retrieves package sources from a version control repository, adjusts debian/changelog (handle version number + mention changes [...]]]></description>
				<content:encoded><![CDATA[<p><strong>jenkins-debian-glue</strong> is an open source project of mine which recently celebrated its first birthday and it&#8217;s time to finally write about it.</p>
<p>jenkins-debian-glue allows you to <strong>build Debian and Ubuntu packages</strong> directly from the <strong>Jenkins</strong> continuous integration system. It retrieves package sources from a version control repository, adjusts debian/changelog (handle version number + mention changes that took place) and builds according source and binary packages out of it. Its <a href="http://lintian.debian.org/">lintitan</a> integration provides Q/A reports about the resulting source and binary Debian packages.</p>
<p>It started as a small pet project of mine to get integration of Debian packaging inside <a href="http://jenkins-ci.org/">Jenkins</a>. I mainly had the needs for the <a href="http://grml.org/">Grml project</a> in mind and starting with Grml 2011.12 every release (including also all the daily builds) was built using Jenkins since then. It turned out that my project would also be a perfect match for one of my customers, <a href="http://www.sipwise.com/">Sipwise GmbH</a>. In December 2011 the <a href="http://www.sipwise.com/products/spce/">sip:provider 2.4</a> was the first stable release that was built 100% through Jenkins and featuring jenkins-debian-glue.</p>
<p>Thanks to special needs and the open source friendliness of Sipwise I could invest further time into the project. Recently the project got even some further drive thanks to interest by some fellow Debian Developers, most notably are the <a href="http://icingabuild.dus.dg-i.net/">icinga, nagios-plugins,&#8230; packages</a> and the <a href="http://www.df7cb.de/blog/2012/PostgreSQL_in_Debian_Hackathon.html">PostgreSQL in Debian Hackathon</a>.</p>
<p>Now if you&#8217;re also interested in it: there&#8217;s an <a href="http://jenkins-debian-glue.org/getting_started/automatic/">automated deployment procedure</a> available for your service to get started with the whole jenkins-debian-glue and Jenkins stack in less than 10 minutes, working just fine on Debian as well as Ubuntu.</p>
<p>For further details please head over to <a href="http://jenkins-debian-glue.org/">jenkins-debian-glue.org</a> or check out this 6:36min screencast (safe for work, no audio <img src='http://michael-prokop.at/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ):</p>
<p><iframe width="560" height="315" src="http://www.youtube.com/embed/9asp2ZvH90A?autohide=1&#038;showinfo=0" frameborder="0" allowfullscreen></iframe></p>
<p><i>This embedded video doesn&#8217;t work for you? Try heading over to <a href="http://www.youtube.com/watch?v=9asp2ZvH90A">YouTube</a>.</i></p>
]]></content:encoded>
			<wfw:commentRss>http://michael-prokop.at/blog/2012/08/27/jenkins-debian-glue-continuous-integration-for-debian-and-ubuntu-made-easy/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
