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: truesteps:
# 设置Git镜像版本,下载仓库文件
# 如果上面没有设置clone,此处需要删除(如果不删除,在pipeline中将多一个clone,pipeline会出错)
- name: cloneimage: drone/git:1.2.1# 构建和编译Java项目
- name: test-buildimage: maven:3.8.4volumes:# Maven缓存目录- name: mvn-cachepath: /root/.m2# 在Docker容器内执行的命令commands:- mvn clean install# 发布项目
- name: test-deployimage: appleboy/drone-ssh:latestsettings:# 部署主机的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-cachehost: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}" ]; thenreturn 1elsereturn 0fi
}echo "################停止服务#######################"
is_exist
if [ $? -eq 0 ]; then  #如果是0,就代表进程存在,需要停止。pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}'`kill -9 $pidelseecho "${APP_NAME} is not running"fiecho "###################启动服务#############################"
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: truesteps:
# 设置Git镜像版本,下载仓库文件
# 如果上面没有设置clone,此处需要删除(如果不删除,在pipeline中将多一个clone,pipeline会出错)
- name: cloneimage: drone/git:1.2.1# 构建和编译Java项目
- name: test-buildimage: maven:3.8.4volumes:# Maven缓存目录- name: mvn-cachepath: /root/.m2# 在Docker容器内执行的命令commands:- mvn clean install- cp  /root/.m2/repository/com/huningfei/demo/0.0.1-SNAPSHOT/*-SNAPSHOT.jar ./# 发布项目
- name: scp filesimage: appleboy/drone-scp:latestsettings:# 部署主机的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: 22target: /home/app/${DRONE_REPO_NAME} #目标路径source: ./*.jar  #源文件路径- name: restartimage: appleboy/drone-ssh:latestsettings:  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: 10mscript:# 执行"/home/app"下的脚本(注意:需要在“/home/app”目录下创建start.sh文件)- sh /home/app/restart.sh - sleep 7# 进行测试访问- curl http://localhost:8081/getAppName# 挂载宿主机目录,对应"test-build"的Maven容器的目录
volumes:- name: mvn-cachehost: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形式的服务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/132337.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Task 快速入门

哈喽~大家好,这篇来看看Spring Task 快速入门。 🥇个人主页:个人主页​​​​​ 🥈 系列专栏:【日常学习上的分享】 🥉与这篇相关的文章: Redis…

c++视觉处理 ------ 反向投影图和直方图的变化

通道混合:cv::mixChannels cv::mixChannels 是 OpenCV 中的一个函数,用于执行通道混合或通道分离操作。通常情况下,这个函数用于处理多通道图像,允许你从多通道图像中提取或重新排列通道,或者将不同通道的数据组合到一…

OpenCV中initUndistortRectifyMap ()函数与十四讲中去畸变公式的区别探究

文章目录 1.十四讲中的去畸变公式2. OpenCV中的去畸变公式3. 4个参数和8个参数之间的区别4.initUndistortRectifyMap()函数源码 最近在使用OpenCV对鱼眼相机图像去畸变时发现一个问题,基于针孔模型去畸变时所使用的参数和之前十四讲以及视觉SLAM中的畸变系数有一点不…

socket网络编程中设置socket选项的ioctlsocket、setsockopt和WSAIoctl函数的使用(附源码)

VC常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycly/article/details/124272585C软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...&a…

springboot单独在指定地方输出sql

一般线上项目都是将日志进行关闭,因为mybatis日志打印,时间长了,会占用大量的内存,如果我想在我指定的地方进行打印sql情况,怎么玩呢! 下面这个场景: 某天线上的项目出bug了,日志打印…

机器人控制算法——移动机器人横向控制最优控制LQR算法

1.Introduction LQR (外文名linear quadratic regulator)即线性二次型调节器,LQR可得到状态线性反馈的最优控制规律,易于构成闭环最优控制。LQR最优控制利用廉价成本可以使原系统达到较好的性能指标(事实也可以对不稳定的系统进行整定) ,而且方法简单便于实现 ,同时利用 Ma…

【算法-动态规划】贝尔曼福特算法

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

1700*C. Mixing Water(数学 | 二分)

Problem - 1359C - Codeforces 解析: 因为每次先加热水,再加凉水,所以温度的范围肯定在 [ ( hc ) / 2 , h ] 所以当 t 为 h时,结果为 1 当 t 小于( hc ) / 2时,肯定为2 (一杯热水和一杯冷水) …

【excel技巧】如何在Excel表格中添加选项按钮?

不知道大家是否会9遇到需要勾中选项的情况,我们可以在电子表格中制作出可以勾选、选中的选项按钮,今天我们一起学习一下设置方法。 首先,我们需要先在excel工具栏中添加一个功能模块:开发工具 依次点击excel中的文件 – 选项 –…

互动设计:深入了解用户体验的关键

交互是人与计算机系统之间的互动过程。在计算机领域中,交互是人机交互技术的核心内容之一。交互设计是一种基于人类行为科学、心理学、人体工程学等领域的专业设计,目的是创造用户友好的、易于使用的计算机软件、网络、移动应用等。交互的本质在于用户的…

Spring之IoC

Spring的设计理念和整体架构 一句话概括就是:Spring是一个轻量级的、非侵入式的控制反转(IOC)和面向切面(AOP)的框架。 设计理念: 松散耦合: Spring鼓励开发者编写松散耦合的代码,通过依赖注入和接口抽象等方式来减少组件之间的…

语音芯片基础知识 什么是语音芯 他有什么作用 发展趋势是什么

目录 一、语音芯片的简介 常见的语音芯片有哪些? 语音芯片的种类有很多,大体区分下来也就4个类别而已: 选型的经验说明如下: 推荐使用flash型语音芯片 一、语音芯片的简介 语音芯片基础知识: 什么是语音芯片&…