SMEServer as a Build Server

From SME Server
Revision as of 01:12, 21 March 2023 by TrevorB (talk | contribs)
Jump to navigation Jump to search

This article is about using a bare SME Server as a development server for SME Server packages or contributed packages.


This is what I did after reading a number of older wiki articles re: developing and amending packages as well as development environment setup.


I started with a standard SME Server 10.1 install (as a VM)

  • 4GB Ram
  • 16MB Video
  • 8GB disk (partitioned without LVM so that any future upgrades are easier)
  • 1 LAN card

I then configured the server as:

  • Server Only (I don't want any build tools on my gateway.....)
  • Static IP (my preference)
  • Do NOT supply dhcp

Log into the server manager panel to

  • configure ssh
  • add a developer user

Now we ssh into our server as root, to finish setting up our developer user:

db accounts setprop <userid> Shell /bin/bash
chsh -s /bin/bash <userid>

and install the tools they'll need

yum --enablerepo=smeaddons install smeserver-extrarepositories-epel
yum install cvs rsh rpm-build
yum --enablerepo=smedev,epel,extras install plague-client mock python-ctypes glances e-smith-devtools smeserver-mock
signal-event post-upgrade; signal-event reboot

Now you need to login as your developer and set them up with all the right access

# add key stuff 

cat <<_EOT > ~/.ssh/config
Host shell.koozali.org koozalishell
Hostname shell.koozali.org
User <userid>
IdentityFile ~/.ssh/id_rsa
ForwardAgent yes
Port 222

Host buildsys
Hostname buildsys.koozali.org
User <userid>
IdentityFile ~/.ssh/id_rsa
ForwardAgent yes
Port 222
_EOT

# add .buildsys stuff

and create their working directories

mkdir -p work/{smebase,smecontribs}

You will need to tweak their shell for CVS access and whilst there why not make it a little friendlier :)

cat <<_EOT > ~/.bashrc
# .bashrc
# Developer environment

export CVS_RSH=ssh # tell CVS to use ssh

# DO NOT set CVSROOT

alias rm='rm -i'
alias cp='cp -i --preserve=timestamps'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
	. /etc/bashrc
fi
_EOT

cat <<_EOT > ~/.bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
	. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH
_EOT

You will have to log out and back in for this to take effect.