美文网首页iOS开发技术
Docker+Jenkins 自动化部署nodeJS项目

Docker+Jenkins 自动化部署nodeJS项目

作者: R_X | 来源:发表于2017-01-15 10:23 被阅读461次

    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即可。

    登录Jenkins

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

    本地卷中相应文件

    根据网页的提示我们找到

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

    四、安装插件

    1、安装插件

    此图是借来的

    插件下载中...

    此图也是借来的

    2、创建用户

    此图还是借来的

    3、安装 publish over ssh 插件

    此图借来的 借来的 借来的 借来的

    五、系统设置

    1、填 Key

    借来的

    拉到最下面,找到 'Publish over ssh'

    Paste_Image.png

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

    $ ssh-keygen
    
    秘钥生成

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

    $ cat /home/wxq/.ssh/id_rsa
    
    生成的秘玥

    2、增加新的 SSH Servers

    1)、点 ‘增加’
    添加 SSH Servers
    2)、填服务器相关信息
    填服务器相关信息

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

    继续点击 '高级',勾选 " Use password authentication, or use a different key"

    高级配置

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

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

    六、项目创建

    1、创建项目

    构建自由风格软件

    2、项目信息+github信息

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


    项目信息+github信息

    3、填写Git信息

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

    2)、点击"Add" --"Jenkins"


    填写Git信息

    3)、添加git账户信息

    添加Git账户信息

    4、构建

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

    1)、先添加Jenkins本地脚本

    本地执行的某些命令

    添加以后如下图:

    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)、再添加向远程服务器推送代码并执行相应命令的脚本

    添加向远程服务器推送代码并执行脚本 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 --> 首页 --> 用户


    设置 --> 点击 "show API Token"


    复制API Token内容


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


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


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

    Paste_Image.png 此时你git push,会发现jenkins并没有自动构建,是因为jenkins的安全策略导致的,还需要如下设置jenkins首页,选择 系统管理-->Configure Global Security(系统设置下面那个) 进行如下设置

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

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

    相关文章

      网友评论

        本文标题:Docker+Jenkins 自动化部署nodeJS项目

        本文链接:https://www.haomeiwen.com/subject/vzuybttx.html