<?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; English</title>
	<atom:link href="http://michael-prokop.at/blog/category/english/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>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>Revisiting 2012</title>
		<link>http://michael-prokop.at/blog/2013/01/01/revisiting-2012/</link>
		<comments>http://michael-prokop.at/blog/2013/01/01/revisiting-2012/#comments</comments>
		<pubDate>Tue, 01 Jan 2013 19:53:36 +0000</pubDate>
		<dc:creator>mika</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://michael-prokop.at/blog/?p=3389</guid>
		<description><![CDATA[2012 was a very special year for me, so it&#8217;s worth some words. In April the Grazer Linuxtage event took place, being one of the major IT events in Austria nowadays. I&#8217;m one of its original founders and after being part of the main organisation team for ten times I decided to leave the organisation [...]]]></description>
				<content:encoded><![CDATA[<p>2012 was a very special year for me, so it&#8217;s worth some words.</p>
<p>In April the <a href="http://linuxtage.at/">Grazer Linuxtage</a> event took place, being one of the major IT events in Austria nowadays. I&#8217;m one of its original founders and after being part of the main organisation team for ten times I decided to leave the organisation team. I&#8217;m looking forward to enjoying the event in 2013 as visitor, I&#8217;m sure the organisation team will provide an absolutely rocking event.</p>
<p>In August I <a href="http://michael-prokop.at/blog/2012/08/27/jenkins-debian-glue-continuous-integration-for-debian-and-ubuntu-made-easy/">officially launched</a> the <a href="http://jenkins-debian-glue.org/">jenkins-debian-glue project</a>. It turned out to have been worth all the effort to go public with it. I received plenty of feedback and people are hacking on such great things nowadays that I have to find some time soon to bring those nifty new features people came up with back into my mainline.</p>
<p>In December my wife and me moved to <a href="http://michael-prokop.at/blog/2012/12/11/neue-anschrift/">our new place</a>, being a house we bought in Graz. I&#8217;m very happy that everything worked out as planned. Thanks to wonderful friends we managed to reach a very pleasing state of our new place within just a few weeks. Once again many many thanks (you know who I mean)!</p>
<p>Throughout the whole year I&#8217;ve had several challenging IT consulting gigs in and outside of Austria as well as interesting forensic investigations. Sadly most of them are settled under <abbr title="non-disclosure agreement"><a href="http://en.wikipedia.org/wiki/Non-disclosure_agreement">NDA</a></abbr>. That&#8217;s still something I can&#8217;t get really used to as being someone who likes to share and talk about my work with similarly minded people.</p>
<p>The year ended with <a href="http://michael-prokop.at/blog/2012/12/31/fork/">a real-life fork</a>, being such a wonderful experience that I still can&#8217;t believe that it&#8217;s true.</p>
<p>Thanks 2012, totally looking forward to 2013!</p>
]]></content:encoded>
			<wfw:commentRss>http://michael-prokop.at/blog/2013/01/01/revisiting-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>fork()</title>
		<link>http://michael-prokop.at/blog/2012/12/31/fork/</link>
		<comments>http://michael-prokop.at/blog/2012/12/31/fork/#comments</comments>
		<pubDate>Mon, 31 Dec 2012 20:38:25 +0000</pubDate>
		<dc:creator>mika</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://michael-prokop.at/blog/?p=3387</guid>
		<description><![CDATA[On 31st of December 2012 my lovely wife has made &#8203;&#8203;me the gift of my life: welcome to the world, Verena.]]></description>
				<content:encoded><![CDATA[<p>On 31st of December 2012 my lovely wife has made &#8203;&#8203;me the gift of my life: welcome to the world, Verena.</p>
]]></content:encoded>
			<wfw:commentRss>http://michael-prokop.at/blog/2012/12/31/fork/feed/</wfw:commentRss>
		<slash:comments>9</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>
	</channel>
</rss>
