官方文档
https://www.jenkins.io/zh/

安装

Linux环境

安装

相关文章

前置准备

安装wget

  1. yum install -y wget

安装 java

  1. yum install java

查看Java版本

  1. java -version

如果显示以下项,表示已安装

  1. openjdk version "1.8.0_161"
  2. OpenJDK Runtime Environment (build 1.8.0_161-b14)
  3. OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)

如果你显示的是类似以下的界面

  1. java version "1.5.0"
  2. gij (GNU libgcj) version 4.3.3

你需要先删除Java,重新安装OpenJDK,因为CentOS的系统,如果java版本是GCJ的版本,会导致Jenkins不工作(https://issues.jenkins-ci.org/browse/JENKINS-743)

1.先删除旧的 java

  1. yum remove java

2、查看OpenJDK版本

  1. yum search openjdk
  2. 显示如下界面
  3. ...
  4. java-1.8.0-openjdk.i686 : OpenJDK Runtime Environment
  5. java-1.8.0-openjdk.x86_64 : OpenJDK Runtime Environment
  6. java-1.8.0-openjdk-accessibility.i686 : OpenJDK accessibility connector
  7. java-1.8.0-openjdk-accessibility.x86_64 : OpenJDK accessibility connector
  8. ...

3、安装OpenJDK

  1. yum install java-1.8.0-openJDK

安装依赖 daemonize

  1. cd /home
  2. wget http://repo.okay.com.mx/centos/8/x86_64/release/daemonize-1.7.8-1.el8.x86_64.rpm
  3. rpm -ivh daemonize-1.7.8-1.el8.x86_64.rpm

拉取Jenkins库

安装版本地址 :https://jenkins.io/download/ CentOS传送门:https://pkg.jenkins.io/redhat

安装稳定版

  1. sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo
  2. sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
  3. sudo yum install jenkins

安装最新版

  1. sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo
  2. sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
  3. sudo yum install jenkins

1.如果您之前从Jenkins中导入了密钥,那么“rpm—import”将会失败,因为您已经有了一个密钥。请忽略这一点,继续前进。 2.您需要显式地安装Java运行时环境,因为Oracle的Java rpm是不正确的,并且无法注册为提供Java依赖项。因此,在Java中添加显式的依赖项要求将强制安装OpenJDK JVM。(以述步骤已安装了java ,忽略此条)

安装

  1. //安装jenkins
  2. yum install -y jenkins
  3. //更新jenkins
  4. yum update jenkins
  5. //查看Jenkins端口 JENKINS_PORT 字段
  6. cat /etc/sysconfig/jenkins | more
  7. JENKINS_PORT="8080"

注:

  1. 自动安装的话,默认端口为8080,默认目录:
  2. 1)/usr/lib/jenkins/:jenkins安装目录,WAR包会放在这里。
  3. 2)/etc/sysconfig/jenkinsjenkins配置文件,“端口”,“JENKINS_HOME”等都可以在这里配置。
  4. 3)/var/lib/jenkins/:默认的JENKINS_HOME
  5. 4)/var/log/jenkins/jenkins.logJenkins日志文件。

配置jenkins

说明:默认安装目录

  1. /usr/lib/jenkins/:jenkins安装目录,WAR包会放在这里。
  2. /etc/sysconfig/jenkins:jenkins配置文件,“端口”,“JENKINS_HOME”等都可以在这里配置。
  3. /var/lib/jenkins/:默认的JENKINS_HOME。
  4. /var/log/jenkins/jenkins.log:Jenkins日志文件。

(1)修改默认端口号
编辑文件:vim /etc/sysconfig/jenkins
找到 JENKINS_PORT,修改默认(8080)的端口号,我这里改为8081

(2)修改jdk配置
编辑文件:vim /etc/init.d/jenkins
找到 candidates 在第一行 加入 自己的jdk的java路径
注:linux查看jdk安装路径命令 —— which java

(3)修改防火墙配置:选一种方式执行
方式1)开启8081端口,然后重启防火墙:

  1. 开启8081端口:
  2. firewall-cmd zone=public add-port=8081/tcp permanent
  3. 关闭防火墙
  4. systemctl stop firewalld

