【docker】jenkins+gitlab自动部署配置

前言

  • 这玩意比直接用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 [email protected]:~
ssh [email protected] "tar zxvf ~/vue-cli-demo.tar && mv dist/* /home/nginx/html"
  • 注意,如果是第一次连接这个ip会问你要不要永久访问,直接进行部署会卡在这,解决方法是要么手动连接一次把选项选了,要么加上参数:
-o "StrictHostKeyChecking no"
  • 最后就ok了。

你可能感兴趣的:(docker,linux)