Skip to content

Jenkins

创建项目

js
create-react-app react-with-cicd
create-react-app react-with-cicd

上传至码云仓库

js
git remote add origin git@gitee.com:heora/react-with-cicd.git
git push -u origin master
git remote add origin git@gitee.com:heora/react-with-cicd.git
git push -u origin master

安装 JDK

js
cd /usr/local/src
wget http://img.zhufengpeixun.cn/jdk1.8.0_211.tar.gz
tar -xzvf jdk1.8.0_211.tar.gz
mkdir /usr/java
cp -r jdk1.8.0_211 /usr/java
ln -s /usr/java/jdk1.8.0_211.tar.gz/bin/java /usr/bin/java

ll /usr/bin/java // 查看软连接是否连接成功
cd /usr/local/src
wget http://img.zhufengpeixun.cn/jdk1.8.0_211.tar.gz
tar -xzvf jdk1.8.0_211.tar.gz
mkdir /usr/java
cp -r jdk1.8.0_211 /usr/java
ln -s /usr/java/jdk1.8.0_211.tar.gz/bin/java /usr/bin/java

ll /usr/bin/java // 查看软连接是否连接成功

安装 jenkins

js
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install -y jenkins
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install -y jenkins

查看 jenkins 运行状态

js
systemctl status jenkins // 查看 jenkins 运行状态
systemctl start jenkins // 启动 jenkins

/var/lib/jenkins/secrets/initialAdminPassword // jenkins 密码
systemctl status jenkins // 查看 jenkins 运行状态
systemctl start jenkins // 启动 jenkins

/var/lib/jenkins/secrets/initialAdminPassword // jenkins 密码

修改插件镜像地址

js
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

// 插件管理 - 高级 - 升级站点
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

// 插件管理 - 高级 - 升级站点

配置可选插件

js
Generic Webhook Trigger // Trigger web 触发器
Publish Over SSH	// 通过 SSH 部署服务器
nvm wrapper // 提供 node 环境
Generic Webhook Trigger // Trigger web 触发器
Publish Over SSH	// 通过 SSH 部署服务器
nvm wrapper // 提供 node 环境

关闭防火墙

js
systemctl status firewalled.service // 查看防火墙状态
systemctl stop firewalled.service
systemctl disable firewalled.service
systemctl status firewalled.service // 查看防火墙状态
systemctl stop firewalled.service
systemctl disable firewalled.service

配置 webhook

  • jenkins
js
// 1. 创建项目
// 2. 配置 Git(源码管理)
// 3. 构建触发器 Generic Webhook Trigger 
// 4. 应用

// 5. 设置 - 添加 API Token
// 1. 创建项目
// 2. 配置 Git(源码管理)
// 3. 构建触发器 Generic Webhook Trigger 
// 4. 应用

// 5. 设置 - 添加 API Token
  • 码云
js
// 项目管理 - WebHooks
// 添加 hooks(http://username:token@(IP地址 | 域名))/ 项目名称/invoke
// -- http://username:token@jenkins.yueluo.club/generic-webhook-trigger/invoke
// 添加配置

// 测试 webhook(上传代码测试、webhook测试)
// 项目管理 - WebHooks
// 添加 hooks(http://username:token@(IP地址 | 域名))/ 项目名称/invoke
// -- http://username:token@jenkins.yueluo.club/generic-webhook-trigger/invoke
// 添加配置

// 测试 webhook(上传代码测试、webhook测试)

构建项目 - 构建环境

js
// -- 勾选(Run the build in an NVM managed environment)
// -- 编写 NVM Settings(只填写 node 版本即可)
// -- 勾选(Run the build in an NVM managed environment)
// -- 编写 NVM Settings(只填写 node 版本即可)

增加构建步骤(执行shell)

js
#!/bin/bash

npm config set registry https://registry.npm.taobao.org
npm install
rm -rf build
npm run build
#!/bin/bash

npm config set registry https://registry.npm.taobao.org
npm install
rm -rf build
npm run build

构建成功后,可以另选服务器配置 nginx 部署项目,也可以选择本机部署。

追加构建脚本

js
cd build
tar -zcvf build.tar.gz *
cp build.tar.gz /www/react-with-cicd
cd /www/react-with-cicd
tar -xzvf build.tar.gz
rm -rf build.tar.gz


chown -R jenkins /www // 如果提示权限不够,可以手动赋予 jenkins 权限
cd build
tar -zcvf build.tar.gz *
cp build.tar.gz /www/react-with-cicd
cd /www/react-with-cicd
tar -xzvf build.tar.gz
rm -rf build.tar.gz


chown -R jenkins /www // 如果提示权限不够,可以手动赋予 jenkins 权限

上述脚本操作的是本机部署程序,将打包后的文件移动至配置好的 nginx 目录。
如果选择其他服务器部署,需要配置 SSH 免登录等功能,这里就不演示了。

jenkins 修改启动用户,脚本执行权限问题

  • 将 jenkins 账号分别加入到 root 组中
js
gpasswd -a root jenkins
gpasswd -a root jenkins
  • 修改 /etc/sysconfig/jenkins 文件
js
# user id to be invoked as (otherwise will run as root; not wise!)
JENKINS_USER=root
JENKINS_GROUP=root
# user id to be invoked as (otherwise will run as root; not wise!)
JENKINS_USER=root
JENKINS_GROUP=root
  • root 权限重新启动
js
service Jenkins restart
service Jenkins restart