gogs和drone如何配合使用
  XJjnJFN1x2Qb 2023年11月02日 37 0

上篇介绍了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.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.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

然后去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形式的服务。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论