Teamcity + Rancher + 阿里云CODE + 阿里云镜像仓库实现DevOps
1.安装Docker
Docker相关知识具体参考:https://www.bdysoft.com/archives/3.html
备注:由于rancher 1.6.30仅支持19.03.2一下版本建议在执行docker安装时,执行一下指令进行安装:
# 1.删除服务器中原本安装的docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 2.安装yum-utils
yum install -y yum-utils device-mapper-persistent-data lvm2
# 3.为yum源添加docker仓库位置
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# 4.yum安装docker
yum -y install docker-ce-18.06.3.ce
# 5.设置docker开机自启
systemctl start docker
systemctl enable docker
2.安装Teamcity + Teamcity Agent
# 1.安装Teamcity
docker run -d -u 0 -it --name teamcity -v /data/tc/server/datadir:/data/teamcity_server/datadir -p 你准备用来提供访问的接口:8111 --restart=always jetbrains/teamcity-server
# 2.如果是在同一台机器部署Teamcity + Teamcity Agent,可以通过一下指令找到Teamcity的地址
docker inspect --format '{{ .NetworkSettings.IPAddress }}' teamcity-server的CONTAINERID
# 3.安装Teamcity Agent
docker run -d -u 0 -it -e SERVER_URL="可以访问Teamcity的地址" \
-v /data/tc/agent/conf:/data/teamcity_agent/conf \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /data/tc/agent/buildagent/work:/opt/buildagent/work \
-v /data/tc/agent/buildagent/temp:/opt/buildagent/temp \
-v /data/tc/agent/buildagent/tools:/opt/buildagent/tools \
-v /data/tc/agent/buildagent/plugins:/opt/buildagent/plugins \
-v /data/tc/agent/buildagent/system:/opt/buildagent/system \
--restart=always \
jetbrains/teamcity-agent
3.配置Teamcity 及设置Teamcity Agent
到这里teamcity就配置结束了,我们尝试用temacity打包并推送到阿里云镜像仓库。
4.利用Teamcity 完成项目创建及配置
项目中必须包含Dockerfile文件,Dockerfile文件里面的一些参数可参考以下说明,形象的理解。
备注:测试所用的阿里云code,输入账号密码登录有问题,所以需要在project上传SSHkey 。
5.配置阿里云镜像仓库与Teamcity关联
备注:所需要的密码是在这里设置的:
6.配置Teamcity 发版流水线
先设置maven clean package
构建镜像
推送镜像, 其中%name%是在parameters里面配置的:
推送完成, 其中%name%是在parameters里面配置的:
6.在一台【Docker环境干净的】服务器上创建Rancher 1.6.30版本
1.具体安装教程:https://docs.rancher.cn/docs/rancher1/overview/start/_index/
2.注意需要开放以下接口:
https://www.cnblogs.com/heqiuyong/p/10460150.html
http://docs.rancher.cn/docs/rancher2/installation/requirements/ports/_index
3.开放端口
firewall-cmd --zone=public --add-port=6443/tcp --permanent # 开放5672端口
firewall-cmd --zone=public --remove-port=6443/tcp --permanent #关闭5672端口
firewall-cmd --reload # 配置立即生效
4.查看防火墙所有开放的端口
firewall-cmd --zone=public --list-ports
# 1.安装前可以清理一下容器:
docker stop $(docker ps -aq)
docker system prune -f
docker volume rm $(docker volume ls -q)
docker image rm $(docker image ls -q)
rm -rf /etc/ceph \
/etc/cni \
/etc/kubernetes \
/opt/cni \
/opt/rke \
/run/secrets/kubernetes.io \
/run/calico \
/run/flannel \
/var/lib/calico \
/var/lib/etcd \
/var/lib/cni \
/var/lib/kubelet \
/var/lib/rancher/rke/log \
/var/log/containers \
/var/log/pods \
/var/run/calico
# 2.安装Docker 镜像
docker run -d --restart=unless-stopped -p 80:8080 rancher/server:stable
7.完成Rancher 主机注册并配置镜像仓库:
1.添加镜像仓库
2.注册主机,选择custom,将主机注册指令,复制到需要注册的主机节点上即可
#可通过修改主机名:
hostnamectl set-hostname node2
8.创建应用
9.创建服务
10.通过触发器实现镜像一旦在阿里云仓库更新则容器上的服务自动更新
11.通过Rancher API 实现在Teamcity里通过输入build的版本号部署对应的服务
前置条件为每次build及push到阿里云镜像仓库的版本号都不一样。
1.打开浏览器的开发者模式,点击服务右侧的升级按钮,复制浏览器发送请求的升级参数,然后API查看里面打开,找到upgrade那个API,将参数复制进去后show requerst,复制完整的requert,并且将其中appkey 和 secret 换成自己生成的,还有其中有一个参数是imageUuid,我们可以在imageUUid对应的镜像末尾修改为%version%,这个version就是前面我们设计的必须要输入的参数。
2.在teamcity中添加build step,选择runner type = Command Line,在下面的命令行输入上面复制并进行修改的代码即可。
写的不错。
如果有问题可以联系我,给你解答。