iPXE discussion forum

Full Version: Standardizing the Build Environment...
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
On the IRC channel, I brought up the topic of Scripting and Logging the build artifacts to keep bookkeeping simpler.

This is what I'm using currently:

Code:
#!/bin/bash
#Build Script:

#Script Variables

builduser=_yourbuildusername_

bld_dt=`date +"%y-%m-%d-%H-%M-%S"`
ipx_dir=/home/$builduser/Projects/iPXE/ipxe
src_dir=/home/$builduser/Projects/iPXE/ipxe/src/bin
out_dir=/home/$builduser/Projects/iPXE/Builds/iPXE_Build_$bld_dt
scr_dir=/home/$builduser/Projects/iPXE/Embedded-Scripts


#    Make Artifacts Directory
mkdir $out_dir
mkdir $out_dir/Embedded-Scripts
mkdir $out_dir/config
cp $ipx_dir/src/config/local/*.h $out_dir/config/.
cp $scr_dir/*.ipxe $out_dir/Embedded-Scripts/.

#    Clean iPXE Source Directory
rm -f $src_dir/undionly.kpxe
rm -f $src_dir/undionly.kkpxe
rm -f $src_dir/ipxe.iso
rm -f $src_dir/ipxe.pxe
rm -f $src_dir/ipxe.usb

#Update iPXE Source Tree
cd $ipx_dir
git pull
cd $ipx_dir/src

#Make iPXE
make

#Compile UNDIonly.kpxe Boot Strap Program, No Embedded Script
make bin/undionly.kpxe
#    Copy Artifacts to Current Directory
cp $src_dir/undionly.kpxe $out_dir/defipxe.kpxe

#Compile UNDIonly.kkpxe (For Problem BIOS) Boot Strap Program, No Embedded Script
make bin/undionly.kkpxe
#    Copy Artifacts to Current Directory
cp $src_dir/undionly.kkpxe $out_dir/defipxe.kkpxe

#Compile ipxe.iso ISO Image Boot Strap Program, No Embedded Script
make bin/ipxe.iso
#    Copy Artifacts to Current Directory
cp $src_dir/ipxe.iso $out_dir/defipxe.iso

#Compile ipxe.pxe 2nd Stage Boot Strap Program, No Embedded Script
make bin/ipxe.pxe
#    Copy Artifacts to Current Directory
cp $src_dir/ipxe.pxe $out_dir/defipxe.pxe

#Compile ipxe.usb USB Boot Strap Program, No Embedded Script
make bin/ipxe.usb
#    Copy Artifacts to Current Directory
cp $src_dir/ipxe.iso $out_dir/defipxe.usb

#Compile UNDIonly.kpxe Boot Strap Program, with webipxe.ipxe Embedded Script
make bin/undionly.kpxe EMBED=$scr_dir/webipxe.ipxe
#    Copy Artifacts to Current Directory
cp $src_dir/undionly.kpxe $out_dir/webipxe.kpxe

#Compile UNDIonly.kkpxe Boot Strap Program (For Problem BIOS), with webipxe.ipxe Embedded Script
make bin/undionly.kkpxe EMBED=$scr_dir/webipxe.ipxe
#    Copy Artifacts to Current Directory
cp $src_dir/undionly.kkpxe $out_dir/webipxe.kkpxe

#Compile ipxe.iso ISO Image Boot Strap Program, with isoipxe.ipxe Embedded Script
make bin/ipxe.iso EMBED=$scr_dir/isoipxe.ipxe
#    Copy Artifacts to Current Directory
cp $src_dir/ipxe.iso $out_dir/webipxe.iso

#Compile ipxe.pxe 2nd Stage Boot Strap Program, with webnative.ipxe Embedded Script
make bin/ipxe.kpxe EMBED=$scr_dir/webnative.ipxe
#    Copy Artifacts to Current Directory
cp $src_dir/ipxe.kpxe $out_dir/webipxe.pxe

#Compile ipxe.usb USB Boot Strap Program, with isoipxe.ipxe Embedded Script
make bin/ipxe.usb EMBED=$scr_dir/isoipxe.ipxe
#    Copy Artifacts to Current Directory
cp $src_dir/ipxe.usb $out_dir/webipxe.usb

#distribute artifacts
#WIP

Thoughts?
For reference, I'll post what I said on IRC, in case someone else wants to join the conversation:

Quote:<robinsmidsrod> well, if you want to ponder it some more, the most important thing to start with is to figure out what knobs would need to be allowed to be tweaked
<robinsmidsrod> once we have that, we have to make a data structure to hold it
<robinsmidsrod> once we have that, we need to create a worker that can build said artifact from data structure
<robinsmidsrod> once we have that, we need a way to remote orchestrate it (I like zeromq for that)
<robinsmidsrod> once we have that, we can make a web and/or desktop client
<robinsmidsrod> (or even cmdline)
<robinsmidsrod> imagine having a java application you can start with web start or something, it asks you for some configuration details, it gives you a file chooser for setting your embedded scripts and such and you should be ready to go, send it off to the build farm and back you get a binary after a short while

Also see my post to the mailing-list: http://lists.ipxe.org/pipermail/ipxe-dev...02082.html
Reference URL's