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

持续集成05--Gogs的安装与使用

前言

        在持续集成/持续部署(CI/CD)的旅程中,版本控制系统是不可或缺的一环。当我们在使用jenkins,想要达到测试脚本有更新,就让项目自动去进行构建,或者当开发脚本有更新,也可以自动去构建的效果时,就需要结合远程仓库进行远程构建;远程构建的前置条件:保证仓库和Jenkins 是同一个网络,但是Gitee是外网,Jenkins是内网,无法进行自动拉取的构想,此时我们就需要搭建一个内网仓库Gogs,代替Gitee角色。当然,如果你的Jenkins可以通过外网访问,那就不需要Gogs来实现仓库访问Jenkins,直接使用Gitee即可。

        Gogs,轻量级,易于部署和维护;跨平台支持,特别是Linux环境;开源免费,自定义程度高。Gogs不仅支持Git的基本功能,还集成了用户管理、仓库管理、Web界面等丰富特性,非常适合中小企业及开发团队内部使用。

        本篇文章将带领大家在Linux环境下完成Gogs的安装与配置,并介绍其基本使用方法,为构建高效的CI/CD流程打下坚实基础。

1、安装Gogs

        1.1、下载Gogs

        下载地址:https://dl.gogs.io/0.13.0/gogs_0.13.0_linux_amd64.tar.gz

        1.2、安装Gogs

        创建安装目录,将下载的压缩包上传到服务器安装目录下,解压文件

tar -zxvf gogs_0.13.0_linux_amd64.tar.gz

        1.3、启动Gogs 

        进入到解压后的gogs目录下,输入命令进行启动

# 直接启动
./gogs web
# 后台启动
nohup ./gogs web > ./nohup.out 2>&1 &

        1.4、访问Gogs

         输入服务器ip+端口3000进行访问,http://192.168.235.133:3000/

2、配置Gogs

        2.1、首次运行安装程序

                2.1.1、数据库设置

                可根据自己需求设定,这里选择的是sqlite3(轻量级数据库引擎,SQLite 不需要配置、不需要服务器进程或操作系统级的安装,它实现了 SQL 数据库的所有功能)

                2.1.2、应用基本设置

                 运行系统用户填写服务器的用户名:root(注意用户权限)

                域名:填写服务器ip

                应用url:填写服务器ip+端口

                2.1.3、其他设置

                 可根据自己需求自行设置,或者采用默认设置,点击立即安装即可

3、登录Gogs

        首次登录需要创建账号;点击注册,第一个创建的用户即为系统管理员

4、创建仓库

         进入首页,点击右侧仓库+,按需填写内容,点击创建仓库

5、代码推送

         如果本地电脑可以访问服务器,则可以直接通过本地Git推送Gogs仓库;如果无法访问,则需要把代码上传到服务器后,在服务器上进行推送。

        5.1、本地代码推送Gogs

        进入到本地代码所在目录,根据仓库提示命令依次执行

        注意:在push时出现的登录弹窗后,输入Gogs的登录账号/密码即可

# 格式化本地代码仓库
git init
# 添加本地代码至缓存区
git add .
# 提交缓存区内容
git commit -m "first commit"
# 与远程仓库建立连接
git remote add origin http://192.168.235.133:3000/dtw-Levi/PytestApiFrame.git
# 推送本地代码至远程仓库
git push -u origin master

        5.2、查看Gog仓库

         刷新Gogs仓库页面,可以看到本地代码推送至服务器Gogs仓库

总结

        通过本章节“持续集成05--Gogs的安装与使用”的学习,已经掌握了Gogs的安装方法、基本配置以及常用功能。Gogs作为一个轻量级、易于部署的Git服务,为团队内部代码管理提供了便捷高效的解决方案。它不仅支持代码的托管、版本控制,还具备用户管理、权限控制、问题跟踪等丰富的功能,满足了团队协作的多种需求。此外,Gogs的高度可定制性和灵活性,使得它能够适应不同团队的特定需求,为软件开发和团队协作带来了极大的便利。现在,我们已经拥有了搭建和使用Gogs的能力,可以在实际项目中应用这一工具,提升团队的开发效率和协作水平。

