我们使用open build service提供的开源方案部署了 openEuler自己的包持续构建平台,并且参照open build service的官方建议,按照下面的方式部署了集群:
这里面包含的组件有:
注意: 部署过程中,我们使用的一些配置文件,是存放在OBS上的(公开读),具体地址: https://openeuler.obs.cn-south-1.myhuaweicloud.com:443/infrastructure 后续调整的时候需要同步更新。
假设我们四台机器均在一个互通的子网内,他们之间可通过子网IP访问,IP具体信息如下:
注意: 如果机器在不同的子网内,需要保证服务端口开放。
我们是基于官方提供的all-in-one镜像构建后,拆分服务的,所以需要确保你的镜像是: OpenSUSE OBS 2.10 ISO image here
tf/startup/frontend.sh
文件,提供了基本的执行脚本,用于拉起前端服务,拷贝到机器后,执行命令如下:./frontend.sh 172.16.1.81 172.16.1.89 172.16.1.95 172.16.1.84
我们可以通过下面的指令确认需要的服务已经起来。
systemctl list-units | grep -E 'obs|memcached|mariadb|apache2'
the output would be like:
apache2.service loaded active running The Apache Webserver
mariadb.service loaded active running MySQL server
memcached.service loaded active running memcached daemon
obs-clockwork.service loaded active running Open Build Service Clockwork Daemon
obs-delayedjob-queue-consistency_check.service loaded active running Open Build Service DelayedJob Queue: consistency_check
obs-delayedjob-queue-default.service loaded active running Open Build Service DelayedJob Queue: default
obs-delayedjob-queue-issuetracking.service loaded active running Open Build Service DelayedJob Queue: issuetracking
obs-delayedjob-queue-mailers.service loaded active running Open Build Service DelayedJob Queue: mailers
obs-delayedjob-queue-project_log_rotate.service loaded active running Open Build Service DelayedJob Queue: project_log_rotate
obs-delayedjob-queue-quick@0.service loaded active running Open Build Service DelayedJob Queue Instance: quick
obs-delayedjob-queue-quick@1.service loaded active running Open Build Service DelayedJob Queue Instance: quick
obs-delayedjob-queue-quick@2.service loaded active running Open Build Service DelayedJob Queue Instance: quick
obs-delayedjob-queue-releasetracking.service loaded active running Open Build Service DelayedJob Queue: releasetracking
obs-delayedjob-queue-staging.service loaded active running Open Build Service DelayedJob Queue: staging
obs-sphinx.service loaded active running Open Build Service Sphinx Search Daemon
obsstoragesetup.service loaded active exited OBS storage setup
system-obs\x2ddelayedjob\x2dqueue\x2dquick.slice loaded active active system-obs\x2ddelayedjob\x2dqueue\x2dquick.slice
obs-api-support.target loaded active active Open Build Service API Support Daemons
同时 hosts文件会添加集群内其他机器的host ip映射信息:
172.16.1.81 build.openeuler.org
172.16.1.89 source.openeuler.org
172.16.1.95 backend.openeuler.org
172.16.1.84 home-backend.openeuler.org
我们是基于官方提供的all-in-one镜像构建后,拆分服务的,所以需要确保你的镜像是: OpenSUSE OBS 2.10 ISO image here
Source机器使用到的配置文件BSConfig.pm(tf/startup/BSConfig.pm),如果修改,需要在执行脚本前,同步到OBS。
tf/startup/source.sh
文件,提供了基本的执行脚本,用于拉起源代码服务,拷贝到机器后,执行命令如下:./source.sh 172.16.1.81 172.16.1.89 172.16.1.95 172.16.1.84 /dev/vdb
/dev/vdb
提前准备的磁盘,由于source机器会用来存储所有的代码,建议配置一个至少2T空间的SSD磁盘。
我们可以通过下面的指令确认需要的服务已经起来。
systemctl list-units | grep obs
obsdeltastore.service loaded active running OBS deltastore daemon
obsservicedispatch.service loaded active running OBS source service dispatcher
obssrcserver.service loaded active running OBS source repository server
obsstoragesetup.service loaded active exited OBS storage setup
同时 hosts文件会添加集群内其他机器的host ip映射信息:
172.16.1.81 build.openeuler.org
172.16.1.89 source.openeuler.org
172.16.1.95 backend.openeuler.org
172.16.1.84 home-backend.openeuler.org
我们是基于官方提供的all-in-one镜像构建后,拆分服务的,所以需要确保你的镜像是: OpenSUSE OBS 2.10 ISO image here Backend机器使用到的配置文件BSConfig.pm(tf/startup/BSConfig.pm),如果修改,需要在执行脚本前,同步到OBS。
tf/startup/backend.sh
文件,提供了基本的执行脚本,用于拉起源代码服务,拷贝到机器后,执行命令如下:./backend.sh 172.16.1.81 172.16.1.89 172.16.1.95 172.16.1.84 361466436 /dev/vdb
/dev/vdb
提前准备的磁盘,由于backend机器会用来存储所有的构建包,建议配置一个至少4T空间的SAS磁盘。
361466436
:配置的repoID,需要跟Source机器上的repoID保持一致,当在Source机器上执行脚本时,界面会显示Source机器的repoID。
我们可以通过下面的指令确认需要的服务已经起来。
systemctl list-units | grep obs -e "obs|apache2"
the output would include:
apache2.service loaded active running The Apache Webserver
obsdispatcher.service loaded active running OBS job dispatcher daemon
obsdodup.service loaded active running OBS dodup, updates download on demand metadata
obspublisher.service loaded active running OBS repository publisher
obsrepserver.service loaded active running OBS repository server
obsscheduler.service loaded active exited OBS job scheduler
obsservice.service loaded active running OBS source service server
obssignd.service loaded active running LSB: start the gpg sign daemon
obssigner.service loaded active running OBS signer service
obswarden.service loaded active running OBS warden, monitors the workers
同时 hosts文件会添加集群内其他机器的host ip映射信息:
172.16.1.81 build.openeuler.org
172.16.1.89 source.openeuler.org
172.16.1.95 backend.openeuler.org
172.16.1.84 home-backend.openeuler.org
我们是基于官方提供的all-in-one镜像构建后,拆分服务的,所以需要确保你的镜像是: OpenSUSE OBS 2.10 ISO image here Home-backend机器使用到的配置文件Home_BSConfig.pm(tf/startup/Home_BSConfig.pm),如果修改,需要在执行脚本前,同步到OBS。
tf/startup/home-backend.sh
文件,提供了基本的执行脚本,用于拉起源代码服务,拷贝到机器后,执行命令如下:./home-backend.sh 172.16.1.81 172.16.1.89 172.16.1.95 172.16.1.84 361466436 /dev/vdb
/dev/vdb
提前准备的磁盘,由于backend机器会用来存储所有的构建包,建议配置一个至少2T空间的SSD磁盘。
361466436
:配置的repoID,需要跟Source机器上的repoID保持一致,当在Source机器上执行脚本时,界面会显示Source机器的repoID。
我们可以通过下面的指令确认需要的服务已经起来。
systemctl list-units | grep obs -e "obs|apache2"
the output would include:
apache2.service loaded active running The Apache Webserver
obsdispatcher.service loaded active running OBS job dispatcher daemon
obsdodup.service loaded active running OBS dodup, updates download on demand metadata
obspublisher.service loaded active running OBS repository publisher
obsrepserver.service loaded active running OBS repository server
obsscheduler.service loaded active exited OBS job scheduler
obsservice.service loaded active running OBS source service server
obssignd.service loaded active running LSB: start the gpg sign daemon
obssigner.service loaded active running OBS signer service
obswarden.service loaded active running OBS warden, monitors the workers
同时 hosts文件会添加集群内其他机器的host ip映射信息:
172.16.1.81 build.openeuler.org
172.16.1.89 source.openeuler.org
172.16.1.95 backend.openeuler.org
172.16.1.84 home-backend.openeuler.org
要求 目前openEuler支持x86的aarch642种平台的构建,我们使用的worker机器对应的操作系统如下:
x86(centos 7.6),对应的初始化脚本是worker.sh
aarch(euleros 2.x),对应的初始化脚本是worker_centos.sh
安装说明 worker机器在高并发的情况下,对磁盘IO占用比较高,建议挂载SSD或者直接挂载内存作为worker的工作目录(/var/cache/obs/worker),如果是磁盘,直接执行命令即可:
./worker.sh 172.16.1.81 172.16.1.89 172.16.1.95 172.16.1.84 /dev/vdb
如果是使用内存,如要提前准备好挂载的内存:
mkdir -p /var/cache/obs/worker && echo "tmpfs /var/cache/obs/worker tmpfs nodev,nosuid,noexec,nodiratime,size=200G 0 0" >> /etc/fstab && reboot
然后再执行脚本:
./worker.sh 172.16.1.81 172.16.1.89 172.16.1.95 172.16.1.84
我们可以通过下面的指令确认需要的服务已经起来。
systemctl list-units | grep obs
the output would include:
obsworker.service loaded active running LSB: Open Build Service worker
obsworker服务的配置文件在: /etc/sysconfig/obs-server, 其中重点的参数包括:
OBS_SRC_SERVER
: 指向source server。OBS_REPO_SERVERS
: 指向我们的后端服务,配置配置多个后端地址,以空格隔开,表明同时注册给多个后端。OBS_WORKER_INSTANCES
: worker的实例数。OBS_WORKER_JOBS
:每个worker的cpu数,系统计算根据当前机器的核数/实例数计算得来。OBS_WORKER_DIRECTORY
: worker的工作目录,默认指向/var/cache/obs/worker
。同时 hosts文件会添加集群内其他机器的host ip映射信息:
172.16.1.81 build.openeuler.org
172.16.1.89 source.openeuler.org
172.16.1.95 backend.openeuler.org
172.16.1.84 home-backend.openeuler.org
集群的包和代码准备,请参考download_packages
和download_package_codes
目录中的指导文件,完成后可以在source机器中,执行下面的指令用于触发第一次构建:
for rpmn in `osc ls openEuler:Mainline`;do osc service remoterun openEuler:Mainline $rpmn;done
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。