当前位置: 首页 > news >正文

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如何配合使用

上篇介绍了drone和gogs安装方法,这次介绍这两个如何使用,此篇文章主要介绍在物理机上进行发布。 此处用到的java项目地址:https://gitee.com/huningfei/demo-test 一 配置gogs 1.1 在Gogs中配置指定仓库的”.drone.yml“文件 1.2 ssh-drone…...

Feign客户端的配置与使用

feign Feign的基本使用Feign客户端抽取 Feign的基本使用 Feign是一个声明式的Web服务客户端&#xff0c;它使得编写Web服务客户端变得更加简单。 1、首先&#xff0c;需要在项目中引入Feign的相关依赖。在Maven项目中&#xff0c;可以添加以下依赖&#xff1a; <dependen…...

【数据结构】队列(Queue)实现详解

&#x1f6a9;纸上得来终觉浅&#xff0c; 绝知此事要躬行。 &#x1f31f;主页&#xff1a;June-Frost &#x1f680;专栏&#xff1a;数据结构 &#x1f525;该文章主要了解实现队列的相关操作。 目录&#xff1a; &#x1f30d; 队列&#x1f52d;概念&#x1f52d;结构&…...

23.10.13数据库升级流程记录

23.10.13数据库升级流程记录 hello&#xff0c;我是阿昌&#xff0c;今天记录一下数据库升级的流程&#xff0c;内容如下&#xff1a; 一、升级的内容 将之前的数据库升级为8.0版本&#xff0c;切只涉及一个分库&#xff1b; 二、升级的时机 涉及到数据库升级&#xff0c;…...

【three.js】结合vue进行开发第一个3d页面

一、创建vue项目 新建一个项目目录&#xff0c;在集成终端打开&#xff0c;输入 npm init vitelatest 回车后&#xff0c;依次输入项目名&#xff0c;选择vue和js开发 然后安装依赖并运行项目 二、安装three 接下来我们开始安装three npm install three 三、Three.js 的…...

【Vue】同一个页面多次复用同一个组件数据相互干扰问题

