gogs和drone如何配合使用

news2024/10/7 10:22:28

上篇介绍了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形式的服务。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

美容院微信小程序怎么添加会员管理功能

要为美容院的微信小程序添加会员管理功能,需要遵循以下步骤: 一、明确会员管理功能的定位和目标 首先,要明确会员管理功能的定位和目标。会员管理功能是美容院微信小程序的重要功能之一,它能够帮助美容院更好地管理会员信息、了解…

Cobalt Strike 4.9

Cobalt Strike 4.9 1. 工具介绍1.1. 工具添加1.2. 工具获取 2. 工具使用2.1. 添加权限并运行2.2. 连接服务端2.3. 连接成功 3. 安全性自查 1. 工具介绍 CS 是Cobalt Strike的简称,是一款渗透测试神器,常被业界人称为CS神器。Cobalt Strike已经不再使用MS…

软件测试简历项目经验怎么写?大厂面试手拿把掐

前言 在写简历之前,我们先来看看失败者的简历和成功者的简历之间有什么区别。为什么成功者的简历可以在求职中起到“四两拨千斤”的作用,而失败者的简历却被丢进了垃圾桶,这两者到底有什么不同? 成功的简历与失败的简历 我们发现…

每日一面系列之@Component和@Configuration区别

Configuration 和 Component 到底有何区别呢?我先通过如下一个案例,在不分析源码的情况下,小伙伴们先来直观感受一下这两个之间的区别。 Configurationpublic class JavaConfig01 { }Componentpublic class JavaConfig02 { } 首先&#xff…

常见算法-双骰子游戏(Craps)

常见算法-双骰子游戏(Craps) 1、说明 一个简单的双骰子游戏,游戏规则如下: 玩家掷两个骰子,点数为1到6, 如果第一次点数和为7或11,则玩家胜,如果点数和为2、3或12,则…

使用Jetson AGX Orin进行口罩识别

在 https://gitee.com/gpus/maskDetection_jetson 代码仓有个口罩识别的案例,我们来看看能不能在Jetson AGX Orin上搞定。 先将该代码仓fork到自己的代码仓(以便魔改) 回到自己的代码仓: 根据README.md来操作吧! 首先…

Feign(替代RestTemplate)远程调用

Feign初步学习 定义 Feign 是一个基于 Java 的 HTTP 客户端库,它是 Spring Cloud 中的一部分,用于简化微服务之间的 HTTP 通信。与传统的使用 RestTemplate 来调用 RESTful 服务不同,Feign 提供了一种声明式、基于接口的方式来定义和调用 H…

YB2419是一款功能齐备,内置mos100%占空比高效率同步降压IC

产品描述: YB2419是一款功能齐备,应用极为简单,并兼顾应用的灵活性和广泛性,高性能,以及超高性价比的恒压恒流降压型DC-DC可持续输出4.2A,支持两路USB口同时输出。是一款输入耐压可达40V,4.5-40V输入电压条件正常工作&#xff0c…

基于SpringBoot的厨艺交流平台设计与实现

目录 前言 一、技术栈 二、系统功能介绍 食材分类管理 用户信息管理 菜谱分类管理 菜谱信息管理 食材信息管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 使用旧方法对厨艺交流信息进行系统化管理已经不再让人们信赖了,把现在的网络信息…

查找算法——二分查找法

一、介绍 首先需要将查找的数据排好序,再进行二分查找法来进行查找,二分查找是将数据范围不断分割为两份,不断比较中间值与待查找值的大小来确定其在哪个区间范围的一种方法。例如:在一组数据(1,4&#xff…

零基础Linux_14(基础IO_文件)缓冲区+文件系统inode等

目录 1. 缓冲区 1.1 缓冲区的存在 1.2 缓冲区的刷新策略 1.3 模拟C标准库中的文件操作 完整代码及验证: 1.4 重看缓冲区 1.5 stdout和stderr的区别 2. 文件系统 2.1 磁盘的物理结构CHS等 2.2 磁盘的抽象结构LBA等 2.3 文件管理inode等 2.4 对文件的操作…

Bytebase 2023 第三季度回顾

开工快乐!2023 的第三个季度转眼过去了,一起来看看 Bytebase 过去几个月干得如何? 📰 公司动态 Bytebase 突破百万下载。和 GitLab 签署 Technology Partner 技术合作伙伴协议。中东 Shopify 使用 Bytebase 构建一站式数据库开发…

节能减排 | AIRIOT智慧工厂节能管理解决方案

工厂作为高能耗的生产型企业,降低能耗和提升资源利用率方面就显得很重要,对实施国家倡导的节能降耗、绿色发展有着很大程度上的必要性。然而,工厂能源管理从传统手段向智能化升级转型的过程中,企业也不可避免的面临一些痛点和挑战…

在线刷题答题小程序开发现成源码搭建 功能丰富 支持在线考试+刷题 源码开源可二开

在线考试和刷题成为了学习的一种趋势,越来越多的人开始通过在线平台进行自我学习和提升。为了满足这一需求,开发一款功能丰富、支持在线考试和刷题的答题小程序成为了热门的需求。分享一款在线刷题答题小程序源码,功能丰富,支持在…

分布式搜索系统的设计

介绍 如今,我们几乎在每个网站上都看到一个搜索栏。搜索栏使我们能够快速找到我们需要的内容。 让我们举个例子。想象一下,如果YouTube没有提供搜索栏,我们如何在数百万个视频中找到特定的视频,这些视频多年来都已上传到YouTube&a…

【git merge/rebase】详解合并代码、解决冲突

目录 1.概述 2.merge 3.rebase 4.merge和rabase的区别 5.解决冲突 1.概述 在实际开发中,一个项目往往是多个人一起协作的,头天下班前大家把代码交到远端仓库,第二天工作的第一件事情都是从服务器上拉最新的代码,保证代码版本…

【pytorch】模型的保存与加载|| Dataloader数据加载器

Pytorch模型保存与加载,并在加载的模型基础上继续训练 系统学习Pytorch笔记三:Pytorch数据读取机制(DataLoader)与图像预处理模块(transforms) 一、只保存参数 1. 保存 一般地,采用一条语句即可保存参数: torch.save(model.s…

UI设计师岗位的基本职责八篇

UI设计师岗位的基本职责1 职责: 1. 负责公司互联网产品app、web、h5等的用户界面设计工作; 2. 负责运营活动相关的平面及视频设计支持; 3. 负责完成产品相关的界面、图标、动画等的图形界面设计,并参与制定、编写产品视觉设计规范文档; 4. 整理和分…

解决yolo无法指定显卡的问题,实测v5、v7、v8有效

方法1 基本上这个就能解决了!!! 在train.py的最上方加上下面这两行,注意是最上面,其次指定的就是你要使用的显卡 import os os.environ[CUDA_VISIBLE_DEVICES]6方法2: **问题:**命令行参数指…

数字化营销系统有什么优势?免费数字化营销系统推荐

数字化营销系统的优势在于其多方面的性能。首先,它可以帮助企业降低成本,其次,数字化营销系统还能提高市场推广收益情况的跟踪能力。通过精准定位和智能推荐,企业可以将信息传递给更有可能转化为实际购买力的潜在客户。如蚓链数字…