|
1 | 1 | # Jenkins 安装和配置
|
2 | 2 |
|
| 3 | +## Jenkins 介绍 |
| 4 | + |
| 5 | +- 官网:<http://jenkins-ci.org/> |
| 6 | +- 官网插件库:<https://plugins.jenkins.io/> |
| 7 | +- 官网下载:<https://jenkins.io/download/> |
| 8 | +- 官网帮助中心:<https://wiki.jenkins-ci.org/display/JENKINS/Use+Jenkins> |
| 9 | + |
| 10 | +## Docker 下安装 Jenkins |
| 11 | + |
| 12 | +- 先禁用 selinux |
| 13 | + - 编辑配置文件:`vim /etc/selinux/config` |
| 14 | + - 把 `SELINUX=enforcing` 改为 `SELINUX=disabled` |
| 15 | + - 重启服务器 |
| 16 | +- 官网下载中有介绍其版本标识:<https://jenkins.io/download/> |
| 17 | + - 我们就选用:Long-term Support (LTS) |
| 18 | +- 官网关于 Docker 部署也有专门文档:<https://github.com/jenkinsci/docker/blob/master/README.md> |
| 19 | +- 先创建一个宿主机以后用来存放数据的目录:`mkdir -p /data/jenkins/jenkins_home` |
| 20 | +- 安装镜像(813MB,有点大):`docker pull jenkins/jenkins:lts` |
| 21 | +- 查看下载下来的镜像:`docker images` |
| 22 | +- 首次运行镜像:`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` |
| 23 | + - 这里的 8080 端口是 jenkins 运行程序的端口,必须要有映射的。50000 端口是非必须映射的,但是如果你要用 Jenkins 分布式构建这个就必须开放 |
| 24 | +- 如果报下面的错误: |
| 25 | + |
| 26 | +``` |
| 27 | +touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied |
| 28 | +Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions? |
| 29 | +``` |
| 30 | + |
| 31 | +- 解决办法:`chown -R 1000:1000 /data/jenkins/jenkins_home`,具体原因:[点击查看](http://www.cnblogs.com/jackluo/p/5783116.html) |
| 32 | + - 问题的本质就是,jenkins 镜像中的系统用户是:jenkins,当你进入容器 bash 内,输入:`whoami && id`,你就可以看到他的 uid 是 1000,所以这里拆 chown 1000 |
| 33 | +- 查看容器运行情况:`docker ps` |
| 34 | +- 进入容器中 Jenkins shell 交互界面:`docker exec -it bd290d5eb0d /bin/bash` |
| 35 | + |
| 36 | +## 首次使用 Jenkins / Jenkins 插件推荐 |
| 37 | + |
| 38 | +- 首次进入 Jenkins 的 Web UI 界面是一个解锁页面,需要让你输入:Administrator password,这个密码放在:`/var/jenkins_home/secrets/initialAdminPassword`,对我来讲就是:`cat /data/jenkins/jenkins_home/secrets/initialAdminPassword` |
| 39 | +- 然后再接下来就是插件的安装,我不推荐直接用它推荐给我们的插件直接安装,而是选择:`Select plugins to install`,我们自己选择插件安装。 |
| 40 | +- 我的这里的代码仓库是:Gitlab |
| 41 | +- 推荐插件 |
| 42 | + - Publish Over SSH(具体名字要看下) |
| 43 | + - Dashbroad View |
| 44 | + - Folders View |
| 45 | + - OWASP Markup Formatter Plugin |
| 46 | + - Build Name Setter Plugin |
| 47 | + - build timeout plugin |
| 48 | + - Credentials Binding Plugin |
| 49 | + - Embeddable Build Status Plugin |
| 50 | + - Pipeline |
| 51 | + - Build Pipeline Plugin |
| 52 | + - Git plugin |
| 53 | + - GitLab Plugin |
| 54 | + - SSH Slaves plugin |
| 55 | + - Matrix Authorization Strategy Plugin |
| 56 | + - PAM Authentication plugin |
| 57 | + - LDAP Plugin |
| 58 | + - Role-based Authorization Strategy |
| 59 | + - Email Extension Plugin |
| 60 | + - Email Extension Template Plugin |
| 61 | + - Mailer Plugin |
| 62 | + - NotifyQQ([QQ 消息通知](https://github.com/ameizi/NotifyQQ)) |
| 63 | + - 钉钉通知([钉钉 消息通知](https://wiki.jenkins.io/display/JENKINS/Dingding+Notification+Plugin)) |
| 64 | + - oauth(具体名字要看下) |
| 65 | + - Build Failure Analyzer 分析构建错误日志并在构建页面显示错误 |
| 66 | + - SSH plugin 支持通过SSH执行脚本 |
| 67 | + - Pre SCM BuildStep Plugin 在拉代码之前插入一些步骤 |
| 68 | + - GitHub API Plugin Github API插件 |
| 69 | + - GitHub Pull Request Builder Github Pull Request时自动构建 |
| 70 | + - GitHub plugin Github与Jenkins集成 |
| 71 | + - GIT client plugin Git客户端插件 |
| 72 | + - Maven Integration plugin:用于构建 Maven 项目 |
| 73 | + - Gitlab Hook Plugin:用于触发 GitLab 的一些 WebHooks 来构建项目 |
| 74 | + - FireLine Plugin:代码规范检查,已经集成了阿里巴巴的代码规约(P3C)检查 |
| 75 | + |
| 76 | +## Docker 的 Jenkins 与 Docker 结合使用 |
| 77 | + |
| 78 | +- 运行镜像命令:`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` |
| 79 | + - 比上面多了一步:`-v /var/run/docker.sock:/var/run/docker.sock` |
| 80 | +- 这样,在 jenkins 里面写 shell 脚本调用 docker 程序,就可以直接调用宿主机的 docker 了。 |
| 81 | + |
3 | 82 |
|
4 | 83 | ## Jenkins 安装
|
5 | 84 |
|
6 | 85 | - Jenkins 安装
|
7 |
| - - 官网:<http://jenkins-ci.org/> |
8 |
| - - 官网帮助中心:<https://wiki.jenkins-ci.org/display/JENKINS/Use+Jenkins> |
9 | 86 | - 官网使用 Tomcat 部署方式指导:<https://wiki.jenkins-ci.org/display/JENKINS/Tomcat>
|
10 | 87 | - 此时(20160207) Jenkins 最新版本为:**1.647**
|
11 | 88 | - JDK 最低要求是 JDK 7,官网推荐是 JDK 8
|
|
30 | 107 | CATALINA_OPTS="-server -DJENKINS_HOME=/root/.jenkins -Xms528m -Xmx528m -XX:PermSize=256m -XX:MaxPermSize=358m"
|
31 | 108 | export CATALINA_OPTS
|
32 | 109 | ```
|
33 |
| - |
34 |
| - |
| 110 | +
|
35 | 111 | - Jenkins 各个组件配置:
|
36 | 112 | - 访问:<http://192.168.0.110:8080/configure>
|
37 |
| -
|
38 |
| -
|
39 | 113 | - 其他问题
|
40 | 114 | - 如果访问的时候报这个异常:`java.net.UnknownHostException`,可以查看这篇文章:<http://stackoverflow.com/questions/4969156/java-net-unknownhostexception>
|
41 | 115 |
|
42 | 116 |
|
43 | 117 | ## 资料
|
44 | 118 |
|
45 |
| -- <http://stackoverflow.com/questions/4969156/java-net-unknownhostexception> |
| 119 | +- <http://stackoverflow.com/questions/4969156/java-net-unknownhostexception> |
| 120 | +- <https://www.jianshu.com/p/b50e679e2409> |
| 121 | +- <http://xkcoding.com/2018/01/04/devops-jenkins.html> |
0 commit comments