• 记一次:jenkins自动化部署服务


    背景:本地测试服务器每次需要打包,发布,部署太麻烦,整一个jenkins自动化部署,因为之前做过一次,然后新做了一个短信平台的微服务,突然之间忘了怎么做了,所以才想起来整理一下。

    前提:下载安装jenkins并配置相关内容maven和git(可以使用docker安装或者war包安装等等)

    笔记:笔者也是之前学习了大量的前辈们总结的教程,然后根据自己的业务整理出自己的,笔记如下

     

     

     

     

     好了回顾完了。开始整理吧。

    ===================正文如下========================

    一、登录你的jenkins,选择新建任务

     输入一个任务名称-这里是我新建的消息服务,所以命名local-message,下面的两种风格都用过,各有各的好处,现在用流水线搭建一个,推荐流水线。选择确定。

     二、编写配置了开始,一共是下面的这些配置。直接开始我需要的吧

     直接使用流水线编写即可(步骤下面讲解,先说大体流程)

     如果不知道流水线语法可以使用“流水线语法”来解决。这个流水线我个人认为是从自由风格演变过来的,分模块了而已。

     下面讲解步骤

    1、我们提交代码到仓库了,使用jenkins的git工具下载下来(git拉取代码)

    2、代码已经下载使用jenkins的maven插件工具对代码进行编译(maven构建项目)

    3、 编译构建好的jar包或者war包推送到目标服务器,也就是你要在哪台服务器运行(推送项目到目标服务器)

    4、使用远程命令进行启动,因为我目标是打算用docker,所以用的镜像命令(构建镜像并启动)

    所以整个流水线内容如下,有删改嘻嘻。

    当然如果启动有问题还可以编写通知部分等内容,需要自己扩展了

    1. stages {
    2. stage('git拉取代码') {
    3. steps {
    4. echo '开始pull-dev';
    5. git branch: 'dev', credentialsId: '', url: 'https://xxx.git'
    6. }
    7. }
    8. stage('maven构建项目') {
    9. steps {
    10. echo '开始maven构建项目';
    11. sh '/var/jenkins_home/maven/bin/mvn clean package -Dmaven.test.skip=true'
    12. }
    13. }
    14. stage('推送项目到目标服务器') {
    15. steps {
    16. sshPublisher(publishers: [sshPublisherDesc(xxx)])
    17. }
    18. }
    19. stage('构建镜像并启动') {
    20. steps {
    21. sshPublisher(publishers: [xxx])
    22. }
    23. }
    24. }
    25. }

     三、开始构建项目(可以用通知自动构建我这里就手动构建了)

     

    注意:扩展部分

    扩展部分:安装public over ssh 插件用于远程推送项目

    设置ssh server 目标服务器(位置)

    远程推送文件

    注意:source files是相对路径,当前位置在workspace下的一级目录比如gatway

    推送文件扩展:

    Sshover插件使用

    该插件主要是通过SSH连接其他Linux机器,远程传输文件及执行Shell命令。

    特性:

    1、SCP—通过SSH发送文件 
    2、在远程服务器执行shell命令 
    3、Passwords/passphrases在配置文件及UI界面是加密显示的 
    4、SSH可在项目编译前或编译后执行,与是否编译成功无关 

    公共配置 
    Passphrase:密码(key的密码。如果有设置) 
    Path to key:key文件(私钥)的路径 
    Key:将私钥复制到这个框中 
    Disable exec:禁止运行命令 
    注意:一般来说,我们会采用同每一个SSH Server单独配置的方式,因此公共配置部分一般不进行设置

    私有配置 
    SSH Server Name:标识的名字,可随便取 
    HostName:需要连接ssh的主机名或IP地址 
    Username:SSH连接所使用的用户名 
    Remote Directory:用SSH连接后的远程根目录,这个目录是必须存在的,Jenkins不会自动创建目录。Jenkins会将文件远程复制到该目录。(注意:SSH连接的用户需要有权限才可以创建、删除、移动文件及文件夹) 
    Use password authentication, or use a different key:使用密码认证或密钥认证

    私有配置的高级 
    Port:SSH连接端口号(默认为22) 
    Timeout (ms):连接超时的时间,单位以毫秒计算 
    Disable exec:禁止exec执行命令 
    Test Configuration:测试配置是否成功 ​​​​​​​

    第一种启动步骤:

    在构建环境中选择Send files or excute commands over SSH after the build runs 
    SSH Server Name:选择系统设置中已添加的SSH服务器 
    Transfer Set Source files:需要上传到应用服务器的文件(注意:相对于工作空间的路径,可填写多个,默认用逗号分隔) 
    Remove prefix:去掉前缀(只能指定Transfer Set Source files中的目录) 
    Remote directory:可选的目标文件夹。如果文件夹不存在,会创建文件夹。 
    Exec command:在远程服务器将要执行的命令。在远程SSH传输执行后,才执行这里的脚本命令 
    高级选项: 
    Exclude files:排除的文件(在传输目录的时较有用,使用通配符,例如:/*.log,/*.tmp,*.txt/) 
    Pattern separator:分隔符(配置Transfer Set Source files的分隔符) 
    No default excludes:禁止默认的排除规则 
    Make empty dirs:此选项会更改插件的默认行为。默认行为是匹配该文件是否存在,如果存在则创建目录存放。选中此选项会直接创建一个目录存放文件,即使是空目录。 
    Flatten files:只上传文件,不创建目录(除了远程目录) 
    Exec timeout (ms):运行脚本的超时时间(毫秒) 
    Exec in pty:模拟一个终端执行脚本 
    Add Transfer Set:增加一个传输配置 
    Remote directory is a date format:远程目录建立带日期的文件夹(需要在Remote directory中配置日期格式),具体格式参考下表:

    Remote directory

    Directories created

    ‘qa-approved/’yyyyMMddHHmmss

    qa-approved/20101107154555

    ‘builds/’yyyy/MM/dd/’build-${BUILD_NUMBER}’

    builds/2010/11/07/build-456 (if the build was number 456)

    yyyy_MM/’build’-EEE-d-HHmmss

    2010_11/build-Sun-7-154555

    yyyy-MM-dd_HH-mm-ss

    2010-11-07_15-45-55

    第二种启动步骤:在构建后操作中,选择Send build artifacts over SSH

    注:Transfer Set Source files和Exec command可只填写一个

  • 相关阅读:
    8年三届世界杯,8年前端开发,梅西一共踢没了我八千八
    浅聊我和一些编程语言的缘分
    通过v_COURSE和V_grade查看期末平均成绩在60分以上的课程名称
    Android常见分区
    劝你不要转行
    PingCode Wiki 权限设计之 ACL
    Vue解决Echarts组件使用ID不能复用问题
    便利店小程序可以做哪些营销活动呢
    Python3的pytesseract和Tesseract-ocr的使用以及自己训练数据集的方法
    webpack loader和plugins的区别
  • 原文地址:https://blog.csdn.net/sinat_38259539/article/details/127491001