CentOS7安装Jenkins

南楼画角 提交于 2020-01-20 12:40:17

请确保系统已经安装jdk、已经安装git、已经安装maven

一、安装

方式一:

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install -y jenkins

方式二:

直接下载 rpm 安装,各个版本地址 https://pkg.jenkins.io/

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

二、配置文件

Jenkins的默认配置文件是/etc/sysconfig/jenkins,可以编辑此文件修改端口、修改JENKINS_HOME路径(用于保存构建产物的地方,默认是/var/lib/jenkins)、配置用户等信息。

vi /etc/sysconfig/jenkins

比如,为了不因为权限出现各种问题,我这里直接使用root用户,修改/etc/sysconfig/jenkins配置文件如下:

$JENKINS_USER="root"

然后修改目录权限:

chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins

三、启动jenkins

systemctl start jenkins

启动失败,使用systemctl status jenkins.service查看错误信息如下:

● jenkins.service - LSB: Jenkins Automation Server
   Loaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled)
   Active: failed (Result: exit-code) since 日 2020-01-19 10:25:13 CST; 7s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 1767 ExecStart=/etc/rc.d/init.d/jenkins start (code=exited, status=1/FAILURE)

1月 19 10:25:13 localhost.localdomain systemd[1]: Starting LSB: Jenkins Automation Server...
1月 19 10:25:13 localhost.localdomain runuser[1772]: pam_unix(runuser:session): session opened for user root by (uid=0)
1月 19 10:25:13 localhost.localdomain jenkins[1767]: Starting Jenkins bash: /usr/bin/java: 没有那个文件或目录
1月 19 10:25:13 localhost.localdomain jenkins[1767]: [失败]
1月 19 10:25:13 localhost.localdomain systemd[1]: jenkins.service: control process exited, code=exited status=1
1月 19 10:25:13 localhost.localdomain systemd[1]: Failed to start LSB: Jenkins Automation Server.
1月 19 10:25:13 localhost.localdomain systemd[1]: Unit jenkins.service entered failed state.
1月 19 10:25:13 localhost.localdomain systemd[1]: jenkins.service failed.

根据错误信息描述(Starting Jenkins bash: /usr/bin/java: 没有那个文件或目录)可知是Java环境问题,找到jdk的安装目录,创建软链接即可(也可以修改/etc/rc.d/init.d/jenkins,将正确路径添加进去,参见https://www.cnblogs.com/guarderming/p/10474543.html):

ln -s /usr/local/jdk1.8.0_221/bin/java /usr/bin/java

之后重启jenkins:

systemctl restart jenkins

再次查看是否启动成功:

● jenkins.service - LSB: Jenkins Automation Server
   Loaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled)
   Active: active (running) since 日 2020-01-19 10:32:55 CST; 41s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 1884 ExecStart=/etc/rc.d/init.d/jenkins start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/jenkins.service
           └─1909 /usr/bin/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --dae...

1月 19 10:32:55 localhost.localdomain systemd[1]: Starting LSB: Jenkins Automation Server...
1月 19 10:32:55 localhost.localdomain runuser[1889]: pam_unix(runuser:session): session opened for user root by (uid=0)
1月 19 10:32:55 localhost.localdomain runuser[1889]: pam_unix(runuser:session): session closed for user root
1月 19 10:32:55 localhost.localdomain jenkins[1884]: Starting Jenkins [  确定  ]
1月 19 10:32:55 localhost.localdomain systemd[1]: Started LSB: Jenkins Automation Server.

四、访问jenkins

在浏览器种输入ip:port,根据提示进行操作。

五、配置

5.1 安装插件

比如GIT、Publish Over SSH等(可能已经默认安装了)。

5.2 全局工具配置

以下配置均是在jenkins→Manage Jenkins→Global Tool Configuration中配置。

5.2.1 配置jdk

5.2.2 配置git

5.2.3 配置Maven

5.3 配置 Publish over SSH

在Jenkins→Manage Jenkins→Configure System中配置。

这个是配置远程服务器(也就是最终部署应用程序的服务器)的信息,后面需要将jenkins构建产物上传到这个服务器,并且执行指定命令(比如启动应用程序)。远程执行shell脚本,采用公钥私钥连接,其中Key里贴的是私钥,远程被管理的主机里贴的是公钥,这2台主机就是相互信任,这样后续操作就不需要输入用户名和密码。

首先生成公钥、私钥。在远程Linux服务器上执行:

ssh-keygen -t rsa -C 111222333@qq.com

一路回车,会在/root/.ssh下生成id_rsa(私钥) id_rsa.pub(公钥)。

(在远程服务器上)复制公钥的内容到/root/.ssh/authorized_keys(如无此目录文件则手动创建)中,复制私钥的内容到jenkins的Publish Over SSH配置的key中。

配置完成后可以点击右下角的Test Configuration按钮测试配置是否正确。

六、配置Job

经过前面的配置,就可以使用Jenkins了,我这里创建一个Maven项目做简单测试。

首先配置Git。Git的Credentials可以使用用户名密码的形式,也可以采用公私钥的形式,我这里采用后者。具体而言,在jenkins服务器上生成公钥、私钥,然后将Jenkins服务器的公钥复制到Git上去:

将私钥配置到Jenkins中:

配置完成后,看起来像这个样子:

Git服务器也可以在Configure System中配置好,这里选择即可。

接下来配置构建触发器。这里我选择poll轮询每隔1分钟去检测git仓库代码库版本,如果有更改则立刻构建。可以根据自己团队实际情况去制定。

最后配置构建步骤。首先添加一个"Invoke top-level Maven targters"步骤,用于Maven构建。我采用最简单的clean install,当然这里可以根据各自需求,例如,将构建产物上传到nexus等,详情参考 Maven 命令。

然后是添加一个构建步骤"send files or execute commands over SSH",用于将构建产物上传到目标服务器,并且执行命令启动服务器:

上图的Source files的路径是相对于jenkins workspace的路径,Remove prefix是要去除掉的路径,我这里是config-service/target/,Remote directory是远程目标服务器的某个目录,相对于上文Publish Over SSH配置中指定的根路径,Exec command是在远程目标服务器上执行的命令,也可以执行一个存在的脚本,我这里直接启动config-service这个服务。

配置完成后,点击立即构建,可以看到构建输出信息:

在远程服务器上查看,config-service确实已经上传到了/opt目录,并且启动成功:

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!