jenkins+ansible实现自动化部署springboot项目

Jenkins 是什么?

Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。

Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。

Jenkins下载部署

①下载地址:https://jenkins.io/zh/download/
image.png
②上传war包到服务器
image.png
③复制到Tomcat的webapps目录下
cp /usr/local/jenkins.war  /usr/local/apache-tomcat-8.5.50/webapps/
④启动Tomcat

输入访问地址:

http://192.168.67.128:8080/jenkins/
image.png

服务器查看密码命令:

cat /root/.jenkins/secrets/initialAdminPassword
image.png

按照提示输入初始密码:
image.png

选择安装推荐的插件(插件下载过程有点久):
image.png
image.png

创建用户:
image.png

jenkins全局配置:
image.png

新建项目前确保Ansible、Git等插件已安装好:


接下来就是新建项目:
新建项目.png
image.png
源码管理选项卡设置:
image.png
构建选项卡设置:
image.png
image.png
项目脚本:

hosts:

192.168.67.129 ansible_ssh_user=root ansible_ssh_port=22 ansible_ssh_pass=123456


[mybatis_plus]
192.168.67.129
image.png

deploy.yml:

---
- hosts: mybatis_plus
  tasks:
    #    - file: path=/tmp/mytemp state=directory mode=0755

    # 存放脚本
    - name: create script directory
      file:
        path: /script
        state: directory
        mode: 0755

    # 存放jar包

    - name: create /app/test
      file:
        path: /app/test
        state: directory
        mode: 0755

    # 存放日志

    - name: create /tmp/startlog directory
      file:
        path: /tmp/startlog
        state: directory
        mode: 0755


    - name: copy readme
      copy:
        src: /script/readme
        dest: /script/readme

    - name: copy start.sh
      copy:
        src: /script/start.sh
        dest: /script/start.sh
        mode: u+x

    - name: copy kill.sh
      copy:
        src: /script/kill.sh
        dest: /script/kill.sh
        mode: u+x

    - name: copy mybatis-plus.jar
      copy:
        src: /root/.jenkins/workspace/Eportal/target/mybatis_plus.jar
        dest: /app/test/mybatis_plus.jar
        mode : 0755


    - name: view readme
      shell: cat /script/readme

    - name : "stop the application if running"
      shell : /script/kill.sh

    - name: run start.sh
      shell: nohup  /script/start.sh  &

image.png

脚本kill.sh:

PID=$(ps -ef |grep /app/test | grep -v grep | awk '{ print $2 }')
if [ -z "$PID" ]
then
    PID=$(ps -ef |grep /app/ | grep -v grep | awk '{ print $2 }')
fi

if [ -z "$PID" ]
then
    echo Application is already stopped
else
    echo kill -9 $PID
    kill -9 $PID
    echo Application is stopped
fi
image.png

start.sh脚本:

/usr/local/jdk1.8.0_151/bin/java -jar /app/test/mybatis_plus.jar > /app/test/log.log
image.png
image.png

执行结果:
image.png

远程主机验证:/app/test/下确实已经有jar包,而且有日志文件
image.png

查看日志文件:

tail -100f log.log

服务确实起来:
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容