Docker学习笔记(九):Docker +Jenkins +Github持续集成
本次配置时,jenkins需要配置在外网可访问的服务器上,因为在git push内容到github时,触发Webhooks并推送到jenkins服务器上。 1. 配置Github(通过秘钥登录)生成秘钥:ssh-keygen -t rsa -b 4096 -C "1248741476@qq.com"在github设置密钥(公钥):将公钥 id_rsa.pub里的内...
本次配置时,jenkins需要配置在外网可访问的服务器上,因为在git push内容到github时,触发Webhooks并推送到jenkins服务器上。
1. 配置Github(通过秘钥登录)
生成秘钥:
ssh-keygen -t rsa -b 4096 -C "1248741476@qq.com"
在github设置密钥(公钥):
将公钥 id_rsa.pub里的内容填入如下 Key中,Title可任意取。
检查是否key值配置成功,使用key值的方式进行clone,如下:
设置带权限的access_token
生成token的秘钥
2. 配置Jenkins
Jenkins安装参考博客。
安装git、github插件(系统管理 --> 插件管理)
配置系统环境(系统管理 --> 系统设置)
添加token密钥:
其中下面的 Secret中的值为配置 Personal access tokens生成的 token秘钥。
下面 secret text为上面的描述, Test connection用来测试验证是否通过。
3. Job配置
点击Add 添加验证。
root为我服务器使用的用户名,大家可以根据自己的实际情况配置,Private Key 可以如下获取。记住需要在github上传服务的公钥。
继续配置。
4. 容器配置
4.1 更改主机系统配置(jenkins服务器上配置)
常见错误一:sudo: sorry, you must have a tty to run sudo
解决方法:#Default requrrity(文件路径:/etc/sudoers,如果文件中没有这个就不用理会)
常见错误二:sudo: no tty present and no askpass program specified
解决方法:jenkins ALL = NOPASSWD: /usr/bin/docker,/usr/bin/chown,/usr/bin/mv
4.2 挂载目录
# 存储路径
SAVE_PATH=/tmp/job_files
# 保存的文件名称
FILE_NAME=`date "+%Y%m%d"`_${BUILD_NUMBER}.jar
# 进入工作空间
echo "workspace==========${WORKSPACE}"
# mvn编译
# cd ${WORKSPACE}
# mvn clean install
# -f为指定pom文件
# --rm在编译完后将容器删除,节省空间
sudo docker run --rm --name my-maven-project -v ${WORKSPACE}:${WORKSPACE} maven:3.5-jdk-7 mvn clean install -f ${WORKSPACE}/pom.xml
# 保存文件
sudo mv target/*.jar $SAVE_PATH/$FILE_NAME
# 执行jar包并且验证
java -cp $SAVE_PATH/$FILE_NAME com.mycompany.helloworld.App
4.3 push提交触发Webhooks
触发Webhooks后推送到Jenkins服务器进行构建,运行成功。
注意:因为容器每次执行后都会销毁,没有设置maven的缓冲目录,这样导致每次容器运行时都需要实时下载依赖,速度会慢一些,为此可以将本地的maven仓库与容器中的maven仓库绑定起来,这样会大大加快容器运行的速度。
更多推荐
所有评论(0)