Jenkins 入门1

一、Jenkins介绍

背景:一个大的功能模块的开发,往往是几个人一起进行的,而每个人写完一些小功能的代码后,一般都需要将代码集成

到主干,或者说将代码都合并在一起。这种将代码集成到主干的操作,可能一天需要进行很多次,而且是多人进行。这样

的一个环节就是持续集成,在这个开发到发布的流程中最重要的组成部分就是持续集成。

产品开发到发布的流程:产品设计成型 -> 开发人员开发代码 -> 测试人员测试功能 -> 运维人员发布上线

持续集成 (Continuous integration,简称CI),频繁地(一天多次)将代码集成到主干。
持续交付(Continuous delivery),频繁地(一天多次)将集成的代码交付给测试人员测试。
持续部署(continuous deployment),频繁地(一天多次)将测试好的代码交给运维人员部署。

关于持续集成的详细可参考:http://www.ruanyifeng.com/blog/2015/09/continuous-integration.html

官网 https://jenkins.io

Jenkins是一个开源的、可扩展的持续集成、交付、部署(软件/代码的编译、打包、部署)基于web界面的平台。
Jenkins是一个工具集,提供了各种各样的插件
比如获取git上最新的代码
比如可以帮你编译源代码
比如可以调用自定义的shell脚本远程执行命令
官方文档 https://jenkins.io/doc/

二、Jenkins安装

安装jenkins的最低配置: 不少于256M内存,不低于1G磁盘,jdk版本>=8

jenkins是使用java开发的,所以需要jdk的支持,这里使用jdk1.8;

Jenkins的yum源安装:https://pkg.jenkins.io/

只需要java的运行环境的话,用yum安装个openjdk就可以

   yum install -y java-1.8.0-openjdk

下载jenkins的yum源:

[root@server ~]# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo

安装jenkins.io.key:

[root@server ~]# rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key

yum安装jenkins:

[root@server ~]# yum install -y jenkins

启动jenkins服务:

[root@server ~]# systemctl start jenkins
[root@server ~]# ps aux |grep jenkins
jenkins  15106 94.0 16.9 2362652 170904 ?      Ssl  10:30   0:10 /etc/alternatives/java -

Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar 

/usr/lib/jenkin/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --

daemon --httpPort=8080 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20
root     15153  0.0  0.0 112720   980 pts/1    S+   10:30   0:00 grep --color=auto jenkins
[root@server ~]# netstat -lntp |grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      15106/java   

windows网页访问8080端口,按提示路径查看初始化的密码;然后安装jenkins;

