Docker+Jenkins 自动化部署nodeJS项目

Jenkins基本配置:
1、运行Jenkins的服务器(暂且叫作:Jenkins服务器)
2、Git仓库服务器(人家GitHub的)
3、Node项目运行服务器(暂且叫作:Node服务器)
共两台服务器。

基本工作流程:
1、Jenkins从Git上把代码拉取到Jenkins服务器,并进行各种操作(如:npm i;npm build;打包等)。
2、Jenkis把处理好的代码包发送到Node服务器,并在Node服务器上执行你在Jenkins中预先设定好的命令(解压、pm2 start XXX等)。

*添加DaoCloud的加速器

由于国内网的问题,可先添加DaoCloud的加速器:
在DaoCloud官网上找到 加速器 选项,找到你对应的操作系统

$ curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://dfe09f6e.m.daocloud.io

一、拉取 Jenkins

$ sudo docker pull jenkins:2.19.2    ##可以自行去 docker hub上找相应的版本

二、创建本地Jenkins配置文件目录

$ sudo mkdir /var/jenkins_home
$ sudo chmod 777 /var/jenkins_home   ##注意这里必须配置本地卷的权限,否则启动失败

三、运行jenkins镜像

$ sudo docker run -d -p 9000:8080 -v /var/jenkins_home:/var/jenkins_home --name myjenkins jenkins:2.32.1

我们将Jenkins默认的8080端口映射到9000,然后本地访问Jenkins。
因为我是用Xshell连接的 虚拟机,否则直接用 localhost即可。

《Docker+Jenkins 自动化部署nodeJS项目》 登录Jenkins

本地 /var/jenkins_home 目录下会出现相应文件

《Docker+Jenkins 自动化部署nodeJS项目》 本地卷中相应文件

根据网页的提示我们找到

 $ cat /var/jenkins_home/secrets/initialAdminPassword
  #  8a58fdbae4184635a97a67175a7ebc21    这就是上面让你输入的密码

四、安装插件

1、安装插件

《Docker+Jenkins 自动化部署nodeJS项目》 此图是借来的

插件下载中…

《Docker+Jenkins 自动化部署nodeJS项目》 此图也是借来的

2、创建用户

《Docker+Jenkins 自动化部署nodeJS项目》 此图还是借来的

3、安装 publish over ssh 插件

《Docker+Jenkins 自动化部署nodeJS项目》 此图借来的
《Docker+Jenkins 自动化部署nodeJS项目》 借来的
《Docker+Jenkins 自动化部署nodeJS项目》 借来的
《Docker+Jenkins 自动化部署nodeJS项目》 借来的

五、系统设置

1、填 Key

《Docker+Jenkins 自动化部署nodeJS项目》 借来的

拉到最下面,找到 ‘Publish over ssh’

《Docker+Jenkins 自动化部署nodeJS项目》 Paste_Image.png

在Key 处填上你服务器的SSH秘钥。
注意:需要把:
‘—–BEGIN RSA PRIVATE KEY—–‘ 和’—–END RSA PRIVATE KEY—–‘
都带上,否则会报:无效的私钥。
秘玥生成方式:

$ ssh-keygen

《Docker+Jenkins 自动化部署nodeJS项目》 秘钥生成

打箭头的地方可以不输入,第一个箭头是让你输入秘玥保存地址的,如果不输入,默认保存在红线框中那个位置,找到该位置

$ cat /home/wxq/.ssh/id_rsa

《Docker+Jenkins 自动化部署nodeJS项目》 生成的秘玥

2、增加新的 SSH Servers

1)、点 ‘增加’

《Docker+Jenkins 自动化部署nodeJS项目》 添加 SSH Servers

2)、填服务器相关信息

《Docker+Jenkins 自动化部署nodeJS项目》 填服务器相关信息

Name :是Jenkins通过SSH连接远程服务器时展示的名字,随便起
Hostname:服务器IP
Username: 服务器登录用户
Remote Directory:登录到服务器以后的路径

继续点击 ‘高级’,勾选 ” Use password authentication, or use a different key”

《Docker+Jenkins 自动化部署nodeJS项目》 高级配置

Passphrase / Password :填上你的 服务器登录账户的对应密码
Port : SSH开放的端口
Timeout(ms):超时时间,建议设置长一点
然后点击 “Test Configuration”,显示 Success表示连接成功。

点击 “保存”,开始创建新项目。

六、项目创建

1、创建项目

《Docker+Jenkins 自动化部署nodeJS项目》 构建自由风格软件

2、项目信息+github信息

填上 “项目名称” +”描述”,点击 “源码管理”

