# Jenkins 安装和配置 ## Jenkins 介绍 - 官网: - 官网插件库: - 官网下载: - 官网帮助中心: ## Docker 下安装 Jenkins - 先禁用 selinux - 编辑配置文件:`vim /etc/selinux/config` - 把 `SELINUX=enforcing` 改为 `SELINUX=disabled` - 重启服务器 - 官网下载中有介绍其版本标识: - 我们就选用:Long-term Support (LTS) - 官网关于 Docker 部署也有专门文档: - 先创建一个宿主机以后用来存放数据的目录:`mkdir -p /data/jenkins/jenkins_home && chmod 777 -R /data/jenkins/jenkins_home` - 安装镜像(813MB,有点大):`docker pull jenkins/jenkins:lts` - 查看下载下来的镜像:`docker images` - 首次运行镜像:`docker run --name jenkins-master -p 8123:8080 -p 50000:50000 -v /etc/localtime:/etc/localtime -v /data/jenkins/jenkins_home:/var/jenkins_home -e JAVA_OPTS="-Duser.timezone=Asia/Shanghai" -d --restart always jenkins/jenkins:lts` - 这里的 8080 端口是 jenkins 运行程序的端口,必须要有映射的。50000 端口是非必须映射的,但是如果你要用 Jenkins 分布式构建这个就必须开放 - 如果报下面的错误: ``` touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions? ``` - 解决办法:`chown -R 1000:1000 /data/jenkins/jenkins_home`,具体原因:[点击查看](http://www.cnblogs.com/jackluo/p/5783116.html) - 问题的本质就是,jenkins 镜像中的系统用户是:jenkins,当你进入容器 bash 内,输入:`whoami && id`,你就可以看到他的 uid 是 1000,所以这里才 chown 1000 - 查看容器运行情况:`docker ps` - 进入容器中 Jenkins shell 交互界面:`docker exec -it bd290d5eb0d /bin/bash` ## 首次使用 Jenkins / Jenkins 插件推荐 - 我这里就不截图了,有需要截图可以看这博文,差不多就是这样的:[点击我o(∩_∩)o ](https://blog.csdn.net/boling_cavalry/article/details/78942408) - 首次进入 Jenkins 的 Web UI 界面是一个解锁页面 Unlock Jenkins,需要让你输入:Administrator password - 这个密码放在:`/var/jenkins_home/secrets/initialAdminPassword`,你需要先:`docker exec -it ci_jenkins_1 /bin/bash` - 然后:`cat /data/jenkins/jenkins_home/secrets/initialAdminPassword` - 也有可能是这个目录:`cat /var/jenkins_home/secrets/initialAdminPassword` - 然后再接下来就是插件的安装,我推荐直接用它推荐给我们的插件直接安装,稍后再安装自己需要定制的。 - 插件安装完会进入:Create First Admin User 页面,填写一个用户信息即可。 - 我的这里的代码仓库是:Gitlab - 推荐插件 - Publish Over SSH(具体名字要看下) - Dashbroad View - Folders View - OWASP Markup Formatter Plugin - Build Name Setter Plugin - build timeout plugin - Credentials Binding Plugin - Embeddable Build Status Plugin - Pipeline - Build Pipeline Plugin - Docker Pipeline Plugin - Git plugin - GitLab Plugin - SSH Slaves plugin - Maven Integration plugin - Matrix Authorization Strategy Plugin - PAM Authentication plugin - LDAP Plugin - Role-based Authorization Strategy - Email Extension Plugin - Email Extension Template Plugin - Mailer Plugin - NotifyQQ([QQ 消息通知](https://github.com/ameizi/NotifyQQ)) - 钉钉通知([钉钉 消息通知](https://wiki.jenkins.io/display/JENKINS/Dingding+Notification+Plugin)) - oauth(具体名字要看下) - Build Failure Analyzer 分析构建错误日志并在构建页面显示错误 - SSH plugin 支持通过SSH执行脚本 - Pre SCM BuildStep Plugin 在拉代码之前插入一些步骤 - GitHub API Plugin Github API插件 - GitHub Pull Request Builder Github Pull Request时自动构建 - GitHub plugin Github与Jenkins集成 - GIT client plugin Git客户端插件 - Maven Integration plugin:用于构建 Maven 项目 - Gradle Plugin:用于构建 Gradle 项目 - Gitlab Plugin:可能会直接安装不成功,如果不成功根据报错的详细信息可以看到 hpi 文件的下载地址,挂代理下载下来,然后离线安装即可 - Gitlab Hook:用于触发 GitLab 的一些 WebHooks 来构建项目 - Gitlab Authentication 这个插件提供了使用GitLab进行用户认证和授权的方案 - FireLine Plugin:代码规范检查,已经集成了阿里巴巴的代码规约(P3C)检查 - Docker Commons Plugin - Docker plugin - Kubernetes - Pre SCM BuildStep Plugin 在拉代码之前插入一些步骤 - GitHub Pull Request Builder Github Pull Request时自动构建 - GitHub API Plugin Github API插件 - SonarQube Scanner for Jenkins :代码质量管理插件。 - AnsiColor(可选):这个插件可以让Jenkins的控制台输出的log带有颜色 - NodeJS Plugin ## Docker 的 Jenkins 与 Docker 结合使用 - 运行镜像命令:`docker run --name jenkins-master -p 8123:8080 -p 50000:50000 -v /etc/localtime:/etc/localtime -v /data/jenkins/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -e JAVA_OPTS="-Duser.timezone=Asia/Shanghai" -d --restart always jenkins/jenkins:lts` - 比上面多了一步:`-v /var/run/docker.sock:/var/run/docker.sock` - 这样,在 jenkins 里面写 shell 脚本调用 docker 程序,就可以直接调用宿主机的 docker 了。 ## Jenkins 安装 - Jenkins 安装 - 官网使用 Tomcat 部署方式指导: - 此时(20160207) Jenkins 最新版本为:**1.647** - JDK 最低要求是 JDK 7,官网推荐是 JDK 8 - 我个人习惯 `/opt` 目录下创建一个目录 `setups` 用来存放各种软件安装包;在 `/usr` 目录下创建一个 `program` 用来存放各种解压后的软件包,下面的讲解也都是基于此习惯 - 我个人已经使用了第三方源:`EPEL、RepoForge`,如果你出现 `yum install XXXXX` 安装不成功的话,很有可能就是你没有相关源,请查看我对源设置的文章 - Jenkins 下载:`wget http://mirrors.jenkins-ci.org/war/latest/jenkins.war` (大小:61 M) - 我们假设这个 Tomcat 就是为了 Jenkins 专用的 - 把下载下来的 jenkins.war 移到 Tomcat 的 webapps 目录下,比如我的是:`/usr/program/tomcat8/webapps` - 把 Jenkins.war 改名为 ROOT.war:`mv jenkins.war ROOT.war` - 删除 Tomcat 下 webapps 目录下多余的一些目录 - 首次启动 Tomcat,让 Tomcat 解压 war - 设置 JENKINS_HOME: - 寻找 jenkins home 目录地址:`find / -name .jenkins`,我这边得到的结果是:`/root/.jenkins` - 对在 Tomcat 文章中讲解的系统变量 `CATALINA_OPTS` 进行设置: - 旧值: ``` CATALINA_OPTS="-server -Xms528m -Xmx528m -XX:PermSize=256m -XX:MaxPermSize=358m" export CATALINA_OPTS ``` - 改为: ``` CATALINA_OPTS="-server -DJENKINS_HOME=/root/.jenkins -Xms528m -Xmx528m -XX:PermSize=256m -XX:MaxPermSize=358m" export CATALINA_OPTS ``` - Jenkins 各个组件配置: - 访问: - 其他问题 - 如果访问的时候报这个异常:`java.net.UnknownHostException`,可以查看这篇文章: ## 资料 - - -