[root@server ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
41c41df380ee442395123b00bbaa3156
[root@server ~]# 

安装插件,创建管理员用户账号;安装完成;

三、了解Jenkins

查看jenkins相关目录:

[root@server ~]# rpm -ql jenkins //相看jenkins相关信息
/etc/init.d/jenkins
/etc/logrotate.d/jenkins
/etc/sysconfig/jenkins
/usr/lib/jenkins
/usr/lib/jenkins/jenkins.war
/usr/sbin/rcjenkins
/var/cache/jenkins
/var/lib/jenkins
/var/log/jenkins
  • 安装目录/var/lib/jenkins
  • 日志目录 /var/log/jenkins
  • 配置文件 /etc/sysconfig/jenkins
[root@server ~]# ll /var/lib/jenkins //jenkins的安装目录
总用量 56
-rw-r--r--.  1 jenkins jenkins 1642 1月   9 10:56 config.xml
-rw-r--r--.  1 jenkins jenkins  156 1月   9 10:30 hudson.model.UpdateCenter.xml
-rw-r--r--.  1 jenkins jenkins  370 1月   9 10:44 hudson.plugins.git.GitTool.xml
-rw-------.  1 jenkins jenkins 1712 1月   9 10:30 identity.key.enc
-rw-r--r--.  1 jenkins jenkins   94 1月   9 10:30 jenkins.CLI.xml
-rw-r--r--.  1 jenkins jenkins    5 1月   9 10:56 jenkins.install.InstallUtil.lastExecVersion
-rw-r--r--.  1 jenkins jenkins    5 1月   9 10:56 jenkins.install.UpgradeWizard.state
-rw-r--r--.  1 jenkins jenkins  185 1月   9 10:56 jenkins.model.JenkinsLocationConfiguration.xml
-rw-r--r--.  1 jenkins jenkins  171 1月   9 10:30 jenkins.telemetry.Correlator.xml
drwxr-xr-x.  2 jenkins jenkins    6 1月   9 10:30 jobs
drwxr-xr-x.  3 jenkins jenkins   19 1月   9 10:30 logs
-rw-r--r--.  1 jenkins jenkins  907 1月   9 10:30 nodeMonitors.xml
drwxr-xr-x.  2 jenkins jenkins    6 1月   9 10:30 nodes
drwxr-xr-x. 76 jenkins jenkins 8192 1月   9 10:49 plugins
-rw-r--r--.  1 jenkins jenkins   64 1月   9 10:30 secret.key
-rw-r--r--.  1 jenkins jenkins    0 1月   9 10:30 secret.key.not-so-secret
drwxr-xr-x.  4 jenkins jenkins  237 1月   9 10:54 secrets
drwxr-xr-x.  2 jenkins jenkins  182 1月   9 10:41 updates
drwxr-xr-x.  2 jenkins jenkins   24 1月   9 10:30 userContent
drwxr-xr-x.  3 jenkins jenkins   56 1月   9 10:54 users
drwxr-xr-x.  2 jenkins jenkins    6 1月   9 10:44 workflow-libs
  • jobs目录里存储着我们在jenkins上创建的任务
  • logs日志目录
  • nodes在多节点的时候要用到
  • plugins是jenkins插件的存储目录
  • secrets密码密钥相关的目录
  • updates版本更新时要用到的目录
  • users存储用户信息的目录
  • workflow-libs工作库

jenkins的配置文件:vim /etc/sysconfig/jenkins

  • JENKINS_HOME # 定义你的jenkins安装目录的路径
  • JENKINS_JAVA_CMD # 定义java的可执行程序的路径
  • JENKINS_USER # 定义启动jenkins服务的用户
  • JENKINS_JAVA_OPTIONS # java虚拟机的内存设置
  • JENKINS_PORT # 定义jenkins服务监听的端口(http)
  • JENKINS_LISTEN_ADDRESS # 定义jenkins服务监听的ip地址
  • JENKINS_HTTPS_PORT # 定义https协议的监听端口
  • JENKINS_HTTPS_KEYSTORE # 定义ssl密钥文件的路径
  • JENKINS_HTTPS_KEYSTORE_PASSWORD # 定义ssl密钥文件的密码
  • JENKINS_HTTPS_LISTEN_ADDRESS # 定义https协议的监听ip
  • JENKINS_DEBUG_LEVEL # 定义日志的调试级别——值越高,日志记录越详细
  • JENKINS_ENABLE_ACCESS_LOG # 定义是否启用访问日志记录
  • JENKINS_HANDLER_MAX # 定义jenkins服务的最大工作线程数量
  • JENKINS_HANDLER_IDLE # 定义空闲工作线程的最大数量
  • JENKINS_ARGS # 定义jenkins的参数选项

四、发布php代码

1、安装Publish Over SSH、Git plugin插件

登录jenkins,系统管理–>插件管理–>可选插件。

安装Publish Over SSH、Git plugin插件。

安装完成后要重启jenkins服务;(systemctl restart jenkins.service)

2、创建ssh密钥

[root@server ~]# ssh-keygen   //创建密钥
[root@server ~]# cat /root/.ssh/id_rsa   //把密钥拷贝到Publish Over SSH

3、配置Jenkins的SSH密钥

点击系统管理–>系统设置,找到Publish Over SSH(一直拉到页面最下方)

Passphrase:留空,Path to key:留空,把私钥的内容粘贴到 “Key” 栏里,点击新增;

SSH Server,name自定义,Hostname填写线上web服务器的ip,Username填写root,Remote Directory填写/;

如果是多台web server,继续点击“增加”,重复以上操作

添加完后点击测试,测试成功后保存。

错误:jenkins.plugins.publish_over.BapPublisherException: Failed to connect and initialize S
`   SH connection. 

Message: [Failed to connect session for config [server]. Message [Auth fail]]

处理:将公钥拷贝到authorized_keys文件:
[root@server ~]# cd .ssh/
[root@server .ssh]# cat id_rsa.pub >> authorized_keys

SSH密钥设置步骤:

  • jenkins端生成SSH密钥
  • 将jenkins生成的私钥内容(/.ssh/id_rsa)复制到Publish Over SSH中的key
  • 将jenkins端的公钥(/root/.ssh/id_rsa.pub)内容复制黏贴到客户端的/root/.ssh/authorized_keys文件中

新建任务

点击“新建”,任务名称自定义,比如test_php,选择“构建一个自由风格的软件项目”点击下方的“确定”
在这里插入图片描述在这里插入图片描述
配置项目描述:(自定义)

配置远程仓库的地址:
在这里插入图片描述
最后就是 “构建” ,选择 “Send files or execute commands over SSH” :
在这里插入图片描述

  • SSH Server:Name 选择对应的服务器,
  • Transfers :Source files填写**/**,表示全部文件
  • Remove prefix可以指定截掉的前缀目录,这里留空即可,
  • Remote directory指定远程服务器上代码存放路径,比如/tmp/jenkins_test,
  • Exec command为文件传输完成后要执行的命令,比如可以是更改文件权限的命令(chown -R nobody,nobody /tmp/jenkins_test),设置完成后点击 “Add Transfer Set”,如果还有另外的机器,可以点击 “Add Server”重复以上操作

操作完成选择立即构建,查看控制台输出;查看构建是否成功;
在这里插入图片描述在这里插入图片描述
在远程机器上查看:/tmp/jenkins_test/是否存在

[root@server ~]# ll /tmp/jenkins_test/
总用量 588
-rw-r--r--. 1 nobody nobody 591073 1月   9 15:27 1和记仓.zip
-rw-r--r--. 1 nobody nobody     16 1月   9 15:27 example.txt
-rw-r--r--. 1 nobody nobody     10 1月   9 15:27 README.md
[root@server ~]# 
错误:Jenkins新建项目中源码管理使用Git时若遇到如下问题:

Failed to connect to repository : Error performing command: git ls-remote -h 

http://192.168.222.114/xou6363/test.git HEAD

处理:重新yum install git后解决

猜你喜欢

转载自blog.csdn.net/xou6363/article/details/86213887