07.你还在手动部署代码吗

如今的项目或者个人项目中,大家的代码怎么部署呢?公司一般都有完整的持续集成以及持续交付平台,对于小公司可能也有各自搭建了一些,比如jenkins,以及gitlab集成的gitlab-ci等等,这些都可以完成我们部署的工作甚至是测试集成等等一系列流水化工作。

但是,即使如此,我依旧相信,很多公司或者前端开发者根本不太关注什么持续交付、持续集成等等。至于在部署这一块,不少走的还是本地npm run build+ssh+sftp手动模式。当然我之前也一直这么干,为此还借助开源项目自己写了一个开源脚本@dllcnx/auto-deploy供团队使用(注意:此脚本密码模式因为要知道服务器用户密码且部署目录你的账户要有权限,虽然针对密码做了个加密,但是…)。

那么,我就想提交一下代码,其它啥都不想管。所以为什么不试试Drone呢?

Drone是一个现代持续集成平台,它使繁忙的团队能够使用强大的云原生管道引擎自动执行其构建、测试和发布工作流程。

所以Drone的功能可不仅仅是部署,只是我针对这个需求可以使用它,所以一定不要被我的文章局限住,此文只是抛砖引玉。上篇docker服务系列的文章,我也介绍了搭建了一个git服务仓库06.搭建一个自己的私有仓库-Gitea,所以这篇文章也就以gitea仓库为例,来达到代码推送,由drone去自动编译部署,其它如Github、Gitlab、Gitee、Bitbucket以及gitea/Gogs可以看各自文档。

为什么不用jenkins呢?因为原来在公司就在用它,自己个人的代码就想试试其它的,并且jenkins从界面到配置,再到内存占用,我个人都是不太喜欢的,当然不是说jenkins不好,反而借助插件等等,它的能力是很强大的。

官方是这么说的: Drone是一个容器原生持续集成系统,旨在成为老旧Jenkins安装的自助服务替代品。

一、准备

创建 Gitea OAuth 应用程序。Client ID 和 Client Secret 用于授权访问 Gitea 资源。setting->Applications->create Applications

  1. 填入名称和回调地址(其实就是后边drone部署的访问地址)
    在这里插入图片描述

注意: Client Secret只显示一次,确认关闭后就不再显示了,如果忘了就只能重置。

在这里插入图片描述

  1. 创建共享秘钥

创建一个共享密钥,以验证运行器与中央无人机服务器之间的通信。

您可以使用 openssl 生成共享密钥:

openssl rand -hex 16     // 796f8245fdba973216a5493b4c0b7f83

二、安装Drone服务

完整的drone服务由Drone和drone-runner构成。

drone服务启动并运行后,需要安装runner来执行生成管道。有关详细的安装说明,请参阅运行器安装文档。drone-runner轮询服务器以查找要执行的工作负载。有不同类型的运行器针对不同的用例和运行时环境进行了优化。您可以安装一个或多个一个或多个类型的流道。这一块我们采用drone-runner即可,它是一个通用运行器。

Docker runner是在临时 Docker 容器中执行管道步骤的守护程序。您可以安装单个 Docker runner,也可以在多台计算机上安装 Docker runner以创建自己的构建集群。

docker原生部署
  1. 拉取镜像
docker pull drone/drone:latest
docker pull drone/drone-runner-docker:latest
  1. 启动drone服务
docker run --detach=true --volume=/docker/drone:/data --env=DRONE_GITEA_SERVER=https://dllcnx.com:30000 \--env=DRONE_GITEA_CLIENT_ID=06310187-3064-4cf8-92f3-4008dfaa810b \--env=DRONE_GITEA_CLIENT_SECRET=gto_c4ytebo2jmorn3bihhyy6phbtet34hl6sbhomhk77x7x2iuv2hva \--env=DRONE_RPC_SECRET=796f8245fdba973216a5493b4c0b7f83 \--env=DRONE_SERVER_HOST=192.168.64.1:37078 \--env=DRONE_SERVER_PROTO=http \--env=DRONE_USER_CREATE=username:test,admin:true \--publish=37078:80 \--publish=443:443 \--restart=always \--name=drone \drone/drone:latest
  • DRONE_GITEA_CLIENT_ID: 必需的字符串,值提供您的 Gitea oauth 客户端 ID。

  • DRONE_GITEA_CLIENT_SECRET:必需的字符串,提供 Gitea oauth 客户端密码。

  • DRONE_GITEA_SERVER:必填字符串,提供您的 Gitea 服务器地址。

  • DRONE_GIT_ALWAYS_AUTH

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

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

相关文章

软件测试-造数工具Faker简介

这里的Faker不是英雄联盟的Faker。。。 一、Python Faker 简介 Python Faker 是一个用于生成假数据的Python库。它允许开发者快速创建具有随机特征的虚构数据,这对于测试、填充数据库以及其他需要模拟真实数据的场景非常有用。Python Faker 提供了各种数据类型的生…

【经典例子】Java实现2048小游戏(附带源码)

一、游戏回顾 2048游戏是一款数字益智游戏,目标是通过合并相同数字的方块来达到2048这个目标。游戏在一个4x4的方格上进行,每个方格上都有一个数字(初始时为2或4)。玩家可以通过滑动方向键(上、下、左、右)…

静态代码块中使用 ExecutorService 执行多线程会出现什么情况呢?

AQS系列 1、AQS核心原理 2、ReentrantLock 原理及示例 3、CountDownLatch / Semaphore 示例及使用场景 4、BlockingQueue 示例及使用场景 5、静态代码块中使用 ExecutorService 执行多线程会出现什么情况呢? 文章目录 AQS系列一、 一般场景二、static {} 场景三、原…

