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.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形式的服务。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值