• 持续部署之jenkins与gitlab(四)


    代码上线流水发布操作

        Pipeline中文意思为流水线之意,公司可能有很多项目,如果使用Jenkins自动构建成功后,开发需要一项一项点击,比较繁琐,所以出现pipeline流水化作业的代码测试管理,代码质量测试完毕之后,我们需将代码部署到测试环境或线上环境进行测试。 

    项目需求:在任意普通用户的家目录先将代码从gitlab中拉取下来,编写脚本,实现将代码自动拷贝至后端的Tomcat主机或其他web服务器。

    新建项目

    点击新建-->构建一个自由风格的软件项目-->点击OK

     

    点击项目名称-->设置-->构建中选择执行远程脚本

     

    重要提示:执行远程命令主要涉及的是权限问题,我们要搞明白Jenkins是以什么权限来执行命令的,我们现在在Jenkins服务器上,如果在www用户上执行命令,需要怎么做?

    使用Jenkins用户将公钥发送给www用户

    使用root用户将公钥发送给www用户,如果使用管理员命令则需sudo提权执行,因为web上默认执行命令的Jenkins用户

    将Jenkins上的私钥发送给www用户,将root的私钥发送给www,并使用sudo提权,使得各个用户之间可以互通。

    [www@node2 ~]$ cat .ssh/authorized_keys
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLS+HnuGeiI8xQ3duMoJgdF7y4hXRt6FcXNDsYcQ6LaLT8JHN0EajscuMxjrNNKD+2OtTIzMY9/hkxIfH7TvUQRYfbNro6WTefnjmzyHaluG2gWvtL9zEJczxZhTAPLUa0ILkPzGvoiCC5em6wHWnqvlq7f/1BYSv4FyPhsrSiT3VlqoXB2ZvKRMOhPH5gd38EJIpgDAIPGJZpgLnEHpWJGIRcQBKZk8iwKSE+p38P5kggfbxc+epialKd69r7JjdHuZS/osBWUlklovUdGznlcFI+/1fKoXxL852MCZc/cleG40JDb/kDw1jId00Guza4UoK4G+74QdumilQD+RuP www@node2.alren.com
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFGANCXHKFQbKqxSJCENMg41oMoFZmiwOUSUWfCucQzb6/KRgUdhOjKaUavUZBhx5f7XXbIfpr3CHLJLyRxH7DQgSawmleH0gAkx9n2BaSpe9lKfY8h5qTB9T2nSW012Dsz4hK4n0AeNUvMfqcUO4/V4fVs+hOZCh/S3a5MH1rDkeekbguEnGeUPf7/6BzGpz6LEfR3U3Q4X9hvc9gDWYH4pbwz4xOHyrWADZRiwn76NNuLGkgvcUjl8jnpN02ADwyTlFFIAkgcmuxGg5Zaik3THyoksYoyJ30CPC1sFhVRlSR3eiXijpnTrnfGRLX21JKDRCM2TFoGTPd/WS6iZ3F root@node2.alren.com
    [www@node2 ~]$
    #编辑/etc/sudoer,注释tty和添加必要的权限
    root ALL=(ALL)    ALL 
    jenkins ALL=(ALL) NOPASSWD /usr/bin/ssh

    在/home/www写一个测试脚本,检车脚本是否可执行成功

     

    然后我们点击立即构建,查看构建结构

     

    上诉脚本能自动执行,则可配置www用户可以远程ssh到web服务器,将家目录下的源码文件拷贝至web服务器的站点根目录实现自动部署。这会看的是你写脚本的能力。。。。

    项目需求:当本地Jenkins代码测试成功之后自动联动部署代码至web服务器的站点根目录。一系列的动作需自动完成则需要安装Parameterized插件,系统管理-->管理插件-->可选插件 搜索Parameterized,如果插件在线安装不成功你懂得,可将下载好的插件解压至plugin目录下,将目录下的所有文件属组属主换成Jenkins,重启服务即可。

    点击项目-->设置-->构建后操作-->trigger parameterized build on projects -->Add triggers-->点击保存

     

    点击构建项目test-delpoy时自动联动auto-deloy,进行构建,可见第一个球闪烁完后,第二个球接着闪烁,完成自动构建

     

    下载Pipline,它是一个更为方便观察项目的自动构建的图形化工具

    系统管理-->插件管理-->搜索安装插件pipline 

     

    点击项目All后面的+号,新建一个视图,给视图取名,自定义一些选项。

     

    pipeline视图效果更加直观: 红色代表构建失败,绿-蓝代表项目没有关联,两个都是绿的则表明项目相互关联,依次执行,可清晰看到上下情况和次数。

     

    git提交操作触发Jenkins自动构建

    Jenkins与gitlab集成后,实现的功能是开发写好代码push到gitlab上,push完成之后,jenkins自动帮我们立即构建,此方法一般使用在测试环境。

    点击此项目并可触发项目联动结合脚本可实现自动上线部署,而往往这个功能只用在测试部署,上线部署手动完成较安全。

    需安装GitlabHook Plugin插件

    系统管理-->管理插件-->安装GitlabHook Plugin

     

    完成后,需配置gitlab hook插件,使用openssl rand -hex 14命令自动生成随机码

    点击项目-->设置-->构建后触发器

     

    配置完成后则需在gitlab中配置webhooks

    点击项目-->设置图标

     

    Build Authorization Token Root Plugin 插件使用说明 
    https://wiki.jenkins-ci.org/display/JENKINS/Build+Token+Root+Plugin

     

    示例:buildByToken/buildWithParameters?job=RevolutionTest&token=TacoTuesday&Type=Mexican



    http://10.1.10.12:8080/project/test-demo/buildByToken/build?job=test-demoTest&token=ac0c608d605db718fa4b1324  

    在gitlab上配置如下URL:格式如下:http://X.X.X.X:8080/buildByToken/build?job=项目名&token=随机数

     

    配置完后,可点击Test按钮进行测试

     

    Jenkins控制台输出:

     

  • 相关阅读:
    跨数据库操作
    Windows 服务
    Linq To DataTable
    嵌入式软件应用程序开发框架浅见
    31.获取当前系统时间
    30 System类
    29. StringBuilder
    28. string类中方法练习
    27 string类中常用的方法列表
    26.String类(1)
  • 原文地址:https://www.cnblogs.com/xiaoxi-song/p/9627889.html
Copyright © 2020-2023  润新知