Docker CI持续集成
一、引言 项目部署: 1、将项目通过maven进行编译打包 2、将文件上传到指定的服务器中 3、将war包放到tomcat的目录中 4、通过Dockerfile将Tomcat和war包转成一个镜像,由DockerCompose去运行容器二、CI介绍 CI(continuous intergration)持续集成 持续集成:编写代码时,完成了一个功能后,立即提交代码到G
一、引言
项目部署:
1、将项目通过maven进行编译打包
2、将文件上传到指定的服务器中
3、将war包放到tomcat的目录中
4、通过Dockerfile将Tomcat和war包转成一个镜像,由DockerCompose去运行容器
二、CI介绍
CI(continuous intergration)持续集成
持续集成:编写代码时,完成了一个功能后,立即提交代码到Git仓库中,将项目重新的构建并测试。
优点:
快速发现错误
防止代码偏离主分支
三、实现持续集成
1、创建一个全新的虚拟机,并且至少4G的运行内存 IP地址:10.0.0.11
2、安装docker以及docker-compose
systemctl disable firewalld systemctl stop firewalld setenforce 0 yum -y install yum-utils device-mapper-persisten-data lvm2 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum makacache fast yum -y install docker-ce systemctl start docker 启动docker systemctl enable docker 设置开机自启 docker run hello-world 测试 安装docker-compose见上一篇文章
3、docker-compose.yml文件去安装gitlab
mkdir /opt/docker_gitlab vim docker-compose.yml version: '3.1' services: gitlad: image: 'twang2218/gitlab-ce-zh:11.1.4' container_name: "gitlab" restart: always privileged: true hostname: 'gitlab' environment: TZ: 'Asia/Shanghai' GITLAB_OMNIBUS_CONFIG: | external_url 'http://10.0.0.11' gitlab_rails['time_zone'] = 'Asia/Shanghai' gitlab_rails['smtp_enable'] = true gitlab_rails['gitlab_shell_ssh_port'] = 22 ports: - '80:80' - '443:443' - '22:22' volumes: - /opt/docker_gitlab/config:/etc/gitlab - /opt/docker_gitlab/data:/var/opt/gitlab - /opt/docker_gitlab/logs:/var/log/gitlab
vim /etc/ssh/sshd_config 修改ssh监听端口号为60022,解决映射冲突
Port 60022
systemctl restart sshd 重启服务
docker-compose up -d docker构建gitlab服务(下载和运行是比较慢的)
验证,默认使用80端口
设置密码,并登录,默认账户是root,密码我设置得是password。
4、安装gitlab-tunner
使用IP:10.0.0.31
安装apache-maven、jdk
http://49.233.184.186/fdb/soft1/jdk-8u251-linux-x64.tar.gz?cr=2508131169&r=0.31045177099010024 tar -zxvf jdk-8u251-linux-x64.tar.gz rm -rf jdk-8u251-linux-x64.tar.gz wget https://raw.githubusercontent.com/topsale/resources/master/maven/apache-maven-3.5.3-bin.tar.gz cp apache-maven-3.5.3-bin.tar.gz /usr/local/maven tar -zxvf apache-maven-3.5.3-bin.tar.gz rm -fr apache-maven-3.5.3-bin.tar.gz
配置环境变量
JAVA_HOME=/usr/local/java/jdk1.8.0_251 MAVEN_HOME=/usr/local/maven/apache-maven-3.5.3 PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:/usr/local/bin/
安装gitlab-runner服务,并在容器里面配置环境变量,使其可以运行命令
mkdir /opt/docker_gitlab-runner cd /opt/docker_gitlab-runner vim docker-compose.yml version: '3.1' services: runner: image: 'gitlab/gitlab-runner:v11.4.2' container_name: gitlab-runner restart: always volumes: - /opt/docker_gitlab-runner/config:/etc/gitlab-runner - /var/run/docker.sock:/var/run/docker.sock - /usr/local/maven/apache-maven-3.5.3:/usr/local/maven/apache-maven-3.5.3 - /usr/local/java/jdk1.8.0_251:/usr/local/java/jdk1.8.0_251 - /usr/local/bin:/usr/local/bin - /usr/bin/docker:/usr/bin/docker
在宿主机启动docker程序后先执行,如果重启过docker,重新执行
chown root:root /var/run/docker.sock
在/opt/docker_gitlab-runner目录中执行
docker-compose up -d --build
添加容器权限,保证容器可以使用宿主机的docker
docker exec -it gitlab-runner usermod -aG root gitlab-runner
四、关联gitlab项目
1、gitlab创建项目
2、注册gitlab-runner
[root@computer ~]# docker exec -it gitlab-runner gitlab-runner register Runtime platform arch=amd64 os=linux pid=25 revision=cf91d5e1 version=11.4.2 Running in system-mode. Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/): 项目集成CI地址 http://10.0.0.11/ Please enter the gitlab-ci token for this runner: 项目集成CI注册令牌 ickaCtLRCympzbEwtyoH Please enter the gitlab-ci description for this runner: 添加描述 [b0e7c9960f0b]: testcijicheng Please enter the gitlab-ci tags for this runner (comma separated): 添加tag deploy Registering runner... succeeded runner=ickaCtLR Please enter the executor: shell, virtualbox, kubernetes, docker, docker-ssh, parallels, ssh, docker+machine, docker-ssh+machine: 以什么方式执行,选sehll shell Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
刷新页面,再次点击展开Runner
五、整合项目入门测试
1、创建maven工程,编写html页面
创建一个简单的maven工程
填写项目名称
指定打包方式,在右下角导入包
复制这个目录
替换这个这个目录
在webapp下面新建一个inde.html页面
导入包
创建一个本地的gitlab仓库
添加到暂存区
添加到本地gitlab仓库
2、将maven工程推送到gitlab中
输入刚才复制的http的路径
接着输入账户和密码:root/password。
刷新页面,就能看到刚提交的代码
3、编写gitlab-ci.yml文件
项目添加.gitlab-ci.yml文件
添加一下内容
stages: - test test: stage: script: - echo first test ci
然后提交到到gitlab上,刷新gitlab服务器内容
4、可以在gitlab中查看到gitlab-ci.yml编写的内容
六、CI持续集成实现
1、编写.gitlab-ci.yml
找到mvn打包得路径,添加打包命令
stages: - test test: stage: script: - echo first test ci - /usr/local/maven/apache-maven-3.5.3/bin/mvn package
提交代码至gitlab上,自动执行流水线
项目中创建一个docker目录
在docker下创建一个Dockerfile文件
添加如下内容
FROM daocloud.io/library/tomcat:8.5.15-jre8 COPY testci.war /usr/local/tomcat/webapps
同级目录下创建docker-compose.yml文件
version : "3.1" services: testci: build: docker restart: always container_name: testci ports: - 8080:8080
在.gitlab-ci.yml下添加如下内容
- cp target/testci-1.0-SNAPSHOT.war docker/testci.war 复制war - docker-compose down 先删除正在运行得容器 - docker-compose up -d --build 启动一个新容器 - docker rmi $(docker images -qf dangling=true) 删除所有名字为none的镜像
提交代码之后,访问浏览器:http://ip:8080端口就能看到项目效果了。
注意:本文有不理解之处,加QQ:1300536862,探讨
推荐:需要租用云服务器,域名等其他服务的可以扫描下方二维码,云服务器免费领取使用,华为云服务:
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)