Jenkins+Gitee代码自动化构建
前端项目每次提交完代码都要手动拉取最新代码、打包、部署,这一套流程下来可能要浪费不少时间,特别是在项目处于快速迭代期的时候,那么如果前端可以实现自动化部署,开发人员每次
push代码后由jenkins自动部署到测试环境,那将会在一定程度上简化开发人员的工作,让他们可以把更多精力放在处理其他问题上。
环境准备
安装Java
安装JDK1.8以上的版本,因为Jenkins对于Java的版本有一定的要求
验证本地环境是否已有java环境
java -version安装Jenkins
Jenkins是自动化部署的核心应用,当然如果对BuildMaster这些持续集成的工具比较熟悉的话,也可以用其他工具来做集成。 Jenkins的安装步骤可以参考这篇文章:Jenkins安装与配置
安装Git/Svn
这里的话,由于我的项目是使用git进行版本管理的,所以下载的是git。 检查本地是否已经有git
git --version如果没有git的话,可以通过下面的命令安装
yum install git -y安装Node
前端项目必须安装,在服务器中执行打包、编译等操作的话,服务器就必须要有node的环境(如果是后端的话应该就需要maven等环境)
Node安装可以参考:部署Node.js环境
配置Jenkins权限
此步骤不建议做,因为以 root 身份运行 Jenkins 会带来显著的安全风险,而且会导致新的问题出现。
安装完Jenkins后,还需要再配置一下Jenkins的权限,修改配置文件,将执行用户JENKINS_USER改成root,不然后面可能出现执行shell没有权限
# CentOS/redhat
vim /etc/sysconfig/jenkins
# Ubuntu/debian
vim /etc/default/jenskins
修改 Jenkins 相关文件夹用户权限
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如果重启服务报错, 可以执行以下命令
# 查看jenkins进程
ps -ef|grep jenkins
# 关闭进程
kill -9 xxx(进程)如果出现以下问题

建议还是将所有权限改回,撤销配置文件的修改
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次回车即可
注意:邮箱的话就用自己的邮箱
ssh-keygen -t rsa -C "***@xxx.com"2)查看生成的公钥
cat ~/.ssh/id_rsa.pub3)码云Gitee远程仓库添加服务器公钥
仓库设置 > 部署公钥管理
安装Gitee插件
系统管理->插件管理->可选插件->筛选Gitee->选中直接安装,安装成功之后重启jenkins服务

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



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

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

新建任务
创建一个自由风格的任务






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配置


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

可以使用以下命令修改对应文件夹的权限
sudo chown -R jenkins:jenkins /app/sourcecode用户名问题

查看Gitee用户名
git config user.name只针对当前项目:项目根目录下执行:
git config user.name 'myname'
git config user.email 'myemail@x.x'
git config user.password 'mypassword'更改后查看:
cat .git/config更改全局配置:
git config --global user.name 'myname'
git config --global user.email 'myemail@x.x'
git config --global user.password 'mypassword'查看:
git config --global user.name
git config --global user.email设置账号密码当前登录用户,全局项目 git 仓库有效
cd /app/sourcecode/cuwor-docs
git config --global credential.helper store
git push origin masternpm not found

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

npm: Permission denied
另上sudo
sudo npm install需要把jenkins用户添加到sudo组,这个输入sudo时不用输入密码
vim /etc/sudoers
# 添加
jenkins ALL=(ALL) NOPASSWD: ALL
sudo npm command not found
这种情况通常是使用 npm 命令可以正常使用,但使用sudo npm 命令便会报 command not found
这是什么原因呢? 输入which npm可以得到/usr/local/bin/npm, 这个是普通用户的bin目录 而sudo执行的是/usr/bin目录,这是root用户的目录
使用nvm安装的node
# 切换到对应的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
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 那么
sudo ln -s /usr/local/bin/cnpm /usr/bin/cnpm如果你的其他程序也是这样的问题,只要将xxx替换成你的可执行程序就可以了
sudo ln -s /usr/local/bin/xxx /usr/bin/xxxvitepress: not found or Permission denied
# 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