相关文章:

持续集成05--Gogs的安装与使用

前言 在持续集成/持续部署(CI/CD)的旅程中,版本控制系统是不可或缺的一环。当我们在使用jenkins,想要达到测试脚本有更新,就让项目自动去进行构建,或者当开发脚本有更新,也可以自动去构建的效果…...

C++--fill

把[first,last)之间的元素填充为val。 template<class ForwardIterator, class Type> void fill( ForwardIterator first, //起始迭代器 ForwardIterator last, //结束迭代器 const Type& val //设置的值 );源码剖析 template<class ForwardIterator, c…...

Java:对比一个对象更新前后具体被修改了哪些值

Java&#xff1a;对比一个对象更新前后具体被修改了哪些值 Zyyyyu 的个人博客 遇到一个需求就是要记录每行数据被修改更新后&#xff0c;要记录下当前值和修改前的值 那有人就会说写个if去判断值是否被修改了&#xff0c;然后记录下来不就行了&#xff0c;这是一个思路&#x…...

GO——GMP 好文整理

GMP相关好文推荐&#xff1a; Golang 调度器设计思想、GMP 协程调度模型详解 Golang的协程调度器原理及GMP设计思想 Golang调度器GMP原理与调度全分析...

园区AR导航系统构建详解:从三维地图构建到AR融合导航的实现

随着现代园区规模的不断扩大与功能的日益复杂&#xff0c;传统的二维地图导航已难以满足访客高效、精准定位的需求。园区内部错综复杂的布局、频繁变更的商户位置常常让访客感到迷茫&#xff0c;造成寻路上的时间浪费。园区AR导航系统以创新的技术手段&#xff0c;破解了私域地…...

接口测试总结(非标准)

为什么要做接口测试&#xff1f; 答&#xff1a;接口测试是为了检测系统组件间接口的正确性和稳定性&#xff0c;以及检查数据的交换、传递和控制管理过程&#xff0c;以及系统间的相互逻辑依赖关系等。接口测试可以帮助我们发现系统中的潜在问题&#xff0c;确保系统的稳定性…...

在Ubuntu 18.04上安装和使用Composer的方法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 介绍 Composer 是一个流行的 PHP 依赖管理工具&#xff0c;主要用于简化项目依赖项的安装和更新。它会检查特定项目依赖的其他软件包&a…...

ssm 学习 ---(spring)

一、spring框架 1、基本框架 2、Beanfactory快速入门 配置清单&#xff1a;xml文件 (1) 导入jar包或者maven坐标 (2) 定义UserService接口以及UserService实现类 (3) 创建bean.xml配置文件&#xff0c;将UserService信息配置到该xml文件中; (4)编写测试代码&#xff0c;创…...

Jupyter Notebook安装及基本使用

Jupyter Notebook安装及基本使用 目录 Jupyter Notebook安装及基本使用方式一&#xff1a;Anaconda直接安装方式二&#xff1a;pip命令安装Jupyter使用虚拟环境 方式一&#xff1a;Anaconda直接安装 安装Anaconda 下载地址&#xff0c;输入邮箱&#xff0c;Windows下载 开始安…...

Jenkins+Maven+Gitlab+Tomcat自动化构建打包+部署

目录 环境准备 导入项目包 配置jenkins 构建项目 配置项目上线 修改项目代码测试 环境准备 本实操项目环境基于https://blog.csdn.net/Lzcsfg/article/details/140359830 首先在node01主机中操作&#xff0c;本次操作需要java8的版本&#xff0c;将之前安装的java17卸…...

Synchronized升级到重量级锁会发生什么?

我们从网上看到很多&#xff0c;升级到重量锁的时候不会降级&#xff0c;再来线程都是重量级锁 今天我们来实验一把真的是这样的吗 1.首选导入Java对象内存布局的工具库&#xff1a; <dependency><groupId>org.openjdk.jol</groupId><artifactId>jol-…...

【Webpack】HMR 热更新

HMR全称Hot Module Replacement&#xff0c;可以理解为模块热替换&#xff0c;指在应用程序运行过程中&#xff0c;替换、添加、删除模块&#xff0c;而无需重新刷新整个应用。 不使用热更新&#xff0c;我们在应用运行过程中修改了某个模块&#xff0c;通过自动刷新会导致整个…...

【计算机视觉】siamfc论文复现

什么是目标跟踪 使用视频序列第一帧的图像(包括bounding box的位置)&#xff0c;来找出目标出现在后序帧位置的一种方法。 什么是孪生网络结构 孪生网络结构其思想是将一个训练样本(已知类别)和一个测试样本(未知类别)输入到两个CNN(这两个CNN往往是权值共享的)中&#xff0…...

PotatoTool 蓝队版 V1.3 发布:增强功能和性能优化

一、简介 经过广大网友的反馈和建议&#xff0c;我们对V1.1版本中存在的问题进行了优化。其中&#xff0c;我们针对MD5库进行了本地化处理&#xff0c;以提高查询效率。然而&#xff0c;这也导致了软件体积的飙升。二、优化概述 1、兼容性 兼容arm架构系统 2、UI 2.1 界面…...

pytest常用命令行参数解析

简介&#xff1a;pytest作为一个成熟的测试框架&#xff0c;它提供了许多命令行参数来控制测试的运行方式&#xff0c;以配合适用于不同的测试场景。例如 -x 可以用于希望出现错误就停止&#xff0c;以便定位和分析问题。–rerunsnum适用于希望进行失败重跑等个性化测试策略。 …...

pgsql-使用dump命令制作数据库结构、数据快速备份bat脚本

一、背景 通过pgsql的dump命令可以快速的做数据库表结构、表数据的备份&#xff0c;随着业务不断的增加单库单实例已经不能满足业务需要。技术人员是比较懒惰的&#xff0c;每次敲相同命令或是无脑的复制黏贴操作感觉都是对精神的一种摧残&#xff0c;解决摧残的方法就是把命令…...

【3D编程技巧】如何用四元数旋转矢量在相机空间进行光照计算

这里介绍一个小TIPS&#xff0c;很久没有这么有成就感了。我以前在学3D数学的时候&#xff0c;书上就有一句话&#xff0c;说你把矢量这些东西用久了&#xff0c;就应该形成一种“直觉”&#xff0c;仿佛这些东西就是你的左右手一样。而这次&#xff0c;我居然真的用“直觉”来…...

ICMP 和 IGMP 的区别

ICMP 和 IGMP 协议 IP 层分支图 ICMP&#xff08;Internet Control Message Protocol&#xff0c;因特网控制信息协议&#xff09; 用于补充 IP 传输数据报的过程中&#xff0c;发送主机无法确定数据报是否到达目标主机。 ICMP 报文分为出错报告报文和查询报文两种。 若数据…...

【Vue3】工程创建及目录说明

【Vue3】工程创建及目录说明 背景简介开发环境开发步骤及源码 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗的日…...

算法学习2——排序算法(2)

上一篇介绍了几种常见且使用较多的排序算法&#xff0c;本章主要是一个进阶内容&#xff0c;介绍三个较为复杂的算法。 计数排序 (Counting Sort) 计数排序是一种适用于范围较小的整数序列的排序算法。它通过统计每个元素的出现次数&#xff0c;然后依次输出元素&#xff0c;…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...

前端开发者常用网站

Can I use网站&#xff1a;一个查询网页技术兼容性的网站 一个查询网页技术兼容性的网站Can I use&#xff1a;Can I use... Support tables for HTML5, CSS3, etc (查询浏览器对HTML5的支持情况) 权威网站&#xff1a;MDN JavaScript权威网站&#xff1a;JavaScript | MDN...