gogs和drone如何配合使用

2023-10-09 21:44
文章标签 使用 gogs 配合 drone

本文主要是介绍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形式的服务。

这篇关于gogs和drone如何配合使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/175758

相关文章

Spring Boot整合Redis注解实现增删改查功能(Redis注解使用)

《SpringBoot整合Redis注解实现增删改查功能(Redis注解使用)》文章介绍了如何使用SpringBoot整合Redis注解实现增删改查功能,包括配置、实体类、Repository、Se... 目录配置Redis连接定义实体类创建Repository接口增删改查操作示例插入数据查询数据删除数据更

使用python生成固定格式序号的方法详解

《使用python生成固定格式序号的方法详解》这篇文章主要为大家详细介绍了如何使用python生成固定格式序号,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录生成结果验证完整生成代码扩展说明1. 保存到文本文件2. 转换为jsON格式3. 处理特殊序号格式(如带圈数字)4

Java使用Swing生成一个最大公约数计算器

《Java使用Swing生成一个最大公约数计算器》这篇文章主要为大家详细介绍了Java使用Swing生成一个最大公约数计算器的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下... 目录第一步:利用欧几里得算法计算最大公约数欧几里得算法的证明情形 1:b=0情形 2:b>0完成相关代码第二步:加

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV