[[!meta title="Continuous Integration worker Fedora 26 Setup"]] [[!meta author="Kyllikki"]] [[!meta date="2017-09-06T09:44:14Z"]] [[!toc]] ## Fedora 26 OS install ### amd64 VDS install from media [[Virtual server setup|virtual_host_server]] use text mode to install fedora 1 Language settings to English/UK 2 Time settings to Europe/London 3 Installation source to local media 4 Software selection to fedora server edition 5 Installation destination to virtual disc, whole disc, standard partition layout 6 Network config to wired (ens3) 7 root password to netsurf ci worker default 8 create netsurf user Once install is completed virtual server will power off ## Manual CI worker install ### required packages to obtain required packages dnf install fedora-packager fedora-review java-1.8.0-openjdk-headless gcc clang git pkgconfig libcurl-devel libjpeg-devel bison flex expat-devel libpng-devel openssl-devel check gperf perl-HTML-Parser ccache For gtk2 builds dnf install gtk2-devel for gtk3 builds dnf install gtk3-devel Development tool group using dnf group install 'Development Tools' ### config On master jenkins use "manage nodes" to create new node. Ensure "remote fs root" is set to /var/lib/jenkins add variable JENKINS\_HOME set to /var/lib/jenkins As superuser: create jenkins user adduser --system --create-home --home-dir /var/lib/jenkins/ jenkins add user to mock group usermod -a -G mock jenkins ensure /opt is setup correctly to allow toolchains to be built on the node mkdir -p /opt/netsurf chown jenkins:jenkins /opt/netsurf become jenkins user su -s /bin/bash - jenkins create ssh keypair (accept defaults - no password) ssh-keygen -t rsa -C "netsurf@nsciworker17.netsurf-browser.org" copy .ssh/id\_rsa.pub from worker to jenkins master node and append to /home/netsurf/.ssh/authorized\_keys scp .ssh/id_rsa.pub netsurf@ci.netsurf-browser.org:nsciworker17_id_rsa.pub get jenkins slave jar wget http://ci.netsurf-browser.org/jenkins/jnlpJars/slave.jar initialise mock environment mock --init exit jenkins user shell create ns-ci-worker.service file [Unit] Description=Netsurf CI worker Documentation=http://wiki.netsurf-browser.org/continuous_integration/ Requires=network.target After=multi-user.target [Service] Type=simple ExecStart=/bin/java -Djava.awt.headless=true -jar /var/lib/jenkins/slave.jar -jnlpUrl http://ci.netsurf-browser.org/jenkins/computer/ciworker17/slave-agent.jnlp -secret 0123456789abcdef01234567890abcdef Restart=always RestartSec=60 StartLimitInterval=0 User=jenkins [Install] WantedBy=multi-user.target untill [this bug](https://bugzilla.redhat.com/show_bug.cgi?id=1358476) is resolved it is necessary to symlink the jli library object somewhere the rpath faliure does not affect. # ln -s /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-1.b12.fc25.x86_64/jre/lib/amd64/jli/libjli.so /usr/lib64/libjli.so install and start new service install -D -m 644 ns-ci-worker.service /usr/lib/systemd/system/ns-ci-worker.service systemctl daemon-reload systemctl start ns-ci-worker systemctl enable ns-ci-worker