-
Notifications
You must be signed in to change notification settings - Fork 1
Platforms
Mojca Miklavec edited this page Feb 23, 2024
·
53 revisions
See http://ar.to/notes/buildbot
sudo apt-get install buildbot-worker
cd /var/lib/buildbot/workers/
sudo -u buildbot buildbot-worker create-worker -r texlive build.contextgarden.net:9989 workername pass
# suboptimal
sudo -u buildbot buildbot-worker start /var/lib/buildbot/workers/texlive
Uncomment use-commit-times = yes
from
/var/lib/buildbot/.subversion/config
buildbot-worker
libx11-dev libxmu-dev libfontconfig1-dev libxaw7-dev
- https://falstaff.agner.ch/2015/01/16/starting-buildbot-using-systemd-service-unit/
- http://twistedmatrix.com/documents/13.2.0/core/howto/systemd.html
$ cat /etc/systemd/system/buildbot-worker-texlive.service
[Unit]
Description=BuildBot worker for TeX Live
After=network.target
[Service]
User=buildbot
Group=buildbot
Restart=always
WorkingDirectory=/var/lib/buildbot/workers/texlive
#Environment="PATH=..."
ExecStart=/usr/bin/twistd3 \
--nodaemon \
--pidfile=twistd.pid \
--python=buildbot.tac
[Install]
WantedBy=multi-user.target
- reload configuration:
sudo systemctl daemon-reload
- enable the service:
sudo systemctl enable buildbot-worker-texlive
- start the buildslave:
sudo systemctl start buildbot-worker-texlive
- ask about status:
systemctl status buildbot-worker-texlive
- see logs:
sudo journalctl -u buildbot-worker-texlive
$ apk update
$ apk upgrade
sudo mkdir -p /var/lib/buildbot_worker
sudo mkdir -p /var/log/buildbot_worker
sudo chown buildbot:buildbot /var/lib/buildbot_worker
sudo chown buildbot:buildbot /var/log/buildbot_worker
# ...
- https://wiki.alpinelinux.org/wiki/Alpine_Linux_Init_System
- https://wiki.alpinelinux.org/wiki/Writing_Init_Scripts
- From https://gitweb.gentoo.org/repo/gentoo.git/tree/dev-util/buildbot-worker/
$ cat /etc/conf.d/buildbot_worker
# Path to the build slave's basedir.
BASEDIR="/var/lib/buildbot_worker"
# User account for the buildslave.
# The basedir should be owned by this user.
USERNAME="buildbot"
# Extra options passed to twistd.
TWISTD_OPTS=""
# Optional specific python version to run in
# (if not the system default version)
# ie: RUNTIME_PYTHON="/usr/bin/python2.7"
RUNTIME_PYTHON="/home/buildbot/install/bin/python3.8"
RUNTIME_TWISTD="/home/buildbot/install/bin/twistd"
$ cat /etc/init.d/buildbot_worker
#!/sbin/openrc-run
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
BUILDWORKER_NAME=${RC_SVCNAME:16}
BUILDWORKER_PATH="${BASEDIR}/${BUILDWORKER_NAME}"
depend() {
need net
}
checkconfig() {
if [ -z "${BUILDWORKER_NAME}" ]; then
eerror "Buildbot-worker name not defined. Please link buildbot_worker.foo to this file to start the buildbot_worker with the name \"foo\"."
return 1
fi
if [ -z "${BASEDIR}" ]; then
eerror "BASEDIR not set"
return 1
fi
if [ -z "${USERNAME}" ]; then
eerror "USERNAME not set"
return 1
fi
if [ ! -d "${BUILDWORKER_PATH}" ]; then
eerror "${BUILDWORKER_PATH} is not a directory"
return 1
fi
if [ ! -e "${BUILDWORKER_PATH}/buildbot.tac" ]; then
eerror "${BUILDWORKER_PATH} does not contain buildbot.tac"
return 1
fi
if [ ! -e "${RUNTIME_PYTHON}" ]; then
RUNTIME_PYTHON="/usr/bin/python"
fi
if [ ! -e "${RUNTIME_TWISTD}" ]; then
RUNTIME_PYTHON="/usr/bin/twistd"
fi
}
start() {
checkconfig || return 1
ebegin "Starting buildbot-worker in ${BUILDWORKER_PATH}"
# We set HOME here to make something valid show up in the env of child
# processes spawned by the buildbot-worker.
start-stop-daemon --start -u "${USERNAME}" \
--pidfile "${BUILDWORKER_PATH}/buildbot_worker.pid" \
--env HOME="${BUILDWORKER_PATH}" \
--exec "${RUNTIME_PYTHON}" -- "${RUNTIME_TWISTD}" \
--no_save \
--logfile="${BUILDWORKER_PATH}/twistd.log" \
--pidfile="${BUILDWORKER_PATH}/buildbot_worker.pid" \
--python="${BUILDWORKER_PATH}/buildbot.tac"
eend $?
}
stop() {
ebegin "Stopping buildbot-worker in ${BUILDWORKER_PATH}"
start-stop-daemon --stop --pidfile "${BUILDWORKER_PATH}/buildbot_worker.pid"
eend $?
}
sudo ln -s buildbot_worker buildbot_worker.texlive
sudo rc-update add buildbot_worker.texlive default
sudo /etc/init.d/buildbot_worker.texlive start
Install packages:
pkg install \
sudo bash wget ca_root_nss \
rsync subversion git \
gtar gmake cmake ninja pkgconf \
fontconfig iconv xorg-minimal libX11 libXaw \
py37-buildbot-worker
pw groupadd buildbot -g 1001
pw useradd buildbot -g 1001 -u 1001 -d /home/buildbot -c Buildbot -s /usr/sbin/nologin
sudo mkdir /home/buildbot
sudo chown buildbot:buildbot /home/buildbot
cd /home/buildbot
sudo -u buildbot buildbot-worker create-worker -r texlive build.contextgarden.net:9989 pragma-freebsd-amd64 passwordhere
$ sudo pkg update
$ sudo pkg upgrade
$ pkg search <package>
$ sudo pkg install <package>
$ pkg info -l <package>
/home/buildbot - default directory for slaves
/usr/local/etc/rc.d/buildbot-worker - configuration
sudo service buildbot-worker start
cat /usr/local/etc/rc.d/buildbot-worker
#!/bin/sh
buildbot_worker_profiles="texlive"
buildbot_worker_texlive_enable="YES"
buildbot_worker_texlive_basedir="/usr/home/buildbot/texlive"
buildbot_worker_texlive_uid="buildbot"
buildbot_worker_texlive_gid="buildbot"
. /etc/rc.subr
export PATH=${PATH}:/usr/local/bin
name=buildbot_worker
desc="Buildbot Buildworker"
rcvar=buildbot_worker_enable
load_rc_config ${name}
# These are just the defaults, they might get overriden for a specific profile.
eval ": \${${name}_enable:=\"NO\"}"
eval ": \${${name}_flags:=\"\"}"
eval ": \${${name}_uid:=\"buildbot\"}"
eval ": \${${name}_gid:=\"buildbot\"}"
eval ": \${${name}_basedir:=\"/usr/local/etc/${name}\"}"
command="/usr/local/bin/twistd-3.7"
command_interpreter="/usr/local/bin/python3.7"
pidfile="${buildbot_worker_basedir}/twistd.pid"
# A specific profile is specified in the command
if [ -n "$2" ]; then
profile="$2"
# Override defaults with profile-specific values
if [ -n "${buildbot_worker_profiles}" ]; then
eval buildbot_worker_enable="\${buildbot_worker_${profile}_enable:-${buildbot_worker_enable}}"
eval buildbot_worker_flags="\${buildbot_worker_${profile}_flags:-${buildbot_worker_flags}}"
eval buildbot_worker_uid="\${buildbot_worker_${profile}_uid:-${buildbot_worker_uid}}"
eval buildbot_worker_gid="\${buildbot_worker_${profile}_gid:-${buildbot_worker_gid}}"
eval buildbot_worker_basedir="\${buildbot_worker_${profile}_basedir:-${buildbot_worker_basedir}}"
eval pidfile="\${buildbot_worker_${profile}_basedir:-${buildbot_worker_basedir}}/twistd.pid"
else
echo "$0: extra argument ignored"
fi
# A specific profile is not in the command
else
# Check if any profiles are defined
if [ -n "$1" -a -n "${buildbot_worker_profiles}" ]; then
# Loop through them
for profile in ${buildbot_worker_profiles}; do
eval _enable="\${buildbot_worker_${profile}_enable}"
case "${_enable:-${buildbot_worker_enable}}" in
[Nn][Oo]|[Ff][Aa][Ll][Ss][Ee]|[Oo][Ff][Ff]|0)
continue
;;
[Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|[Oo][Nn]|1)
;;
*)
if test -z "$_enable"; then
_var=buildbot_worker_enable
else
_var=buildbot_worker_"${profile}"_enable
fi
warn "Bad value" \
"'${_enable:-${buildbot_worker_enable}}'" \
"for ${_var}. " \
"Profile ${profile} skipped."
continue
;;
esac
echo "===> ${name} profile: ${profile}"
if $0 $1 ${profile}; then
success="${profile} ${success:-}"
else
failed="${profile} (${retcode}) ${failed:-}"
fi
done
# Exit so that non-profile rc.d is not started when there are profiles
exit 0
fi
fi
# run_rc_command would send ${name}_flags as parameters to $command (daemon)
# This ensures they are actually passed to fcgiwrap instead.
actual_buildbot_worker_flags="${buildbot_worker_flags}"
buildbot_worker_flags=""
command_args="--uid=${buildbot_worker_uid} --gid=${buildbot_worker_gid} --pidfile=${pidfile} --python=${buildbot_worker_basedir}/buildbot.tac ${actual_buildbot_worker_flags}"
run_rc_command "$1"
Ask which library provides a file
pkg which /usr/local/include/X11/Xlib.h
pkg upgrade
freebsd-update fetch
freebsd-update install
The system already provides two packages: buildbot
and buildbot-worker
.
$ pkg_info -Q buildbot
buildbot-2.4.1
buildbot-worker-2.4.1
...
$ sudo pkg_add buildbot-worker
(To uninstall a package: pkg_delete buildbot-worker
)
sudo mkdir -p /home/buildbot/workers/texlive
sudo chown -R _buildslave:_buildslave /home/buildbot
cd /home/buildbot/workers/texlive
sudo -u _buildslave buildbot-worker create-worker -r . build.contextgarden.net:9989 workernamename pass
# see /etc/rc.d/buildbot_worker
rcctl enable buildbot_worker
rcctl start buildbot_worker
Uncomment use-commit-times = yes
from
/var/buildslave/.subversion/config
various:
pkg_add sudo vim
visudo
pkg_add wget git subversion rsync cmake ninja gmake gtar buildbot-worker bash
# update
pkg_add -uvi
# apply security patches
syspatch
https://www.openbsd.org/faq/upgrade71.html
sysupgrade
sysmerge
pkg_add -u
# edit
vi /etc/myname
# to make the changes take effect without rebooting
hostname openbsd-amd64-6.9
Setting up the packages:
export PATH="/usr/pkg/sbin:/usr/pkg/bin:$PATH"
export PKG_PATH="http://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/amd64/9.3/All/"
pkg_add -v pkgin
Finding a package:
pkgin search buildbot
Install dependencies for our builds:
pkgin install mozilla-rootcerts-openssl clang cmake git subversion ninja-build py312-buildbot-worker
Upgrade packages:
pkgin upgrade
Install the buildbot worker via MacPorts:
sudo port install buildbot-worker
mkdir -p /opt/buildbot/workers/texlive
sudo chown -R buildbot:buildbot /opt/buildbot
cd /opt/buildbot/workers/texlive
sudo -u buildbot buildbot-worker create-worker -r . build.contextgarden.net:9989 slavename pass
Read the installation notes:
$ port notes buildbot-worker
buildbot-worker has the following notes:
An example launchd plist file is available in /opt/local/share/buildbot-worker. After you have created your build slave, copy the plist to /Library/LaunchDaemons (as root) and edit the
WorkingDirectory field as needed. Then instruct launchd to run it with:
sudo launchctl load -w /Library/LaunchDaemons/your.plist.name
and then:
$ cat /Library/LaunchDaemons/org.macports.buildworker.texlive.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Disabled</key>
<true/>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/opt/local/bin:/usr/local/bin:/sbin:/usr/sbin:/bin:/usr/bin</string>
</dict>
<key>Label</key>
<string>org.macports.buildworker.texlive</string>
<key>ProgramArguments</key>
<array>
<string>/opt/local/bin/twistd-3.10</string>
<string>--nodaemon</string>
<string>--no_save</string>
<string>--python=buildbot.tac</string>
<string>--pidfile=twistd.pid</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>UserName</key>
<string>buildbot</string>
<key>WorkingDirectory</key>
<string>/opt/buildbot/workers/texlive</string>
<key>KeepAlive</key>
<dict>
<key>SuccessfulExit</key>
<false/>
</dict>
</dict>
</plist>
sudo launchctl load -w /Library/LaunchDaemons/org.macports.buildworker.texlive.plist
sudo launchctl start org.macports.buildworker.texlive
If troubleshooting is needed, use
tail -f /var/log/system.log
to show the logs.
pacman -S base-devel --needed
# select diffutils