您的位置:首页 > 运维架构 > Docker

jenkins自动化部署搭建。jenkins+docker+maven+git+springboot

2018-02-09 19:08 1261 查看
这两天在学jenkins。在网上找了一大堆资料。从一脸懵逼到现在的自动化部署。说来都是泪啊。
jenkins:一个可以自动化部署的软件。平时我们程序员都是。撸码-测试-打包-上传-部署。这一循环。而jenkins的功能就是为了让我们程序员能够安心撸码的,其他的事情交给jenkins去做。
jenkins的安装。jinkins可以安装在自己的客户端,也可以安装在服务器。一般推荐安装在服务器。而考虑到环境和易维护的因素。我打算把jenkins安装在docker里。
服务器运行:docker pull jenkins   就能自动帮你下载jenkins镜像。由于docker的官方Dockerfile文件里,jenkins的uid(用户)为1000 即www用户。所以我们要是Dockefile来创建的话,也要加上这一点,不然会报权限错误。
起初我也是用Dockerfile来创建jenkins镜像,因为jenkins需要用到jdk,git,maven。而git,jdk在我们pull镜像的时候,他自动安装了。但是maven没有。起初我是想在容器里安装的。但是我们安装容器后自动是jenkins用户,没有权限,又不知道root密码。所以只能放弃,用Dockerfile试试。但是Dkerfile也是很麻烦。在From centos 7的前提下,还要RUN wget ..下载安装jdk什么的,还要ENV配置环境变量。所以就换另外一种方法
由于我们需要maven,所以我们先在我们的服务器上先下载好maven :

 wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
由于linux一切皆文件。所以我们解压他就安装好了:tar -xvf apache-maven-3.3.9-bin.tar.gz 

接下来是重要的一步。因为我们启动jenkins容器了,之前说过。我们的jenkins容器需要uid为1000的用户来运行。所以我们创建一个jenkins目录,把他额属性设为1000,然后再挂载到容器里,这样容器的属性也就变成了我们所需要的1000了。

mkdir jenkins       chown -R 1000:1000 jenkins   

第一步:创建容器:docker run -d -p 8088:8080 -p 50000:50000 --name jenkins  --privileged=true -v $PWD/jenkins:/var/jenkins_home -v $PWD/apache-maven-3.3.9:/apache-maven-3.3.9 -e MAVEN_HOME=/apache-maven-3.3.9 -e PATH=/apache-maven-3.3.9/bin:${PATH}  jenkins
(后来不知道为什么,这种方法不行了,所以还是用DockerfileZ)

--privileged=true:  在CentOS7中的安全模块selinux把权限禁掉了,参数给容器加特权。至于selinux可以去看《鸟哥的私房菜》 这还是我们当初的课本,巨厚。。。用setenforce 0就可以把他暂时关闭。虽然他很强大,但是因为和很多服务都冲突了。所以很多人都选择把他关掉。

$PWD:当前目录下
-v:目录
-e:设置环境变量
这样我们的容器就创建成功了。

登录我们的ip地址:8088 。就可以看到jenkins的登录页面了。初始密码放在容器内的 /var/jenkins_home/secrets/initialAdminPassword里。

第二步:登录成功后,我们下载一些插件。系统管理-管理插件  搜索然后直接安装 Git plugin , Maven Integration plugin ,SSH plugin

第三步:然后,系统管理-Global Tool Configuration 设置我们的JDK 和Maven (不同自动安装,因为我们之前已经挂载进去容器里了)。 两个都随便起个名字。path就填容器里的路径。如果不知道的话就whereis ...  查找

第四步:接下来,系统管理-系统设置  找到 SSH remote hosts 配置好自己的信息。在Credentials里添加自己的用户名和密码。可以Check connection试下成不成功

第五步:终于到这一步了。那就是新建一个项目。 在新建那里 选择 构建一个maven项目

进去之后。 在源码管理里选择Git 填好url  如果是ssh的形式的话,就要在自己的容器里 ssh-keygen -t rsa -C生成公钥,再配置

接下来可以选择构建触发器。我选的是 poll SCM 定时更新 H/2* * * * 两分钟更新一次 也可以选在Build periodically 定时创建

其他不选。来到Build 在 Goals and options 里填上clean install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true
因为我的mysql和redis都在自己的容器里。所以需要跳过测试运行 

在 Post Steps 里 选择 Run only if build succeeds 
Add post-build step里选 Execute shell script on remote host using ssh 。在我们的ssh里填写脚本
docker stop test
docker rm test
docker rmi test
cd /usr/local/docker/jenkins/jenkins/workspace/test2
cp Dockerfile target/
cd target/
docker build -t test .

docker run -p 8090:8080 --name test --link mysql:mysql --link redis:redis -d test
这是我自己的脚本。点击保存就行了。
第六步:如果没有设置定时的话。进去项目中 点击立即构建就可以看到我们在build了。有设置定时的话,当我们的代码push到git的master分支后,如果有改变的话,就会自动构建。
可以在里面点击 Console Output查看输出

最后就可以在服务器里看到一个新的容器了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息