Docker学习(四)Docker结合jenkins实现CICD
以前我们编写完代码都需要专门的运维人员去部署到测试环境,有些小公司连测试环境都没有,都是在本地直接测试,然后直接部署tomact,非常麻烦。现在我们借助jenkins可以很方便的部署测试环境,开发人员只要提交代码,之后点击jenkins进行构建就好了。
安装jenkins
- 将jenkins仓库的秘钥添加到本地
$ wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
- 将官方提供的软件仓库地址加入到本地的apt软件源中,/etc/apt/sources.list
$ deb https://pkg.jenkins.io/debian-stable binary/
- 安装jenkins
$ sudo apt-get update $ sudo apt-get install jenkins
- 启动
$ sudo /etc/init.d/jenkins [start|restart|stop]
补充:修改jenkins启动端口
在 /etc/default/jenkins 文件中,修改HTTP_PORT=8090, 我本地是8090
浏览器设置jenkins
- 访问 http://localhost:8090
输入初始化密码,初始化密码在启动过程中,日志中会打印
也可以在/var/lib/jenkins/secrets/initialAdminPassword文件中查看初始化密码
- 安装插件
单击“继续”。 下一个屏幕提供安装建议的插件或选择特定插件的选项。
选择锐减的插件安装,安装过程有点慢,后面可以自己安装其他插件
- 创建新用户,或者使用默认的admin
点击“开始使用Jenkins”来访问主要的Jenkins仪表板:
创建我们的构建任务
- 新建任务
- 新建任务
选择流水线任务
- 写流水线脚本
#!groovy pipeline { agent any environment { GIT_REPO="https://gitee.com/xcmike/dker-sbt.git" DOCKER_SCRIPT="/home/mike/scripts/" PROJECT="hello" } stages { stage('获取代码') { steps { echo "start clone code from git:${GIT_REPO}" deleteDir() git credentialsId: 'httpdown', url: "${GIT_REPO}" } } stage('代码静态检查') { steps { echo "start code check" } } stage('maven 编译打包') { steps { echo "start compile code" sh "mvn clean package" } } stage('docker构建镜像') { steps { echo "start docker build image" sh "${DOCKER_SCRIPT}/build.sh ${PROJECT}" } } stage('启动镜像') { steps { echo "start docker run image" sh "${DOCKER_SCRIPT}/deploy.sh" } } } }
- httpdown 凭据设置,就是代码仓库的用户名和密码
你可以新增一个
- 代码仓库推荐使用csdn的因为github国内访问比较慢
docker构建镜像脚本,build.sh, 这个是直接消耗放在服务器上的,当然你可以直接在流水线直接写
#!/bin/bash PROJECT_NAME=$1 TIME=`date "+%Y%m%d%H%M"` IMAGE_NAME=${PROJECT_NAME}:${TIME} docker build -t ${IMAGE_NAME} . cd - echo "${IMAGE_NAME}" > IMAGE_NAME
docker镜像启动脚本,deploy.sh,也在服务器上
#!/bin/bash IMAGE=`cat IMAGE_NAME` docker run -d -p 80:8080 ${IMAGE}
- 开始构建
访问我们的服务
和上节课的应用一样,只不过我用jenkins来实现了自动化。
访问:http://服务器ip或域名/api/say... 返回:heelo,docker,这样我们的CICD就实现了。
这里我是用后端项目做得演示,前端项目一样可以。pipeline中因为我搭建的docker私有镜像仓库在jenkins中的授权问题,没有搞定,所以跳过了发布镜像到私有仓库,直接从本地启动镜像了。大家可以自己加一下。
欢迎关注我的公中号:mike啥都想搞
,一起交流学习
相关推荐
ppppfly 2020-10-24
达观数据 2020-11-11
汪康 2020-10-30
synshitou 2020-10-21
programmeryu 2020-09-24
Topbeyond 2020-08-21
lrcoop 2020-08-18
young依然 2020-08-17
oden 2020-08-16
lrcoop 2020-08-15
yserver 2020-08-15
王永迪 2020-08-15
pursuemylife 2020-08-14
pandaphinex 2020-08-09
leonranri 2020-07-26
CloasGao 2020-07-21
zccheu 2020-07-18