Skip to content

Jenkins+Gitee代码自动化构建 ​

前端项目每次提交完代码都要手动拉取最新代码、打包、部署,这一套流程下来可能要浪费不少时间,特别是在项目处于快速迭代期的时候,那么如果前端可以实现自动化部署,开发人员每次push代码后由jenkins自动部署到测试环境,那将会在一定程度上简化开发人员的工作,让他们可以把更多精力放在处理其他问题上。

环境准备 ​

安装Java ​

安装JDK1.8以上的版本,因为Jenkins对于Java的版本有一定的要求

验证本地环境是否已有java环境

bash
java -version

安装Jenkins ​

Jenkins是自动化部署的核心应用,当然如果对BuildMaster这些持续集成的工具比较熟悉的话,也可以用其他工具来做集成。 Jenkins的安装步骤可以参考这篇文章:Jenkins安装与配置

安装Git/Svn ​

这里的话,由于我的项目是使用git进行版本管理的,所以下载的是git。 检查本地是否已经有git

bash
git --version

如果没有git的话,可以通过下面的命令安装

bash
yum install git -y

安装Node ​

前端项目必须安装,在服务器中执行打包、编译等操作的话,服务器就必须要有node的环境(如果是后端的话应该就需要maven等环境)

Node安装可以参考:部署Node.js环境

配置Jenkins权限 ​

此步骤不建议做,因为以 root 身份运行 Jenkins 会带来显著的安全风险,而且会导致新的问题出现。

安装完Jenkins后,还需要再配置一下Jenkins的权限,修改配置文件,将执行用户JENKINS_USER改成root,不然后面可能出现执行shell没有权限

bash
# CentOS/redhat
vim /etc/sysconfig/jenkins
# Ubuntu/debian
vim /etc/default/jenskins

image-20250906160238143

修改 Jenkins 相关文件夹用户权限

bash
chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins
# 重新加载配置文件
systemctl daemon-reload
# 重启
service jenkins restart

如果重启服务报错, 可以执行以下命令

bash
# 查看jenkins进程
ps -ef|grep jenkins
# 关闭进程
kill -9 xxx(进程)

如果出现以下问题

image-20250906153207695

建议还是将所有权限改回,撤销配置文件的修改

bash
sudo chown -R jenkins:jenkins /var/lib/jenkins
sudo chown -R jenkins:jenkins /var/cache/jenkins
sudo chown -R jenkins:jenkins /var/log/jenkins

配置Gitee公钥 ​

建议使用Gitee插件,跳过此步骤

由于Jenkins后期需要向远程仓库拉取代码,所以需要对远程仓库配置服务器的公钥

1)服务器生成公钥 ​

在服务器的sh窗口中输入下面的命令后,根据提示按3次回车即可

注意:邮箱的话就用自己的邮箱

bash
ssh-keygen -t rsa -C "***@xxx.com"

2)查看生成的公钥 ​

bash
cat ~/.ssh/id_rsa.pub

3)码云Gitee远程仓库添加服务器公钥 ​

仓库设置 > 部署公钥管理

安装Gitee插件 ​

系统管理->插件管理->可选插件->筛选Gitee->选中直接安装,安装成功之后重启jenkins服务

image-20250906162031676

添加Gitee(码云)链接配置(系统管理->系统配置->Gitee配置)

image-20250906162638470

image-20250906163323725

image-20250906163302499

获取私人令牌https://gitee.com/profile/personal_access_tokens

image-20250906163042310

配置完成后,点击“测试链接”

image-20250906163504149

新建任务 ​

创建一个自由风格的任务

image-20250906163625182

image-20250906163959800

image-20250906164151013

image-20250906164645926

image-20260415175956545

image-20250906170022731

bash
cd /app/sourcecode
rm -rf cuwor-docs/
git clone https://gitee.com/cuwor/cuwor-docs.git
cd cuwor-docs/
npm install
npm run build docs
cp -r /app/sourcecode/cuwor-docs/docs/.vitepress/dist /app/cuwor/cuwor-docs

码云Gitee配置 ​

image-20250906170204331

image-20250906170734757

权限问题 ​

因为是使用的jenkins用户,所以无权限删除文件夹

image-20250906172233799

可以使用以下命令修改对应文件夹的权限

bash
sudo chown -R jenkins:jenkins /app/sourcecode

用户名问题 ​

image-20250906191854435

查看Gitee用户名

bash
git config user.name

只针对当前项目:项目根目录下执行:

bash
git config user.name 'myname'
git config user.email 'myemail@x.x'
git config user.password 'mypassword'

更改后查看:

bash
cat .git/config

更改全局配置:

bash
git config --global user.name 'myname'
git config --global user.email 'myemail@x.x'
git config --global user.password 'mypassword'

查看:

bash
git config --global user.name
git config --global user.email

设置账号密码当前登录用户,全局项目 git 仓库有效

bash
cd /app/sourcecode/cuwor-docs
git config --global credential.helper store
git push origin master

npm not found ​

image-20250906195919591

查询系统环境变量:

bash
echo $PATH

image-20250906200027397

服务器的环境变量添加到Jenkins 位置:【系统管理】->【系统设置】->【全局属性】->【环境变量】 做如下配置:

image-20250906200226156

npm: Permission denied ​

另上sudo

bash
sudo npm install

需要把jenkins用户添加到sudo组,这个输入sudo时不用输入密码

bash
vim /etc/sudoers
# 添加
jenkins ALL=(ALL) NOPASSWD: ALL

image-20250906201047064

sudo npm command not found ​

这种情况通常是使用 npm 命令可以正常使用,但使用sudo npm 命令便会报 command not found

这是什么原因呢? 输入which npm可以得到/usr/local/bin/npm, 这个是普通用户的bin目录 而sudo执行的是/usr/bin目录,这是root用户的目录

使用nvm安装的node

bash
# 切换到对应的node版本
nvm use 20.18.0

# 删除旧的 node 链接(如果存在)
sudo rm /usr/local/bin/node 
# 创建 node 链接
sudo ln -s "$(which node)" /usr/local/bin/node
# 删除旧的 npm 链接(如果存在)
sudo rm /usr/local/bin/npm 
# 创建 npm 链接
sudo ln -s "$(which npm)" /usr/local/bin/npm

非nvm安装的node

bash
sudo ln -s /usr/local/bin/node /usr/bin/node
sudo ln -s /usr/local/lib/node /usr/lib/node
sudo ln -s /usr/local/bin/npm /usr/bin/npm
sudo ln -s /usr/local/bin/node-waf /usr/bin/node-waf

同理,如果你使用的是cnpm 那么

bash
sudo ln -s /usr/local/bin/cnpm /usr/bin/cnpm

如果你的其他程序也是这样的问题,只要将xxx替换成你的可执行程序就可以了

bash
sudo ln -s /usr/local/bin/xxx /usr/bin/xxx

vitepress: not found or Permission denied ​

bash
# vitepress 需要Node.js 18 及以上版本
nvm use 20.18
# 全局安装
npm install -g vitepress
# 删除旧的 vitepress 链接(如果存在)
sudo rm /usr/local/bin/vitepress
# 创建 npm 链接
sudo ln -s "$(which vitepress)" /usr/local/bin/vitepress

参考网站 ​

https://www.cnblogs.com/moutory/p/17752733.html

https://cloud.tencent.com/developer/article/2024230

https://zhuanlan.zhihu.com/p/259389851