首页 > 编程语言 >7.jenkins调用maven工具管理java代码实现滚动发布

7.jenkins调用maven工具管理java代码实现滚动发布

时间:2022-11-16 11:23:58浏览次数:51  
标签:java name stdout maven Path jenkins war

1.配置多jdk环境


2.配置多maven环境

3.配置maven项目

3.1 配置部署主机

[root@jenkins war_update]# cat hosts_test 
[webservice]
192.168.1.191
[root@jenkins war_update]# cat hosts_prod 
[webservice]
192.168.1.43
192.168.1.254

3.2 配置git commit id

3.3 配置git仓库

3.4 配置build参数

3.5 构建完毕后调用ansible自动化工具部署

#选择角色
[root@jenkins code_cicd]# cat war_update.yaml 
- hosts: webservice 
  serial: 1
  roles:
    - war_update 
#任务步骤
[root@jenkins code_cicd]# cat war_update.yaml 
- hosts: webservice 
  serial: 1
  roles:
    - war_update 
[root@jenkins code_cicd]# cat war_update/tasks/main.yaml 
- name: 0. Get System Time
  shell:
    cmd: "echo $(date +%F_%H_%M)"
  register: Date
  delegate_to: 127.0.0.1

- name: 1. Get Git_Commit_Id 
  shell:
    cmd: "echo ${git_commit_id}|cut -c 1-8"
  register: Git_Commit_Id
  delegate_to: 127.0.0.1

- name: 2. Get Workspace Ansible Path
  shell:
    cmd: "echo ${WORKSPACE}"
  register: Workspace_Path
  delegate_to: 127.0.0.1

- name: 3. Get War Package Path
  shell:
    cmd: find "{{ Workspace_Path.stdout }}"/target -name "*.war"
  delegate_to: 127.0.0.1
  register: War_Path

- name: 4. Create Work Directory
  file:
    path: "/data/maven_{{ Date.stdout }}_{{ Git_Commit_Id.stdout }}"
    state: directory

- name: 5. Scp War Package To Remote Host
  unarchive:
    src: "{{ War_Path.stdout }}"
    dest: "/data/maven_{{ Date.stdout }}_{{ Git_Commit_Id.stdout }}"

- name: 6. Remove The Service
  replace:
    regexp: "server {{ ansible_default_ipv4.address }}"
    path: /etc/nginx/conf.d/maven_slb.conf
    replace: "#server {{ ansible_default_ipv4.address }}" 
  delegate_to: 192.168.1.191
  notify: Reload_Nginx

- meta: flush_handlers

- name: 7. Stop Tomcat Service
  systemd:
    name: tomcat
    state: stopped

- name: 8. Check Tomcat Port
  wait_for:
    port: "{{ Tomcat_Port }}"
    state: stopped

- name: 9. Unlink Path
  file:
    path: /data/ROOT
    state: absent

- name: 10. Create Links Path
  file:
    src: "/data/maven_{{ Date.stdout }}_{{ Git_Commit_Id.stdout }}"
    dest: "/data/ROOT"
    state: link

- name: 11. Start Tomcat Service
  systemd:
    name: tomcat
    state: started

- name: 12. Check Tomcat Port
  wait_for:
    port: "{{ Tomcat_Port }}"
    state: started

- name: 13. Create The Service
  replace:
    regexp: "#server {{ ansible_default_ipv4.address }}"
    path: /etc/nginx/conf.d/maven_slb.conf
    replace: "server {{ ansible_default_ipv4.address }}"
  delegate_to: 192.168.1.191
  notify: Reload_Nginx

- meta: flush_handlers

[root@jenkins code_cicd]# cat war_update/vars/main.yaml 
Tomcat_Port: 8080

标签:java,name,stdout,maven,Path,jenkins,war
From: https://www.cnblogs.com/yangtao416/p/16895250.html

相关文章

  • Java-10接口与抽象类
    Java-10接口与抽象类抽象方法abstractmethod机制这是一个不完整的方法,它只有一个声明,没有方法体abstractvoidf();包含抽象方法的类被称为抽象类:如果一个类包含一......
  • 如何理解Java中眼花缭乱的各种并发锁?
    在互联网公司面试中,很多小伙伴都被问到过关于锁的问题。今天,我给大家一次性把Java并发锁的全家桶彻底讲明白。包括互斥锁、读写锁、重入锁、公平锁、悲观锁、自旋锁、偏向......
  • Java反应式编程(2)
    您好,我是湘王,这是我的51CTO博客,欢迎您来,欢迎您再来~看了前面对反应式编程的说明,可能很多人都会打退堂鼓了。Lambda都已经够难理解的了,又来了一个反应式编程!实在卷不动了~其实......
  • 还不懂Java线程池实现原理,看这一篇文章就够了
    线程池无论是工作还是面试都是必备的技能,但是很多人对于线程池的实现原理却一知半解,并不了解线程池内部的工作原理,今天一灯就带大家一块剖析线程池底层实现原理。1.为什......
  • Java反射
    反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的功能称为......
  • java对接新中新电子:QKQ-A16Q (一)
    1.新中新电子:QKQ-A16Q    参考资料:新中新电子官网:http://www.synjones.com/service.html#part_oneUSB:\验证_USB_V1.2 ......
  • 面试官:Java 类加载过程是怎么样的?又被问麻了。。
    来源:blog.csdn.net/hsz2568952354/article/details/96763284最近在看Java虚拟机,正好看到类加载这块,所以简单记录下所学到的知识,作为笔记。首先,我们编写好的Java代码,经过......
  • JavaScript 字面量
    数组(Array)字面量 定义一个数组:[40,100,1,5,25,10]对象(Object)字面量 定义一个对象:{firstName:"John",lastName:"Doe",age:50,eyeColor:"blue"}函数(Functi......
  • java常用工具方法
    double类型后补0privateStringroundByScale(doublev,intscale){if(scale<0){thrownewIllegalArgumentException("Thescal......
  • javascript-代码随想录训练营day1
    704.二分查找力扣题目链接:https://leetcode.cn/problems/binary-search/题目描述:给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums......