{"id":20099078,"url":"https://github.com/ros2/ci","last_synced_at":"2025-04-06T16:12:40.767Z","repository":{"id":37502887,"uuid":"69404013","full_name":"ros2/ci","owner":"ros2","description":"ROS 2 CI Infrastructure","archived":false,"fork":false,"pushed_at":"2025-03-28T18:19:09.000Z","size":1418,"stargazers_count":49,"open_issues_count":30,"forks_count":30,"subscribers_count":23,"default_branch":"master","last_synced_at":"2025-03-30T14:11:28.317Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://ci.ros2.org/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ros2.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-09-27T22:29:57.000Z","updated_at":"2025-03-28T01:03:32.000Z","dependencies_parsed_at":"2023-12-15T23:55:37.192Z","dependency_job_id":"8c5a8c0b-506f-4e3a-8a5d-7b3fb8c04c66","html_url":"https://github.com/ros2/ci","commit_stats":{"total_commits":852,"total_committers":46,"mean_commits":18.52173913043478,"dds":0.7147887323943662,"last_synced_commit":"3e65b992953140f10687a27239d1599dc0efaf22"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ros2%2Fci","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ros2%2Fci/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ros2%2Fci/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ros2%2Fci/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ros2","download_url":"https://codeload.github.com/ros2/ci/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247509235,"owners_count":20950232,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-13T17:08:02.538Z","updated_at":"2025-04-06T16:12:40.747Z","avatar_url":"https://github.com/ros2.png","language":"Python","funding_links":[],"categories":["Packages"],"sub_categories":["Build system (ROS2)"],"readme":"# ROS 2 CI Infrastructure\n\nThis repository contains all of the scripts and resources for running batch CI jobs of ROS 2 repositories on a Jenkins build farm.\n\n## Setting up on a Jenkins build farm\n\nYou can run the `create_jenkins_job.py` Python3 script to create the jobs on your Jenkins build farm.\nThis assumes you have a Jenkins build farm with at least one Linux agent, OS X agent, and Windows agent.\nHowever, even if you do not have the agents setup yet, you can create the jobs.\n\nBefore you run the script to create the jobs, you'll need to setup your environment according to this document:\n\nhttps://github.com/ros-infrastructure/ros_buildfarm/blob/master/doc/environment.rst\n\nThis document will tell you what dependencies to install/setup like `jenkinsapi` and `ros_buildfarm`, as well as tell you how to setup authentication for Jenkins so that the script can login into your Jenkins build farm.\n\nOnce you've setup your environment, you can do a dry run with the following:\n\n```\n$ python3 create_jenkins_job.py --jenkins-url http://jenkins.example.com\n```\n\nThe above will contact the Jenkins master at the provided url and try to authenticate.\nIf successful, it will output the changes that would be made, but not commit them.\n\nIf the changes look good, then run the same command with the `--commit` option to actually make the changes:\n\n```\n$ python3 create_jenkins_job.py --jenkins-url http://jenkins.example.com --commit\n```\n\nYou can also change the default location from which these CI scripts are pulled with options `--ci-scripts-repository` and `--ci-scripts-default-branch`.\nThey allow you to change the default location from which to get the CI scripts, which is useful if you have forked ros2/ci.\nThe defaults are `git@github.com:ros2/ci.git` and `master` respectively.\nThe branch can be changed when running the job (it's a job parameter) to make it easy to test changes to the CI scripts using a branch on the main repository.\n\n## Adjusting batch CI jobs\n\nThe jobs will be mostly setup, but you may need to adjust some settings for your farm.\n\nFirst you'll need to look at each job configuration and make sure that the 'Label Expression' for the 'Restrict where this project can be run' option matches some build agent label or build agent name for the operating system.\nFor example, the default value for this in the Windows job is 'windows' because we (OSRF) run multiple Jenkins agents all with this label.\nYou may want your job to run on a specific Windows agent in which case you can update the label to match the agent name/label you want to use.\n\nAnother thing to check is the credentials settings.\nThe RTI binaries are provided by a git submodule which points to a private GitHub repository.\nYou'll need to setup at least one ssh key in the Jenkins Credentials plugin and add the public part of that key as a deploy key on the private GitHub repository, currently https://github.com/osrf/rticonnextdds-src.\nThen on each job you'll want to make sure that this key is selected in two places.\nFirst under the 'Source Code Management' section, there is a 'Credentials' drop down box under the 'Repositories' section.\nSelect the appropriate ssh key from that list.\nSecond, under the 'SSH Agent' option, select the same ssh key from the drop down list called 'Credentials'.\nNote this option will not be there for Windows because I could not get the ssh-agent to work on Windows correctly and it is not needed anyways.\n\n\n## Using the batch CI jobs\n\nEach of the batch CI jobs have the same set of parameters.\nThe parameters have their own descriptions, but the main one to look at is the `CI_BRANCH_TO_TEST` parameter.\nIt allows you to select a branch name across all of the repositories in the `.repos` file that should be tested.\nRepositories which have this branch will be switched to it, others will be left on the default branch, usually `rolling`.\n\n### Notes about MacOS, Windows Agents\n\nConfiguration details for running the Jenkins agent process via the Jenkins Swarm Client can be found in the [configuration](https://github.com/ros2/ci/tree/configuration) branch of this repository.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fros2%2Fci","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fros2%2Fci","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fros2%2Fci/lists"}