背景:之前写过一篇关于jenkins的,但是那个是自用玩玩,这篇比较偏向于配置说明最近项目使用了Springcloud的微服务架构,急需一套自动化部署的工具,便选择了简单易用的jenkins, 本次安装基于阿里云的Centos7.

一.安装前确认环境

      1.安装环境

         首先确认已安装了 java, maven,git并配置了环境变量

         分别 执行以下命令,查看是否安装,若没有请自行百度安装。

                 java -version

                 mvn -v
                 git --version

 二.安装过程  

      1.下载rpm包,最好下载最新的,这样不用再升级使用时用到的插件,我使用的是最新的

       最好下载到你的常用安装目录,我这里是 根目录下的自建的目录     /software_data

       wget https://pkg.jenkins.io/redhat/jenkins-2.189-1.1.noarch.rpm

      2.安装

        rpm -ivh jenkins-2.189-1.1.noarch.rpm

      3.启动jenkins服务默认使用8080端口,启动前如果想修改端口号,可在/etc/sysconfig/jenkins中修改jenkins端口号

      

     4.然后启动/重启/停止jenkins服务命令:

       service start/restart/stop jenkins

       如果遇到下面错误或者是其他类似的错误

       Starting Jenkins bash: /usr/bin/java: No such file or directory

       可以通过修改  /etc/init.d/jenkins   里的配置信息,在canditates里配置本地Java路径
       

       5.修改正确以后启动jenkins

三.配置Jenkins(难点****)

    1.访问localhost:8070页面,会告诉你初始密码所在位置,一般是   /var/lib/jenkins/secrets/initialAdminPassword

       输入密码,进入系统页面,会提示创建用户,可以自行创建用户,输入用户名和密码

    2.先看是否插件配置齐全,然后配置全局变量信息,比如maven,git,jdk路径信息,具体操作步骤如下:
        构建maven项目,使用gitlab仓库,必备的几个插件有maven-intergration, publish-over-ssh等
     

      系统管理 ---> 插件管理 


      
         

         publish over ssh同上找到安装插件

         然后,系统管理--》全局工具配置:此处配置jdk,maven,git
             注意:此处下面还有一个maven安装不要忘记(否则会打包失败,而且界面会提示找不到pom.xml)

              

 

 

 

    以上配置完成以后,就点击应用,保存按钮。

3.新建一个任务,重点来了~~~~
    General基础配置:可选,勾选旧的构建,
    git仓库配置:必选,此处配置gitlab或者github仓库,还有可以clone项目的用户和密码,
    构建触发器:可选,你可以选择当有代码更新时就构建打包,(一般都是手动点击启动构建,所以此处一个不勾选)
    构建环境:可选,加个时间戳的配置勾选好了
    Pre-steps:可选,可以配置一些前置的操作命令或者环境设置
    Build: 必选,配置你所要打包的模块的根目录pom.xml文件,此处可以是相对路径;还有打包命令clean install -DskipTests
    Post-steps:必选,此处一般为执行的shell脚本(linux系统)或者其他系统的执行脚本
     此处脚本仅供参考:
     

#!/bin/bash 

#export BUILD_ID=dontKillMe这一句很重要,这样指定了,项目启动之后才不会被Jenkins杀掉。
export BUILD_ID=dontKillMe

#Jenkins中编译好的jar位置
jar_path=/var/lib/jenkins/workspace/eureka-dev/eureka/target		
		
#Jenkins中编译好的jar名称
jar_name=eureka.jar

#获取并杀掉以前的进程
ps aux|grep "eureka"|grep -v grep|awk '{print $2}'|xargs kill -9


#进入指定的编译好的jar的位置
cd  ${jar_path}


#启动jar,后台启动
nohup java -jar ${jar_name} &


    构建设置:可选
    构建后设置:可选    

   

   

 

==============================

pre-steps可选项,不配置

==============================

保存,点击构建,第一次编译时间会有点久哦!耐心等等。SUCCESS!!!

注意:如上配置是针对本机的发布,就是jenkins服务器应用服务器在同一台机器上,而我们微服务大多数是在别的服务器上,此时就需要用到publish over ssh了,在全局系统配置的地方进行配置。

jenkins服务器发布服务和拷贝jar包到远程应用服务器发布服务的区别在于:Post-steps选择的类型

a.当应用服务器和jenkins服务器在同一台centos上,就选择shell类型

b.当应用服务器和jenkins服务器不在同一台上,就选Send files or execute commands over ssh

 

 

配置publish over ssh操作如下:
         

Jenkins配置ssh 远程发布,需要在远程服务器上新建jenkins用户,并给与授权

然后创建jenkins用户的私钥公钥

#创建用户 sudo useradd jenkins

#修改密码 sudo passwd jenkins

#变更账户为jenkins并进入用户的home目录 su - jenkins

#查看是否在/home/jenkins目录下 pwd

#生成jenkins用户的私钥公钥,一路enter键完成,不用键入密码 ssh-keygen -t rsa

#验证是否成功  ls -l /home/jenkins/.ssh/ 后然后看是否有id_rsa和id_rsa.pub

#进入.ssh目录下,将公钥拷贝到authorized_keys文件  cat id_rsa.pub >> authorized_keys

#authorized_keys需要600的权限     chmod 600 authorized_keys

然后将jenkins用户的私钥配置到 -系统设置- 配置,如下图
Passphrase:在远程应用服务器新建jenkins用户时的键入的密码,而我密码为空,所以此处不填,
Path to key :应用服务器上,jenkins用户私钥的地址路径,可为空
Key:应用服务器上,jenkins用户的私钥,不能为空
 

此时如果构建还有报错如下提示:

可能是脚本有问题,也有可能是jenkins用户无权限,这个时候就要在远程服务器上进行给jenkins用户root的操作权限,这个后续待改进。

 

在远程执行cp 没有权限的时候,可以登录root账号对修改文件夹的权限 chmod 777 dir

如果想给某个用户root权限,需要修改 /etc/passwd 文件中的用户的第三个列值改为0

 

ok,以上为我使用jenkins自动化部署jenkins所踩过的坑,如果觉得有帮助,还请给点个赞!!!
有问题可以加我QQ1024936497交流。

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