mirror of https://gerrit.osmocom.org/osmo-ci
Oliver Smith
b082c969cb
Instead of building some projects in docker, and some directly on the build slave, build almost all of them in docker with few exceptions, and make building in docker the default. This has several advantages: * build environment of master builds and gerrit verifications is the same, therefore the same build won't pass in gerrit and then fail in master * all build environments are volatile * no more conflicts while running VTY/CTRL tests * fix osmo-python-tests gerrit review versions being installed to /usr/local of build slave (see previous commit message) Projects that still do not get built in docker: * openggsn: depends on libgtpnl, but does not build it in jenkins.sh * osmo-bts: l1headers, various SDKs not installed in the docker image * osmo-trx: LimeSuite is not in the docker image (and just installing the debian package does not work) * osmo-ttcn3-hacks: TTCN-3 not installed in docker image * pysim: needs to access real sim cards attached to the host * sysmo-usim-tool: needs to access real sim cards attached to the host Related: OS#3726, OS#3598 Change-Id: If4b7d2f9ffbc7e92699732d97a8f5829a88c5b35 |
||
---|---|---|
.. | ||
README.adoc | ||
coverity.yml | ||
gerrit-verifications.yml | ||
master-builds.yml | ||
osmo-gsm-tester-builder.yml | ||
osmo-gsm-tester-runner.yml | ||
osmo-gsm-tester-trigger.yml | ||
osmo-gsm-tester_run-gerrit.sh | ||
osmo-gsm-tester_run-prod.sh | ||
osmo-gsm-tester_run-rnd.sh | ||
osmo-gsm-tester_ttcn3.sh | ||
osmocom-build-tags-against-master.yml | ||
osmocom-debian-install.yml | ||
osmocom-depcheck.yml | ||
osmocom-list-commits.yml | ||
osmocom-obs.yml | ||
osmocom-release-tarballs.yml | ||
ttcn3-testsuites.yml | ||
update-osmo-ci-on-slaves.yml | ||
update-osmo-python-on-slaves.yml |
README.adoc
These jenkins.osmocom.org job definitions, managed by https://docs.openstack.org/infra/jenkins-job-builder/index.html[Jenkins Job Builder] *Prepare:* Install jenkins-job-builder: For debian 9, see troubleshooting below. Otherwise: apt-get install jenkins-job-builder Have a jenkins-job-builder.ini file. One of ~/.config/jenkins_jobs/jenkins_jobs.ini /etc/jenkins_jobs/jenkins_jobs.ini or place one in here and pass it to jenkins-jobs using the --conf file. Make sure the file not world readable to minimally safeguard your jenkins password. Instead of using your jenkins password, use an *API Token*. To retrieve your token go to Jenkins via a Webbrowser, click on your Username in the right corner, click on configure, click on *Show API Toke...*. jenkins_jobs.ini: [jenkins] user=my_user_name password=my_api_token url=https://jenkins.osmocom.org/jenkins and chmod go-rwx jenkins_jobs.ini *Update a single job on jenkins.osmocom.org:* jenkins-jobs --conf jenkins_jobs.ini update gerrit-verifications.yml gerrit-osmo-msc NOTE: when you supply a name not defined in that yml file, you will not get an error message, just nothing will happen. *Update all jobs of one file:* jenkins-jobs --conf jenkins_jobs.ini update gerrit-verifications.yml *Update all jobs in all files:* jenkins-jobs --conf jenkins_jobs.ini update ./ *Troubleshooting:* - 'jenkins.JenkinsException: create[gerrit-osmo-msc] failed' jenkins.osmocom.org is not reachable, or URL in the config file is erratic. Make sure it is exactly url=https://jenkins.osmocom.org/jenkins - newlines: Use 'key: |' to keep new lines in multiline values, e.g.: - shell: | echo hello echo world See also: * https://yaml-multiline.info/ * https://stackoverflow.com/a/21699210 - jobs named on cmdline are not updated: Make sure the job name is correct, or just issue an entire yml file without individual job names. Also be aware that jobs are only actually updated when anything changed. - debian 9 For jenkins-job-builder to work on debian 9: add 'testing' to /etc/apt/sources.list like deb http://ftp.de.debian.org/debian/ testing main then sudo apt-get update sudo apt-get -t testing install python-jenkins sudo apt-get install jenkins-job-builder and make sure to *not* pick the python3 versions (or you'll need to add catching of HTTPError to jenkins/__init__.py in 'def maybe_add_crumb') *Jenkins labels* The build jobs are using labels to specify on which nodes the job should be run. Please use the following labels - osmocom-master-debian8: are nodes which can build osmocom-master and is a debian 8 - osmocom-master-debian9: are nodes which can build osmocom-master and is a debian 9 - osmocom-gerrit-debian8: are nodes which can build osmocom-gerrit and is a debian 8 - osmocom-gerrit-debian9: are nodes which can build osmocom-gerrit and is a debian 9