前言
由于近期接手了前端的项目,在项目打包部署的时候,手动操作构建打包部署等等步骤非常繁琐,所以自己尝试使用jenkins帮助自己解决这一烦恼。之前有用过,但只是使用而已。这次借机自己搭建配置一下,本以为很简单但是在自己使用的过程也多多少少遇到了几个坑。接下来本篇文章就以部署前端项目为例展开讲解一下。
一、安装jenkins
可以查看我之前的文章:jenkins详细安装教程
二、按照必要插件
- 点击系统管理->插件管理->可选插件
需要安装两个插件
[NodeJS Plugin](用于构建前端项目使用)
[Publish Over SSH](用于把项目部署的远程服务器使用)
三、插件配置
1、[NodeJS Plugin]:点击系统管理->全局工具配置
2、[Publish Over SSH]:点击系统管理->系统配置
- 进入jenkins服务器配置公钥和私钥
ssh-keygen -t rsa
- 一路回车会在当前用户目录下,生成ssh文件里面的
id_rsa
就是私钥,id_rsa.pub
就是公钥 - 把
id_rsa.pub
就是公钥里的内容复制到远程服务器(例如:47.104.36.36)的~.ssh/.ssh/authorized_keys中
vi .ssh/authorized_keys
四、新建任务
1、填入描述
2、配置git,进入任务配置,选择源码管理
3、设置构建环境,选择 Provide Node & npm bin/ folder to PATH 然后选择之前安装插件时候配置的node版本
4、构建,增加构建步骤选择Excute shell
node -v
npm install
npm run build
tar -czvf dist.tar.gz dist
5、构建后操作,增加构建后操作步骤选择Send build artifacts over SSH
cd /data/www/wwwroot/test
tar -zxvf dist.tar.gz
rm -rf dist.tar.gz
6、保存后点击“立即构建”查看任务是否构建完成
遇到的几个坑
- 配置好秘钥后连接点击测试连接报错,报错提示
jenkins.plugins.publish_over.BapPublisherException: Failed to add SSH key. Message [invalid privatekey: [B@60373f7]
因为我们生成密钥的openssh的版本过高的原因,解决办法如下:重新执行以下命令生成新的秘钥,使用新生成的秘钥即可
ssh-keygen -m PEM -t rsa -b 4096
- 拷贝ssh公钥到 authorized_keys 后仍然无法免密登录解决方法
解决办法:
分别修改修改.ssh目录的权限以及authorized_keys 的权限
chmod 644 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。