官方文档
https://www.jenkins.io/zh/
安装
Linux环境
安装
前置准备
安装wget
yum install -y wget
安装 java
yum install java
查看Java版本
java -version
如果显示以下项,表示已安装
openjdk version "1.8.0_161"
OpenJDK Runtime Environment (build 1.8.0_161-b14)
OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)
如果你显示的是类似以下的界面
java version "1.5.0"
gij (GNU libgcj) version 4.3.3
你需要先删除Java,重新安装OpenJDK,因为CentOS的系统,如果java版本是GCJ的版本,会导致Jenkins不工作(https://issues.jenkins-ci.org/browse/JENKINS-743)
1.先删除旧的 java
yum remove java
2、查看OpenJDK版本
yum search openjdk
显示如下界面
...
java-1.8.0-openjdk.i686 : OpenJDK Runtime Environment
java-1.8.0-openjdk.x86_64 : OpenJDK Runtime Environment
java-1.8.0-openjdk-accessibility.i686 : OpenJDK accessibility connector
java-1.8.0-openjdk-accessibility.x86_64 : OpenJDK accessibility connector
...
3、安装OpenJDK
yum install java-1.8.0-openJDK
安装依赖 daemonize
cd /home
wget http://repo.okay.com.mx/centos/8/x86_64/release/daemonize-1.7.8-1.el8.x86_64.rpm
rpm -ivh daemonize-1.7.8-1.el8.x86_64.rpm
拉取Jenkins库
安装版本地址 :https://jenkins.io/download/ CentOS传送门:https://pkg.jenkins.io/redhat
安装稳定版
sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo
sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
sudo yum install jenkins
安装最新版
sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo
sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
sudo yum install jenkins
1.如果您之前从Jenkins中导入了密钥,那么“rpm—import”将会失败,因为您已经有了一个密钥。请忽略这一点,继续前进。 2.您需要显式地安装Java运行时环境,因为Oracle的Java rpm是不正确的,并且无法注册为提供Java依赖项。因此,在Java中添加显式的依赖项要求将强制安装OpenJDK JVM。(以述步骤已安装了java ,忽略此条)
安装
//安装jenkins
yum install -y jenkins
//更新jenkins
yum update jenkins
//查看Jenkins端口 JENKINS_PORT 字段
cat /etc/sysconfig/jenkins | more
JENKINS_PORT="8080"
注:
自动安装的话,默认端口为8080,默认目录:
(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日志文件。
配置jenkins
说明:默认安装目录
- /usr/lib/jenkins/:jenkins安装目录,WAR包会放在这里。
- /etc/sysconfig/jenkins:jenkins配置文件,“端口”,“JENKINS_HOME”等都可以在这里配置。
- /var/lib/jenkins/:默认的JENKINS_HOME。
- /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端口,然后重启防火墙:
开启8081端口:
firewall-cmd –zone=public –add-port=8081/tcp –permanent
关闭防火墙
systemctl stop firewalld
方式2)关闭防火墙:
systemctl stop firewalld
启动等命令
linux 命令行
(1)启动:service jenkins start
(2)重启:service jenkins restart
(3)停止:service jenkins stop
浏览器进入Jenkins
(1)登录:http://自己的IP:8080/
(2)关闭:http://自己的IP:8080/exit
(3)重启:http://自己的IP:8080/restart
(4)重新加载:http://自己的IP:8080/reload
查看状态
systemctl status jenkins
浏览器登录Jenkins
解锁Jenkins:
输入命令 查看密码:
cat /var/lib/jenkins/secrets/initialAdminPassword
注意(重要)
安装记录:环境 centos7 ,虚拟机中搭建。当出现外网无法访问的情况时,进行如下操作
关闭 SELinux 与 防火墙
1.SELinux
文章
查看
查看SElinux 状态
#getenforce
#/usr/sbin/sestatus -v
SELinux status: disabled
临时关闭
##设置SELinux 成为permissive模式
##setenforce 1 设置SELinux 成为enforcing模式
setenforce 0
永久关闭
vi /etc/selinux/config
SELINUX=enforcing 改为 SELINUX=disabled
reboot //重启生效
2.防火墙
防火墙开启的话,外网的机器无法访问到虚拟机环境。
查看防火墙状态
firewall-cmd --state
停止firewall
systemctl stop firewalld.service
禁止firewall开机启动
systemctl disable firewalld.service
新增开放端口
firewall-cmd --zone=public --add-port=端口号/tcp --permanent
移除开放端口
firewall-cmd --zone=public --remove-port=端口号/tcp --permanent
查看开放的端口
firewall-cmd --zone=public --list-ports
刷新防火墙
firewall-cmd --reload
windows环境
准备
安装java环境,下载jdk(8版本)
下载地址
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
安装
下载地址
https://www.jenkins.io/download/
1.windows版本
2.命令行启动
下载地址
https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/2.277.1/jenkins.war
运行
在下载的目录内打开一个终端/命令提示符窗口到。
运行命令java -jar jenkins.war
浏览http://localhost:8080并等到*Unlock Jenkins*页面出现。
踩坑记录
- 安装高版本的提示错误
解决:安装 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插件。
位列第一的是官方提供的,但是我们使用``jenkinsci/blueocean
镜像
$ docker pull jenkinsci/blueocean
在本地镜像仓库查看
docker images
创建Jenkins挂载目录并授权权限
Docker的实现实际上是创造了一个独立的容器环境,Jenkins在这个容器内运行,那么如果我们想要对Jenkins进行配置,就需要进入到容器里选择文件进行配置。虽然我们可以使用docker exec -it 【容器id】 bash
命令进入容器目录进行配置,但是连简单的 vi命令都不能使用。
如果我们在启动镜像的时候指定挂载目录,那么在服务器本机与容器之间就可以创建一个映射。
所以我们在服务器上先创建一个jenkins工作目录, /var/jenkins_home
,赋予相应权限,稍后我们将jenkins容器目录挂载到这个目录上,这样我们就可以很方便地对容器内的配置文件进行修改。
mkdir -p /var/jenkins_home
chmod 777 /var/jenkins_home
创建并启动Jenkins容器
参数说明 操作
docker run \
--name jenkins-demo \
-d \
-p 8080:8080 \
-p 50000:50000 \
-v /var/jenkins_home:/var/jenkins_home \
--privileged=true \
jenkinsci/blueocean
--name 容器名
-d 后台运行
-p 10240:8080 将镜像的8080端口映射到服务器10240端口
-v /var/jenkins_mount:/var/jenkins_mount
/var/jenkins_home目录为容器jenkins工作目录,我们将硬盘上的一个目录挂载到这个位置,方便后续更新镜像后继续使用原来的工作目录。这里我们设置的就是上面我们创建的 /var/jenkins_mount目录
//不要使用这个创建 有问题
docker run \
-u root \
--rm \
-d \
-p 8080:8080 \
-p 50000:50000 \
-v jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkinsci/blueocean
拓展:运行容器
方式一:直接运行,运行期间产生的所有数据都保存在容器内部,容器销毁,数据丢失
docker run \
--name jenkins-blueocean \
-d \
-p 8081:8080 \
-p 50001:50000 \
jenkinsci/blueocean
方式二:Docker 会在宿主机上创建一个数据卷 jenkins-data,容器映射该卷以持久化数据
docker run \
--name jenkins-blueocean \
-d \
-p 8081:8080 \
-p 50000:50000 \
-v jenkins-data:/var/jenkins_home \
jenkinsci/blueocean
配置Jenkins
以上如果一切正常,现在就可以通过http://
管理员初始密码被放到了/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
描述:创建容器之后,容器无法启动
解决:需要修改目录权限,因为当映射本地数据卷时,/home/docker/jenkins目录的拥有者为root用户,而容器中jenkins user的uid为1000
sudo chown -R 1000:1000 /home/docker/jenkins
或者
chmod 777 /var/jenkins_home
If the directory is empty:
sudo chown 1000 volume_dir
If the directory already contains files:
sudo chown -R 1000 volume_dir
修改映射目录权限之后,创建容器失败
链接
原因 : centos7中安全模块selinux把权限禁掉了
解决 :
- 在运行时加 —privileged=true
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然后再打开
[root@localhost tomcat]# setenforce 0
[root@localhost tomcat]# setenforce 1
3.添加linux规则,把要挂载的目录添加到selinux白名单
更改安全性文本的格式如下
chcon [-R] [-t type] [-u user] [-r role] 文件或者目录
选顷不参数:
-R :该目录下的所有目录也同时修改;
-t :后面接安全性本文的类型字段,例如 httpd_sys_content_t ;
-u :后面接身份识别,例如 system_u;
-r :后面街觇色,例如 system_r
执行:
chcon -Rt svirt_sandbox_file_t /home/redis/redis.conf
在创建docker镜像时,端口冲突怎么办
基本配置
安装界面
进入安装界面,使用推荐安装
进入到jenkins中
如何汉化
主界面—>系统管理—>插件管理—>可选插件
安装插件locale plugin
插件配置
系统管理-插件管理,点击高级标签页,替换升级站点的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
如果使用 推荐安装 已经自带集成了git管理工具,需要注意的是拉取项目时需要配置账号密码。
下面的这个路径,需要在服务器中输入 which git
就可以查看到
设置账号或者ssh也是在项目设置中进行设置。更加详细的使用参考 gitlab 那篇文档
publish over ssh
通过ssh发布,用来将打包好的项目用ssh连接的方式发送到部署的服务器并执行其他命令
1.服务器连接
2.传送文件
配置ssh
使用命令生成密钥,并发布公钥
疑问:此处的配置文件是写服务器中的还是? 解答:服务器
在 系统管理->系统配置-> Publish over SSH 进行配置,配置完后点击 Test 进行测试,成功则返回 Success
务必注意:填写服务器账号密码的时候,需要注意账号不要有空格,这样会报错
图1:
图2:
参数说明
字段 | 描述 |
---|---|
Passphrase | 服务器的密码 |
Path to key | 连接远程服务器密钥文件的路径 |
Key | 密钥文件的内容 |
Name | 自定义服务器名 |
HostName | 服务器IP外网地址 |
UserName | 服务器用户名 |
Remote Directory | 连接上ssh后的默认路径 |
注意点:比如说 Remote Directory ,如果这里配置了一个目录,再在项目中也配置了一个目录,那么是会以当前这个目录为准的,也就是此处的优先级更高。
NodeJs Plugin
搜索插件 NodeJS plugin (说明:有的搜索结果就是 NodeJs )
安装完成后回到首页,点击 Manage Jenkins
-> Global Tool Configuration
配置 nodejs
在新建项目时进行配置
Vue项目中实践
设置构建命令
参数说明
#加载依赖
npm install
#构建程序
npm run build
#切换了编译后的目录
cd dist
#移除之前的压缩包
rm -f ocrweb.tar.gz
#把当前目录的所有文件打包成ocrweb.tar.gz
tar -zcvf ocrweb.tar.gz *
构建后操作
点击增加构建后操作,选中 Send build artifacts over SSH
参数说明
字段 | 描述 |
---|---|
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 就代表文件已经上传到远程服务了
文章汇总
前端项目自动化部署——超详细教程(Jenkins、Github Actions)
在Windows系统上安装Jenkins —— Jenkins自动化部署学习笔记(一)
https://www.jianshu.com/p/de9c4f5ae7fa
自动发布构建Vue项目(较完整,有传送文件至服务器配置教程)