警告

您正在阅读的 ROS 2 文档版本已达到 EOL(生命周期结束),不再受官方支持。如果您想了解最新信息,请访问 Jazzy.

如何设置 Jenkins 主站

安装

http://pkg.jenkins-ci.org/debian-stable/

在 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

安装 jenkinsapiEmPy 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 =)

https://www.calazan.com/docker-cleanup-commands/