Teamcity + Rancher + 阿里云Code 实现Devops 自动化部署

Teamcity + Rancher + 阿里云Code 实现Devops 自动化部署

Lewis
2021-07-12 / 2 评论 / 427 阅读 / 正在检测是否收录...

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

image-20210714163406552

image-20210714163417121

image-20210714163425621

image-20210714163434114

到这里teamcity就配置结束了,我们尝试用temacity打包并推送到阿里云镜像仓库。

4.利用Teamcity 完成项目创建及配置

项目中必须包含Dockerfile文件,Dockerfile文件里面的一些参数可参考以下说明,形象的理解。

image-20210714164153266

image-20210714163715570

image-20210714163722370

image-20210714163731537

image-20210714163738420

image-20210714163748460

image-20210714163759295

image-20210714163807708

备注:测试所用的阿里云code,输入账号密码登录有问题,所以需要在project上传SSHkey 。

5.配置阿里云镜像仓库与Teamcity关联

image-20210714163927027

image-20210714163933150

备注:所需要的密码是在这里设置的:

image-20210714163949401

6.配置Teamcity 发版流水线

image-20210714164050879

先设置maven clean package

image-20210714164110355

构建镜像

image-20210714165523628

image-20210714164120784

推送镜像, 其中%name%是在parameters里面配置的:

image-20210714164322218

推送完成, 其中%name%是在parameters里面配置的:

image-20210714164430157

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.添加镜像仓库

image-20210714165005896

image-20210714165054712

2.注册主机,选择custom,将主机注册指令,复制到需要注册的主机节点上即可
#可通过修改主机名:
hostnamectl set-hostname node2 

image-20210714165149143

8.创建应用

image-20210714165808261

9.创建服务

image-20210714165830310

image-20210714165909942

image-20210714170034621

image-20210714170140663

image-20210714170255412

image-20210714170359054

10.通过触发器实现镜像一旦在阿里云仓库更新则容器上的服务自动更新

image-20210714170606025

image-20210714170713017

image-20210714170754430

image-20210714170916037

image-20210714170934028

11.通过Rancher API 实现在Teamcity里通过输入build的版本号部署对应的服务

前置条件为每次build及push到阿里云镜像仓库的版本号都不一样。

image-20210714171308821

image-20210714171354782

image-20210714171423230
image-20210714172907893

image-20210714172945249

1.打开浏览器的开发者模式,点击服务右侧的升级按钮,复制浏览器发送请求的升级参数,然后API查看里面打开,找到upgrade那个API,将参数复制进去后show requerst,复制完整的requert,并且将其中appkey 和 secret 换成自己生成的,还有其中有一个参数是imageUuid,我们可以在imageUUid对应的镜像末尾修改为%version%,这个version就是前面我们设计的必须要输入的参数。

2.在teamcity中添加build step,选择runner type = Command Line,在下面的命令行输入上面复制并进行修改的代码即可。

0

评论 (2)

取消
  1. 头像
    lvwei
    Windows 7 · Google Chrome

    写的不错。

    回复
  2. 头像
    admin 作者
    Windows 10 · FireFox

    如果有问题可以联系我,给你解答。

    回复