请确保系统已经安装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目录,并且启动成功:
来源:CSDN
作者:wuychn
链接:https://blog.csdn.net/qmqm011/article/details/104029906