1.3 打包 romana
Calamari Clients 是calamari的前端模块,提供了一个web UI,使用的是calamari REST API。 Calamari Server 组件包括:apache,salt-master,supervisord,cthulhu,carbon-cache Calamari Client 组件包括:salt-minion , diamond
代码的地址:
https://github.com/ceph/calamari-clients.git
上面的地址是以前的版本,到现在已经改名了就romana了 最新版的地址:
https://github.com/ceph/romana
下载代码
[root@calamari ~]# cd /root/calamari/
[root@calamari calamari]# git clone https://github.com/ceph/romana
Cloning into 'romana'...
remote: Counting objects: 16302, done.
remote: Total 16302 (delta 0), reused 0 (delta 0), pack-reused 16302
Receiving objects: 100% (16302/16302), 28.84 MiB | 106.00 KiB/s, done.
Resolving deltas: 100% (9481/9481), done.
客户端打包这一块也提供了Vagrant 打包的方式,但是从代码里面的Vagrant配置文件可以看到,这个并没有很好的支持,作者用了他电脑里面的路径
[root@calamari centos-package]# cat /root/calamari/romana/vagrant/rhel7-package/Vagrantfile
box_url = "file:/home/jenkins-build/rhel7.box"
并且没有centos7的打包的Vagrant配置文件,这个地方选择从宿主机打包的方式,网上有拷贝目录文件的方式,这里我们还算选择打包的方式,这样比较好控制环境,当然后面需要做一定的修改
首先安装一些依赖包
[root@calamari ~]# yum install npm ruby ruby-devel rubygems rpm-build libpng-devel
更新npm并安装bower grunt grunt-cli (进入romana目录 npm install generator-mocha)
[root@calamari ~]# npm install -g npm
[root@calamari ~]# npm install -g n
[root@calamari ~]# npm install -g bower grunt grunt-contrib-compass grunt-cli generator-mocha
替换gem源
[root@calamari ~]# gem sources --remove https://rubygems.org/
[root@calamari ~]# gem sources -a https://ruby.taobao.org/
更新gem并安装compass
[root@calamari ~]# gem update --system && gem install compass
[root@calamari ~]# n 0.10.40
install : node-v0.10.40
mkdir : /usr/local/n/versions/node/0.10.40
fetch : https://nodejs.org/dist/v0.10.40/node-v0.10.40-linux-x64.tar.gz
installed : v0.10.40
[root@calamari ~]# node -v
v0.10.40
修改npm的源,国外的源的一些软件会被墙掉
1.临时使用
[root@calamari ~]# npm --registry https://registry.npm.taobao.org install express
2.持久使用
[root@calamari ~]# npm config set registry https://registry.npm.taobao.org
// 配置后可通过下面方式来验证是否成功
[root@calamari ~]# npm config get registry
// 或
[root@calamari ~]# npm info express
[root@calamari ~]# cd /root/calamari/romana/
安装相关的nodejs 修改文件
[root@calamari ~]# vim /root/calamari/romana/manage/package.json
"grunt-connect-proxy": "~0.2.0"
执行下拷贝的,否则无法引用compass(compass没在系统路径无法调用)
cp /usr/local/bin/compass /sbin/
再修改一个地方 grunt-contrib-imagemin的一个 bug 注意下固定 grunt-contrib-imagemin 版本到0.4.1
[root@calamarimake romana]# grep "grunt-contrib-imagemin" -R *
admin/package.json: "grunt-contrib-imagemin": "~0.1.4",
dashboard/package.json: "grunt-contrib-imagemin": "0.1.4",
login/package.json: "grunt-contrib-imagemin": "~0.1.3",
manage/package.json: "grunt-contrib-imagemin": "~0.3.0",
修改为:
admin/package.json: "grunt-contrib-imagemin": "0.4.1",
dashboard/package.json: "grunt-contrib-imagemin": "0.1.4",
login/package.json: "grunt-contrib-imagemin": "0.4.1",
manage/package.json: "grunt-contrib-imagemin": "0.4.1",
这个原来的版本安装后会有bug,编译无法通过 设置系统的PHANTOMJS的CDN环境变量,并做预编译
[root@calamari romana]# PHANTOMJS_CDNURL=http://npm.taobao.org/dist/phantomjs make build-real
building ui
set -e ;\
for d in manage admin login dashboard; do \
echo $d; cd $d; make build; cd .. ; \
---------something more------------
Done, without errors.
touch build-stamp
make[1]: Leaving directory `/root/calamari/romana/dashboard'
echo '{ "offline": false, "graphite-host": "/graphite" }' \
> dashboard/dist/scripts/config.json
预编译完成了 打个源码的tar包
[root@calamari romana]# make dist
making dist tarball in ../romana_1.2.2.tar.gz
for d in manage admin login dashboard; do \
echo $d; \
(cd $d; \
npm install --silent; \
grunt --no-color saveRevision) \
done
--------something more----------
Done, without errors.
185667 blocks
tar file made in ../romana_1.2.2.tar.gz
在上一层目录生成了一个tar.gz包,拷贝到当前的源码目录
[root@calamari romana]# cp ../romana*.tar.gz ./
修改当前的Makefile
[root@calamari romana]# vim Makefile
修改里面的
BUILD_PRODUCT_TGZ=$(SRC)/romana-build-output.tar.gz为
BUILD_PRODUCT_TGZ=$(SRC)/romana_1.2.2.tar.gz
修改romana.spec文件
[root@calamari romana]# vim romana.spec
添加一段操作: 在tar xfz %{tarname}下面添加
cd %{name}-%{version}
for dir in manage admin login dashboard
do
mkdir -p ../opt/calamari/webapp/content/"$dir"
cp -pr "$dir"/dist/* ../opt/calamari/webapp/content/"$dir"/
done
cd ../
rm -rf /tmp/%{name}-%{version}
mv %{name}-%{version} /tmp/
执行打包命令
[root@calamari romana]# make rpm
mkdir -p /root/calamari/romana/../rpmbuild/{SPECS,RPMS,BUILDROOT}
cp romana.spec /root/calamari/romana/../rpmbuild/SPECS
----something more ----
+ '[' /root/calamari/rpmbuild/BUILDROOT/romana-1.2.2-36_gc62bb5b.el7.centos.x86_64 '!=' / ']'
+ rm -rf /root/calamari/rpmbuild/BUILDROOT/romana-1.2.2-36_gc62bb5b.el7.centos.x86_64
+ exit 0
生成的rpm包在:
/root/calamari/rpmbuild/RPMS/x86_64/romana-1.2.2-36_gc62bb5b.el7.centos.x86_64.rpm
到这里,客户端的romana的rpm包就生成成功了