Jenkins 入门1
一、Jenkins介绍
背景:一个大的功能模块的开发,往往是几个人一起进行的,而每个人写完一些小功能的代码后,一般都需要将代码集成
到主干,或者说将代码都合并在一起。这种将代码集成到主干的操作,可能一天需要进行很多次,而且是多人进行。这样
的一个环节就是持续集成,在这个开发到发布的流程中最重要的组成部分就是持续集成。
产品开发到发布的流程:产品设计成型 -> 开发人员开发代码 -> 测试人员测试功能 -> 运维人员发布上线
持续集成 (Continuous integration,简称CI),频繁地(一天多次)将代码集成到主干。
持续交付(Continuous delivery),频繁地(一天多次)将集成的代码交付给测试人员测试。
持续部署(continuous deployment),频繁地(一天多次)将测试好的代码交给运维人员部署。
关于持续集成的详细可参考:http://www.ruanyifeng.com/blog/2015/09/continuous-integration.html
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源:
[[email protected] ~]# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
安装jenkins.io.key:
[[email protected] ~]# rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
yum安装jenkins:
[[email protected] ~]# yum install -y jenkins
启动jenkins服务:
[[email protected] ~]# systemctl start jenkins
[[email protected] ~]# 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
[[email protected] ~]# netstat -lntp |grep 8080
tcp6 0 0 :::8080 :::* LISTEN 15106/java
windows网页访问8080端口,按提示路径查看初始化的密码;然后安装jenkins;
[[email protected] ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
41c41df380ee442395123b00bbaa3156
[[email protected] ~]#
安装插件,创建管理员用户账号;安装完成;
三、了解Jenkins
查看jenkins相关目录:
[[email protected] ~]# 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
[[email protected] ~]# 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**
[[email protected] ~]# ssh-****** //创建**
[[email protected] ~]# 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文件:
[[email protected] ~]# cd .ssh/
[[email protected] .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/是否存在
[[email protected] ~]# 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 [[email protected] ~]#
错误: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后解决