文章目录 问题描述解决方法 问题描述 第二个child会受到第一个child的影响而线上666的值 <template><child :value"666" /><child /> </template> <script> import child from ./child; export default {components: {child,},data(…...

【深度学习实验】卷积神经网络(八):使用深度残差神经网络ResNet完成图片多分类任务

目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入必要的工具包 1. 构建数据集&#xff08;CIFAR10Dataset&#xff09; a. read_csv_labels&#xff08;&#xff09; b. CIFAR10Dataset 2. 构建模型&#xff08;FeedForward&#x…...

HarmonyOS学习 -- ArkTS开发语言入门

文章目录 一、编程语言介绍二、TypeScript基础类型1. 布尔值2. 数字3. 字符串4. 数组5. 元组6. 枚举7. unknown8. void9. null 和 undefined10. 联合类型 三、TypeScript基础知识条件语句if语句switch语句 函数定义有名函数和匿名函数可选参数剩余参数箭头函数 类1. 类的定义2.…...

早安心语|不委屈不将就,让生活充满仪式感

1、让自己的生活多一种可能&#xff0c;给自己的未来多一份惊喜&#xff0c;人生所有的机会和惊喜&#xff0c;都是在你全力以赴的道路上遇到的。 2、推开自己喜欢的人叫成长&#xff0c;留住自己喜欢的人叫本事&#xff0c;总有人嫌你不够好&#xff0c;也有人觉得你哪都好&am…...

[Python进阶] 操纵键盘:pyuserinput

6.3 操纵键盘&#xff1a;pyuserinput 6.3.1 说明 在安装pyuserinput库时会自动安装PyMouse和PyKeyboard库。前者主要用来操作鼠标&#xff0c;包括鼠标的点击、移动等。后者主要用来操作键盘&#xff0c;包括键盘按键的按下、弹起等。这两个库还可以同时对鼠标和键盘的事件进…...

解析Moonbeam的安全性、互操作性和市场竞争力

Moonbeam依托Polkadot Substrate框架构建&#xff0c;用Rust程序设计语言创建的智能合约区块链平台&#xff0c;在继承Polkadot安全性的基础上为项目提供以太坊虚拟机&#xff08;EVM&#xff09;的兼容性和原生的跨链互操作性优势。Moonbeam的EVM兼容性表示开发者无需学习Subs…...

RPA是什么?怎么成为RPA高手?

RPA&#xff08;Robotic Process Automation&#xff0c;机器人流程自动化&#xff09;是一种技术&#xff0c;通过软件机器人模拟人类在计算机上执行重复性任务&#xff0c;从而提高生产力、减少错误并降低成本。RPA 可以广泛应用于金融、医疗、制造、零售等多个行业&#xff…...

Apache Shiro 漏洞复现

文章目录 Apache Shiro 漏洞复现1. Apache Shiro 1.2.4 反序列化漏洞1.1 漏洞描述1.2 漏洞原理1.3 漏洞复现1.3.1 环境启动 1.4 漏洞利用1.5 修复方案 Apache Shiro 漏洞复现 链接地址&#xff1a;Vulhub - Docker-Compose file for vulnerability environment 1. Apache Shi…...

炒现货白银的最佳时间

天时地利人和是我们进行现货白银投资最关键的因素。天时是指我们因时而动&#xff0c;在适合的时机出击。地利&#xff0c;就是我们对市场的定位&#xff0c;对自己入场的定位有清晰的了解&#xff0c;并且这些位置对我们有利。人和就是指投资者的状态很好&#xff0c;对如何进…...

C# OpenVINO 人脸识别

效果 耗时 Preprocess: 1.41ms Infer: 4.38ms Postprocess: 0.03ms Total: 5.82ms 项目 代码 using OpenCvSharp; using Sdcb.OpenVINO; using System; using System.Collections.Generic; using System.Diagnostics; using System.Drawing; using System.Text; using Syste…...

ESP32-WROOM-32无法进入下载模式进行程序上传的问题

结论 先说结论&#xff0c;ESP32-WROOM-32无法进入下载模式通过串口进行程序上传&#xff0c;可能是GPIO2引脚没有通过下拉电阻拉低&#xff0c;导致无法进入正确的启动模式。 启动模式 ESP32启动时会打印rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) 复位源rs…...

尚硅谷Flink(一)

目录 ☄️前置工作 fenfa脚本 &#x1f30b;概述 ☄️Flink是什么 ☄️特点&#xff08;多nb&#xff09; ☄️应用场景&#xff08;不用看&#xff09; ☄️分层API &#x1f30b;配环境 ☄️wordcount ☄️WcDemoUnboundStreaming &#x1f30b;集群部署 ☄️集…...

C++ 设计模式 —— 桥接模式

C 设计模式 —— 桥接模式 0. 引用连接 本文主要的思路和代码&#xff0c;来自于对以下连接的学习和实现&#xff1a; 桥接模式 1. 引言 1.1 什么是桥接模式&#xff1f; 桥接模式的定义桥接模式的作用 桥接模式&#xff0c;顾名思义&#xff0c;就像是一座连接两岸的桥…...

微信怎么删除好友?非常简单,2个方法!

随着生活和工作的节奏加快&#xff0c;这也导致我们微信里的联系人变得越来越多。有时候&#xff0c;我们可能只是需要给对方转钱、发送照片或者是一些其他理由。 而这部分“好友”可能除了这次交流后再也没有别的联系了&#xff0c;那么这时候大家可能会想把他们删除。那么微…...

小谈设计模式(25)—职责链模式

小谈设计模式&#xff08;25&#xff09;—职责链模式 专栏介绍专栏地址专栏介绍 职责链模式分析角色分析抽象处理者&#xff08;Handler&#xff09;具体处理者&#xff08;ConcreteHandler&#xff09;客户端&#xff08;Client&#xff09; 优缺点分析优点123 缺点12 应用场…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中&#xff0c;损失函数的选择对模型性能具有决定性影响。均方误差&#xff08;MSE&#xff09;作为经典的损失函数&#xff0c;在处理干净数据时表现优异&#xff0c;但在面对包含异常值的噪声数据时&#xff0c;其对大误差的二次惩罚机制往往导致模型参数…...