mirror of https://gerrit.osmocom.org/osmo-ci
Oliver Smith
719ff97608
Remove num-to-keep from most jobs, as this leads to keeping the build logs for a much shorter timeline than desired. For example the gerrit-binpkgs-deb job that runs for most projects when pushing patches to jenkins reaches the 120 limit in less than 24h - and so when clicking the link on a failed build from yesterday it is already deleted. Instead just keep the logs for the last 30 days, no matter how many were submitted on one day. Storing logs doesn't take up much space. Remove the artifact-days-to-keep and artifact-num-to-keep lines, as they don't have an effect. For jobs that do have artifacts, the actual value is min(days-to-keep,artifact-days-to-keep) and same with num-to-keep. While at it, increase the ttcn3-testsuites build-discarder to 120 days as this means more data will show up in the test result analyzer at which we look frequently. Change-Id: Iec5c22c7fcf6c1fd2db71611045f15dc6580ed86 |
||
---|---|---|
.. | ||
README.adoc | ||
coverity.yml | ||
gerrit-binpkgs.yml | ||
gerrit-lint.yml | ||
gerrit-pipeline-endianness.yml | ||
gerrit-verifications-comment.yml | ||
gerrit-verifications-dahdi.yml | ||
gerrit-verifications.yml | ||
master-builds-dahdi.yml | ||
master-builds.yml | ||
octsim_osmo-ccid-firmware.yml | ||
osmo-gsm-manuals-trigger.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-api.yml | ||
osmocom-build-tags-against-master.yml | ||
osmocom-depcheck.yml | ||
osmocom-list-commits.yml | ||
osmocom-obs-check-builders.yml | ||
osmocom-obs.yml | ||
osmocom-release-tarballs.yml | ||
registry-rebuild-upload-fpga-build.yml | ||
registry-rebuild-upload-titan.yml | ||
registry-triggers.yml | ||
registry-update-base-images.yml | ||
repo-install-test.yml | ||
ttcn3-testsuites-kernel-git.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: 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. *Jenkins labels* Most jenkins jobs should run a docker container and install all required dependencies inside that, so we don't need to install them on the jenkins node. These jobs don't need to set a label, they can just run on any generic jenkins node that has docker available. So if you add a new job, you probably don't need a label at all. Existing jobs typically have a label set by the topic they belong to, e.g.: - osmocom-master - osmocom-gerrit - ttcn3 Other labels indicate specific software/hardware works here, e.g.: - coverity - hdlc - osmo-gsm-tester - podman *ccache* The jobs from master-builds and gerrit-verifications use ccache. View the statistics with SSH on the build nodes with: $ CCACHE_DIR=~/ccache/gerrit-verifications ccache -s $ CCACHE_DIR=~/ccache/master-builds ccache -s Note that running multiple jobs in parallel influence the ccache statistics, and it's impossible to tell which job caused which change in the stats (that's why they are not printed at the end of each job, it would be confusing).