Using Jenkins server

The linaro jenkins server can be found at https://ci.linaro.org/

Creating CI jobs

Jobs are created using https://jenkins-job-builder.readthedocs.io/en/latest/ , which allows us define the jobs as yaml files, to be merged in via Gerrit. The repository from the jobs configurations is at

https://git.linaro.org/ci/job/configs.git/

Sample CI job

Notable features

  • job: name must match the filename

  • The YAML format is defined at https://jenkins-job-builder.readthedocs.io/en/latest/

    • Not all features listed are available, as they depend on plugins our Jenkins may not have installed

    • On request, we can install plugins needed

  • the users and groups “authorization” are from

  • Our convention is not to include shell scripts as part of the job definition, but as shell script in the git repository, included with !include-raw stanza

  • Secret values can be stored in the Jenkins, and you can refer to them via “credentials-binding”

  • The node: is jenkins node to use to builds. Most cases, we use docker container based build nodes. They are in the form of “docker-distro-architecture”, such as docker-buster-arm64.

Adding Job configs to our jenkins

  • After creating the configuration, submit it to our

  • Wait for the bot to verify the gerrit review with

  • If your team has someone in the “linaro-ci-jobs-configs-approvers” gerrit group, request for them to review and submit your job configuration.

  • Else as #systems channel in Linaro

Deleting a Job from Jenkins

To remove a job from Jenkins, you need to set the display-name to “DELETE ME” in the config. The next time jjb is run, the job will be removed from Jenkins and it is safe to “git rm” the file from the repository.

In the event that you delete a job config before running the “DELETE ME” step, you will need to contact a Systems team member to manually remove the job from Jenkins via the administrative interface.