前言
- 这玩意比直接用github action circle 以及travis难用多了,记录下吧。
流程
-
首先,确保有仓库可以在gitlab进行push。
-
确保jenkins可以ping到gitlab
-
确保jenkins可以ping到nginx
-
jenkins插件里搜索node 安装nodejs插件。
-
docker restart jenkins 重启
-
jenkins全局工具配置中找到nodejs 选择版本后保存即可。
-
jenkins创建个任务,然后选择node环境,写个shell node -v 查看node版本。(因为第一次安装node废时间,后续不用安装,所以先搞一下)。
-
注意这里正常来说1分钟就安完了,20分钟以上没安完肯定有问题,我第一次安装半天没好,睡一觉过了12小时还没结束,结果取消重新安装1分钟就完事了。
-
jenkins容器生成公钥私钥:
docker exec -it jenkins /bin/bash
ssh-keygen -t rsa
- 后缀名带pub的是公钥,另一个是私钥。
- jenkins配置私钥,gitlab与nginx配置公钥。
- jenkins找到Manage Credentials 然后添加凭据 选择类型为SSH Username with private key
- ID为此凭据在Jenkins的标示,UserName 为你的Gitlab用户名,PrivateKey 为你的服务器私钥。
- 选择PrivateKey,点击下方的“add”,将服务器的私钥内容复制进去(记得上下方的提示英文也复制)。
- 保存退出
- 打开Gitlab页面,点击右上角头像 => 设置,找到左边的 “SSH密钥”。将 ~/.ssh/id_rsa.pub 文件内容复制进去。点击添加密钥,保存成功
- 找到已从本地上传至gitlab的一个仓库。复制ssh克隆里的地址(注意!ssh的地址里没有http:// 如果地址不对需要去掉这个。)
- jenkins创建个任务,将地址复制进任务 “Repository URL” 内,“Credentials” 选择刚才添加的凭证。
- 勾选环境node
- 添加shell
node -v
npm -v
npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm install
npm run build
- 构建成功就没问题,下面配置nginx
- 在nginx的服务器上生成公钥私钥,进入目录,创建个keys,把jenkins的公钥粘贴进auth…keys。
ssh-keygen -t rsa
cd .ssh/
touch authorized_keys
vi authorized_keys
- 也可以不用上面那个方法 直接在jenkins里将公钥发给目标服务器。
ssh-copy-id -i .ssh/id_rsa.pub 用户名字@192.168.x.xxx
-
注意: ssh-copy-id 将key写到远程机器的 ~/ .ssh/authorized_key.文件中
-
修改jenkins 任务
node -v
npm -v
npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm install
npm run build
# 压缩
tar -czvf vue-cli-demo.tar ./dist
scp ./vue-cli-demo.tar root@xxx.xxx.81.151:~
ssh root@xxx.xx.81.151 "tar zxvf ~/vue-cli-demo.tar && mv dist/* /home/nginx/html"
- 注意,如果是第一次连接这个ip会问你要不要永久访问,直接进行部署会卡在这,解决方法是要么手动连接一次把选项选了,要么加上参数:
-o "StrictHostKeyChecking no"
- 最后就ok了。