• gogs和drone如何配合使用


    上篇介绍了drone和gogs安装方法,这次介绍这两个如何使用,此篇文章主要介绍在物理机上进行发布。
    此处用到的java项目地址:https://gitee.com/huningfei/demo-test

    一 配置gogs

    1.1 在Gogs中配置指定仓库的”.drone.yml“文件

    image.png

    1.2 ssh-drone.yml具体内容如下所示(适合在本机直接部署)

    kind: pipeline
    type: docker
    name: test-pipeline
    
    # 关闭自动设置Git镜像
    # 此处可以不设置,将获取最新的git镜像
    clone:
      disable: true
    
    steps:
    # 设置Git镜像版本,下载仓库文件
    # 如果上面没有设置clone,此处需要删除(如果不删除,在pipeline中将多一个clone,pipeline会出错)
    - name: clone
      image: drone/git:1.2.1
    
    # 构建和编译Java项目
    - name: test-build
      image: maven:3.8.4
      volumes:
        # Maven缓存目录
        - name: mvn-cache
          path: /root/.m2
    
      # 在Docker容器内执行的命令
      commands:
        - mvn clean install
    
    # 发布项目
    - name: test-deploy
      image: appleboy/drone-ssh:latest
      settings:
        # 部署主机的IP  
        host: 192.168.2.45
        # 部署主机的登录账号,需从Drone中获取密钥名ssh_user的值,创建方式见下面
        username:
          from_secret: ssh_user
        # 部署主机的登录密码,需从Drone中获取密钥名ssh_pwd的值,创建方式见下面
        password:
          from_secret: ssh_pwd
        # 端口号
        port: 22
        # 设置超时
        command_timeout: 10m
        # 编写脚本,可根据具体情况编写
        script:
          # 进入宿主机的“/home/app”目录(注意:先在宿主机上创建app目录)
          - cd /home/app
          # 删除jar包,我测试的工程名是test
          # - rm -rf test.0.0.1-SNAPSHOT.jar
          # 将编译后的jar包复制到"/home/app"下
          - cp /home/mvn/.m2/repository/com/huningfei/demo/0.0.1-SNAPSHOT/*-SNAPSHOT.jar .
          # 执行"/home/app"下的脚本(注意:需要在“/home/app”目录下创建start.sh文件)
          - sh restart.sh 
          - sleep 7
          # 进行测试访问
          - curl http://localhost:8081/getAppName
    
           
    
    # 挂载宿主机目录,对应"test-build"的Maven容器的目录
    volumes:
      - name: mvn-cache
        host:
          path: /home/mvn/.m2
    
    # 对应Gogs仓库分支
    trigger:
      branch:
        - master
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69

    1.3 restart.sh脚本内容

    APP_NAME="demo-0.0.1-SNAPSHOT.jar"
    
    #判断是否有老的进存在
    is_exist(){
      pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}'`
      #如果不存在返回1,存在返回0     
      if [ -z "${pid}" ]; then
       return 1
      else
        return 0
      fi
    }
    
    
    echo "################停止服务#######################"
    is_exist
    if [ $? -eq 0 ]; then  #如果是0,就代表进程存在,需要停止。
        pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}'`
        kill -9 $pid
      else
        echo "${APP_NAME} is not running"
      fi
    
    
    echo "###################启动服务#############################"
    nohup java -jar /home/app/demo-0.0.1-SNAPSHOT.jar >> nohup.log  2>&1 &
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    1.4 scp-drone.yml (scp 适用于在远程主机进行部署)

    kind: pipeline
    type: docker
    name: test-pipeline
    
    # 关闭自动设置Git镜像
    # 此处可以不设置,将获取最新的git镜像
    clone:
      disable: true
    
    steps:
    # 设置Git镜像版本,下载仓库文件
    # 如果上面没有设置clone,此处需要删除(如果不删除,在pipeline中将多一个clone,pipeline会出错)
    - name: clone
      image: drone/git:1.2.1
    
    # 构建和编译Java项目
    - name: test-build
      image: maven:3.8.4
      volumes:
        # Maven缓存目录
        - name: mvn-cache
          path: /root/.m2
    
      # 在Docker容器内执行的命令
      commands:
        - mvn clean install
        
        - cp  /root/.m2/repository/com/huningfei/demo/0.0.1-SNAPSHOT/*-SNAPSHOT.jar ./
    
    # 发布项目
    - name: scp files
      image: appleboy/drone-scp:latest
      settings:
        # 部署主机的IP  
        host: 192.168.2.188
        # 部署主机的登录账号,需从Drone中获取密钥名ssh_user的值,创建方式见下面
        username: root
          #from_secret: ssh_user
        # 部署主机的登录密码,需从Drone中获取密钥名ssh_pwd的值,创建方式见下面
        password: 12345
          #from_secret: ssh_pwd
        # 端口号
        port: 22
        target: /home/app/${DRONE_REPO_NAME} #目标路径
        source: ./*.jar  #源文件路径
       
        
    
    - name: restart
      image: appleboy/drone-ssh:latest
      settings:  
        host: 192.168.2.188
        # 部署主机的登录账号,需从Drone中获取密钥名ssh_user的值,创建方式见下面
        username: root
          #from_secret: ssh_user
        # 部署主机的登录密码,需从Drone中获取密钥名ssh_pwd的值,创建方式见下面
        password: 123456
         # from_secret: ssh_pwd
        # 端口号
        port: 22
        # 设置超时
        command_timeout: 10m
        script:
       
          # 执行"/home/app"下的脚本(注意:需要在“/home/app”目录下创建start.sh文件)
          - sh /home/app/restart.sh 
          - sleep 7
          # 进行测试访问
          - curl http://localhost:8081/getAppName
        
    
    # 挂载宿主机目录,对应"test-build"的Maven容器的目录
    volumes:
      - name: mvn-cache
        host:
          path: /home/mvn/.m2
    
    # 对应Gogs仓库分支
    trigger:
      branch:
        - master
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82

    然后去2.188上查看目录
    image.png

    二 drone里的配置

    2.1 在Drone中设置秘钥

    image.png

    image.png

    image.png

    2.2 在Drone中配置Gogs的仓库

    会自动同步仓库到drone上,不像用jenkins那样需要先克隆下来了。
    image.png

    image.png

    image.png

    三 测试发布项目

    经过上面的配置,基本可以测试项目发布了。

    3.1 gogs上的web钩子配置

    注意:需要在Drone中配置完指定仓库后,才会出现Web钩子的地址,否则地址为空。
    点击”管理Web钩子“,按照如下配置,推送到Drone Server,当然你可以不配置,进行手动构建也行。
    步骤如下:
    image.png

    image.png
    测试主动推送 (以后这个仓库所有的改动,都会自动触发drone的构建任务),如果下面出现了
    对钩,就代表推送成功。如下所示:
    image.png

    3.2 查看drone构建结果

    image.png

    再去目标服务器上查看启动的进程
    image.png

    刚才上面介绍的都是直接在物理机上进行的部署,下篇介绍下,如果构建docker形式的服务。

  • 相关阅读:
    react-native 打包报错 android-gradle-plugin-requires-java-11
    2023长春理工大学计算机考研信息汇总
    为什么表数据删一半,表文件大小不变?
    进程地址空间初识
    Pytest的断言与条件判断的区别
    IDEA 新建 Maven 项目没有文件结构 pom 文件为空 解决方法
    物理服务器对比云服务器的优缺点
    关于tensorboard无法打开
    抖音关键词月搜查询 API 返回值说明
    高级数字图像处理学习(一)
  • 原文地址:https://blog.csdn.net/huningfei/article/details/133693843