You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Victor Seva b159b4dcea
ec2: buster repository was archived
1 week ago
debs Update jenkins-job-builder files for its new upstream release 0.8.0 11 years ago
ec2 ec2: buster repository was archived 1 week ago
html html: remove links to removed old releases 3 months ago
jenkins MT#61447 jenkins: update AMI running on Debian 12 8 months ago
jjb jjb: disable arm64 builds 1 month ago
nginx TT#76757 jjb: remove unused definition 5 years ago
pbuilder MT#60788 support noble at scripts/pbuilder 11 months ago
scripts MT#62763 Fix shellcheck issues 2 months ago
.mailmap TT#91650 Add a .mailmap file to correct author information 5 years ago
LICENSE Add LICENSE file (MIT) 12 years ago
README.md TT# LINTIAN improvements 4 years ago

README.md

README for kamailio-deb-jenkins

This repository provides configuration and scripts as used by the server for building Debian packages for the Kamailio project.

Development of this setup is sponsored by Sipwise.

Involved Software

Deployment instructions

NOTE: Using user admin for administration as present on EC2, adjust if necessary.

Install etckeeper for tracking changes in /etc:

sudo apt-get -y install etckeeper git

Automatically deploy jenkins-debian-glue:

wget https://raw.github.com/mika/jenkins-debian-glue/master/puppet/apply.sh
sudo bash ./apply.sh $PASSWORD

Use custom systemd unit for jenkins service:

sudo systemctl stop jenkins
sudo ln -s /home/admin/kamailio-deb-jenkins/jenkins/jenkins.service /etc/systemd/system/jenkins.service
sudo systemctl daemon-reload
sudo systemctl restart jenkins

Support providing additional configuration to cowbuilder + related tools:

sudo tee -a /etc/sudoers.d/jenkins >/dev/null <<EOF
# for *-binaries job
jenkins ALL=NOPASSWD: /usr/sbin/cowbuilder, /usr/sbin/chroot
# for *-piuparts job
jenkins ALL=NOPASSWD: /usr/sbin/piuparts, /usr/sbin/debootstrap, /usr/bin/piuparts_wrapper

# for cowbuilder instruction:
Defaults  env_keep+="architecture branch distribution release ARCH DEB_* DIST JOB_NAME MIRROR PIUPARTS_* LINTIAN*"
EOF

Grab a copy of this repository:

git clone https://github.com/sipwise/kamailio-deb-jenkins.git /home/admin/kamailio-deb-jenkins

Adopt pbuilder for usage with building for Ubuntu:

echo PBUILDER_CONFIG=/etc/jenkins/pbuilderrc | sudo tee -a /etc/jenkins/debian_glue
sudo cp /home/admin/kamailio-deb-jenkins/pbuilder/pbuilderrc /etc/jenkins/pbuilderrc
sudo dpkg -i /home/admin/kamailio-deb-jenkins/debs/ubuntu-keyring_2012.05.19_all.deb

Deploy nginx as proxy for Jenkins (consider adjusting this using Let's Encrypt SSL certificates though!):

sudo apt-get -y install nginx
sudo openssl req -days 3650 -nodes -new -x509 -keyout /etc/ssl/private/server.key -out /etc/ssl/private/server.cert
sudo cp /home/admin/kamailio-deb-jenkins/nginx/default /etc/nginx/sites-available/default
sudo /etc/init.d/nginx restart

Set up Debian repository directories:

sudo mkdir -p /srv/repository
sudo chown jenkins /srv/repository
sudo ln -s /srv/repository/ /srv/debian

GPG key setup for Debian repository:

sudo apt-get install haveged
sudo -s
su - jenkins
gpg --gen-key # note $KEY_ID
gpg --armor --export $KEY_ID --output /srv/debian/kamailiodebkey.gpg
echo KEY_ID=$KEY_ID | sudo tee -a /etc/jenkins/debian_glue

Set up jenkins-job-builder:

sudo mkdir -p /etc/jenkins_jobs
sudo tee -a /etc/jenkins_jobs/jenkins_jobs.ini >/dev/null <<EOF
[jenkins]
user=jenkins-job-builder
password=$PASSWORD
url=http://localhost:8080/
EOF

Install Matrix Reloaded Jenkins Plugin:

sudo wget -O /var/lib/jenkins/plugins/matrix-reloaded.hpi http://updates.jenkins-ci.org/latest/matrix-reloaded.hpi
sudo chown jenkins:nogroup /var/lib/jenkins/plugins/matrix-reloaded.hpi

Install Build Blocker Jenkins Plugin:

sudo wget -O /var/lib/jenkins/plugins/build-blocker-plugin.hpi http://updates.jenkins-ci.org/latest/build-blocker-plugin.hpi
sudo chown jenkins:nogroup /var/lib/jenkins/plugins/build-blocker-plugin.hpi

Install Build-timeout Plugin:

sudo wget -O /var/lib/jenkins/plugins/build-timeout.hpi http://updates.jenkins-ci.org/latest/build-timeout.hpi
sudo chown jenkins:nogroup /var/lib/jenkins/plugins/build-timeout.hpi

Install groovy-label-assignment Plugin:

sudo wget -O /var/lib/jenkins/plugins/groovy-label-assignment.hpi http://updates.jenkins-ci.org/latest/groovy-label-assignment.hpi
sudo chown jenkins:nogroup /var/lib/jenkins/plugins/groovy-label-assignment.hpi

Adjust for usage with headless Java (if not already present):

echo JAVA_ARGS="-Djava.awt.headless=true" | sudo tee -a /etc/default/jenkins

Generate according Jenkins jobs:

cd /home/admin/kamailio-deb-jenkins/jjb
make

Build slave setup

It's possible to run the build process on a separate Jenkins slave. To set up the build slave follow those steps:

sudo apt update
sudo apt -y install git gnupg
git clone https://github.com/sipwise/kamailio-deb-jenkins
cd kamailio-deb-jenkins/
./ec2/bootstrap.sh -l  # list supported distributions
sudo ./ec2/bootstrap.sh -u $DISTRIBUTION  # e.g. bullseye

Depending on your setup, connect the slave to your master then (SSH, swarm plugin, Amazon EC2 plugin,...).

Questions?

For Jenkins/Build environment related questions contact Michael Prokop (mprokop (at) sipwise dot com), for Kamailio (packaging) related questions contact Victor Seva (linuxmaniac (at) torreviejawireless dot org).