《Docker+Jenkins 自动化部署nodeJS项目》 项目信息+github信息

3、填写Git信息

1)、Repository URL 填写你的项目拉取地址,也就是:git clone 后面的那个地址。

2)、点击”Add” –“Jenkins”

《Docker+Jenkins 自动化部署nodeJS项目》 填写Git信息

3)、添加git账户信息

《Docker+Jenkins 自动化部署nodeJS项目》 添加Git账户信息

4、构建

我现在的操作是:现将代码拉取到本地,然后在本地进行归档,然后通过Jenkins远程推送到服务器上,然后在服务器上运行代码。主要原因是我们的远程服务器不能从Git上拉取代码。如果你们的服务器可以拉取代码,可以不添加这个,直接添加 “Send files or execute commands over SSH”

1)、先添加Jenkins本地脚本

《Docker+Jenkins 自动化部署nodeJS项目》 本地执行的某些命令

添加以后如下图:

《Docker+Jenkins 自动化部署nodeJS项目》 Paste_Image.png

在Command中添加我们的执行脚本,
注意:
1、Jenkins自动构建的时候,会自动从我们配置的Git上拉取代码,所以不需要手动写。
2、Jenkins的工作目录是:/var/jenkins_home/workspace/jenkins-nodejst01,
====:jenkins-nodejst01:是我创建项目时起的名字,工作目录我们可以通过在 Command中敲入: pwd来验证。
开始敲入相应命令

pwd    #打印出Jenkins的工作目录
# 对/var/jenkins_home/workspace/docker-jenkins-nodejs-01目录下
#除了.git和*.gz以外的文件进行归档,并归档到  /tmp目录下
#命名为:docker-jenkins-nodejs.tar.gz
tar -zcvf /tmp/docker-jenkins-nodejs.tar.gz -C /var/jenkins_home/workspace/docker-jenkins-nodejs-01 . --exclude=".git" --exclude="*.gz"    
#然后将归档文件移动至 Jenkins的工作目录下,为了下面向服务器传输做准备
mv /tmp/docker-jenkins-nodejs.tar.gz /var/jenkins_home/workspace/docker-jenkins-nodejs-01

2)、再添加向远程服务器推送代码并执行相应命令的脚本

《Docker+Jenkins 自动化部署nodeJS项目》 添加向远程服务器推送代码并执行脚本
《Docker+Jenkins 自动化部署nodeJS项目》 Paste_Image.png

1、Source files:就是刚才压缩出来的文件,默认的路径就是Jenkins的工作空间,也就是 “pwd”打印出来的那个路径,如果需要在那个路径的基础上添加新路径的话可以这样:newDir/docker-jenkins-nodejs.tar.gz,然后在Remove prefix中填上 newDir
2、Remove prefix:如上所述
3、Remote directory:远程服务器接受文件的地址,默认是我们配置SSH的时候配置的 /,所以在此基础上继续添加即可。
4、Exec command:在远程服务器上执行的命令,这个看你自己的需求了。

最后点击”保存”即可

七、自动部署

以上的是非自动部署,须有手动点击 立即构建才行,下面是自动部署

jenkins –> 首页 –> 用户

《Docker+Jenkins 自动化部署nodeJS项目》

设置 –> 点击 “show API Token”

《Docker+Jenkins 自动化部署nodeJS项目》

复制API Token内容

《Docker+Jenkins 自动化部署nodeJS项目》

返回首页 –> node –> 配置 –> 构建触发器 –> 选择 “触发远程构建” –>粘贴”API Token”内容到”身份验证令牌”

《Docker+Jenkins 自动化部署nodeJS项目》

登陆git平台,找到你的项目,选择管理,选择webhook

《Docker+Jenkins 自动化部署nodeJS项目》

URL 中 node 请替换为你在jenkins上创建的项目名称
token为复制的 API Token内容,如图:
在此路径基础上加上:build?token=你刚才生成的那个token

《Docker+Jenkins 自动化部署nodeJS项目》 Paste_Image.png

此时你git push,会发现jenkins并没有自动构建,是因为jenkins的安全策略导致的,还需要如下设置jenkins首页,选择 系统管理–>Configure Global Security(系统设置下面那个) 进行如下设置
《Docker+Jenkins 自动化部署nodeJS项目》

至此,已完成 git push 后,jenkins 自动构建自动部署。

本篇参考:
http://www.jianshu.com/p/052a2401595a
在此基础上补充了本人在调试时遇到的部分比较幼稚的问题。

    原文作者:R_X
    原文地址: https://www.jianshu.com/p/425b42fb16ff
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