警告
您正在阅读的 ROS 2 文档版本已达到 EOL(生命周期结束),不再受官方支持。如果您想了解最新信息,请访问 Jazzy.
如何设置 Jenkins 主站
安装
在 80 端口运行
使用此 SO 答案为端口设置子域:
http://serverfault.com/a/140161/186748
(去掉了 哈德逊
在包含它的每一行中)。
临时重写已更改的工作名称
我们重新命名了一些工作,因此这里是 Apache 中的一些重写规则 (/etc/apache2/sites-enabled/ci.ros2.org.conf
):
# 临时重写规则,因为我们更改了 Windows 任务名称。
重写引擎 关于重写规则 ^(.*)/ros2_batch_ci_linux/(.*)$ $1/ci_linux/$2 [R=301,L]
重写规则 ^(.*)/ros2_batch_ci_osx/(.*)$ $1/ci_osx/$2 [R=301,L]
重写规则 ^(.*)/ros2_batch_ci_windows/(.*)$ $1/ci_windows_opensplice/$2 [R=301,L]
重写规则 ^(.*)/ros2_batch_ci_windows_opensplice/(.*)$ $1/ci_windows_opensplice/$2 [R=301,L]
重写规则 ^(.*)/ros2_batch_ci_windows_connext_static/(.*)$ $1/ci_windows_connext_static/$2 [R=301,L]
重写规则 ^(.*)/ros2_batch_ci_windows_connext_dynamic/(.*)$ $1/ci_windows_connext_dynamic/$2 [R=301,L]
重写规则 ^(.*)/ci_windows_opensplice/(.*)$ $1/ci_windows/$2 [R=301,L]
重写规则 ^(.*)/ci_windows_connext_static/(.*)$ $1/old_windows_connext_static/$2 [R=301,L]
重写规则 ^(.*)/ci_windows_connext_dynamic/(.*)$ $1/old_windows_connext_dynamic/$2 [R=301,L]
重写规则 ^(.*)/ci_windows_fastrtps/(.*)$ $1/old_windows_fastrtps/$2 [R=301,L]
重写规则 ^(.*)/ros2_batch_ci_linux_nightly/(.*)$ $1/nightly_linux/$2 [R=301,L]
重写规则 ^(.*)/ros2_batch_ci_osx_nightly/(.*)$ $1/nightly_osx/$2 [R=301,L]
重写规则 ^(.*)/ros2_batch_ci_windows_opensplice_nightly/(.*)$ $1/nightly_windows_opensplice/$2 [R=301,L]
重写规则 ^(.*)/ros2_batch_ci_windows_connext_static_nightly/(.*)$ $1/nightly_windows_connext_static/$2 [R=301,L]
重写规则 ^(.*)/ros2_batch_ci_windows_connext_dynamic_nightly/(.*)$ $1/nightly_windows_connext_dynamic/$2 [R=301,L]
重写规则 ^(.*)/nightly_windows_opensplice/(.*)$ $1/nightly_windows/$2 [R=301,L]
重写规则 ^(.*)/nightly_windows_connext_static/(.*)$ $1/old_night_windows_connext_static/$2 [R=301,L]
重写规则 ^(.*)/nightly_windows_connext_dynamic/(.*)$ $1/old_night_windows_connext_dynamic/$2 [R=301,L]
重写规则 ^(.*)/ros2_packaging_linux/(.*)$ $1/packaging_linux/$2 [R=301,L]
重写规则 ^(.*)/ros2_packaging_osx/(.*)$ $1/packaging_osx/$2 [R=301,L]
重写规则 ^(.*)/ros2_packaging_windows_opensplice/(.*)$ $1/packaging_windows_opensplice/$2 [R=301,L]
重写规则 ^(.*)/packaging_windows_opensplice/(.*)$ $1/packaging_windows/$2 [R=301,L]
安装工具(主设备和从设备都需要)
苏都 适切 更新 sudo 适切 安装 -y 笨蛋
# 您的 Java 版本会因操作系统而异:
#sudo apt install openjdk-7-jre-headless
#sudo apt install openjdk-8-jre-headless
# 对于 ARM 本地服务器,我们需要 tomcat 本地库来支持 ssh-agent
# (https://issues.jenkins-ci.org/browse/JENKINS-30746)
#sudo apt install libtcnative-1
# ARM 构建需要 qemu 和 vcs
苏都 适切 安装 -y qemu-user-static sudo 敲击 -c 'echo "deb http://repositories.ros.org/ubuntu/testing/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list';
苏都 敲击 -c 'curl --silent https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc |sudo apt-key add -';
# 或者,在 aarch64 上:
#sudo apt install docker.io
苏都 适切 更新 sudo 适切 安装 -y python-vcstool curl -fsSL https://get.docker.com/ | sh 添加用户 --禁用密码 jenkins sudo 篡改 -aG 装卸工 jenkins sudo 服务 装卸工 启动
为农场添加 Linux 从属设备
大约
壳进入主 (
ci.ros2.org
复制/var/lib/jenkins/.ssh/id_rsa.pub
并将其粘贴到/home/jenkins/.ssh/authorized_keys
在新机器上。从
linux 2
机、重命名或根据需要进行其他修改(如更改 IP/主机)。复制
/etc/ssh/ssh_host_rsa_key.pub
并将其作为条目添加到/var/lib/jenkins/.ssh/known_hosts
(新机器的 IP),然后在主控机上重新散列该文件:ssh-keygen -H
.
配置 Jenkins
首先更新所有预装插件。
认证
使用 github-oauth
插件。安装并遵循其设置说明:
https://wiki.jenkins-ci.org/display/JENKINS/Github+OAuth+Plugin
在 ros2 GitHub 组织中创建应用程序条目:
https://github.com/organizations/ros2/settings/applications/215300
中调整权限 管理 詹金斯->配置 全球 安全
.
插件
安装这些插件:
ansicolor
描述设定器
github
(其他 git* 插件是github-oauth
插件)绿球
古怪
参数化触发器
优先级分类器
职位顺序
ssh-agent
警告
单位
添加 ssh 密钥
Jenkins 需要一个有效的 ssh 密钥,才能从我们的一些私有软件源中提取数据,例如获取 rti deb 文件。
因此,让我们在 webserver 上为 jenkins 用户创建一个 ssh 密钥:
苏都 su 杰金斯
CD
mkdir .ssh ssh-keygen -t rsa
现在,在 jenkins 凭据中添加 "来自 jenkins 主站 ~/.ssh",用户 ID 为 ros2-buildfarm
.
将此密钥添加到为该农场创建的 "机器 "GitHub 账户,并添加该用户、 ros2-buildfarm
,以 玫瑰2
, 动情
和 osrf
组织。
创造就业机会
克隆 ros2/ci
仓库的默认分支 (师
):
笨蛋 复制 https://github.com/ros2/ci.git
克隆 ROS_BUILDFARM
存放处:
笨蛋 复制 https://github.com/ros-infrastructure/ros_buildfarm.git
安装 jenkinsapi
和 EmPy
Python 软件包:
苏都 适切 安装 python3-pip sudo -H python3 -m 核心 安装 -U pip sudo -H python3 -m 核心 安装 jenkinsapi EmPy
然后设置身份验证:
mkdir -p ~/.buildfarm vim ~/.buildfarm/jenkins.ini
将此放入 jenkins.ini
锉刀
[http://ci.ros2.org]
用户名=wjwwood
暗号=您的 应用 token>;
现在,如果尚未登录,请先登录 Jenkins 上的 GitHub。然后输入 GitHub 用户名和应用程序令牌,浏览 Jenkins 上用户的配置:
https://ci.ros2.org/user/wjwwood/configure
在这些设置中,应该有一个名为 API Token 的字段。复制该字段作为密码。
现在你们可以创造就业机会了:
$ 飞龙之路=`pwd`/.../ros_buildfarm ./create_jenkins_job.py -u http://ci.ros2.org 连接 至 詹金斯 'http://ci.ros2.org';
已连接 至 詹金斯 版本 '1.617'
创建 工作 'ros2_batch_ci_windows'
"(《世界人权宣言》) 詹金斯 师 是否 不 要求 a 面包屑制作 工作 'ros2_batch_ci_osx'
创建 工作 'ros2_batch_ci_linux'
创建 工作 'ros2_batch_ci_launcher'
调整自动生成的工作
最后一步是微调作业。对于每个作业,都要检查 git 克隆(仅限 Linux)和 ssh-agent 使用的 ssh 密钥。它应设置为前面步骤中为 jenkins 用户设置的 ssh 密钥。
我还更新了作业将运行的从属设备,以确保它们与为 Linux、macOS 和 Windows 添加的从属设备名称相匹配。
磁盘空间
随着时间的推移,Docker 镜像,特别是容器会堆积如山。
清理使用:
装卸工 rm $(装卸工 ps -a -q)
装卸工 rmi $(装卸工 图像 -q -f 纚=真)