多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] <br> <br> # 简介 Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。 <br> <br> # 安装Java 首先搜索可安装的 JDK ``` $ sudo yum search java-11 ``` <br> 从结果中我们可以找出两个条目 ``` java-11-openjdk.x86_64 : OpenJDK Runtime Environment 11 java-11-openjdk-devel.x86_64 : OpenJDK Development Environment 11 ``` <br> 他们分别是 JRE 和 JDK,根据你的需求安装即可 ``` $ sudo yum install java-11-openjdk java-11-openjdk-devel -y ``` <br> 安装目录为 ``` /usr/lib/jvm/java-11-openjdk-11.0.3.7-0.el7_6.x86_64 ``` <br> 查看版本 ``` $ java -version openjdk version "1.8.0_212" OpenJDK Runtime Environment (build 1.8.0_212-b04) OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode) ``` <br> <br> # 安装Jenkins 添加Jenkins库到yum库,Jenkins将从这里下载安装。 ``` wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key yum install -y jenkins ``` <br> 如果不能安装就到官网下载Jenkins的rmp包,官网地址(http://pkg.jenkins-ci.org/redhat-stable/) ``` wget http://pkg.jenkins-ci.org/redhat-stable/jenkins-2.7.3-1.1.noarch.rpm rpm -ivh jenkins-2.7.3-1.1.noarch.rpm ``` <br> 配置Jenkins的端口,默认是8080,此端口不冲突可以不修改 ``` vi /etc/sysconfig/jenkins ``` <br> 找到修改端口号: ``` JENKINS_PORT="8080" ``` <br> 启动Jenkins ``` service jenkins start/stop/restart ``` * 安装成功后Jenkins将作为一个守护进程随系统启动 * 系统会创建一个“jenkins”用户来允许这个服务,如果改变服务所有者,同时需要修改/var/log/jenkins, /var/lib/jenkins, 和/var/cache/jenkins的所有者 * 启动的时候将从/etc/sysconfig/jenkins获取配置参数 * 默认情况下,Jenkins运行在8080端口,在浏览器中直接访问该端进行服务配置 * Jenkins的RPM仓库配置被加到/etc/yum.repos.d/jenkins.repo <br> <br> # 打开Jenkins 在浏览器中访问。首次进入会要求输入初始密码如下图: ![](https://box.kancloud.cn/b08743b6fa9cf993e3871d16200f8158_982x420.png) <br> 初始密码在:`/var/lib/jenkins/secrets/initialAdminPassword`,输入密码后点击继续 <br> 选择安装推荐的插件 ![](https://box.kancloud.cn/67da5324577458f7e7024b6c3263b476_977x570.png) <br> ![](https://box.kancloud.cn/025b9db20d64ca70dc40751d79c32a09_990x1246.png) <br> 创建超级管理员账号,点击保存 ![](https://box.kancloud.cn/e29affbdfeafe825a46a45312d2f4939_982x422.png) <br> 配置实例,点击保存 ![](https://box.kancloud.cn/b14542c7a686f315a90c8acb74715974_986x478.png) <br> 完成 ![](https://box.kancloud.cn/016661bfe72b6c2b77fa7b7cb16c71fd_986x330.png) <br> <br> # 安装插件 安装包含以下内容的插件 * Publish Over SSH * Git * GitHub * NodeJS * GitLab * SSH <br> ![](https://box.kancloud.cn/45f1055fbe80c10bb377f43ddabdad74_1275x637.png) <br> ![](https://box.kancloud.cn/03b28a4a2b2207bbfff140035b117135_1135x262.png) <br> 装完插件后,直接在linux机器上重启jenkins服务,而不是勾选空闲时重启 ``` systemctl restart jenkins ``` <br> <br> # 配置 ## 系统配置 ### 全局属性 ![](https://box.kancloud.cn/8a228b24ad42bd8842fc7e5ea3e4a086_1424x304.png) ~~~ echo $PATH c9/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/lampp/bin:/root/bin:/opt/lampp/bin:/root/bin:/opt/lampp/bin:/root/bin:/usr/local/git/bin:/usr/local/git/bin ~~~ <br> ### 配置SSH ![](https://box.kancloud.cn/444986c5f96aaef0ad33a5844a8538e3_1032x501.png) <br> 点击新增 ![](https://box.kancloud.cn/538557d8695345efe793a77a73f4335a_1030x394.png) <br> 如果需要配置端口,再点击高级 ![](https://box.kancloud.cn/04eaeb108afc0a6516d6c6dfe96df1c4_469x654.png) <br> 勾选 `Use password authentication, or use a different key`,将本机到远程服务器的私钥粘贴到Key输入框 ![](https://box.kancloud.cn/aa7023358ef004211d0a5ac2ce7c8c83_511x391.png) <br> 点击 `Test Configuration`,成功会出现 Success ![](https://box.kancloud.cn/bc5f329e49ae5ffa69b70ea928d84b0c_1692x101.png) <br> ## 全局工具配置 ![](https://box.kancloud.cn/ca9c29c55bc7bbb34ad48d8fc8644c35_642x529.png) ### 配置Node 建议安装NodeJS插件后 ![](https://box.kancloud.cn/2bda7b8bc8c7f4df6f9c9578172994c8_1330x639.png) <br> <br> # 新建任务 ![](https://box.kancloud.cn/10a46ba6fcbf68a0c1c588ff198e3984_894x701.png) <br> ## 配置代码仓库 可以使用https或ssh ![](https://box.kancloud.cn/d46f2c0724fb8035e3bdeabc6cca822d_1434x579.png) <br> ## 构建 拉去代码后顺序执行下面的操作 1. 点击增加构建步骤,选择执行shell ``` # 在Jenkins 服务器运行 # 安装所需的包 npm install --registry=https://registry.npm.taobao.org # 运行测试 npm run unit # 如果此处执行有错误,不执行后面的构建步骤 ``` ![](https://box.kancloud.cn/834ba2f8a246c8344eac02b7923b8e1b_1394x301.png) <br> 2. 点击增加构建步骤,选择 `Send files or execute commands over SSH` * Source files:填写要复制的文件 * Remote directory:填写远程服务器存放复制文件的地址,与系统设置的 SSH Servers 的 Remote Directory 合并 * Exec command:填写远程服务器要执行的命令 ![](https://box.kancloud.cn/6cef8a27120604409d03249d42b5da1b_1382x750.png) <br> ## 配置构建环境 在构建运行后通过ssh发送文件或执行命令。 <br> 勾选 `Send files or execute commands over SSH after the build runs` ![](https://box.kancloud.cn/505641938833813d843314b42af77498_1409x627.png) <br> <br> # 其他注意事项 ## 主目录 拉去的文件会位于`/var/lib/jenkins` ![](https://box.kancloud.cn/1bb747b1dae2517f00f5ea95687af2ae_999x130.png) <br> ## 权限 ### permission denied, access ``` npm ERR! path /var/lib/jenkins/workspace/yd-test/node_modules npm ERR! code EACCES npm ERR! errno -13 npm ERR! syscall access npm ERR! Error: EACCES: permission denied, access '/var/lib/jenkins/workspace/yd-test/node_modules' ``` 执行 ``` chown jenkins:jenkins /var/lib/jenkins -R ``` ### 执行npm报错 方法一:安装Nodejs插件 方法二:将jenkins默认用户改为root或其他 ``` //修改用户为root或其他 vi /etc/sysconfig/jenkins ``` ![](https://box.kancloud.cn/44e70fb7f3a9a5b9c2a5f077829ebf63_525x157.png) ``` //重启jenkins systemctl restart jenkins ``` <br> ## 注意根目录 Jenkins会将项目根目录设置为工作目录 如果文件结构如下 ``` ├── scripts // 存放脚本目录 │ └─ deploy.sh ├── app.js ``` <br> 则要注意deploy.sh的脚本路径 ``` npm install --registry=https://registry.npm.taobao.org --production # 注意,这里不要写成../app.js pm2 start app.js ``` <br> ## Chromeheadless 使用脚本安装 ``` curl https://intoli.com/install-google-chrome.sh | bash ``` 如果将jenkins用户改为root,使用 Chromeheadless 需要添加 `--no-sandbox flag ` ``` // karma.config.js // start these browsers // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher browsers: ['MyHeadlessChrome'], customLaunchers: { MyHeadlessChrome: { base: 'ChromeHeadless', flags: ['--no-sandbox'] } }, ``` <br> <br> # 参考资料 [CentOS 7 如何安装 Java 11](https://wxnacy.com/2018/12/27/centos7-install-java11/ ) [centos下搭建Jenkins持续集成环境(安装jenkins)](https://www.cnblogs.com/loveyouyou616/p/8714544.html) [0914-Jenkins yum安装默认jenkins用户权限问题 导致maven编译权限错误 (Permission denied)](https://blog.csdn.net/evanxuhe/article/details/82706780 ) [Chromeheadless安装与使用](https://blog.csdn.net/evanxuhe/article/details/82706780 )