方式2)关闭防火墙:

  1. systemctl stop firewalld

启动等命令

  1. linux 命令行
  2. 1)启动:service jenkins start
  3. 2)重启:service jenkins restart
  4. 3)停止:service jenkins stop
  5. 浏览器进入Jenkins
  6. 1)登录:http://自己的IP:8080/
  7. 2)关闭:http://自己的IP:8080/exit
  8. 3)重启:http://自己的IP:8080/restart
  9. 4)重新加载:http://自己的IP:8080/reload

查看状态

  1. systemctl status jenkins

Jenkins - 图2

浏览器登录Jenkins

解锁Jenkins:
输入命令 查看密码:

  1. cat /var/lib/jenkins/secrets/initialAdminPassword

注意(重要)

安装记录:环境 centos7 ,虚拟机中搭建。当出现外网无法访问的情况时,进行如下操作
关闭 SELinux 与 防火墙

1.SELinux
文章
查看

  1. 查看SElinux 状态
  2. #getenforce
  3. #/usr/sbin/sestatus -v
  4. SELinux status: disabled

临时关闭

  1. ##设置SELinux 成为permissive模式
  2. ##setenforce 1 设置SELinux 成为enforcing模式
  3. setenforce 0

永久关闭

  1. vi /etc/selinux/config
  2. SELINUX=enforcing 改为 SELINUX=disabled
  3. reboot //重启生效

2.防火墙
防火墙开启的话,外网的机器无法访问到虚拟机环境。
查看防火墙状态

  1. firewall-cmd --state

停止firewall

  1. systemctl stop firewalld.service

禁止firewall开机启动

  1. systemctl disable firewalld.service
  1. 新增开放端口
  2. firewall-cmd --zone=public --add-port=端口号/tcp --permanent
  3. 移除开放端口
  4. firewall-cmd --zone=public --remove-port=端口号/tcp --permanent
  5. 查看开放的端口
  6. firewall-cmd --zone=public --list-ports
  7. 刷新防火墙
  8. firewall-cmd --reload

windows环境

准备

安装java环境,下载jdk(8版本)
下载地址

  1. https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

安装

下载地址
https://www.jenkins.io/download/

1.windows版本
2.命令行启动
下载地址

  1. https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/2.277.1/jenkins.war

运行

  1. 在下载的目录内打开一个终端/命令提示符窗口到。
  2. 运行命令java -jar jenkins.war
  3. 浏览http://localhost:8080并等到*Unlock Jenkins*页面出现。

踩坑记录

  • 安装高版本的提示错误

Jenkins - 图3

解决:安装 jdk 8版本的,就可以正常运行jenkins

Docker 环境

安装docker,参考之前文章
文档

下载镜像