AD高速板常见问题和过流自锁

可以使用电机减速器来增大电机的扭矩,低速运行的步进电机更要加上减速机 减速电机就是普通电机加上了减速箱,这样便降低了转速增大了扭矩 HDMI布线要求: 如要蛇形使其等长,不要在HDMI的一端绕线。 HDMI走线时两边拉线&#xff0…

忘记 RAG:拥抱Agent设计,让 ChatGPT 更智能更贴近实际

RAG(检索增强生成)设计模式通常用于开发特定数据领域的基于实际情况的ChatGPT。 然而,重点主要是改进检索工具的效率,如嵌入式搜索、混合搜索和微调嵌入,而不是智能搜索。 这篇文章介绍了一种新的方法,灵感…

信创ARM架构QT应用开发环境搭建

Linux ARM架构QT应用开发环境搭建 前言交叉工具链Ubuntu上安装 32 位 ARM 交叉工具链Ubuntu上安装 64 位 ARM 交叉工具链 交叉编译 QT 库下载 QT 源码交叉编译 QT 源码 Qt Creator交叉编译配置配置 Qt Creator Kits创建一个测试项目 小结 前言 有没有碰到过这种情况&#xff1…

layui

基于复杂结构的自定义模版相关介绍 我这里的接口给的格式数据 我这里搜索往返时候要显示成这样的 layui.use([table,form], function(){ var table layui.table; var form layui.form;// 渲染表格 table.render({ elem: #test-table-reload,toolbar: #toolbarDemo, …

【驱动】块设备驱动(四)-块设备驱动层

前言 块设备驱动程序是Liux块子系统中的最底层组件。它们从IO调度程序中获得请求,然后按要求处理这些请求。一个块设备驱动程序可能处理几个块设备。例如,IDE设备驱动程序可以处理几个IDE磁盘,其中的每个都是一个单独的块设备。而且&#xff…

vulnhub靶场之Thales

一.环境搭建 1.靶场描述 Description : Open your eyes and change your perspective includes 2 flags:user.txt and root.txt. Telegram: machineboy141 (for any hint) This works better with VIrtualBox rathe than VMware 2.靶场地址 https://www.vulnhub.com/entry/t…

ensp实验合集(二)

实验6 VLAN划分....................................................................... - 30 - 实验7 路由器调试及常用命令使用........................................ - 42 - 实验8 配置静态路由器............................................................…

GCC编译器的使用以及使用Makefile语法进行操控

Makefile 这里使用的Makefile操控编译器 gcc 常见的组成部分 c: gcc 的一个版本,默认语言设置为 C,而且在链接的时候自动包含标准 C 库。这和 g 一样configure: GCC 源代码树根目录中的一个脚本。用于设置配置值和创建 GCC 编…

pytest中fixture的使用方法

一、pytest中的fixture是什么 为可靠的和可重复执行的测试提供固定的基线(可以理解为测试的固定配置,使不同范围的测试都能够获得统一的配置),fixture提供了区别于传统单元测试(setup/teardown)风格的令人…

2024最新版鸿蒙HarmonyOS开发工具安装使用指南

2024最新版鸿蒙HarmonyOS开发工具安装使用指南 By JacksonML 0. 什么是鸿蒙Harmony OS? 华为鸿蒙系统(HUAWEI Harmony OS),是华为公司在2019年8月9日于东莞举行的华为开发者大会(HDC.2019)上正式发布的分…

蓝桥杯每日一题-----数位dp练习

题目 链接 参考代码 写了两个,一个是很久以前写的,一个是最近刚写的,很久以前写的时候还不会数位dp所以写了比较详细的注释,这两个代码主要是设置了不同的记忆数组,通过这两个代码可以理解记忆数组设置的灵活性。 im…

redis源码之:集群创建与节点通信(1)

一、创建集群与添加节点(meet) 通过redis源码之:redis-cli 集群命令发现,不管是新建cluster集群还是往集群里添加新节点,都是通过meet指令完成,假设有ABCD四个节点,新建集群:redis-…

Vue学习笔记之组件基础

1、组件的定义 一般将 Vue 组件定义在一个单独的 .vue 文件中,称做单文件组件;当然也可以将组件直接定义在js文件中,如下js代码,定义一个组件BlogPost,通过props定义对外暴露属性title,父组件传递title&am…

分享62个节日PPT,总有一款适合您

分享62个节日PPT,总有一款适合您 62个节日PPT下载链接:https://pan.baidu.com/s/1mheNtIvXknGHse44FW7nOw?pwd6666 提取码:6666 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,收集整理更不易…

2023年全球软件架构师峰会(ArchSummit上海站):核心内容与学习收获(附大会核心PPT下载)

微服务架构是当今软件架构的主流趋势之一。随着云计算和分布式系统的普及,越来越多的企业开始采用微服务架构来构建他们的应用。微服务架构可以将一个大型的应用拆分成多个小型的服务,每个服务都独立部署、独立运行,并通过轻量级的通信协议进…

非常好看的CSS加载中特效,引用css文件既可用

非常好看的CSS加载中特效 demo效果源码&#xff1a; <!DOCTYPE html5> <head><link rel"stylesheet" type"text/css" href"demo.css"/><link rel"stylesheet" type"text/css" href"loaders.css&…

【Qt解决】QIcon图标不显示以及LNK2019: 无法解析的外部符号问题

一句话解决 qmake重新构建&#xff0c;然后build&#xff0c;然后run 原因剖析 QIcon图标不显示 首先确保 qrc 文件已经添加对应图标文件&#xff0c;但是仍然不显示是因为没有编译新文件 LNK2019: 无法解析的外部符号 明明已经定义的槽函数&#xff0c;还是报这个错&…