这两天在学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
    
    查看输出
   
最后就可以在服务器里看到一个新的容器了。
 