建议使用的Docker映像是[jenkinsci/blueocean](https://hub.docker.com/r/jenkinsci/blueocean/) image(来自 the Docker Hub repository)。 该镜像包含当前的长期支持 (LTS) 的Jenkins版本 (可以投入使用) ,捆绑了所有Blue Ocean插件和功能。这意味着你不需要单独安装Blue Ocean插件。

image.png
位列第一的是官方提供的,但是我们使用``jenkinsci/blueocean镜像

  1. $ docker pull jenkinsci/blueocean

在本地镜像仓库查看

  1. docker images

创建Jenkins挂载目录并授权权限

Docker的实现实际上是创造了一个独立的容器环境,Jenkins在这个容器内运行,那么如果我们想要对Jenkins进行配置,就需要进入到容器里选择文件进行配置。虽然我们可以使用docker exec -it 【容器id】 bash 命令进入容器目录进行配置,但是连简单的 vi命令都不能使用。
如果我们在启动镜像的时候指定挂载目录,那么在服务器本机与容器之间就可以创建一个映射。
所以我们在服务器上先创建一个jenkins工作目录, /var/jenkins_home,赋予相应权限,稍后我们将jenkins容器目录挂载到这个目录上,这样我们就可以很方便地对容器内的配置文件进行修改。

  1. mkdir -p /var/jenkins_home
  2. chmod 777 /var/jenkins_home

创建并启动Jenkins容器

参数说明 操作

  1. docker run \
  2. --name jenkins-demo \
  3. -d \
  4. -p 8080:8080 \
  5. -p 50000:50000 \
  6. -v /var/jenkins_home:/var/jenkins_home \
  7. --privileged=true \
  8. jenkinsci/blueocean
  9. --name 容器名
  10. -d 后台运行
  11. -p 10240:8080 将镜像的8080端口映射到服务器10240端口
  12. -v /var/jenkins_mount:/var/jenkins_mount
  13. /var/jenkins_home目录为容器jenkins工作目录,我们将硬盘上的一个目录挂载到这个位置,方便后续更新镜像后继续使用原来的工作目录。这里我们设置的就是上面我们创建的 /var/jenkins_mount目录
  1. //不要使用这个创建 有问题
  2. docker run \
  3. -u root \
  4. --rm \
  5. -d \
  6. -p 8080:8080 \
  7. -p 50000:50000 \
  8. -v jenkins-data:/var/jenkins_home \
  9. -v /var/run/docker.sock:/var/run/docker.sock \
  10. jenkinsci/blueocean

拓展:运行容器

方式一:直接运行,运行期间产生的所有数据都保存在容器内部,容器销毁,数据丢失

  1. docker run \
  2. --name jenkins-blueocean \
  3. -d \
  4. -p 8081:8080 \
  5. -p 50001:50000 \
  6. jenkinsci/blueocean

方式二:Docker 会在宿主机上创建一个数据卷 jenkins-data,容器映射该卷以持久化数据

  1. docker run \
  2. --name jenkins-blueocean \
  3. -d \
  4. -p 8081:8080 \
  5. -p 50000:50000 \
  6. -v jenkins-data:/var/jenkins_home \
  7. jenkinsci/blueocean

配置Jenkins

以上如果一切正常,现在就可以通过http://:8080访问 Jenkins 的 Web 界面了
管理员初始密码被放到了/var/jenkins_home/secrets/initialAdminPassword 文件中

1.docker ps 查看docker容器ID

2.docker exec -u 0 -it xxxxxxxx/bin/bash -u 0 是使用root权限,如果不需要修改文件可以不使用此参数 xxxxxxxx是上面看到的id,即镜像id

3.cat /var/jenkins_home/secrets/initialAdminPassword 查看密码


错误记录

Permission denied - /var/jenkins_home/copy_reference_file.log

image.png
描述:创建容器之后,容器无法启动
解决:需要修改目录权限,因为当映射本地数据卷时,/home/docker/jenkins目录的拥有者为root用户,而容器中jenkins user的uid为1000

  1. sudo chown -R 1000:1000 /home/docker/jenkins

或者

  1. chmod 777 /var/jenkins_home

ISSUES 回答

  1. If the directory is empty:
  2. sudo chown 1000 volume_dir
  3. If the directory already contains files:
  4. sudo chown -R 1000 volume_dir

修改映射目录权限之后,创建容器失败

链接
原因 : centos7中安全模块selinux把权限禁掉了
解决

  1. 在运行时加 —privileged=true
    1. docker run -v /home/redis/redis.conf:/usr/local/etc/redis/redis.conf --name redis2 --privileged=true redis redis-server /usr/local/etc/redis/redis.conf

2.临时关闭selinux然后再打开

  1. [root@localhost tomcat]# setenforce 0
  2. [root@localhost tomcat]# setenforce 1

3.添加linux规则,把要挂载的目录添加到selinux白名单
更改安全性文本的格式如下

  1. chcon [-R] [-t type] [-u user] [-r role] 文件或者目录
  2. 选顷不参数:
  3. -R :该目录下的所有目录也同时修改;
  4. -t :后面接安全性本文的类型字段,例如 httpd_sys_content_t
  5. -u :后面接身份识别,例如 system_u
  6. -r :后面街觇色,例如 system_r

执行:

  1. chcon -Rt svirt_sandbox_file_t /home/redis/redis.conf

在创建docker镜像时,端口冲突怎么办

基本配置

安装界面

进入安装界面,使用推荐安装
image.png
image.png
进入到jenkins中
image.png

如何汉化

主界面—>系统管理—>插件管理—>可选插件
安装插件locale plugin
image.png

image.png

插件配置

系统管理-插件管理,点击高级标签页,替换升级站点的URL为:[http://mirror.xmission.com/jenkins/updates/update-center.json](http://mirror.xmission.com/jenkins/updates/update-center.json)并且点击提交和立即获取

安装插件
首页 -> 点击系统管理 -> 管理插件 ->可选插件 -> 过滤:ssh -> 选择Publish Over SSH插件,点击直接安装
如果安装失败,就去插件下载地址,然后去插件管理-高级-上传插件即可

Git Plugin

image.png

如果使用 推荐安装 已经自带集成了git管理工具,需要注意的是拉取项目时需要配置账号密码。
下面的这个路径,需要在服务器中输入 which git 就可以查看到

image.png

设置账号或者ssh也是在项目设置中进行设置。更加详细的使用参考 gitlab 那篇文档

publish over ssh

通过ssh发布,用来将打包好的项目用ssh连接的方式发送到部署的服务器并执行其他命令
1.服务器连接
2.传送文件
image.png

配置ssh

使用命令生成密钥,并发布公钥

疑问:此处的配置文件是写服务器中的还是? 解答:服务器

在 系统管理->系统配置-> Publish over SSH 进行配置,配置完后点击 Test 进行测试,成功则返回 Success
务必注意:填写服务器账号密码的时候,需要注意账号不要有空格,这样会报错

图1:
Jenkins - 图14
图2:
image.png
参数说明

字段 描述
Passphrase 服务器的密码
Path to key 连接远程服务器密钥文件的路径
Key 密钥文件的内容
Name 自定义服务器名
HostName 服务器IP外网地址
UserName 服务器用户名
Remote Directory 连接上ssh后的默认路径

注意点:比如说 Remote Directory ,如果这里配置了一个目录,再在项目中也配置了一个目录,那么是会以当前这个目录为准的,也就是此处的优先级更高。

错误提示:
说明账号密码有误image.png

NodeJs Plugin

搜索插件 NodeJS plugin (说明:有的搜索结果就是 NodeJs )
image.png
安装完成后回到首页,点击 Manage Jenkins -> Global Tool Configuration 配置 nodejs
image.png
在新建项目时进行配置
image.png

image.png

Vue项目中实践

设置构建命令

image.png
参数说明

  1. #加载依赖
  2. npm install
  3. #构建程序
  4. npm run build
  5. #切换了编译后的目录
  6. cd dist
  7. #移除之前的压缩包
  8. rm -f ocrweb.tar.gz
  9. #把当前目录的所有文件打包成ocrweb.tar.gz
  10. tar -zcvf ocrweb.tar.gz *


构建后操作

点击增加构建后操作,选中 Send build artifacts over SSH
image.png

参数说明

字段 描述
Source files 项目构建后在工作空间的相对目录(我这边构建时候打包的文件名是ocrweb,所以填写的 dist/ocrweb.tar.gz)
Remove prefix 去前缀 (如果不去除的话,会在发布的目录后面新增dist目录)
Remote directoty 发布的目录 (系统配置的路径/这个目录, 由于我配置ssh根路径写了/,所以我这里写的路径是usr/local/nginx/jenkins/www/ocrweb)
Exec command 发布完执行的命令 (先cd切换到文件发布的目录,然后执行解压操作,然后删除压缩包)

查看控制台日志,看到SSH: Transferred 1 file(s)Finished: SUCCESS 就代表文件已经上传到远程服务了image.png


文章汇总

前端项目自动化部署——超详细教程(Jenkins、Github Actions)
在Windows系统上安装Jenkins —— Jenkins自动化部署学习笔记(一)

https://www.jianshu.com/p/de9c4f5ae7fa

自动发布构建Vue项目(较完整,有传送文件至服务器配置教程)